百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

基于云主机的ModelArts模型训练实践,让开发环境化繁为简

sinye56 2025-02-13 14:11 4 浏览 0 评论

摘要:本文将指导开发者如何在云主机上安装Docker制作一个自定义模型镜像并在ModelArts平台使用这个镜像作模型训练。

本文分享自华为云社区《【开发者空间实践】云主机安装Docker并制作自定义镜像在ModelArts平台做模型训练-云社区-华为云》,作者: 开发者空间小蜜蜂。

1.1 案例介绍

在AI业务开发以及运行的过程中,一般都会有复杂的环境依赖需要进行调测并固化。面对开发中的开发环境的脆弱和多轨切换问题,在ModelArts的AI开发最佳实践中,通过容器镜像的方式将运行环境进行固化,以这种方式不仅能够进行依赖管理,而且可以方便的完成工作环境切换。配合ModelArts提供的云化容器资源使用,可以更加快速、高效的进行AI开发与模型实验的迭代等。

本案例将指导开发者如何在云主机上安装Docker制作一个自定义模型镜像并在ModelArts平台使用这个镜像作模型训练。

1.2 免费领取云主机

如您还没有云主机,可点击开发者空间-华为云,领取专属云主机后进行操作。

如您已领取云主机,可直接开始实验。

1.3 实验流程

说明:

① 在云主机上安装docker;

② 制作模型训练镜像并上传到SWR;

③ 在云主机创建训练脚本,使用浏览器打开OBS服务,上传训练脚本;

④ 在ModelArts平台创建训练作业完成模型训练。

1.4 实验资源

本次实验花费总计约1元,资源采取按需计费,点击链接,可根据步骤加入华为云沃土云创计划,申领云资源代金券,即可免费体验。

体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。

资源名称

规格

单价(元)

时长(h)

开发者空间-云主机

免费版

免费

1

OBS资源包

40G

1元/月

1

ModelArts

免费体验版

免费

1

1.5 在云主机安装Docker

进入云主机后,点击左面菜单的“终端”按钮,打开命令行工具。

在命令行中输入以下命令安装Docker:

curl -fsSL get.docker.com -o get-docker.sh
  sh get-docker.sh

输入命令“sudo docker info” 确认Docker已经安装完毕。

接下来需要配置镜像加速,输入命令“vim /etc/docker/daemon.json”编辑docker配置文件,单击“i”键进入插入模式,然后输入以下内容,

 {
"registry-mirrors": [ "https://a3cc4b6f1d0747bda78ca8d86e4c5419.mirror.swr.myhuaweicloud.com" ]
}
 

输入完成后,按“Esc”退出插入模式,再输入“:wq”保存文件,再输入“sudo systemctl restart docker”命令重启docker,然后输入命令“sudo docker info”查看,显示如下信息则表示镜像加速配置完成。

1.6 准备制作镜像的必要文件

确认安装好Docker以后,在当前目录使用命令“mkdir -p context”创建文件夹

使用“cd context/”命令进入context文件夹。

使用“vim pip.conf”命令编辑pip源文件pip.conf ,单击“i”键进入插入模式,输入如下内容,确认无误后单击ESC回到命令模式,使用“:wq”命令保存退出。

 [global]
 index-url = https://repo.huaweicloud.com/repository/pypi/simple
 trusted-host = repo.huaweicloud.com
 timeout = 120
 


使用wget命令下载“torch*.whl ”文件,一共三个文件

wget https://download.pytorch.org/whl/cu111/torch-1.8.1%2Bcu111-cp37-cp37m-linux_x86_64.whl

wget https://download.pytorch.org/whl/torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl

wget https://download.pytorch.org/whl/cu111/torchvision-0.9.1%2Bcu111-cp37-cp37m-linux_x86_64.whl

使用“wget
https://repo.anaconda.com/miniconda/Miniconda3-py37_4.12.0-Linux-x86_64.sh”命令,下载Miniconda3 py37 4.12.0安装文件


将上述pip源文件、torch*.whl文件、Miniconda3安装文件放置在context文件夹内,完成上述操作后context文件夹内容如下。

context

├── Miniconda3-py37_4.12.0-Linux-x86_64.sh

├── pip.conf

├── torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl

├── torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl

└── torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl


使用“vim Dockerfile”创建编辑Dockerfile文件,填入以下内容

# 容器镜像构建主机需要连通公网
# 基础容器镜像, https://github.com/NVIDIA/nvidia-docker/wiki/CUDA
# 
# https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds
# require Docker Engine >= 17.05
#
# builder stage
FROM nvidia/cuda:11.1.1-runtime-ubuntu18.04 AS builder

# 基础容器镜像的默认用户已经是 root
# USER root

# 使用华为开源镜像站提供的 pypi 配置
RUN mkdir -p /root/.pip/
COPY pip.conf /root/.pip/pip.conf

# 复制待安装文件到基础容器镜像中的 /tmp 目录
COPY Miniconda3-py37_4.12.0-Linux-x86_64.sh /tmp
COPY torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl /tmp
COPY torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl /tmp
COPY torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl /tmp

# https://conda.io/projects/conda/en/latest/user-guide/install/linux.html#installing-on-linux
# 安装 Miniconda3 到基础容器镜像的 /home/ma-user/miniconda3 目录中
RUN bash /tmp/Miniconda3-py37_4.12.0-Linux-x86_64.sh -b -p /home/ma-user/miniconda3

# 使用 Miniconda3 默认 python 环境 (即 /home/ma-user/miniconda3/bin/pip) 安装 torch*.whl
RUN cd /tmp && \
    /home/ma-user/miniconda3/bin/pip install --no-cache-dir \
    /tmp/torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl \
    /tmp/torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl \
    /tmp/torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl

# 构建最终容器镜像
FROM nvidia/cuda:11.1.1-runtime-ubuntu18.04

# 安装 vim和curl 工具(依然使用华为开源镜像站)
RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \
    sed -i "s@http://.*archive.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \
    sed -i "s@http://.*security.ubuntu.com@http://repo.huaweicloud.com@g" /etc/apt/sources.list && \
    apt-get update && \
    apt-get install -y vim curl && \
    apt-get clean && \
    mv /etc/apt/sources.list.bak /etc/apt/sources.list

# 增加 ma-user 用户 (uid = 1000, gid = 100)
# 注意到基础容器镜像已存在 gid = 100 的组,因此 ma-user 用户可直接使用
RUN useradd -m -d /home/ma-user -s /bin/bash -g 100 -u 1000 ma-user

# 从上述 builder stage 中复制 /home/ma-user/miniconda3 目录到当前容器镜像的同名目录
COPY --chown=ma-user:100 --from=builder /home/ma-user/miniconda3 /home/ma-user/miniconda3

# 设置容器镜像预置环境变量
# 请务必设置 PYTHONUNBUFFERED=1, 以免日志丢失
ENV PATH=$PATH:/home/ma-user/miniconda3/bin \
    PYTHONUNBUFFERED=1

# 设置容器镜像默认用户与工作目录
USER ma-user
WORKDIR /home/ma-user
 


完成编辑后,按“Esc”键退出编辑模式,输入“:wq”命令保存文件。完成操作后,使用“ll”命令查看context文件夹内容如下

context

├── Dockerfile

├── Miniconda3-py37_4.12.0-Linux-x86_64.sh

├── pip.conf

├── torch-1.8.1+cu111-cp37-cp37m-linux_x86_64.whl

├── torchaudio-0.8.1-cp37-cp37m-linux_x86_64.whl

└── torchvision-0.9.1+cu111-cp37-cp37m-linux_x86_64.whl

1.7 制作镜像并上传SWR

在context文件夹下,输入“sudo docker build . -t pytorch:1.8.1-cuda11.1

”命令构建镜像。

此过程需要5-8分钟,可以先进行下面的步骤。

打开火狐浏览器,进入华为云首页,依次选择“产品”>“容器”>“容器镜像服务SWR”,进入服务页面,然后点击“控制台”进入SWR控制台页面。

点击右上角的“创建组织”按钮,输入组织名,点击“确定”。如果已经有可用的组织,此步骤可以跳过。

然后回到总览页面,点击上方的“登录指令”按钮,复制弹出的docker命令,在此命令前面加上“sudo ”然后在云主机的终端命令行输入,显示“Login Succeeded”则表示登录成功。


使用下列命令给新做好的镜像打标签

sudo docker tag pytorch:1.8.1-cuda11.1 swr.{区域参数}/{组织名称}/pytorch:1.8.1-cuda11.1

区域参数从登录指令中获取,如下图红框所示,组织名称也请替换为上面步骤创建的组织名。此处以华为云 华南-广州区为例

 sudo docker tag pytorch:1.8.1-cuda11.1 swr.cn-south-1.myhuaweicloud.com/ai-test/pytorch:1.8.1-cuda11.1

使用下列命令将镜像上传到SWR

 sudo docker push swr.{区域参数}/{组织名称}/pytorch:1.8.1-cuda11.1

区域参数从登录指令中获取,如下图红框所示,组织名称也请替换为上面步骤创建的组织名。此处以华为云 华南-广州区为例

 sudo docker push swr.cn-south-1.myhuaweicloud.com/ai-test/pytorch:1.8.1-cuda11.1


完成镜像上传后,在容器镜像服务控制台的“我的镜像”页面可查看已上传的自定义镜像。


1.8 创建OBS桶和文件夹并上传训练脚本

在华为云首页,依次选择“产品”>“存储”>“对象存储服务OBS”,进入服务页面,然后点击“购买”进入资源包购买页面。


按照如下规格购买:

区域

选择上面步骤创建SWR组织的区域

资源包类型

存储包-标准存储多AZ包

规格

40G

购买时长

一个月

生效时间

支付完成后立即生效




购买完成后,在控制台页面左面的菜单中,点击“桶列表”。


然后点击右上角“创建桶”按钮,进入创建页面,

按照如下规格创建:

区域

选择上面购买资源包的区域

桶名称

自行定义

数据冗余存储策略

多AZ存储-标准存储

桶策略

私有

其他

默认即可,不需要更改


创建好桶后,就可以在桶列表页面看到,点击桶的名称链接进入桶的详情页。


点击“新建文件夹”按钮,创建一个名为“pytorch”的文件夹,在此文件夹下再创建两个子文件夹,分别命名“log”和“demo-code”。Demo-code文件夹存放训练脚本,log文件夹存放训练日志。


回到命令行窗口,在context文件夹下,使用vim pytorch-verification.py命令新建编辑训练脚本,单击“i”键进入插入模式,输入如下内容,确认无误后单击ESC回到命令模式,使用“:wq”命令保存退出。

 import torch
 import torch.nn as nn
  
 x = torch.randn(5, 3)
 print(x)
  
 available_dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
 y = torch.randn(5, 3).to(available_dev)
 print(y)
 


新建好脚本后,回到OBS控制台页面,进入到demo-code文件夹,将脚本上传到demo-code文件夹下。

点击“添加文件”,在/developer/context目录下,选择刚刚创建的pytorch-verification.py文件,点击“打开”,完成上传。


1.9 在ModelArts上创建训练作业

在华为云首页,依次选择“产品”>“人工智能”>“AI开发平台ModelArts”,进入服务页面,点击“控制台”按钮,进入控制台页面。


第一次使用ModelArts平台,会提示权限不足,需要授权OBS服务和SWR服务。


点击上面红框的“此处”的超链接,进入授权委托页面,选择“新增委托”,权限配置选择“普通用户”,然后点击“创建”按钮即可。重新回到ModelArts控制台页面,提示权限不足的红框就消失了,可以正常使用了。


在左侧导航栏中选择“模型训练 > 训练作业”,默认进入“训练作业”列表。

按照如下表格填入参数信息:

创建方式

选择自定义算法

启动方式

选择自定义

镜像地址

选择上面步骤创建的镜像

代码目录

设置2.4步骤创建的demo-code文件夹

启动命令

/home/ma-user/miniconda3/bin/python
${MA_JOB_DIR}/demo-code/pytorch-verification.py

资源池

选择公共资源池

类型

选择GPU或CPU规格

永久保存日志

打开

作业日志路径

设置2.4步骤创建的log文件夹


训练作业创建完成后,后台将自动完成容器镜像下载、代码目录下载、执行启动命令等动作。

训练作业一般需要运行一段时间。

训练完成后,在OBS服务,我们创建的桶和log文件夹下找到训练日志并下载下来,在下载的日志文件中搜索关键字:tensor,看到如下信息表示训练成功。

至此,实验完成。


华为开发者空间,汇聚鸿蒙、昇腾、鲲鹏、GaussDB、欧拉等各项根技术的开发资源及工具,致力于为每位开发者提供一台云主机、一套开发工具及云上存储空间,让开发者基于华为根生态创新。点击开发者空间-华为云,免费领取您的专属云主机


点击关注,第一时间了解华为云新鲜技术~

华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: