콘텐츠로 이동

RBLN NPU에서 Qwen3.6-27B 서빙

호스트에 RBLN Driver가 설치되어 있어야 하며, RBLN Compiler(rebel-compiler)를 설치하려면 RBLN Portal 계정이 필요합니다. 호환되는 패키지 버전은 설치 매트릭스에서 확인할 수 있습니다.

1
2
3
$ pip install \
  --extra-index-url https://pypi.rbln.ai/simple \
  rebel-compiler==0.12.0
1
2
3
4
$ pip install \
  --extra-index-url https://wheels.vllm.ai/0.30.0/cpu \
  --extra-index-url https://download.pytorch.org/whl/cpu \
  vllm-rbln==0.12.0
가이드 — 개요 및 설정

개요

Qwen/Qwen3.6-27B는 네이티브 멀티모달(비전-언어) 모델입니다. Qwen3.5와 동일한 아키텍처 — config model_type: qwen3_5, linear_attention 레이어(GatedDeltaNet: conv_state + recurrent_state)와 gated full_attention(paged KV) 레이어가 교차 배치된 하이브리드 디코더 — 를 공유하므로 Qwen3.5 라인과 동일한 RBLN 클래스로 로드됩니다. RBLN NPU에서는 RBLN vLLM 플러그인이 최초 실행 시 언어 모델과 비전 인코더를 컴파일하고, 이를 vLLM OpenAI 호환 API로 서빙합니다. 이미지는 chat-completions의 image_url 콘텐츠 필드로 전달합니다.

Configuration

--rbln-num-devices-per-local-rank는 엔진 프로세스 하나가 사용할 NPU 디바이스 수를 지정하며, RBLN 컴파일러는 Rebellions Scalable Design(RSD)으로 이 디바이스들에 맞게 모델을 분할합니다. NPU별 RSD 적용 방식은 모델 병렬화에서 확인할 수 있습니다. 비전 인코더는 --additional-config(optimum_overrides.visual)로 설정합니다. 이 설정을 바꾸면 다음 실행 시 모델을 재컴파일합니다. 재컴파일을 일으키는 설정 전체는 Compile Cache에 정리되어 있습니다.

Qwen3.6은 현재 27B dense 변형만 HuggingFace에 공개되어 있습니다(더 작은 dense 크기는 없으며, 35B-A3B MoE 변형은 본 recipe 범위 밖). 전체 엔진 인자는 설정 가이드에서, 비전 인코더와 언어 모델을 서로 다른 디바이스에 배치하는 방법은 세부 디바이스 할당에서 확인할 수 있습니다.

참고 및 제약

  • 시퀀스 길이·NPU 개수·비전 설정은 컴파일 시 고정되며, 변경하면 다음 실행 시 재컴파일됩니다.
  • --additional-config가 비전 인코더 설정(optimum_overrides.visual)을 전달합니다. 다중 이미지나 비디오 워크로드에서는 인코더의 max_seq_len을 조정하고, 인코더를 별도 디바이스에 배치하는 방법은 세부 디바이스 할당에서 확인할 수 있습니다.
  • 어텐션은 flash_attn으로 고정됩니다 — 하이브리드 백본의 다중-윈도우 prefill이 eager op에서 잘못 lowering되기 때문입니다. flash_attn이 올바른 경로입니다(vllm-rbln#795 참조). 재정의해서는 안 됩니다.
  • 미검증 설정. 파라미터는 이 모델 라인의 참조 컴파일 설정을 그대로 반영했으며, optimum-rbln#631이 RBLNQwen3_5ForConditionalGeneration 클래스를 도입하고 vllm-rbln#795가 transformers model implementation에 qwen3_5를 연결합니다(Qwen3.6도 같은 qwen3_5 등록에 편승).