准备工作

1,下载gpu驱动,目前dui环境使用的gpu驱动版本是NVIDIA-Linux-x86_64-381.22.run,由于在最新版本的驱动上使用存在内存泄漏的问题,没有使用最新版本

2,服务器安装gcc和kernel-devel,kernel-devel的版本和uname -a 查到的内核版本一致,如果内核不是最新的,可以将内核升级到最新版本,或者到网站搜索对应的rpm包。如果服务器是阿里云ECS,只能搜索对应的rpm包,不要升级操作系统版本,否则会导致ecs重启失败。

安装过程

1) 删除nouveau模块

  1.  rmmod nouveau( modprobe -r nouveau )
  2. 执行lsmod | grep nouveau 确认删除

2) 添加blacklist.conf在 /etc/modprobe.d 里面,.内容如下(请注意双引号在不同环境下的变化,切记)

  •  echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf

3) 重建initramfs

  1.  mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
  2.  dracut -v /boot/initramfs-$(uname -r).img $(uname -r)

4)重启  reboot

5)重启完成后执行./NVIDIA-Linux-x86_64-381.22.run ,所有选项使用默认值,一些warning提示可以忽略

6)驱动安装完成后,执行nvidia-smi可以查看gpu驱动是否安装成功

运行cuda

1,安装docker-1.13.1

tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

yum -y install docker-engine-1.13.1-1.el7.centos
systemctl enable docker.service


mkdir -p /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/docker.conf <<-'EOF'
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -D -H tcp://0.0.0.0:27000 -H unix:///var/run/docker.sock -g /data/docker -D --insecure-registry docker.v2.aispeech.com --registry-mirror=http://33391a94.m.daocloud.io
EOF
systemctl daemon-reload


2,安装nvidia-docker-1.0.1-1.x86_64.rpm 

         rpm  -ivh nvidia-docker-1.0.1-1.x86_64.rpm 

3,启动nvidia-docker

       systemctl start nvidia-docker

       systemctl enable nvidia-docker

4,手动起cuda容器

    执行start_cuda.sh 脚本,运行cuda服务

5,服务起来后,docker  logs  xxx 查看cuda容器日志,出现如下日志,表示服务正常

kubernetes 支持 gpu

有2个修改点

1,修改gpu服务器的kubelet,

vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf,增加配置项--feature-gates=Accelerators=true,重启kubelet服务

2,修改kubeapi的参数

vim /etc/kubernetes/manifests/kube-apiserver.yaml,增加配置项 --feature-gates=Accelerators=true,不需要手工重启(可不加)

3 . 在dui的集群管理→配置详情里增加gpu相关的qos配置(必须添加,否则显卡不会分配)

gpu服务 casr和cuda之间默认是socket通信,同时还支持tcp通信,如果使用tcp通信,修改步骤如下:

1  cuda服务  1个修改点

假设cuda的资源文件是dui_forward_v01 

修改dui_forward_v01/cfg/forward.skip.conf   ,use_inet=0 改为1 (0是socket通信,1是tcp通信)

2  识别资源 fst.cfg文件

假设识别资源文件夹dui_gpu_v0.5

修改 dui_gpu_v0.5/fst.cfg 

将use_inetnet 设置为1

将ip设置为cuda对应的ip地址

3, 分别重启cuda服务和casr服务  (casr不要更新service,否则修改的文件会被覆盖)

  • No labels