技术背景

在前面一篇博客中,我们介绍过MindSpore-CPU版本的Docker部署以及简单的案例测试,当时官方还不支持GPU版本的Docker容器化部署。经过MindSpore团队的努力,1.2.0版本的MindSpore-GPU终于推出了Docker版本的安装解决方案:



在本文中我们将针对这一方案进行直接的测试,并补充其中一些很有可能被忽略的细节,接下来直接上手。

更换华为云镜像源

在华为云官方提供的镜像源仓库中找到适配自己系统的源,然后按照其中的指导进行配置。这里我们本地使用的是Ubuntu 20.04版本,可以按照如下的方法更新apt的源:

  1. root@ubuntu2004:~# cp -a /etc/apt/sources.list /etc/apt/sources.list.bak
  2. root@ubuntu2004:~# sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
  3. root@ubuntu2004:~# sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list
  4. root@ubuntu2004:~# apt-get update

更新镜像源会需要一定的时间,等待即可,这一步一般不会出什么问题。

MindSpore-GPU-Docker的安装

这里可以参考MindSpore官方的指导文档一步步的进行操作,其中遇到一些非常规问题时我们再看看解决的策略:

  1. root@ubuntu2004:~# DISTRIBUTION=$(. /etc/os-release; echo $ID$VERSION_ID)
  2. root@ubuntu2004:~# curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
  3. gpg: 找不到有效的 OpenPGP 数据。

第二步的操作时非常容易出问题的地方,因为本地的主机列表无法解析这个链接的ip地址。一开始我跟参考链接1的作者类似的,以为是需要上Google才能够解决此类的问题,但是后来尝试了一下参考链接1中的解决方案,发现是可以生效的,这里直接演示解决的方法:

  1. root@ubuntu2004:~# vi /etc/hosts # 在文档的最后面加上下面的四行ip地址与域名相对照的列表
  2. root@ubuntu2004:~# cat /etc/hosts | grep nvidia # 查询修改情况
  3. 185.199.108.153 nvidia.github.io
  4. 185.199.109.153 nvidia.github.io
  5. 185.199.110.153 nvidia.github.io
  6. 185.199.111.153 nvidia.github.io

经过上述的简单配置之后,继续MindSpore-GPU-Docker的安装步骤:

  1. root@ubuntu2004:~# curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | apt-key add -
  2. OK
  3. root@ubuntu2004:~# curl -s -L https://nvidia.github.io/nvidia-docker/$DISTRIBUTION/nvidia-docker.list | tee /etc/apt/sources.list.d/nvidia-docker.list
  4. deb https://nvidia.github.io/libnvidia-container/stable/ubuntu18.04/$(ARCH) /
  5. #deb https://nvidia.github.io/libnvidia-container/experimental/ubuntu18.04/$(ARCH) /
  6. deb https://nvidia.github.io/nvidia-container-runtime/stable/ubuntu18.04/$(ARCH) /
  7. #deb https://nvidia.github.io/nvidia-container-runtime/experimental/ubuntu18.04/$(ARCH) /
  8. deb https://nvidia.github.io/nvidia-docker/ubuntu18.04/$(ARCH) /
  9. root@ubuntu2004:~# apt-get update && sudo apt-get install -y nvidia-container-toolkit nvidia-docker2
  10. root@ubuntu2004:~# systemctl restart docker

到这里所需要的依赖就已经安装完成了,最后还有一步是需要修改docker的配置文件,使得MindSpore可以使用Docker的nvidia-container-runtime

  1. root@ubuntu2004:~# vi /etc/docker/daemon.json # 修改成如下所示的配置
  2. root@ubuntu2004:~# cat /etc/docker/daemon.json
  3. {
  4. "runtimes": {
  5. "nvidia": {
  6. "path": "nvidia-container-runtime",
  7. "runtimeArgs": []
  8. }
  9. }
  10. }
  11. root@ubuntu2004:~# systemctl daemon-reload # 重新加载配置
  12. root@ubuntu2004:~# systemctl restart docker # 重启Docker

上述配置都完成之后,终于到了最后一步,使用Docker来拉取MindSpore的官方镜像:

  1. root@ubuntu2004:~# docker pull swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:1.2.0
  2. 1.2.0: Pulling from mindspore/mindspore-gpu
  3. 6e0aa5e7af40: Pull complete
  4. d47239a868b3: Pull complete
  5. 49cbb10cca85: Pull complete
  6. 4450dd082e0f: Pull complete
  7. b4bc5dc4c4f3: Pull complete
  8. 5353957e2ca6: Pull complete
  9. f91e05a16062: Pull complete
  10. 7a841761f52f: Pull complete
  11. 698198ce2872: Pull complete
  12. 05a2da03249e: Pull complete
  13. b1761864f72a: Pull complete
  14. 29479e68065f: Pull complete
  15. 4bf6be16ed12: Pull complete
  16. c429d95fc15b: Pull complete
  17. 48c41c211021: Pull complete
  18. 349cae3c1ede: Pull complete
  19. 768237cdcd4d: Pull complete
  20. 2fd2faf6c353: Pull complete
  21. 268f4496a02c: Pull complete
  22. e962d4980323: Pull complete
  23. f1d280968a28: Pull complete
  24. bc3e02707e81: Pull complete
  25. Digest: sha256:3318c68d63cfe110e85d7ed93398b308f8458624dc96aad9a4d31bc6d345daa7
  26. Status: Downloaded newer image for swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:1.2.0
  27. swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:1.2.0

关于Docker这里要多说两点:

  1. Docker在Ubuntu20.04上面的安装不是apt-get install docker,而是apt-get install docker.io
  2. 关于更多Docker的使用示例,可以参考这些以往的博客(博客1博客2博客3博客4博客5)。

MindSpore-GPU的测试

测试用例同样也来自于MindSpore的官方文档,这里只是额外补充了一个本地的目录映射,将测试目录/home/dechin/projects/mindspore/test/映射为MindSpore容器中的/home目录,这样在容器内操作所导致的文件变更都会在本地测试目录下同步。需要注意的是,这里的目录映射只能采用绝对路径而不能采用相对路径:

  1. dechin@ubuntu2004:~/projects/mindspore/test$ sudo docker run -it -v /dev/shm:/dev/shm -v /home/dechin/projects/mindspore/test/:/home --runtime=nvidia --privileged=true swr.cn-south-1.myhuaweicloud.com/mindspore/mindspore-gpu:1.2.0 /bin/bash
  2. [sudo] dechin 的密码:
  3. root@0b44a5a66fca:/# cd /home/
  4. root@0b44a5a66fca:/home# vim mindspore_test.py # python文件的具体内容在后面
  5. root@0b44a5a66fca:/home# python mindspore_test.py
  6. [[[[2. 2. 2. 2.]
  7. [2. 2. 2. 2.]
  8. [2. 2. 2. 2.]]
  9. [[2. 2. 2. 2.]
  10. [2. 2. 2. 2.]
  11. [2. 2. 2. 2.]]
  12. [[2. 2. 2. 2.]
  13. [2. 2. 2. 2.]
  14. [2. 2. 2. 2.]]]]

如下所示是刚才在容器中用于测试的python代码:

  1. # mindspore_test.py
  2. import numpy as np
  3. import mindspore.context as context
  4. import mindspore.ops as ops
  5. from mindspore import Tensor
  6. context.set_context(mode=context.PYNATIVE_MODE, device_target="GPU")
  7. x = Tensor(np.ones([1,3,3,4]).astype(np.float32))
  8. y = Tensor(np.ones([1,3,3,4]).astype(np.float32))
  9. print(ops.add(x, y))

我们可以看到最终是成功的运行了,说明MindSpore-GPU的Docker容器化环境部署成功。

总结概要

继上一篇文章介绍了MindSpore的CPU版本的Docker容器化部署之后,MindSpore官方团队推出了MindSpore的GPU版本的Docker容器化部署方案,本文针对这一方案进行了安装测试,并且对于其中一些安装的时候可以遇到的问题的细节进行了处理。之所以采用容器化的解决方案,主要是为了做到SDK环境与编程环境的隔离,释放本地环境配置与部署的压力。当然,也使得本地的开发环境更加的“干净”。

版权声明

本文首发链接为:https://www.cnblogs.com/dechinphy/p/dmg.html

作者ID:DechinPhy

更多原著文章请参考:https://www.cnblogs.com/dechinphy/

参考链接

  1. https://blog.csdn.net/weixin_43002433/article/details/108888927
  2. https://www.cnblogs.com/dechinphy/p/mindspore.html

基于Docker安装的MindSpore-1.2 GPU版本的更多相关文章

  1. zabbix基于docker安装

    centos的版本 # cat /etc/redhat-release CentOS Linux release (Core) docker的安装 配置yum源 # vim /etc/yum.repo ...

  2. 基于docker安装pxc集群

    基于docker安装pxc集群 一.PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上.这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据 ...

  3. Docker——基于Docker安装Drupal博客系统

    Docker--基于Docker安装Drupal博客系统 向脚本文件追加内容 cat << EOF > build.sh #设置主机名 hostnamectl set-hostnam ...

  4. 基于Docker安装常用软件

    基于Docker安装常用软件 本实验介绍如何基于Docker安装常用的软件,具体包括: Ubuntu Cetnos Nginx Node.js PHP MySQL Tomcat Redis Mongo ...

  5. docker初识-docker安装、基于docker安装mysql及tomcat、基本命令

    一.docker是什么 用go语言开发,开源的应用容器引擎,容器性能开销极低 二.整体架构图 Docker 包括三个基本概念: 镜像(Image):Docker 镜像(Image),就相当于是一个 r ...

  6. 心动不如行动,基于Docker安装关系型数据库PostgrelSQL替代Mysql

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_171 最近"全栈数据库"的概念甚嚣尘上,主角就是PostgrelSQL,它最近这几年的技术发展不可谓不猛,覆盖 ...

  7. 基于docker安装phpmyadmin

    今天用到了phpadmin,要从头装的话,比较麻烦,所以就选择使用docker 安装 准备 任意Linux系统且已成功安装docker环境 安装phpmyAdmin 1. 拉取镜像 docker pu ...

  8. 基于Docker安装 GitLab

    ⒈下载镜像 本文使用GitLab 中文社区版 Docker 镜像 Docker Hub地址:https://hub.docker.com/r/beginor/gitlab-ce 如果要体验最新版的Gi ...

  9. 基于docker安装jumpserver

    以下配置均在一台ubuntu上实现 # 生成宿主机Mysql配置文件,便于docker内容器使用 [root@ubuntu2004 ~]#mkdir -p /etc/mysql/mysql.conf. ...

随机推荐

  1. C++入门(1):计算机组成

    系列文章尽在 | 公众号:lunvey 学习C++之前,我们有必要了解一下计算机的简单组成,毕竟C++是需要操作内存的一门语言.大家或许知道内存是什么,但是内存怎么读取和操作数据以及数据的表现形式会不 ...

  2. MySQL:逻辑库与表管理

    逻辑库管理 语句 说明 CREATE DATABASE 逻辑库名; 创建逻辑库 SHOW DATABASES; 显示所有逻辑库 DROP DATABASE 逻辑库名; 删除逻辑库 USE 逻辑库名; ...

  3. Cloud Alibabab笔记问世,全网详解仅此一份手慢无

    转: Cloud Alibabab笔记问世,全网详解仅此一份手慢无 什么是Spring cloud alibaba Spring Cloud Alibaba 是阿里巴巴提供的微服务开发一站式解决方案, ...

  4. DES加密详解

    目录 1 根据输入的秘钥得到16个子秘钥 1.1 大致流程 1.2 利用PC-1从K_0中挑出K_1 1.3 利用PC-2从K_1中挑出16个子秘钥 2 利用16个子秘钥对明文进行加密 2.1 大致流 ...

  5. Nginx解析漏洞复现以及哥斯拉连接Webshell实践

    Nginx解析漏洞复现以及哥斯拉连接Webshell实践 目录 1. 环境 2. 过程 2.1 vulhub镜像拉取 2.2 漏洞利用 2.3 webshell上传 2.4 哥斯拉Webshell连接 ...

  6. 报错问题: AtrributeError:module ‘allure’ has no attribute ‘’severity_level’

    问题:执行命令报错:pytest -s -q --alluredir report 报错问题: AtrributeError:module 'allure' has no attribute ''se ...

  7. swing实现QQ登录界面1.0( 实现了同一张图片只加载一次)、(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件)

    swing实现QQ登录界面1.0( 实现了同一张图片只加载一次).(以及实现简单的布局面板添加背景图片控件的标签控件和添加一个关闭按钮控件) 代码思路分析: 1.(同一张图片仅仅需要加载一次就够了,下 ...

  8. Git - 使用命令和P4Merge进行diff

    P4Merge P4Merge是Git的一个第三发Diff和Merge工具(可视化冲突解决工具). 下载地址: https://www.perforce.com/downloads/visual-me ...

  9. .NET团队送给.NET开发人员的云原生学习资源

    企业正在迅速采用云的功能来满足用户需求,提高应用程序的可伸缩性和可用性.要完全拥抱云并优化节约成本,就需要在设计应用程序时考虑到云的环境,也就是要用云原生的应用开发方法.这意味着不仅要更改应用程序的构 ...

  10. Spring Cloud:面向应用层的云架构解决方案

    Spring Cloud:面向应用层的云架构解决方案 上期文章我们介绍了混合云,以及在实际操作中我们常见的几种混合云模式.今天我们来聊一聊Spring Cloud如何解决应用层的云架构问题. 对于Sp ...