运行样例(PyTorch 1.8.1)
本节以容器OS为Ubuntu作为示例,通过在容器中训练MobileNetV3图像分类模型,验证环境是否可用。
启动容器
- 执行如下命令启动容器。
docker run -itd --shm-size 32G -e ASCEND_VISIBLE_DEVICES=0 ascend-pytorch:6.3.RC1-ubuntu18.04-x64 /bin/bash
- --shm-size 32G:容器默认共享内存64MB(用户可执行df -h命令查看)不足以支撑该模型训练,因此需要增加容器的共享内存。
- 该镜像“ascend-pytorch:6.3.RC1-ubuntu18.04-x64”仅为示例,请用户以现场环境制作的镜像替换。
- 容器启动后,显示容器ID(本例为“614f758be8bd”)。
执行如下命令以root用户进入容器。
docker exec -it -u root 容器ID /bin/bash docker exec -it -u root 614f758be8bd /bin/bash
回显以下信息,表示成功进入该容器。
root@614f758be8bd:/home/HwHiAiUser#
模型训练
模型训练需要下载相关依赖,请确保容器能够连接网络。
- 在容器“/home/HwHiAiUser”目录下,执行如下命令获取模型脚本并进入模型代码所在目录。
cd /home/HwHiAiUser git clone https://gitee.com/ascend/ModelZoo-PyTorch.git cd ModelZoo-PyTorch/PyTorch/contrib/cv/classification/MobileNetV3_large_100_for_PyTorch
如果返回类似以下回显信息:
fatal: unable to access 'https://gitee.com/ascend/samples.git/': server certificate verification failed. CAfile: none CRLfile: none
则执行git config --global http.sslVerify "false"命令关闭证书检验,再执行git clone https://gitee.com/ascend/ModelZoo-PyTorch.git命令获取模型代码。
- 安装模型训练依赖。
pip3 install -r requirements.txt pip3 install git+https://github.com/rwightman/pytorch-image-models.git
依赖安装完成后,执行exit命令退出容器。
- 准备数据集。
- 将数据集上传至服务器任意目录(如“/home”)。
单击链接,单击“Download”下载Tiny ImageNet小型数据集。若没有账号,请用户自行注册。Tiny ImageNet数据集为ImageNet数据集缩减版,方便用于模型验证。该网站为开源数据集下载地址,请勿用于商业用途。该链接若失效,请用户自行准备好数据集,包含训练集和验证集两部分,可选用的数据集包括ImageNet2012,CIFAR-10等。
数据集目录结构参考:├── tiny-imagenet-200 │ ├──train├──类别1──图片1、2、3、4 │ │ │ │ │ ├──类别2──图片1、2、3、4 │ │ │ ├──val ├──类别1──图片1、2、3、4 │ ├──类别2──图片1、2、3、4
该数据集的训练过程脚本只作为一种参考示例。
- 将数据集拷贝至容器(本例为“614f758be8bd”)。
docker cp /home/archive.zip 614f758be8bd:/home/HwHiAiUser/ModelZoo-PyTorch/PyTorch/contrib/cv/classification/MobileNetV3_large_100_for_PyTorch/archive.zip
- 进入容器。
docker exec -it -u root 614f758be8bd /bin/bash
- 执行如下命令,在模型代码所在目录下解压数据集。
cd /home/HwHiAiUser/ModelZoo-PyTorch/PyTorch/contrib/cv/classification/MobileNetV3_large_100_for_PyTorch unzip archive.zip
- 将数据集上传至服务器任意目录(如“/home”)。
- 运行训练脚本,“--data_path”参数填写数据集路径。
bash ./test/train_full_1p.sh --data_path=./tiny-imagenet-200
模型训练脚本参数说明如下:- --model mobilenetv3_large_100:使用模型。
- --opt sgd:优化器。
- --workers:加载数据进程数。
- --epoch:重复训练次数。
- --batch-size:训练批次大小。
- --lr:初始学习率,默认:1.6。
- --momentum:动量,默认:0.9。
- --weight_decay:权重衰减。
- --amp:是否使用混合精度。
- --loss-scale:混合精度lossscale大小。
- 用户可在模型训练过程中重新打开一个窗口进入容器,执行如下命令实时查看训练日志。
docker exec -it -u root 614f758be8bd /bin/bash cd /home/HwHiAiUser/ModelZoo-PyTorch/PyTorch/contrib/cv/classification/MobileNetV3_large_100_for_PyTorch ## 训练日志文件路径在output目录下,日志文件名请用户根据实际情况替换。 tail -f test/output/0/train_0.log
如有类似以下回显信息,表示模型正在训练。
Train: 0 [ 50/195 ( 26%)] Loss: 6.925398 (6.9262) Time: 0.270s, 1893.09/s (0.273s, 1877.95/s) LR: 1.000e-06 Data: 0.001 (0.001) FPS: 1877.954 Batch_Size:512.0 Train: 0 [ 100/195 ( 52%)] Loss: 6.921838 (6.9246) Time: 0.241s, 2121.01/s (0.272s, 1879.22/s) LR: 1.000e-06 Data: 0.001 (0.001) FPS: 1879.222 Batch_Size:512.0 Train: 0 [ 150/195 ( 77%)] Loss: 6.909921 (6.9221) Time: 0.210s, 2442.24/s (0.259s, 1979.25/s) LR: 1.000e-06 Data: 0.000 (0.001) FPS: 1979.248 Batch_Size:512.0 Train: 0 [ 194/195 (100%)] Loss: 6.903288 (6.9199) Time: 0.210s, 2441.46/s (0.247s, 2069.97/s) LR: 1.000e-06 Data: 0.000 (0.000) FPS: 2069.967 Batch_Size:512.0
若训练日志出现如下报错,请参考缺少lzma模块解决。
ModuleNotFoundError: No module named '_lzma'
运行成功后,屏幕会打印模型信息和训练过程信息。
父主题: 容器部署场景