Kubernetes에 Model Analyzer 배포
Kubernetes에 Model Analyzer 배포 (Model Analyzer on Kubernetes)
Model Analyzer는 helm 차트를 이용해 쿠버네티스 켜진(kubernetes-enabled) 클러스터에서의 배포를 지원해요. helm 차트에 대한 자세한 내용은 helm 공식 문서에서 확인할 수 있습니다.
요구사항
- 쿠버네티스가 켜진 클러스터
- Helm
GPU가 있는 쿠버네티스 사용하기
- Kubernetes 설치 — NVIDIA Kubernetes 설치 문서의 단계를 따라 설치·검증·문제 해결.
- 기본 컨테이너 런타임 설정 — 쿠버네티스는 아직 Docker 컨테이너 실행의
--gpus옵션을 지원하지 않으므로, 모든 GPU 노드에서 nvidia 런타임을 Docker의 기본으로 등록해야 해요. NVIDIA Container Toolkit 설치 문서를 따르세요. - NVIDIA Device Plugin 설치 — 쿠버네티스에서 GPU를 쓰려면 NVIDIA Device Plugin도 필요합니다. 디바이스 플러그인은 워커 노드의 GPU 수를 자동으로 열거하고 파드가 그 위에서 실행되게 하는 daemonset을 제공해요. 클러스터에 디바이스 플러그인을 배포하려면 NVIDIA Device Plugin 문서를 따르세요.
Model Analyzer 배포
먼저 클러스터에 필요한 파드가 모두 배포됐는지 확인합니다.
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-5dc87d545c-5c9sp 1/1 Running 0 21m
kube-system calico-node-8dcn5 1/1 Running 0 21m
kube-system coredns-f9fd979d6-9l29n 1/1 Running 0 36m
kube-system coredns-f9fd979d6-mf775 1/1 Running 0 36m
kube-system etcd-user.nvidia.com 1/1 Running 0 36m
kube-system kube-apiserver-user.nvidia.com 1/1 Running 0 36m
kube-system kube-controller-manager-user.nvidia.com 1/1 Running 0 36m
kube-system kube-proxy-zhpv7 1/1 Running 0 36m
kube-system kube-scheduler-user.nvidia.com 1/1 Running 0 36m
kube-system nvidia-device-plugin-1607379880-dblhc 1/1 Running 0 11m
모델 분석기를 배포하기 전에 컨테이너가 마운트할 디렉토리를 helm-chart/values.yaml에 지정해야 해요.
# Job timeout value specified in seconds
jobTimeout: 900
## Configurations for mounting volumes
# Local path to model directory
modelPath: /home/models
# Local path export model config variants
outputModelPath: /home/output_models
# Local path to export data
resultsPath: /home/results
# Local path to store checkpoints
checkpointPath: /home/checkpoints
## Images
images:
analyzer:
image: model-analyzer
triton:
image: nvcr.io/nvidia/tritonserver
tag: 26.08-py3
모델 분석기 실행 파일은 helm-chart/templates/config-map.yaml에 정의된 config 파일을 사용합니다. 이 config로 모델 분석기에 인자를 전달할 수 있어요. 파일의 config.yaml 섹션 아래 내용만 수정해야 합니다.
apiVersion: v1
kind: ConfigMap
metadata:
name: analyzer-config
namespace: default
data:
config.yaml: |
######################
# Config for profile #
######################
override_output_model_repository: True
run_config_search_disable: True
triton_http_endpoint: localhost:8000
triton_grpc_endpoint: localhost:8001
triton_metrics_url: http://localhost:8002/metrics
concurrency: 1,2
batch_sizes: 1
profile_models:
resnet50_libtorch:
model_config_parameters:
instance_group:
-
kind: KIND_GPU
count: [1]
dynamic_batching:
######################
# Config for report #
######################
report_model_configs:
- resnet50_libtorch_i0
이제 Model Analyzer 루트 디렉토리에서 helm 차트를 배포할 수 있어요.
~/model_analyzer$ helm install model-analyzer helm-chart
NAME: model-analyzer
LAST DEPLOYED: Mon Dec 7 15:09:14 2020
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None
모델 분석기 파드가 실행 중인지 확인합니다.
~/model_analyzer$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
default model-analyzer-model-analyzer-t9rsl 1/1 Running 0 23s
kube-system calico-kube-controllers-5dc87d545c-5c9sp 1/1 Running 0 54m
...
job이 완료되면 결과를 helm-chart/values.yaml의 resultsPath로 전달한 디렉토리에서 찾을 수 있어요.
~/model_analyzer$ ls -l /home/results
total 12
drwxr-xr-x 4 root root 4096 Jun 2 17:00 plots
drwxr-xr-x 4 root root 4096 Jun 2 17:00 reports
drwxr-xr-x 2 root root 4096 Jun 2 17:00 results
~/model_analyzer$ cat /home/results/results/*
Model,GPU ID,Batch,Concurrency,Model Config Path,Instance Group,Preferred Batch Sizes,Satisfies Constraints,GPU Memory Usage (MB),GPU Utilization (%),GPU Power Usage (W)
resnet50_libtorch,0,1,2,resnet50_libtorch_i0,1/GPU,[32],Yes,1099.0,16.2,85.3
resnet50_libtorch,0,1,1,resnet50_libtorch_i0,1/GPU,[32],Yes,1099.0,14.4,82.2
Model,Batch,Concurrency,Model Config Path,Instance Group,Preferred Batch Sizes,Satisfies Constraints,Throughput (infer/sec),p99 Latency (ms),RAM Usage (MB)
resnet50_libtorch,1,2,resnet50_libtorch_i0,1/GPU,[32],Yes,195.0,11.0,2897.0
resnet50_libtorch,1,1,resnet50_libtorch_i0,1/GPU,[32],Yes,164.0,8.1,2937.0
Model,GPU ID,GPU Memory Usage (MB),GPU Utilization (%),GPU Power Usage (W)
triton-server,0,277.0,0.0,56.5
더 알아보기 (Learn more)
- Triton Model Analyzer — 분석기 사용법·CLI·리포트
- Autoscaling and Load Balancing w/ Triton Server and TensorRT-LLM — 쿠버네티스에서 메트릭 기반 자동 확장
- Helm — 차트 패키지 관리자