NGC:Nvidia Gpu Container
https://www.nvidia.cn/gpu-cloud/deep-learning-containers/ NVIDIA GPU Cloud (NGC)
NGC 提供的高性能 AI 容器包含 TensorFlow、PyTorch 和 MXNet 等深度学习框架,可以为 AI 研究人员提供诸多帮助。这些预先集成的 GPU 加速框架以及诸如 CUDA 运行时库、NVIDIA 库和操作系统之类的所有必要相关项都由 NVIDIA 进行了调整、测试和验证,现可在 AWS 、阿里云、NVIDIA DGX-1™ 和 NVIDIA DGX Station™ 上运行。因此,不再需要执行耗时且难以自己动手完成的软件集成,同时还能让用户借助 AI 解决曾经认为不可能克服的挑战。
NGC 上的优化深度学习框架容器库现在免费向所有人提供,用户可在参与活动的云服务提供商和 NVIDIA DGX™ 系统上使用它们。借助容器化软件,可以跨环境移植深度学习作业,从而减少通常在扩展 AI 工作负载时所需的开销。

https://catalog.ngc.nvidia.com/
Github Nvidia-docker https://github.com/NVIDIA/nvidia-docker
NVIDIA GPU Operator分析二:NVIDIA Container Toolkit安装 https://developer.aliyun.com/article/784150
NVIDIA DGX 系统 NVIDIA DGX™ A100 是适用于所有 AI 工作负载的通用系统,为全球首款 5 petaFLOPS AI 系统提供超高的计算密度、性能和灵活性。NVIDIA DGX A100 采用全球超强大的加速器 NVIDIA A100 Tensor Core GPU,可让企业将深度学习训练、推理和分析整合至一个易于部署的统一 AI 基础架构中,该基础架构具备直接联系 NVIDIA AI 专家的功能。
Cuda版本可以不随着宿主机cuda版本而改变
这样有一个好处,不同cuda版本与tf版本匹配就不会受到宿主cuda版本影响了

docker镜像容器流程

NGC Pytorch Docker使用
- 查询容器状态
docker ps -a
docker ps -a | grep wyt_ngc_pt
- Docker pull
https://catalog.ngc.nvidia.com/orgs/nvidia/containers/pytorch 21.09-py3版本
docker pull nvcr.io/nvidia/pytorch:21.09-py3
- Docker run
docker run --gpus <all or specified gpu id> -it --rm --privileged --name=<container_name_per_your_preference> -v <host_workspace_directory>:<mount_to_container_workspace_directory> -v /data:/data <image_name>:tag
例子:
docker run --gpus all -it --rm --privileged --name=wyt_ngc_pt --ipc=host -v /home/wangyiting/:/workspace -v /data:/data nvcr.io/nvidia/pytorch:21.09-py3
docker run --gpus all -it --rm -v /home/wangyiting/wyt_workspace/:/data nvcr.io/nvidia/pytorch:21.09-py3
--ipc=host
用于增加memory,默认的memeory只有64MB
--rm
will delete the container when finished -d
后台运行
-v
is the mounting directory <host_workspace_directory>
将host中的目录挂载到docker中 应该可以挂载多个
-it
是两个参数:-i和-t。前者表示打开并保持stdout,后者表示分配一个终端(pseudo-tty)(伪终端,类似前台进程,如果没有的话,实际运行完docker run之后就会退出)。此时如果使用exit退出,则容器的状态处于Exit,而不是后台运行。如果想让容器一直运行,而不是停止,可以使用快捷键 ctrl+p ctrl+q (Ctrl + p + q)退出,此时容器的状态为Up。
- 查询容器id
1、使用docker ps -aqf “name=containername”
2、docker inspect --format="{{.Id}}" container_name
- 启动、重启、停止容器命令
[root@xxx ~]# docker start container_name/container_id # name or id
[root@xxx ~]# docker restart container_name/container_id
[root@xxx ~]# docker stop container_name/container_id
#stop the running container, but container is not removed from the system yet. It still exists in system and its status is ‘Exited‘.
后台启动一个容器后,如果想进入到这个容器,可以使用attach命令:
[root@xxx ~]# docker attach container_name/container_id
补充-进入容器的4种方法 docker exec -it container_name bash
删除容器 running container是没法移除的,要先stop
[root@xxx ~]# docker rm container_name/container_id