随笔 - 121  文章 - 0  评论 - 2  阅读 - 68745 

说明:2024/04/08 nvidia-container-runtime,现在叫 nvidia-container-toolkit

gpu共享技术(提高资源利用率):

时间分片Time-Slicing
多实例 GPU (MIG)
多进程服务 (MPS)

启动服务

nvidia-cuda-mps-control -d

ps -ef | grep mps

关闭服务

echo quit | nvidia-cuda-mps-control

1、GPU 节点必须安装NVIDIA 驱动,下载地址如下,并运行sh  安装

wget https://cn.download.nvidia.com/tesla/450.80.02/NVIDIA-Linux-x86_64-450.80.02.run

2、查看是否安装成功

nvidia-smi

#docker 容器运行时

3、安装nvidia-container-toolkit工具,添加 NVIDIA 容器运行时的官方存储库                   #这个是支持nvidia显卡运行的容器运行时,默认的docker运行时是runc,该模块提供docker使用gpu资源的能力

curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

#更新缓存

yum clean all && yum makecache

4、安装nvidia-container-toolkit软件包并重新加载Docker守护程序配置

#先备份daemon.json 防止之前的配置丢失

cp -a /etc/docker/daemon.json  /etc/docker/daemon.json.bak

sudo yum install -y nvidia-container-toolkit

pkill -SIGHUP dockerd

5、docker nvidia-container-runtime 运行时配置

vim /etc/docker/daemon.json

"default-runtime": "nvidia",
     "runtimes": {
           "nvidia": {
               "path": "/usr/bin/nvidia-container-runtime",
               "runtimeArgs": []
}
}

#官方命令配置

nvidia-ctk runtime configure --runtime=docker --config=/etc/docker/daemon.json

#查看nvidia-container-toolkit版本

nvidia-container-toolkit --version

6、重启docker 服务

systemctl daemon-reload

systemctl restart docker

#containerd 容器运行时

7、添加 NVIDIA 容器运行时的官方存储库

curl -s -L https://nvidia.github.io/libnvidia-container/stable/rpm/nvidia-container-toolkit.repo | \
sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo

8、安装nvidia-container-toolkit 

sudo yum install -y nvidia-container-toolkit

9、配置 Containerd 使用 nvidia-container-runtime
cat /etc/containerd/config.toml
搜索 plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc
runtime_type = "io.containerd.runc.v2" 改成 io.containerd.runtime.v1.linux
搜索 io.containerd.runtime.v1.linux
runtime = "runc" 改成runtime = "nvidia-container-runtime"

#官方命令配置

nvidia-ctk runtime configure --runtime=containerd
10、重启 containerd 服务
systemctl daemon-reload
systemctl restart containerd

11、部署 NVIDIA设备插件                                        #这个插件用来和k8s集成,该模块提供k8s集群通过kubelet动态调度gpu资源的能力

kubectl apply -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/1.0.0-beta4/nvidia-device-plugin.yml

或者安装 NVIDIA GPU Operator,适用K8S版本 1.23版本以上

#添加 NVIDIA Helm repository
helm repo add nvidia https://helm.ngc.nvidia.com/nvidia && helm repo update
#安装 GPU Operator【只支持MIG 模式】
使用默认配置文件,禁用自动安装显卡驱动功能【节点已安装GPU驱动的情况下】,安装 GPU Operator

helm install -n gpu-operator --create-namespace gpu-operator nvidia/gpu-operator \

  --set driver.enabled=false \

  --set dcgmExporter.enabled=true \

  --set migManager.enabled=true \

  --set driver.vgpu.enabled=true \

  --set migStrategy=mixed

12、K8S 调度GPU 任务测试1

cat gpu.yaml

apiVersion: v1
kind: Pod
metadata:
     name: tf-pod
spec:
    containers:
        - name: tf-container
           image: tensorflow/tensorflow:2.14.0-gpu
           command: [ "/bin/sh" ]
           args: [ "-c", "tail -f" ]
           resources:
              limits:

              cpu: 200m

              memory: 512Mi
              nvidia.com/gpu: 1 # requesting 1 GPUs

任务测试2

cat cuda-vectoradd.yaml
apiVersion: v1
kind: Pod
metadata:
     name: cuda-vectoradd
spec:
    restartPolicy: OnFailure
   containers:
   - name: cuda-vectoradd
     image: "nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda11.7.1-ubuntu20.04"
     resources:
        limits:
          nvidia.com/gpu: 1

测试3

docker run -d  --gpus all--name pytorch  swr.cn-south-1.myhuaweicloud.com/myj-prod-local-cluster-repository/pytorch:cuda11.8

docker exec -it pytorch  bash  执行 python3,调用cuda 计算显卡

13、进pod 里面执行nvida-smi 是否有输出,有输出说明成功了

14、查看节点是否有gpu 资源

kubectl  describe nodes/work1 |grep nv

#prometheus dcgm-exporter监控 GPU

1、添加chart 源

helm repo add dcgm-exporter https://nvidia.github.io/dcgm-exporter/helm-charts
helm repo update

2、安装dcgm-exporter
helm install dcgm-exporter dcgm-exporter/dcgm-exporter -n monitoring

或者

helm repo add utkuozdemir https://utkuozdemir.org/helm-charts

helm install nvidia-gpu-exporter -n nvidia-device-plugin
3、验证
curl -s 10.96.207.177:9400/metrics|head-20

4、grafana gpu模板

https://grafana.com/grafana/dashboards/14574-nvidia-gpu-metrics

posted on   MhaiM  阅读(1219)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示