> For the complete documentation index, see [llms.txt](https://docs.roboflow.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.roboflow.com/models/ja/xue-xi/neural-architecture-search.md).

# ニューラルアーキテクチャ探索

最適なモデルアーキテクチャを自動的に探索し、同時にモデルをファインチューニングします。

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-a09482f629727fe1cfe37ef9c7c0052ee9b40694%2Fnas-mining-curve.png?alt=media" alt="NAS results page showing a Pareto frontier of trained models plotted across latency and accuracy."><figcaption><p>NASの結果ページには、速度と精度のパレートフロンティア上にあるすべての学習済みモデルが表示されます。</p></figcaption></figure>

RoboflowのNeural Architecture Search（NAS）は、データセット上で数十種類のモデルアーキテクチャを自動で学習し、速度と精度のトレードオフ曲線に沿って最適な候補を提示する強力な新機能です。従来のモデル学習戦略よりも1モデルあたりのコストを抑えながら、選択肢となる多数のモデルを生成します。

以下で説明するように [RF-DETRの論文で](https://arxiv.org/html/2511.09554v2)、このNeural Architecture Search戦略によってRF-DETRのSOTAモデルアーキテクチャが生まれました。Roboflowはこの戦略をすべてのRoboflowユーザーに提供し、誰もが自分のユースケースに対してSOTAモデルを作成できるようにします。

Neural Architecture Search：

* データの特性に基づいて、ユースケースに最も適したモデルアーキテクチャを特定します
* そのアーキテクチャをあなたのデータで微調整します
* 5,000以上の構成をテストし、各レイテンシーポイントで精度が最適化された10〜100個の学習済みモデルを生成します。

{% embed url="<https://youtu.be/ZtGXkuo1qiE>" %}

## ニューラルアーキテクチャサーチを使うべきとき

本番投入するモデルを選ぶときは、ほとんどの場合NASを実行する価値があります。パレートフロンティア上のすべての探索済みモデルはあなたのデータで完全に学習されるため、単にサイズを選ぶのではなく、特定のデプロイ先に最適な速度/精度のトレードオフを選べます。実際の顧客実行では、NASは同じレイテンシーで単一のRF-DETR Mediumの微調整を常に上回り、しかも大きく上回ることがよくあります。

次のような場合はNASを選びましょう：

* 一定のレイテンシー予算でより高い精度が必要な場合、または一定の精度目標でより低いレイテンシーが必要な場合。
* 本番用のモデルを準備していて、速度/精度曲線に沿った選択肢を比較したい場合。
* そうでなければ、ハイパーパラメータ探索を行うか、複数のモデルサイズを続けて学習させていた場合。
* 最先端の性能が必要な場合。

次のような場合はNASは過剰かもしれません：

* ユースケースが単純で、「そこそこ十分」なモデルで足りる場合（例：明るい環境で人を検出する）。探索的なプロジェクトや初期段階のプロジェクトでは、通常は単一の微調整が適切です。
* 最大のRF-DETRチェックポイント（例：RF-DETR XXL）だけが欲しく、小さいトレードオフポイントには関心がない場合。

## コスト、クレジット、プランの利用可否

NASはFree Tierを含むCoreで利用できます。

NASの実行は標準のRoboflow学習料金で請求されます - **学習時間30分ごとに1クレジット**  - これは他の学習ジョブと同じ時間単価です。1回の実行で数十個の学習済みモデルが生成されるため、コスト *モデルあたり* は個別に学習するより低くなりますが、1回のNASジョブ全体で消費するクレジットは単一の微調整より多くなります。

一般的な目安：

* \~2,500枚の画像からなる物体検出データセットでは、通常約18時間（約36クレジット）かかります。
* **インスタンスセグメンテーションNAS** は物体検出NASよりGPU負荷が高く、おおよそ1.5〜2倍長い実行時間を見込んでください。

Train UIでは、開始前に推定所要時間とクレジット費用が表示されます。見積もりが1日分の学習時間を超える場合、ジョブ開始前に確認を求められます。

NASの実行では、学習とアーキテクチャ探索が別々に課金されるため、 [クレジット上限](/models/ja/xue-xi/train-a-model.md#set-a-credit-cap) をそれぞれに設定できます。学習フェーズだけに上限を設定すると探索には上限がかからず、逆も同様です。

{% hint style="warning" %}
開始前にクレジット残高を確認してください。 [Flex Billingを管理](https://docs.roboflow.com/platform/billing-and-plans/credits/enable-or-disable-flex-billing) して、付与済みおよび前払い済みクレジットを超える支出を管理します。
{% endhint %}

## NAS vs. YOLO-NAS

{% hint style="info" %}
ここで説明する「Neural Architecture Search」エンジンは、 **YOLO-NAS**とは別物です。YOLOベースの単一アーキテクチャで、Roboflowのモデル一覧にも表示されます。NASを使うためにアップグレードした場合は、必ず **Neural Architecture Search** エンジンをTrainページで選択してください。YOLO-NASのモデルアーキテクチャではありません。
{% endhint %}

Roboflow NASは、バックボーンにより多くの世界知識を取り込んだRF-DETRを使うことで、より強力な土台から始まります。そこからNASがデータセットに合わせてアーキテクチャを調整します。たとえば、データがより少ないデコーダ層のモデルに適している場合、NASはそのアーキテクチャを自動で見つけて提供できます。

## サポートされるタスクと既知の制限

NASは現在、以下をサポートしています：

* 物体検出
* インスタンスセグメンテーション
* セマンティックセグメンテーション

その他の現在の制限：

* 生の重み（`.pt`, `.onnx`など）は、サードパーティの推論サーバーで使用するためにダウンロードできません。NASモデルはRoboflow Serverless Cloud API、Dedicated Deployments、Workflows、Batch Processing、およびセルフホストの [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/self-hosted)で実行できます。NASの重みをダウンロードして実行するには、Roboflow Inferenceを推奨します。
* NASで見つかったモデルの重みは、Roboflowの [Platform Model License](https://roboflow.com/platform-model-license-1-0)のライセンスに基づきます。このライセンスでは、良好な状態のRoboflowアカウントを保有している必要があります。

## NASの学習実行を開始する

{% stepper %}
{% step %}
**Trainタブを開き、Neural Architecture Searchエンジンを選択します**

プロジェクトのTrainタブを開き（ `https://app.roboflow.com/YOUR_WORKSPACE/YOUR_PROJECT_NAME/train`）、 **Neural Architecture Search** エンジンを選択します。

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-9c88c779f5a8dde416ae742243ffb374d1802fd8%2Fnas-select-engine.png?alt=media" alt="Train tab engine selector with Neural Architecture Search highlighted."><figcaption><p>TrainタブでNeural Architecture Searchエンジンを選択します。</p></figcaption></figure>
{% endstep %}

{% step %}
**バックボーンを選択**

複数のモデルバリエーションがあるプロジェクトタイプ（例：物体検出ではFast、Standard、Plus）では、続行する前にバックボーンを選択する必要があります。ユースケースに合うバリエーションをクリックしてください。単一のバリエーションしかないプロジェクトタイプ（例：インスタンスセグメンテーション）では、これは自動的に選択されます。
{% endstep %}

{% step %}
**データセットバージョンを選択または作成**

既存のデータセットバージョンを選択するか、新規に作成してください。いくつかのヒント：

* NAS学習では、データセットに拡張を追加することは推奨しません。
* 検証用分割には少なくとも **15枚の画像**が必要です。NASが安定したパレートフロンティアを見つけるには十分な検証データが必要であり、APIは検証画像が15枚未満の学習リクエストを拒否します。

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-02bb1b7e47d2cf1970692961d95adc5a2568b5c0%2Fnas-select-version.png?alt=media" alt="Dataset version selector for a NAS training run."><figcaption><p>NASの実行用にデータセットバージョンを選択または作成します。</p></figcaption></figure>
{% endstep %}

{% step %}

#### バックボーンを選択

物体検出プロジェクトでは、3つのバックボーン विकल्पから選べます：

* **Fast**  - 最速の学習で、最も低レイテンシーなモデルを見つけます。推論速度が最優先のCPUやエッジへのデプロイに最適です。
* **Standard**  - 学習時間とバランスが取れており、広いレイテンシー範囲のモデルを見つけます。良好な速度/精度のトレードオフが欲しいエッジやGPUへのデプロイに最適です。
* **Plus**  - 最も高精度なモデルを見つけます。レイテンシーより精度が重要なクラウドGPUデプロイに最適です。

セマンティックセグメンテーションのプロジェクトではStandardとPlusから選びます。インスタンスセグメンテーションのプロジェクトでは単一のバックボーンを使用するため、この手順は不要です。
{% endstep %}

{% step %}
**学習を開始**

クリック **Start Training** して実行を開始します。

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-82ea8de41405493849bbdc9c9284990331d993a7%2Fnas-start-train.png?alt=media" alt="Start Training button on the NAS configuration page."><figcaption><p>設定ページからNASの実行を開始します。</p></figcaption></figure>
{% endstep %}
{% endstepper %}

## NAS結果ページの見方

<figure><img src="https://1194881119-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fcmo9mhfIjYrvFFy1U7dk%2Fuploads%2Fgit-blob-a09482f629727fe1cfe37ef9c7c0052ee9b40694%2Fnas-mining-curve.png?alt=media" alt="NAS results page with purple dots representing trained models along the Pareto frontier."><figcaption><p>紫の点はそれぞれデプロイ可能な完全学習済みモデルです。</p></figcaption></figure>

結果ページには、NASがあなたのデータで探索・学習したすべてのモデルが、パレートフロンティア上にプロットされて表示されます。これは各レイテンシーポイントで見つかった最良のモデルです。紫の点はそれぞれデプロイ可能な完全学習済みモデルです。探索が進むにつれてフロンティアはリアルタイムで更新されるため、全体の実行が完了する前から候補の評価を始められます。

**指標の選択。** F1、mAP\@50、mAP\@50:95を切り替えて、ユースケースで重要な指標に対してフロンティアを評価します。指標によってフロンティアに現れるモデルは異なる場合がありますが、それは想定どおりです。実運用でモデルをどのように評価するかに最も近い指標を選び、目標レイテンシーで最適なモデルを選択してください。多くのユースケースではF1を推奨します。

**モデルをスターする。** 使いたいモデルにはスターを付けてください。スター付きのモデルはWorkflowのモデルピッカーに表示されます。スターを外したモデルは結果ページには残りますが、ピッカーには表示されず、見やすさが保たれます。好きなだけ、または必要な分だけスターできます。スター付けは無料で、元に戻せます。完了したモデルをスターすると、 [モデル評価](/models/ja/ping-si/evaluate-trained-models.md) も開始されるため、スター操作で始まる最適化の横に精度とレイテンシーの結果が表示されます。すでに評価があるモデルは、待機中、実行中、完了済みのいずれであっても再評価されません。評価の実行は、Model Evaluationが有効なワークスペースでのみ行われます。

**スターしたモデルの使用。** 他のRoboflowモデルと同様に、Workflow内のモデルブロックを使って選択します。

NASが実行中に表示するライブ学習チャート（Training Progress Band と Epoch Snapshot ビュー）については、 [学習結果を表示](/models/ja/ping-si/training-results.md).

## NASの実行を停止する

NASジョブには2つのフェーズがあります - **学習** と **探索**  - これらは同じジョブ内で連続して実行されます。停止する方法は2つあります：

* **早期停止** （現在のフロンティアに満足している場合に推奨）。フェーズに応じて「学習を早期停止」または「探索を停止」をクリックします。その時点までに探索されたモデルは保持され、デプロイできます。完了した作業に使われたクレジットは請求されます。詳細は [学習ジョブの停止またはキャンセル](/models/ja/xue-xi/cancel-a-training-job.md) を参照してください。
* **キャンセル** （実行を完全に中止したい場合）。「学習をキャンセル」をクリックします。重みは保存されませんが、ジョブの早い段階でキャンセルすればクレジットは返金されます。詳細は [学習ジョブの停止またはキャンセル](/models/ja/xue-xi/cancel-a-training-job.md).

{% hint style="info" %}
NASの実行は、モデルが収束すると自動的に停止することもあります。つまり、すべての目標エポックが終わる前に最高性能に達した場合です。結果ページのバナーでその旨が示されます。あなた側での対応は不要です。
{% endhint %}

## NASで見つかったモデルのデプロイ

NASで見つかったモデルは、他のRoboflow学習済みモデルと同様にデプロイできます。以下で実行できます：

* **Roboflow Serverless Cloud API** （下記のコード例を参照）。
* **Dedicated Deployments** 高いスループットや予約済みキャパシティ向け。
* **Workflows** と **Batch Processing** ビジョンパイプラインの構築と実行向け。
* **セルフホスト** [**Roboflow Inference**](https://docs.roboflow.com/deployment/self-hosted/self-hosted) ご自身のハードウェア上で（Docker、エッジ、またはクラウド）。

### Roboflow InferenceでNASモデルをローカル実行する

インストールして起動し [Roboflow Inference](https://docs.roboflow.com/deployment/self-hosted/inference-server/install) お使いのハードウェア上で、次に `inference-sdk` を `http://localhost:9001` に向けてください。あとは他のRoboflowモデルと同じように、NASモデルIDを指定して呼び出します。以下のコード例は、ホストされたエンドポイントとローカルのInferenceサーバーの両方で動作します。置き換えるのは `api_url`.

### Roboflow Serverless Cloud API

{% tabs %}
{% tab title="Python（requests）" %}

```python
import base64

import requests

API_KEY = "roboflow-API-KEY"
MODEL_ID = "your-workspace/the-model-id-here"
IMAGE_PATH = "your_image_path.png"

with open(IMAGE_PATH, "rb") as f:
    image_data = base64.b64encode(f.read()).decode("utf-8")

response = requests.post(
    f"https://serverless.roboflow.com/{MODEL_ID}",
    headers={
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": f"Bearer {API_KEY}",
    },
    data=image_data,
)

print(response.json())
```

{% endtab %}

{% tab title="Python（inference-sdk）" %}
依存関係をインストールするには、 `pip install inference-sdk`.

```python
from inference_sdk import InferenceHTTPClient, InferenceConfiguration

CLIENT = InferenceHTTPClient(
    api_url="https://serverless.roboflow.com",
    api_key="roboflow-API-KEY"
).configure(InferenceConfiguration(api_key_transport="header"))

result = CLIENT.infer("your_image_path.png", model_id="your-workspace/the-model-id-here")
print(result)
```

{% endtab %}

{% tab title="cURL" %}
**LinuxまたはmacOS**

という名前のローカルファイルに対するJSON予測の取得 `your_image_path.png`:

```bash
base64 your_image_path.png | curl -d @- \
-H "Authorization: Bearer roboflow-API-KEY" \
"https://serverless.roboflow.com/your-workspace/the-model-id-here"
```

URLを使って、Web上の別の場所でホストされている画像に対して推論する場合（ [URLエンコードするのを忘れずに](https://www.urlencoder.org/)):

```bash
curl -X POST \
-H "Authorization: Bearer roboflow-API-KEY" \
"https://serverless.roboflow.com/your-workspace/the-model-id-here?\
image=https%3A%2F%2Fi.imgur.com%2FPEEvqPN.png"
```

{% endtab %}

{% tab title="JavaScript" %}
**Node.js**

これらの例では組み込みの `fetch` APIを使用しています。これはNode.js 18以降および最新のブラウザで動作するため、インストールする依存関係はありません。

**ローカル画像で推論する**

```javascript
const fs = require("fs");

const image = fs.readFileSync("your_image_path.png", {
    encoding: "base64"
});

fetch("https://serverless.roboflow.com/your-workspace/the-model-id-here", {
    method: "POST",
    headers: {
        "Content-Type": "application/x-www-form-urlencoded",
        "Authorization": "Bearer roboflow-API-KEY"
    },
    body: image
})
    .then((response) => {
        if (!response.ok) throw new Error("Request failed with status " + response.status);
        return response.json();
    })
    .then((data) => {
        console.log(data);
    })
    .catch((error) => {
        console.log(error.message);
    });
```

**URL経由で別の場所にホストされた画像で推論する**

```javascript
fetch(
    "https://serverless.roboflow.com/your-workspace/the-model-id-here?image=" +
        encodeURIComponent("https://i.imgur.com/PEEvqPN.png"),
    {
        method: "POST",
        headers: {
            "Authorization": "Bearer roboflow-API-KEY"
        }
    }
)
    .then((response) => {
        if (!response.ok) throw new Error("Request failed with status " + response.status);
        return response.json();
    })
    .then((data) => {
        console.log(data);
    })
    .catch((error) => {
        console.log(error.message);
    });
```

{% endtab %}
{% endtabs %}
