# Neural Architecture Search

<figure><img src="/files/a01b1dc4b201c1ad0f96b1a47983f577a13f92a2" 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>" %}

## Neural Architecture Searchを使うタイミング

本番に投入するモデルを選ぶなら、NASはほぼ常に実行する価値があります。パレートフロンティア上の各モデルはすべてあなたのデータで完全に学習されているため、単にサイズを選ぶのではなく、特定のデプロイ先に最適な速度/精度のトレードオフを選べます。実際の顧客実行では、NASは同じレイテンシーで単一のRF-DETR Mediumのファインチューニングを安定して上回り、多くの場合は大きな差をつけます。

NASを使うべき場面：

* 与えられたレイテンシー予算でより高い精度、または与えられた精度目標でより低いレイテンシーが必要な場合。
* 本番用モデルを準備しており、速度/精度曲線に沿って候補を比較したい場合。
* 代わりにハイパーパラメータ探索を行うか、複数のモデルサイズを連続して学習させることになる場合。
* 最先端の性能が必要な場合。

NASが過剰な場合：

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

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

NASは、従量課金を含むすべての有料Roboflowプランで利用できます。Trial、Free、PublicプランのユーザーはNASにアクセスできません。従量課金のない旧プランでは、NAS実行を開始する前に有効化するよう求められます。

NASの実行は、標準のRoboflow学習レートで課金されます — **学習時間30分あたり1クレジット** — つまり、他の学習ジョブと同じ時間単価です。1回の実行で数十個の学習済みモデルが生成されるため、 *1モデルあたりの* コストは各モデルを個別に学習するより低くなりますが、1回のNASジョブ全体で消費するクレジット総数は、単一のファインチューニングより高くなります。

想定しておくべき一般的な目安：

* 約2,500枚の画像を含むObject Detectionデータセットでは、一般的に約18時間（約36クレジット）かかります。
* **Instance Segmentation NAS** はObject Detection NASよりGPU負荷が高く、実行時間はおおむね1.5〜2倍長くなると想定してください。

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

{% hint style="warning" %}
workspaceでflex billingが無効になっており、含まれるクレジットが実行中に尽きた場合、NASは自動的に停止します。含まれるクレジット残高にかかわらず実行を完了させたい場合は、開始前にflex billingを有効にしてください。
{% endhint %}

## NAS vs. YOLO-NAS

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

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

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

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

* Object Detection
* Instance Segmentation

その他の現在の制限：

* 生の重み（`.pt`, `.onnx`など）は、第三者の推論サーバーで使用するためにダウンロードできません。NASモデルは、Roboflow Serverless Hosted API、Dedicated Deployments、Workflows、Batch Processing、およびセルフホストの [Roboflow Inference](https://inference.roboflow.com/install/)で実行されます。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="/files/3b7759f9646d2019c20cbdcdb5238ee3e7bcd3eb" alt="Train tab engine selector with Neural Architecture Search highlighted."><figcaption><p>TrainタブでNeural Architecture Searchエンジンを選択します。</p></figcaption></figure>
{% endstep %}

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

複数のモデルバリアントがあるプロジェクトタイプ（例：Object DetectionにはStandardとPlusがあります）では、続行前にバックボーンを選択する必要があります。自分のユースケースに合うバリアントをクリックしてください。単一のバリアントしかないプロジェクトタイプ（例：Instance Segmentation）では、自動的に選択されます。
{% endstep %}

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

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

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

<figure><img src="/files/2496610276462ec623f942a9f25096bf33659273" alt="Dataset version selector for a NAS training run."><figcaption><p>NAS実行用のデータセットバージョンを選択または作成してください。</p></figcaption></figure>
{% endstep %}

{% step %}

#### バックボーンを選択する（Object Detectionのみ）

Object Detectionプロジェクトでは、2つのバックボーンオプションから選べます：

* **Standard** - 学習が速く、より高速なモデルを見つけます。エッジデバイスへデプロイする予定がある場合に最適です。
* **Plus** - より高精度なモデルを見つけます。クラウドGPUでデプロイする予定がある場合に最適です。

Instance Segmentationプロジェクトでは単一のバックボーンを使用し、この手順は省略されます。
{% endstep %}

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

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

<figure><img src="/files/0ec1b724df2b587917786a8e2b5f285314ac0064" alt="Start Training button on the NAS configuration page."><figcaption><p>設定ページからNAS実行を開始します。</p></figcaption></figure>
{% endstep %}
{% endstepper %}

## NAS結果ページの読み方

<figure><img src="/files/a01b1dc4b201c1ad0f96b1a47983f577a13f92a2" 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のモデルピッカーに表示され、スターなしモデルは結果ページには残りますが、表示をすっきり保つためピッカーには表示されません。スターはいくつでも付け外しできます。スター付けは無料で、いつでも元に戻せます。

**スター付きモデルを使う。** 他のRoboflowモデルと同じように、Workflow内のモデルブロックを使って選択します。

実行中にNASが表示するライブ学習チャート（Training Progress BandとEpoch Snapshotビュー）について詳しくは、 [View Training Results](/roboflow/roboflow-jp/train/training-results.md).

## NAS実行を停止する

NASジョブには2つのフェーズがあります — **training** と **mining** — で、同じジョブ内で連続して実行されます。実行を停止する方法は2つあります：

* **早期停止** （現在のフロンティアに満足している場合に推奨）。フェーズに応じて「Stop Training Early」または「Stop Mining」をクリックします。その時点までにマイニングされたモデルは保持され、デプロイできます。完了した作業に対するクレジットは請求されます。詳細は [Early Stopping](/roboflow/roboflow-jp/train/stop-training-early.md) を参照してください。
* **キャンセル** （実行を完全に破棄したい場合）。「Cancel Training」をクリックします。重みは保存されませんが、ジョブの早い段階でキャンセルした場合はクレジットが返金されます。詳細は [Cancel a Training Job](/roboflow/roboflow-jp/train/cancel-a-training-job.md).

{% hint style="info" %}
を参照してください。
{% endhint %}

## NASで発見されたモデルのデプロイ

NASで発見されたモデルは、他のRoboflow学習済みモデルと同じようにデプロイできます。次の場所で実行できます：

* **Roboflow Serverless Hosted API** （下のコード例を参照）。
* **Dedicated Deployments** で、より高いスループットまたは専有キャパシティを利用。
* **Workflows** と **Batch Processing** で、ビジョンパイプラインを構築・実行。
* **Self-hosted** [**Roboflow Inference**](https://inference.roboflow.com/install/) で、自前のハードウェア（Docker、エッジ、またはクラウド）上で実行。

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

をインストールして起動し、 [Roboflow Inference](https://inference.roboflow.com/install/) をあなたのハードウェア上で実行したら、 `inference-sdk` を `http://localhost:9001` に向け、他のRoboflowモデルと同じようにNASのモデルIDで呼び出します。以下のコード例は、ホスト型エンドポイントとローカルのInferenceサーバーの両方で使えます。 `api_url`.

### Roboflow Serverless Hosted 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}",
    params={"api_key": API_KEY},
    headers={"Content-Type": "application/x-www-form-urlencoded"},
    data=image_data,
)

print(response.json())
```

{% endtab %}

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

```python
from inference_sdk import InferenceHTTPClient

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

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 @- \
"https://serverless.roboflow.com/your-workspace/the-model-id-here?api_key=roboflow-API-KEY"
```

Web上の別の場所でホストされている画像を、そのURL経由で推論する（ [URLエンコード](https://www.urlencoder.org/)):

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

{% endtab %}

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

この例ではPOSTリクエストを実行するために [axios](https://github.com/axios/axios) を使用しているので、まず次を実行してください `npm install axios` で依存関係をインストールします。

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

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

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

axios({
    method: "POST",
    url: "https://serverless.roboflow.com/your-workspace/the-model-id-here",
    params: {
        api_key: "roboflow-API-KEY"
    },
    data: image,
    headers: {
        "Content-Type": "application/x-www-form-urlencoded"
    }
})
.then(function(response) {
    console.log(response.data);
})
.catch(function(error) {
    console.log(error.message);
});
```

**URL経由でWeb上の別の場所でホストされている画像で推論する**

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

axios({
    method: "POST",
    url: "https://serverless.roboflow.com/your-workspace/the-model-id-here",
    params: {
        api_key: "roboflow-API-KEY",
        image: "https://i.imgur.com/PEEvqPN.png"
    }
})
.then(function(response) {
    console.log(response.data);
})
.catch(function(error) {
    console.log(error.message);
});
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.roboflow.com/roboflow/roboflow-jp/train/neural-architecture-search.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
