在Docker中使用MindSpore GPU版本

2023-06-28 15:03:30

在Docker中使用MindSpore GPU版本

参考官方文档:安装指南

获取安装命令

如图所示
在这里插入图片描述
命令为

docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.6:2.0.0

安装

这里选择已经预安装MindSpore x.y.z GPU版本的生产环境。(CUDA10.1或CUDA11.1或CUDA11.6后端)

安装nvidia-container-toolkit

依次执行:

distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
      && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
            sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
            sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker

获取MindSpore镜像

docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-{cuda_version}:{version}

{version} 替换为对应MindSpore版本,如2.0.0。
{cuda_version} 替换为对应MindSpore依赖的CUDA版本,包括cuda10.1,cuda11.1和cuda11.6。

例如执行前面获得的命令:

docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.6:2.0.0

如果需要获取构建环境或者运行时环境镜像:

docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:{tag}

在这里插入图片描述

{tag} 替换为对应上述表格中的标签,包括devel和runtime。

测试

运行MindSpore镜像
docker run --rm -it -v /dev/shm:/dev/shm --runtime=nvidia swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-{cuda_version}:{tag} /bin/bash

其中:

  • –rm 表示退出容器后删除容器(可以不加这个参数)
  • -v /dev/shm:/dev/shm 将NCCL共享内存段所在目录挂载至容器内部;
  • –runtime=nvidia 用于指定容器运行时为nvidia-container-runtime;
  • {tag}对应上述表格中的标签。
  • {cuda_version} 对应MindSpore依赖的CUDA版本,包括cuda10.1,cuda11.1和cuda11.6。

例如使用前面下载的镜像:

docker run --rm -it -v /dev/shm:/dev/shm --runtime=nvidia swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.6:2.0.0 /bin/bash

如需使用可视化调试调优工具MindSpore Insight,需设置–network参数为host模式,例如:

docker run --rm -it -v /dev/shm:/dev/shm --network host --runtime=nvidia swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu-cuda11.6:2.0.0 /bin/bash
运行代码

进入容器后,运行代码并检查输出:

python -c "import mindspore;mindspore.run_check()"

如果输出为:

MindSpore version:  2.0.0
The result of multiplication calculation is correct, MindSpore has been installed on platform [GPU] successfully!

则说明安装成功。

使用VSCode开发

在Windows 11 中安装和使用 WSL 2:使用VSCode连接容器

进入容器后,新建 test_docker.py ,添加以下代码:

import numpy as np
import mindspore as ms
import mindspore.ops as ops

ms.set_context(device_target="GPU")

x = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
y = ms.Tensor(np.ones([1,3,3,4]).astype(np.float32))
print(ops.add(x, y))

然后打开终端运行:

python test_docker.py

输出结果如下说明环境配置成功:

[[[[2. 2. 2. 2.]
   [2. 2. 2. 2.]
   [2. 2. 2. 2.]]

  [[2. 2. 2. 2.]
   [2. 2. 2. 2.]
   [2. 2. 2. 2.]]

  [[2. 2. 2. 2.]
   [2. 2. 2. 2.]
   [2. 2. 2. 2.]]]]

在这里插入图片描述

更多推荐

Python asynchat模块-异步套接字处理-服务器程序示例

介绍此模块在asyncore架构上建立,简化了异步客户端和服务器,并且使得处理元素为任意字符串结束或者为变长度的协议更加容易。asynchat定义了一个可以由使用者来子类化的抽象类async_chat,提供了collect_incoming_data()和found_terminator()等方法的实现。它使用与asy

【腾讯云 Cloud Studio 实战训练营】使用云IDEA,快速构建React完成点餐H5页面

文章目录前言简介优势项目介绍实战教学注册流程创建工作空间环境配置安装antd-mobile安装less和less-loader暴露webpack配置文件修改config/webpack.config.js文件安装normalize上传项目素材替换App.js主文件创建index.less文件启动项目清理实验先停止项目再

在 Windows 上直接安装 React

🎬岸边的风:个人主页🔥个人专栏:《VUE》《javaScript》⛺️生活的理想,就是为了理想的生活!目录必备条件创建React应用本指南将介绍如何使用create-react-app工具链直接在Windows上安装React。如果你不熟悉React并且正好有兴趣学习,我们建议遵循以下说明。如果你要创建一个单页应用

【九章斩题录】Leetcode:判定字符是否唯一(C/C++)

精品题解🔥《九章斩题录》👈猛戳订阅面试题01.01.判定字符是否唯一✅模板:C语言classSolution{public:boolisUnique(stringastr){}};💭思考:《程序员面试金典》里的题,这题和剑指Offer的"数组中重复的数字"几乎一模一样啊,只是重复的数字变成了重复的字符,判断"重复

【python爬虫】—星巴克产品

文章目录需求爬取星巴克产品以及图片,星巴克菜单python爬虫爬取结果需求爬取星巴克产品以及图片,星巴克菜单网页分析:首先,需要分析星巴克官方网站的结构,了解菜单栏的位置、布局以及菜单项的标签或类名等信息。发送HTTP请求:使用Python的requests模块发送HTTPGET请求,获取星巴克网页的HTML内容。解析

爬虫异常处理技巧分享

在进行爬虫数据采集的过程中,我们常常会遇到网络波动和自动化验证等异常情况。这些问题可能导致爬虫运行中断或被识别为机器请求而受到限制。本文将分享一些实用的爬虫异常处理技巧,帮助您规避网络波动和自动化验证,提高数据采集的稳定性和成功率。一、处理网络波动1.设置重试机制:当爬取过程中遇到网络错误或超时,在合理的时间范围内进行

爬虫入门基础-Selenium反爬

在网络时代,爬虫作为一种强大的数据采集工具,被广泛应用于各行各业。然而,许多网站为了防止被恶意爬取数据,采取了各种反爬虫机制。为了能够成功地绕过这些机制,Selenium成为了爬虫领域的一把利器。本文将为你介绍爬虫入门基础,并重点探讨如何使用Selenium应对反爬虫的挑战。一、爬虫入门基础1、定义:爬虫是一种模拟浏览

minikube搭建k8s

环境:centos7,docker18minikube搭建k8s说明minikube是最接近原生kubernetes的本地单机版集群,支持大部分kubernetes功能,用于学习和开发k8s。支持Linux、Windows、Mac官网安装文档安装前提一台物理机或者虚拟机,物理机CPU大于2核vcpu、2G内存、20G磁

Java堆(Java Heap)

对于Java应用程序来说,Java堆(JavaHeap)是虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,Java世界里“几乎”所有的对象实例都在这里分配内存。在《Java虚拟机规范》中对Java堆的描述是:“所有的对象实例以及数组都应

ZMQ协议

一、ZMQ特点普通的socket是端对端的关系,ZMQ是N:M的关系,socket的连接需要显式地建立连接,销毁连接,选择协议(TCP/UDP)和错误处理,ZMQ屏蔽了这些细节,像是一个封装了的socket库,让网络编程变得更简单。ZMQ不光用于主机与主机之间的socket通信,还可以是线程和进程之间的通信。ZMQ提供

Zookeeper集群 + Kafka集群

ZookeeperZookeeper概述Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目Zookeeper工作机制Zookeeper从设计模式角度来理解:是一个,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zo

热文推荐