콘텐츠로 이동

NPU Pod 실행하기

NPU 1개를 요청하고 컨테이너 안에서 장치가 보이는지 확인합니다.

이 튜토리얼은 Device Plugin 구성을 기준으로 합니다. Operator가 아직 설치되어 있지 않다면 먼저 NPU Operator 설치 절차를 진행합니다.

사용 가능한 NPU 수

노드의 사용 가능한 NPU 수를 확인하려면 kubectl describe node <NODE_NAME>을 실행해 Allocatable과 Allocated resources를 비교합니다. Allocatable에는 이미 할당된 NPU도 포함됩니다.

1. Pod 생성하기

npu-tutorial 네임스페이스와 Pod를 생성합니다.

kubectl create namespace npu-tutorial --dry-run=client -o yaml | kubectl apply -f -
kubectl apply -f - <<'EOF'
apiVersion: v1
kind: Pod
metadata:
  name: first-npu
  namespace: npu-tutorial
spec:
  containers:
  - name: ubuntu
    image: ubuntu:22.04
    command: ["sleep", "infinity"]
    resources:
      limits:
        rebellions.ai/npu: 1
EOF

네임스페이스의 기존 상태에 따라 출력이 달라질 수 있습니다.

생성 결과
namespace/npu-tutorial configured
pod/first-npu created

생성된 Pod가 Ready 상태가 될 때까지 기다립니다.

$ kubectl wait -n npu-tutorial --for=condition=Ready pod/first-npu --timeout=180s
pod/first-npu condition met

2. 장치 확인하기

Pod가 배치된 노드와 요청한 NPU 수를 확인합니다.

$ kubectl get pod -n npu-tutorial first-npu \
  -o 'custom-columns=NAME:.metadata.name,NODE:.spec.nodeName,NPUS:.spec.containers[0].resources.limits.rebellions\.ai/npu'
NAME        NODE            NPUS
first-npu   node-rebel100   1

$ kubectl exec -n npu-tutorial first-npu -- rbln-smi -L
NPU 0 : RBLN-CR13 (UUID: NPU-34428712-d887-840b-a7b9-1c9e05807fc3)
$ kubectl get pod -n npu-tutorial first-npu \
  -o 'custom-columns=NAME:.metadata.name,NODE:.spec.nodeName,NPUS:.spec.containers[0].resources.limits.rebellions\.ai/npu'
NAME        NODE        NPUS
first-npu   node-atom   1

$ kubectl exec -n npu-tutorial first-npu -- rbln-smi -L
NPU 0 : RBLN-CA25 (UUID: NPU-c5ba8327-5b18-847e-953e-4ca4b4daeb44)

요청한 NPU 1개가 컨테이너 안에 표시되면 성공입니다.

Pod 생성에 실패한 경우

  • Pod가 Pending 상태로 남아 있으면 kubectl describe pod -n npu-tutorial first-npu의 Events를 확인합니다. Insufficient rebellions.ai/npu는 배치 가능한 노드에 사용 가능한 NPU가 부족하다는 뜻입니다.
  • rbln-smi가 없거나 장치가 보이지 않으면 해당 노드의 Container Toolkit과 Device Plugin Pod를 확인합니다. 점검 방법은 오퍼레이터 관찰가능성에 정리되어 있습니다.

정리

$ kubectl delete pod -n npu-tutorial first-npu
pod "first-npu" deleted

Pod를 삭제하면 할당된 NPU를 다른 Pod에서 사용할 수 있습니다.