콘텐츠로 이동

RBLN NPU Feature Discovery

RBLN SDK의 NPU Feature Discovery는 노드에 장착된 RBLN NPU 정보를 Kubernetes 노드 레이블로 자동 등록합니다. 레이블 등록에는 Kubernetes Node Feature Discovery(NFD)를 사용합니다.

Kubernetes Node Feature Discovery 준비와 RBLN NPU Feature Discovery 배포는 NPU Operator 설치를 따릅니다. 레이블 조회와 제품군별 Pod 배치는 NPU 제품군을 선택해 Pod 배치하기 튜토리얼에서 확인할 수 있습니다.

레이블 목록

RBLN NPU Feature Discovery가 생성하는 레이블은 다음과 같습니다.

Note

쿠버네티스에서 레이블 값은 항상 문자열입니다. "값 유형" 열은 문자열 형식 내에서 표현되는 유형을 나타냅니다.

레이블 이름 값 유형 의미 예시
rebellions.ai/driver-version.full 문자열 RBLN 드라이버의 전체 시맨틱 버전 3.5.1
rebellions.ai/driver-version.major 정수 RBLN 드라이버 시맨틱 버전의 메이저 부분 3
rebellions.ai/driver-version.minor 정수 RBLN 드라이버 시맨틱 버전의 마이너 부분 5
rebellions.ai/driver-version.patch 정수 RBLN 드라이버 시맨틱 버전의 패치 부분 1
rebellions.ai/npu.count 정수 SR-IOV 가상 함수(VF)를 소유한 물리 함수(PF)를 제외한 노드의 NPU 개수 2
rebellions.ai/npu.present 불리언 노드에 RBLN NPU가 존재하는지 여부 true, false
rebellions.ai/npu.product 문자열 NPU의 제품 이름 RBLN-CA22, RBLN-CR13

NPU 제품군 레이블

RBLN NPU Operator는 rbln-npu-family라는 NodeFeatureRule을 통해 PCI 디바이스 ID에서 값을 확인하여 rebellions.ai/npu.family 레이블을 부여합니다. NPU Feature Discovery는 이 레이블을 생성하지 않습니다.

레이블 이름 값 유형 의미 예시
rebellions.ai/npu.family 문자열 오퍼레이터가 소문자로 부여하는 NPU 제품군 atom

제거 후 노드 정보 정리

feature 파일을 정리하기 전에 Operator를 제거하고 해당 노드의 Rebellions feature-discovery 인스턴스를 모두 종료합니다. 다른 설치에서 이 파일을 사용하지 않는지 확인합니다. 그런 다음 해당 워커 노드에서 이 파일만 제거합니다.

sudo rm -f /etc/kubernetes/node-feature-discovery/features.d/rbln-features

파일을 남기면 NFD가 하드웨어 정보와 드라이버 버전 레이블을 다시 만들 수 있습니다. NFD 자체와 다른 벤더의 feature 파일은 유지합니다. 이어서 kubectl을 실행하는 터미널에서 해당 노드의 오래된 레이블을 제거합니다.

NODE=<NODE_NAME>
kubectl label node "$NODE" \
  rebellions.ai/npu.present- rebellions.ai/npu.count- \
  rebellions.ai/npu.product- rebellions.ai/npu.family- \
  rebellions.ai/driver-version.full- rebellions.ai/driver-version.major- \
  rebellions.ai/driver-version.minor- rebellions.ai/driver-version.patch- \
  rebellions.ai/driver-version.revision-
kubectl get node "$NODE" -o json | jq '
  .metadata | {labels: (.labels | with_entries(select(.key | startswith("rebellions.ai/")))),
    annotations: ((.annotations // {}) | with_entries(select(.key | startswith("rebellions.ai/"))))}'

중단된 업그레이드가 남긴 상태 레이블과 annotation도 확인합니다. 제거한 설치의 키만 정리하고 노드의 원래 cordon 상태는 유지해야 합니다. 다른 Rebellions 컴포넌트나 관리자 정책이 사용하는 키가 있으면 rebellions.ai/* 전체를 일괄 삭제해서는 안 됩니다.