소프트웨어 스택과 버전¶
개요¶
이 페이지는 Coding Assistant 서빙 스택의 소프트웨어 구성 요소, 각 요소의 역할, 이번 릴리스의 고정 버전을 정리합니다. 이 스택은 Kubernetes 기반 llm-d와 RBLN Cloud Native Stack(RCNS)을 결합합니다. RCNS 릴리스별로 지원하는 운영체제, Kubernetes, OpenShift, 컨테이너 런타임, 드라이버 버전은 지원 매트릭스 › RBLN Cloud Native Stack(RCNS)에서 확인할 수 있습니다.
구성 요소¶
구성 요소는 요청 라우팅부터 노드까지 5개 계층으로 나뉩니다. 다음 절에서는 각 계층의 구성 요소를 클러스터에 설치하는 방식도 설명합니다. 이 방식에 따라 설치 주체와 업그레이드 시 함께 변경되는 요소가 결정됩니다.
- modelserver 이미지: SDK 구성 요소는 modelserver 이미지에 함께 포함됩니다. 이미지를 변경하면 모든 요소가 동시에 변경됩니다. 확장 및 업그레이드 › 버전 호환성을 참고하세요.
- 서빙 차트: 차트가 게이트웨이 리소스, EPP, modelserver를 실행합니다. 서빙 스택 설치(Helm 차트)를 참고하세요.
- 플랫폼: 차트를 설치하기 전에 클러스터에 설치합니다. Kubernetes 배포 › 배포 단계의 1~3단계를 참고하세요.
요청 라우팅¶
GatewayClass provider는 기본값이 Istio이며 agentgateway도 사용할 수 있습니다. 이 provider가 Gateway API 및 Gateway API Inference Extension(GAIE) CRD의 Gateway, HTTPRoute, InferencePool 리소스를 구현합니다. llm-d 라우터의 Endpoint Picker(EPP)는 prefix 캐시 친화도와 부하에 따라 요청별 prefill 및 decode 인스턴스를 선택하고 decode Pod의 라우팅 사이드카는 요청을 먼저 prefill로 보냅니다. 플랫폼에서 CRD와 provider를 설치하며 서빙 차트가 EPP와 라우팅 사이드카를 실행합니다.
모델 서빙¶
RBLN vLLM(vllm-rbln)은 RBLN NPU에서 vLLM을 실행합니다. prefill과 decode 인스턴스 모두에서 MiniMax-M2.7을 서빙하며 클라이언트 연동의 OpenAI 호환 API를 제공합니다. KV 캐시는 플러그인 2개가 처리합니다. lmcache-rbln은 LMCache의 RBLN 확장으로, 디바이스 메모리의 KV를 호스트 메모리 또는 NVMe로 오프로딩합니다(KV 캐시 오프로딩). 이 설계에서는 prefill에서만 실행하며 tier 2인 Rebellions Direct Storage(RDS)로 KV를 오프로딩합니다. nixl-rbln은 NIXL의 RBLN 백엔드로(Disaggregated Prefill / Decode), NUMA-local NIC을 통해 prefill이 생성한 KV를 RDMA로 decode에 전송합니다. 이 세 구성 요소는 모두 modelserver 이미지에 포함됩니다.
런타임과 컴파일러¶
RBLN PyTorch(torch-rbln)는 RBLN NPU용 PyTorch 확장이고 RBLN Compiler(rebel-compiler)는 모델 그래프를 컴파일합니다. 컴파일 결과는 컴파일 캐시 볼륨에 저장되며 컴파일러 버전이 일치할 때만 재사용합니다. 컴파일 캐시를 참고하세요. 두 구성 요소 모두 modelserver 이미지에 포함됩니다.
디바이스 할당¶
RBLN NPU Operator는 NPU를 DRA 디바이스로 게시합니다. dranet은 RoCE NIC을 DRA 디바이스로 게시합니다. 두 구성 요소의 배포 방법은 노드 준비를, 디바이스를 Pod에 할당하는 방법은 디바이스 할당을 참고하세요.
노드¶
RBLN Driver는 RBLN NPU용 커널 드라이버입니다. RoCE NIC 드라이버는 NIC 벤더가 제공하며 호스트 OS에 설치합니다. 드라이버 배포 방법과 RDS 설정 방법은 노드 준비를 참고하세요.
모니터링 기능은 선택 사항이며 기본값은 비활성 상태입니다. monitoring.enabled를 설정하면 기본값으로 VictoriaMetrics Operator가 메트릭을 수집합니다. Prometheus Operator도 선택할 수 있습니다. tracing.enabled를 설정하면 OpenTelemetry collector가 트레이스를 수집합니다. 모니터링을 참고하세요.
구성 요소 간 상호작용¶
요청 경로, prefix 캐시 예측, nixl-rbln의 KV 전송, lmcache-rbln의 KV 오프로딩은 Rebel100™ 기반 Coding Assistant › 아키텍처에 설명합니다. 요청 경로 밖의 상호작용은 디바이스 게시입니다.
- 디바이스 게시: RBLN NPU Operator는 NPU를, dranet은 RoCE NIC을 DRA 디바이스로 게시합니다(디바이스 할당 참고).
이번 GA 릴리스의 고정 버전¶
다음 표는 이번 GA 릴리스에서 고정한 구성 요소 버전을 앞의 계층 순서로 정리합니다. 추가로 참고할 공식 문서도 함께 제공합니다. 다음 버전은 Target Configuration에서 검증했으며 예외는 두 가지입니다. agentgateway는 검증에서 Istio로 대체했습니다. lmcache-rbln과 LMCache는 modelserver 이미지에 포함되지만 LMCache 없이 검증했으므로 사용하지 않았습니다. 이 표는 지원 또는 호환성 매트릭스가 아닙니다. 지원하는 운영체제, Kubernetes, 드라이버 조합은 지원 매트릭스 › RBLN Cloud Native Stack(RCNS)를 참고하세요.
| 구성 요소 | 버전 | 출처 |
|---|---|---|
| Gateway API CRDs | v1.5.1 | Gateway API 문서 |
| Gateway API Inference Extension CRDs | v1.5.0 | Gateway API Inference Extension 문서 |
| Istio(기본 GatewayClass provider) | 1.30.0 | Istio 문서 |
| agentgateway(대안) | v1.1.0 | agentgateway 문서 |
| llm-d | 0.9.0 | llm-d 문서, llm-d v0.9.0 소스 |
| vllm-rbln | 0.12.0 | RBLN vLLM |
| vLLM | 0.30.0+cpu | vLLM 문서 |
| lmcache-rbln | 0.12.0 | N/A |
| LMCache | 0.5.4 | LMCache 문서 |
| nixl-rbln | 0.12.0 | N/A |
| NIXL | 1.1.0+cpu | NIXL 저장소 |
| torch-rbln | 0.12.0 | RBLN PyTorch |
| RBLN Compiler | 0.12.0 | RBLN Compiler |
| RBLN NPU Operator | 0.6.0 | RBLN NPU Operator |
| dranet | v1.5.0 | dranet 저장소 |
| Kubernetes | 1.34.3, 1.35.4, 1.36.4(RCNS 지원 버전) | Kubernetes Dynamic Resource Allocation |
| RBLN Driver | 3.5.1 | 설치 가이드 |
서빙 차트(coding-assistant-stack) | 0.12.0(oci://repo.rebellions.ai/rebellions/coding-assistant-stack) | 차트 준비 |
modelserver 이미지(rbln-serve) | 0.12.0-ubi10.2-py3.12(repo.rebellions.ai/rebellions/rbln-serve). modelserver.image의 차트 기본값 | modelserver 이미지 |
표에 없는 구성 요소는 이 설계에서 검증하지 않았습니다.
modelserver 이미지¶
modelserver 이미지 rbln-serve에는 RBLN SDK 0.12.0이 들어 있습니다. 따라서 이미지 태그 하나가 prefill과 decode Pod이 실행하는 SDK 패키지 버전을 모두 고정합니다. 아래 탭마다 해당 이미지에 들어 있는 Python과 RBLN SDK 패키지 버전을 정리했습니다. 함께 포함된 vLLM, LMCache, NIXL의 버전은 앞의 표와 같습니다.
태그 형식은 <SDK_VERSION>-<OS>-py<PYTHON_VERSION>입니다. 검증에는 0.12.0-ubi10.2-py3.12를 사용했으며, 이미지는 다음 기반 운영체제별로 제공합니다. 다른 운영체제의 이미지를 사용하려면 modelserver.image.tag를 해당 태그로 설정하세요.
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.10 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
| 패키지 | 버전 |
|---|---|
| Python | 3.12 |
rebel-compiler | 0.12.0 |
torch-rbln | 0.12.0 |
optimum-rbln | 0.12.0 |
vllm-rbln | 0.12.0 |
lmcache-rbln | 0.12.0 |
nixl-rbln | 0.12.0 |
관련 문서¶
- Kubernetes 배포 - 클러스터에 구성 요소 설치
- 검증 및 제한 사항 - 기능 및 정확도 검증에 사용한 버전
- 지원 매트릭스 › RBLN Cloud Native Stack(RCNS) - 지원하는 OS, Kubernetes, 드라이버 조합