Установка Time-Slicing GPUs
Плагин Time-Slicing GPUs в Kubernetes
Чтобы установить плагин Time-Slicing GPUs в Managed Service for Kubernetes:
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
-
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
-
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра
--folder-name
или--folder-id
. -
Создайте группы безопасности для кластера Managed Service for Kubernetes и входящих в него групп узлов.
Важно
От настройки групп безопасности зависит работоспособность и доступность кластера, а также запущенных в нем сервисов и приложений.
-
Создайте кластер Managed Service for Kubernetes. При создании укажите группы безопасности, подготовленные ранее.
-
Создайте группу узлов Managed Service for Kubernetes c GPU NVIDIA® Tesla® T4 и с группами безопасности, подготовленными ранее.
-
Установите kubectl
и настройте его на работу с созданным кластером.
Настройте Time-Slicing GPUs
-
Создайте конфигурацию time-slicing:
-
Подготовьте файл
time-slicing-config.yaml
со следующим содержимым:--- kind: Namespace apiVersion: v1 metadata: name: gpu-operator --- apiVersion: v1 kind: ConfigMap metadata: name: time-slicing-config namespace: gpu-operator data: a100-80gb: |- version: v1 sharing: timeSlicing: resources: - name: nvidia.com/gpu replicas: 5 tesla-t4: |- version: v1 sharing: timeSlicing: resources: - name: nvidia.com/gpu replicas: 5
-
Выполните команду:
kubectl create -f time-slicing-config.yaml
Результат:
namespace/gpu-operator created configmap/time-slicing-config created
-
-
Установите GPU Operator
:helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && \ helm repo update && \ helm install \ --namespace gpu-operator \ --create-namespace \ --set devicePlugin.config.name=time-slicing-config \ gpu-operator nvidia/gpu-operator
-
Примените конфигурацию time-slicing для кластера Managed Service for Kubernetes или группы узлов:
Кластер Managed Service for KubernetesГруппа узлов Managed Service for Kuberneteskubectl patch clusterpolicies.nvidia.com/cluster-policy \ --namespace gpu-operator \ --type merge \ --patch='{"spec": {"devicePlugin": {"config": {"name": "time-slicing-config", "default": "tesla-t4"}}}}'
yc managed-kubernetes node-group add-labels <идентификатор_или_имя_группы_узлов> \ --labels nvidia.com/device-plugin.config=tesla-t4
Идентификатор и имя группы узлов Managed Service for Kubernetes можно получить со списком групп узлов в каталоге.
Проверьте работу Time-Slicing GPUs
-
Создайте тестовое приложение:
-
Сохраните следующую спецификацию для создания приложения в YAML-файл с именем
nvidia-plugin-test.yml
.Deployment
— объект API Kubernetes, который управляет реплицированным приложением.apiVersion: apps/v1 kind: Deployment metadata: name: nvidia-plugin-test labels: app: nvidia-plugin-test spec: replicas: 5 selector: matchLabels: app: nvidia-plugin-test template: metadata: labels: app: nvidia-plugin-test spec: tolerations: - key: nvidia.com/gpu operator: Exists effect: NoSchedule containers: - name: dcgmproftester11 image: nvidia/samples:dcgmproftester-2.0.10-cuda11.0-ubuntu18.04 command: ["/bin/sh", "-c"] args: - while true; do /usr/bin/dcgmproftester11 --no-dcgm-validation -t 1004 -d 300; sleep 30; done resources: limits: nvidia.com/gpu: 1 securityContext: capabilities: add: ["SYS_ADMIN"]
-
Выполните команду:
kubectl apply -f nvidia-plugin-test.yml
Результат:
deployment.apps/nvidia-plugin-test created
-
-
Убедитесь, что все пять подов Managed Service for Kubernetes приложения находятся в состоянии
Running
:kubectl get pods | grep nvidia-plugin-test
-
Выполните команду
nvidia-smi
в запущенном поде Managed Service for Kubernetesnvidia-container-toolkit
:kubectl exec <имя_пода_nvidia-container-toolkit> \ --namespace gpu-operator -- nvidia-smi
Результат:
Defaulted container "nvidia-container-toolkit-ctr" out of: nvidia-container-toolkit-ctr, driver-validation (init) Thu Jan 26 09:42:51 2023 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 515.65.01 Driver Version: 515.65.01 CUDA Version: N/A | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 Tesla T4 Off | 00000000:8B:00.0 Off | 0 | | N/A 72C P0 70W / 70W | 1579MiB / 15360MiB | 100% Default | | | | N/A | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 43108 C /usr/bin/dcgmproftester11 315MiB | | 0 N/A N/A 43211 C /usr/bin/dcgmproftester11 315MiB | | 0 N/A N/A 44583 C /usr/bin/dcgmproftester11 315MiB | | 0 N/A N/A 44589 C /usr/bin/dcgmproftester11 315MiB | | 0 N/A N/A 44595 C /usr/bin/dcgmproftester11 315MiB | +-----------------------------------------------------------------------------+
Удалите созданные ресурсы
Некоторые ресурсы платные. Удалите ресурсы, которые вы больше не будете использовать, чтобы не тратить на них средства:
- Удалите кластер Managed Service for Kubernetes.
- Если вы создавали сервисные аккаунты, удалите их.