> 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/ko/train/neural-architecture-search.md).

# Neural Architecture Search

<figure><img src="/files/9ea8b5ca7840327e2e49b0f00bf1b0ea3e7c4e22" 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)는 데이터셋에서 수십 개의 모델 아키텍처를 자동으로 학습하고, 속도 대비 정확도 절충 곡선을 따라 최적의 옵션을 보여 주는 강력한 새 기능으로, 전통적인 모델 학습 전략보다 모델당 비용이 더 낮은 상태에서 선택할 수 있는 다양한 모델 옵션을 생성합니다.

설명된 바와 같이 [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는 과할 수 있습니다:

* 사용 사례가 단순하고 "충분히 괜찮은" 모델이면 충분할 때(예: 밝은 환경에서 사람을 감지). 탐색적이거나 초기 단계의 프로젝트에서는 보통 단일 미세 조정이 올바른 선택입니다.
* 가장 큰 RF-DETR 체크포인트(예: RF-DETR XXL)만 원하고 더 작은 절충 지점은 신경 쓰지 않을 때.

## 비용, 크레딧, 요금제 이용 가능 여부

NAS는 사용량 기반 과금이 포함된 모든 유료 Roboflow 요금제에서 이용할 수 있습니다. 체험판, 무료, 공개 요금제 사용자는 NAS에 접근할 수 없습니다. 사용량 기반 과금이 없는 기존 요금제는 NAS 실행을 시작하기 전에 이를 활성화하라는 안내를 받게 됩니다.

NAS 실행은 Roboflow의 표준 학습 요율로 청구됩니다 - **학습 시간 30분당 1크레딧** - 다른 모든 학습 작업과 동일한 시간당 요율입니다. 하나의 실행은 수십 개의 학습된 모델을 생성하므로, 비용은 *모델당* 개별적으로 각각을 학습하는 것보다 낮지만, 하나의 NAS 작업에 드는 총 크레딧은 단일 미세 조정보다 더 높습니다.

대략적으로 예상할 수 있는 범위:

* 약 2,500장 규모의 객체 탐지 데이터셋은 일반적으로 약 18시간(약 36크레딧)이 걸립니다.
* **인스턴스 세분화 NAS** 는 객체 탐지 NAS보다 GPU 사용량이 더 많습니다. 대략 1.5\~2배 더 긴 실행 시간을 예상하세요.

Train UI에는 시작하기 전에 예상 소요 시간과 크레딧 비용이 표시됩니다. 예상 시간이 하루 이상의 학습을 초과하면, 작업이 시작되기 전에 확인을 요청받게 됩니다.

NAS 실행은 학습과 아키텍처 검색을 별도로 청구하므로, 각 항목에 대해 [크레딧 한도](/models/ko/train/train-a-model.md#set-a-credit-cap) 를 설정할 수 있습니다. 학습 단계에만 한도를 두면 검색은 무제한으로 남고, 그 반대도 마찬가지입니다.

{% hint style="warning" %}
작업 공간에서 flex billing이 비활성화되어 있고 포함된 크레딧이 실행 도중 소진되면 NAS는 자동으로 중지됩니다. 포함 크레딧 잔액과 관계없이 실행을 끝까지 완료하려면 시작하기 전에 flex billing을 활성화하세요.
{% endhint %}

## NAS와 YOLO-NAS

{% hint style="info" %}
여기서 설명하는 "Neural Architecture Search" 엔진은 다음과 동일하지 않습니다 **YOLO-NAS**, Roboflow 모델 목록에도 표시되는 단일 YOLO 기반 아키텍처입니다. 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의 [플랫폼 모델 라이선스](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/f4f72cd09a029b719c98fa7996f27eb372f4b625" 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="/files/16ad2569e1969c1ff14b5d846c655f5a5fe255ef" alt="Dataset version selector for a NAS training run."><figcaption><p>NAS 실행을 위한 데이터셋 버전을 선택하거나 생성하세요.</p></figcaption></figure>
{% endstep %}

{% step %}

#### 백본 선택(객체 탐지만 해당)

객체 탐지 프로젝트의 경우 세 가지 백본 옵션 중에서 선택할 수 있습니다:

* **Fast** - 가장 빠른 학습, 가장 낮은 지연 시간의 모델을 발견합니다. 추론 속도가 최우선인 CPU 또는 엣지 배포에 가장 적합합니다.
* **Standard** - 균형 잡힌 학습 시간, 넓은 지연 시간 범위에 걸친 모델을 발견합니다. 좋은 속도 대비 정확도 절충을 원하는 엣지 또는 GPU 배포에 가장 적합합니다.
* **Plus** - 가장 정확한 모델을 발견합니다. 정확도가 지연 시간보다 더 중요한 클라우드 GPU 배포에 가장 적합합니다.

인스턴스 세분화 프로젝트는 단일 백본을 사용하므로 이 단계를 건너뜁니다.
{% endstep %}

{% step %}
**학습 시작**

클릭하세요 **학습 시작** 를 눌러 실행을 시작합니다.

<figure><img src="/files/8ebb7094027812dd3d69e0d027f5bd47b4b791ae" alt="Start Training button on the NAS configuration page."><figcaption><p>구성 페이지에서 NAS 실행을 시작하세요.</p></figcaption></figure>
{% endstep %}
{% endstepper %}

## NAS 결과 페이지 읽는 법

<figure><img src="/files/9ea8b5ca7840327e2e49b0f00bf1b0ea3e7c4e22" 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 보기)에 대한 자세한 내용은 [학습 결과 보기](/models/ko/evaluate/training-results.md).

## NAS 실행 중지

NAS 작업에는 두 단계가 있습니다 - **학습** 및 **발굴** - 이 단계들은 같은 작업에서 연속으로 실행됩니다. 실행을 중지하는 방법은 두 가지입니다:

* **일찍 중지** (현재 프런티어에 만족할 때 권장). 단계에 따라 "Stop Training Early" 또는 "Stop Mining"을 클릭하세요. 그 시점까지 발굴된 모델은 보존되며 배포할 수 있습니다. 완료된 작업에 사용된 크레딧은 청구됩니다. 자세한 내용은 [학습 작업 중지 또는 취소](/models/ko/train/cancel-a-training-job.md) 를 참조하세요.
* **취소** (실행 전체를 중단하고 싶을 때). "Cancel Training"을 클릭하세요. 가중치는 저장되지 않지만, 작업 초기에 취소하면 크레딧이 환불됩니다. 자세한 내용은 [학습 작업 중지 또는 취소](/models/ko/train/cancel-a-training-job.md).

{% hint style="info" %}
NAS 실행은 모델이 수렴하면, 즉 모든 목표 epoch이 끝나기 전에 최고 성능에 도달하면 자동으로 중지됩니다. 결과 페이지의 배너가 이를 표시합니다. 별도의 조치는 필요하지 않습니다.
{% endhint %}

## NAS가 발견한 모델 배포

NAS가 발견한 모델은 다른 Roboflow 학습 모델과 마찬가지로 배포됩니다. 다음에서 실행할 수 있습니다:

* **Roboflow Serverless Cloud API** (아래 코드 예제를 참조하세요).
* **전용 배포** 더 높은 처리량이나 예약 용량이 필요한 경우.
* **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을 통해 웹의 다른 곳에 호스팅된 이미지에 대해 추론하기(잊지 말고 [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 %}
