宿主机 安装 driver


# 禁用宿主机 自带 显卡 驱动

lsmod | grep nouveau
  nouveau              1949696  0
  mxm_wmi                16384  1 nouveau
  wmi                    32768  2 mxm_wmi,nouveau
  video                  49152  1 nouveau
  i2c_algo_bit           16384  1 nouveau
  ttm                   106496  2 qxl,nouveau
  drm_kms_helper        184320  4 qxl,nouveau
  drm                   491520  5 drm_kms_helper,qxl,ttm,nouveau

# 首先金庸 nouvean
vi /etc/modprobe.d/blacklist.conf

# 在最后一行添加:blacklist nouveau

modprobe_path='/etc/modprobe.d/blacklist.conf'
sed -i "s/blacklist nouveau//g" ${modprobe_path}
echo -e '\nblacklist nouveau' >>  ${modprobe_path}

sudo update-initramfs -u

# 关闭图形界面
systemctl set-default multi-user.target

reboot

lsmod | grep nouveau
# 无输出 代表成功

echo "nameserver 114.114.114.114" > /etc/resolv.conf


sudo sed -i "s@http.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
sudo sed -i "s@http.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list

apt update -y

apt install nvidia-driver-460-server -y


# 关闭图形界面
systemctl set-default multi-user.target


distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
   && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
   && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list


sudo apt-get update -y

sudo apt-get install -y nvidia-docker2

sudo systemctl restart docker

sudo systemctl enable docker



测试 nvidia-smi 驱动



sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://wm12hkla.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker


echo "nameserver 114.114.114.114" > /etc/resolv.conf
# 国内 加速
sudo docker run --rm --gpus all registry.cn-hangzhou.aliyuncs.com/mkmk/all:nvidia-cuda-11-base nvidia-smi

Thu Apr  8 16:52:50 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.32.03    Driver Version: 460.32.03    CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| 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  GeForce GT 730      Off  | 00000000:00:03.0 N/A |                  N/A |
| 30%   30C    P0    N/A /  N/A |      0MiB /  2002MiB |     N/A      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  GeForce GT 730      Off  | 00000000:00:04.0 N/A |                  N/A |
| 30%   27C    P0    N/A /  N/A |      0MiB /  2002MiB |     N/A      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+
root@free_cicd:~# 


# 关闭图形界面
systemctl set-default multi-user.target

使用 gpu-burn 测试 gpu


# 前台运行
docker run -it --gpus=all   --name gpu-jupyter1  -p  8888:8888 ${register_url}/tensorflow/tensorflow:2.4.1-gpu-jupyter 


# 删除
docker stop gpu-jupyter1  && docker rm gpu-jupyter1 


# 后台运行 , 后台 运行 需要 查看   密码
docker run -d --gpus=all   --name gpu-jupyter1  -p  8888:8888 ${register_url}/tensorflow/tensorflow:2.4.1-gpu-jupyter 

docker logs    gpu-jupyter1


ip:8888  访问即可

gub-burn 的 dockerfile


docker run -it --gpus=all   --name gpu-jupyter1  -p  8888:8888 ${register_url}/tensorflow/tensorflow:2.4.1-gpu-jupyter 


#  推送到 远程

register_url='192.168.170.100:5000'
docker tag  ${register_url}/tensorflow/tensorflow:2.4.1-gpu-jupyter  registry.cn-hangzhou.aliyuncs.com/mkmk/all:tensorflow-2.4.1-gpu-jupyter

docker push registry.cn-hangzhou.aliyuncs.com/mkmk/all:tensorflow-2.4.1-gpu-jupyter


赠送的 一些 tf 简单代码

#  测试 是否 使用的 gpu
import tensorflow as tf
tf.test.is_gpu_available(
    cuda_only=False,
    min_cuda_compute_capability=None
)
 
print("is_gpu: ", tf.test.is_gpu_available())


# 查看 所有的 可用 计算 设备
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())


# 加法 

# cpu
%%time

with tf.device("/device:CPU:0"):
    a=tf.zeros([1000,1000])
    print("a on gpu:",a.device.endswith('GPU:0'))
    for i in range(10000):
        b=tf.add(a,a)

-->
a on gpu: False
CPU times: user 7.74 s, sys: 1.2 s, total: 8.94 s
Wall time: 3.39 s


# gpu
%%time

with tf.device("/device:GPU:0"):
    a=tf.zeros([1000,1000])
    print("a on gpu:",a.device.endswith('GPU:0'))
    for i in range(10000):
        b=tf.add(a,a)

-->
a on gpu: True
CPU times: user 900 ms, sys: 1.22 s, total: 2.12 s
Wall time: 2.12 s


讲解: 真正的 计算时间 是  是 用户态 计算时间, 7s 不是 物理时间 而是 cpu 逻辑 耗时

CPU times: user 7.74 s,  (cpu 耗时)

CPU times: user 900 ms, (GPU 耗时)



来聊聊天啊
image