NPU 제품군을 선택해 Pod 배치하기¶
NPU 제품군(ATOM™ 또는 Rebel100™)을 선택하고 해당 제품군의 노드에 Pod가 배치되는지 확인합니다.
이 튜토리얼은 Device Plugin 구성을 기준으로 합니다. Operator가 아직 설치되어 있지 않다면 먼저 NPU Operator 설치 절차를 진행합니다.
1. 제품군 확인하기¶
노드의 NPU 제품군 레이블을 조회합니다.
$ kubectl get nodes -l rebellions.ai/npu.present=true \
-o 'custom-columns=NAME:.metadata.name,FAMILY:.metadata.labels.rebellions\.ai/npu\.family,PRODUCT:.metadata.labels.rebellions\.ai/npu\.product,ALLOCATABLE:.status.allocatable.rebellions\.ai/npu'
NAME FAMILY PRODUCT ALLOCATABLE
node-rebel100 rebel100 RBLN-CR13 1
$ kubectl get nodes -l rebellions.ai/npu.present=true \
-o 'custom-columns=NAME:.metadata.name,FAMILY:.metadata.labels.rebellions\.ai/npu\.family,PRODUCT:.metadata.labels.rebellions\.ai/npu\.product,ALLOCATABLE:.status.allocatable.rebellions\.ai/npu'
NAME FAMILY PRODUCT ALLOCATABLE
node-atom atom RBLN-CA25 16
조회된 제품군 중 하나를 선택합니다.
사용 가능한 NPU 수
노드의 사용 가능한 NPU 수를 확인하려면 kubectl describe node <NODE_NAME>을 실행해 Allocatable과 Allocated resources를 비교합니다. Allocatable에는 이미 할당된 NPU도 포함됩니다.
2. 제품군을 지정해 Pod 생성하기¶
npu-tutorial 네임스페이스를 생성합니다. 이 튜토리얼에서는 Rebel100™ 노드에 Pod를 배치합니다. ATOM™ 노드를 사용하려면 NPU_FAMILY를 atom으로 설정합니다.
nodeSelector로 제품군을 선택하고 resources.limits에 NPU 1개를 지정합니다.
네임스페이스의 기존 상태에 따라 출력이 달라질 수 있습니다.
생성된 Pod가 Ready 상태가 될 때까지 기다립니다.
$ kubectl wait -n npu-tutorial --for=condition=Ready pod/selected-npu --timeout=180s
pod/selected-npu condition met
3. 선택된 제품군과 장치 확인하기¶
제품군별 출력 예시입니다.
$ NODE=$(kubectl get pod -n npu-tutorial selected-npu -o jsonpath='{.spec.nodeName}')
$ kubectl get node "$NODE" \
-o 'custom-columns=NAME:.metadata.name,FAMILY:.metadata.labels.rebellions\.ai/npu\.family,PRODUCT:.metadata.labels.rebellions\.ai/npu\.product'
NAME FAMILY PRODUCT
node-rebel100 rebel100 RBLN-CR13
$ kubectl exec -n npu-tutorial selected-npu -- rbln-smi -L
NPU 0 : RBLN-CR13 (UUID: NPU-34428712-d887-840b-a7b9-1c9e05807fc3)
$ NODE=$(kubectl get pod -n npu-tutorial selected-npu -o jsonpath='{.spec.nodeName}')
$ kubectl get node "$NODE" \
-o 'custom-columns=NAME:.metadata.name,FAMILY:.metadata.labels.rebellions\.ai/npu\.family,PRODUCT:.metadata.labels.rebellions\.ai/npu\.product'
NAME FAMILY PRODUCT
node-atom atom RBLN-CA25
$ kubectl exec -n npu-tutorial selected-npu -- rbln-smi -L
NPU 0 : RBLN-CA25 (UUID: NPU-c5ba8327-5b18-847e-953e-4ca4b4daeb44)
Pod가 실행 중인 노드의 제품군이 $NPU_FAMILY와 같고 장치 제품명이 노드의 npu.product 레이블과 같으면 성공입니다.
Pod가 Pending 상태인 경우
kubectl describe pod -n npu-tutorial selected-npu의 Events를 확인합니다. selector 불일치, NPU 부족, Pod가 허용하지 않는 노드 taint가 원인일 수 있습니다.