세부 디바이스 할당¶
Model implementation 지원
이 페이지에서 설명하는 설정은 transformers(optimum) model implementation에 적용됩니다.
개요¶
transformers(optimum) model implementation에서는 비전 인코더나 언어 모델처럼 서브모듈이라고 부르는 모델 구성 요소에 서로 다른 RBLN NPU 디바이스 집합을 할당할 수 있습니다. 겹치지 않는 디바이스 집합을 사용하면 서브모듈의 메모리를 서로 다른 NPU에 분산할 수 있습니다.
torch.device를 통해 텐서 단위로 디바이스를 지정하려면 vllm model implementation을 사용해야 합니다.
디바이스 할당 설정¶
Python에서는 additional_config["optimum_overrides"], CLI에서는 --rbln-optimum-overrides로 디바이스 ID를 지정합니다. 디바이스 설정에서는 몇 개를 사용할지와 어느 디바이스에서 실행할지를 구분합니다.
서브모듈 이름은 모델 아키텍처마다 다릅니다. 해당 모델의 RBLN Optimum API에 정의된 설정 키를 사용해야 합니다. 아래 표의 <submodule>은 이 설정 키를 의미합니다.
Python 열은 additional_config 내부의 설정 키를 나타냅니다.
| 설정 대상 | Python 키 |
|---|---|
| 최상위 디바이스 수 | ["num_devices_per_local_rank"] |
| 최상위 디바이스 ID | ["optimum_overrides"]["device"] |
| 서브모듈 디바이스 수 | ["optimum_overrides"]["<submodule>"]["num_devices"] |
| 서브모듈 디바이스 ID | ["optimum_overrides"]["<submodule>"]["device"] |
CLI에서는 최상위 디바이스 수를 --rbln-num-devices-per-local-rank로 지정하고, 나머지 설정은 JSON 형식으로 --rbln-optimum-overrides에 전달합니다.
device를 별도로 지정하지 않은 서브모듈은 최상위device설정을 사용합니다.- 특정 서브모듈에 다른 디바이스를 할당하려면 해당 서브모듈의 설정 키 아래에
device를 지정합니다. - 모델을 컴파일할 때 서브모듈의
num_devices는 명시적으로 지정한device리스트의 길이로 자동 설정되므로 별도로 지정할 필요가 없습니다.
미리 컴파일된 모델은 model에 산출물 디렉터리를 지정합니다. optimum_overrides의 device 항목만 적용되며, 각 디바이스 리스트의 길이는 해당 서브모듈의 컴파일된 디바이스 수와 일치해야 합니다.
Note
Rebel100™에서는 NPU 카드 한 장이 하나의 디바이스에 해당하며, 카드 내부에는 여러 칩렛이 있습니다. num_devices_per_local_rank에는 1만 지정할 수 있지만, 디바이스 하나 내부의 여러 칩렛은 컴파일러가 자동으로 활용합니다. 디바이스 수에 관한 규칙은 모델 병렬화에서 확인할 수 있습니다.
모델 로딩이나 디바이스 메모리 문제는 멀티 모듈 모델 문제 해결에서 확인할 수 있습니다.
예제¶
Qwen3-VL은 비전 인코더와 언어 모델로 구성됩니다. 비전 인코더의 설정 키는 visual입니다. 이 모델에서는 최상위 device가 언어 모델에, visual.device가 비전 인코더에 적용됩니다.
다음 예제에서는 ATOM™ 디바이스 16개 중 0–7은 언어 모델에, 8–15는 비전 인코더에 할당합니다. 이 예제에서 num_devices_per_local_rank=8은 언어 모델의 디바이스 수를, visual.num_devices=8은 비전 인코더의 디바이스 수를 지정합니다. 여기서는 디바이스 수를 명확히 보여주기 위해 visual.num_devices를 명시적으로 지정합니다. rbln-smi로 시스템에서 사용할 수 있는 디바이스를 확인합니다.
모델 컴파일 및 서빙¶
다음 예제는 모델 ID를 지정하고, 언어 모델과 비전 인코더에 서로 다른 디바이스를 할당합니다.
OpenAI 호환 서버에서도 같은 설정을 사용할 수 있습니다.
미리 컴파일된 모델 서빙¶
다음 예제는 위 예제와 별도로 컴파일하고 저장한 모델을 사용합니다. 언어 모델과 visual을 각각 num_devices=8로 컴파일하고, 산출물을 rbln-Qwen3-VL-2B-Instruct에 저장했다고 가정합니다.