该指引分为三个步骤。
- 从本地上传压缩包到平台个人数据
- 把平台个人数据下载到实例内
- 进行训练与自动上传结果并关机
操作流程大概如下:
本地上传个人数据
在本地首先将训练的数据打成 zip
、tar.gz
常用格式的压缩包。然后本地下载并安装 oss 命令行工具,使用该工具将压缩包上传到平台的个人数据中。
在这里使用 Windows 系统作为本地环境。如果是其他系统可以参考 oss 命令行工具 进行安装。
下载 OSS (Windows) 可执行文件。下载完成后将 oss_windows_x86_64.exe
文件名改为 oss.exe
。在 Windows 下打开 CMD (命令提示符) 或 PowerShell。
使用 cd
命令切换到 oss.exe
所在的目录,在这里 oss.exe
保存在了 D:\Download
下。在这里是使用 PowerShell 终端执行。
PS C:\Users\windows> cd D:\Download
PS D:\Download>
在这个目录下执行 .\oss
可执行该命令。上传前需要先进行登陆操作。登陆的账号为恒源云平台的账号名与密码,并非实例。账号名为手机号,如果是非*手机号码,需要加上带 + 的国家号。
# 执行 .\oss login
PS D:\Download> .\oss login
Username:139********
Password:***********
139******** login successfully!
登陆成功后将进行传输文件的操作,将本地打成的压缩包上传到个人数据中。注意上传的文件扩展名仅支持常见的压缩包格式。在这里的压缩包的路径为 D:\Datasets\MNIST.zip
。
# 执行 .\oss cp D:\Datasets\MNIST.zip oss://
PS D:\Download> .\oss cp D:\Datasets\MNIST.zip oss://
Start at 2021-10-22 06:21:48.2061924 +0000 UTC
[-------------------------------------] 100.00% 52.34MB/s 76.55MB/76.55MB 1.53s
Upload successfully, 76.55MB, n/a, D:\Datasets\MNIST.zip --> oss://MNIST.zip, cost [7020], status [200], request id [0000017CA6A9BE01901395D26CE9A228]
上传成功后在平台的个人数据页面可以查看到该文件。
实例下载个人数据
在平台创建或启动实例后,通过 JupyterLab 的页面进入终端或 SSH 客户端连接终端。
在终端中同样使用 oss
先进行登陆操作。登陆的账号为恒源云平台的账号名与密码,并非实例。账号名为手机号,如果是非*手机号码,需要加上带 + 的国家号。
# 执行 oss login
~# oss login
Username:139********
Password:***********
139******** login successfully!
登陆成功后将进行下载文件的操作,将刚刚上传的文件下载到 /hy-tmp
中(有共享存储的机型可以用 /hy-nas
)。
# 执行 oss cp oss://MNIST.zip /hy-tmp
~# oss cp oss://MNIST.zip /hy-tmp
Start at 2021-10-22 06:37:17.227649376 +0000 UTC
[-------------------------------------] 100.00% 62.85MB/s 76.55MB/76.55MB 1.42s
Waiting to rename temporary file...
Download successfully, 76.55MB, n/a, oss://MNIST.zip --> /hy-tmp/MNIST.zip, cost [2422], status [206], request id [0000017CA6B7D6419012DB7767D11959]
下载成功后,进入下载的路径下,解压该压缩包。
# 执行 cd /hy-tmp 进入该目录
~# cd /hy-tmp
# 执行 unzip -q MNIST.zip 解压该压缩包
/hy-tmp# unzip -q MNIST.zip
执行训练并自动上传结果后关机
数据已经存在实例内,接下来是进行训练的阶段。可以使用 JupyterLab 或 VSCode 等工具编写代码。注意代码中引用的数据路径需要改为实例内的数据路径,在上文例子中使用的是 /hy-tmp
。耗时长的训练任务需要通过 Tmux 放在后台运行,这样可以关闭本地电脑而不中断训练。
按量付费的实例可通过下列操作实现训练完成后上传结果到个人数据,之后关机终止计费。该操作可以节约按量付费的使用成本,以及避免因机器被占用导致的 /hy-tmp
的数据无法查看与下载。
示例脚本的操作需要以下前提,部分操作根据实际需求调整。
- 训练的结果在
/hy-tmp/result
中 - 实例中需要提前使用平台账号手机号与密码执行
oss login
成功登陆
在 /root
目录下使用 vim 创建一个 upload.sh
脚本。
cd
vim upload.sh
脚本内容如下,使用 vim
编辑器,输入 进入插入模式,粘贴下来整个脚本内容,再输入 保存。
#!/bin/bash
set -e
cd /hy-tmp
# 压缩包名称
file="result-$(date "+%Y%m%d-%H%M%S").zip"
# 把 result 目录做成 zip 压缩包
zip -q -r "${file}" result
# 通过 oss 上传到个人数据中的 backup 文件夹中
oss cp "${file}" oss://backup/
rm -f "${file}"
# 传输成功后关机
shutdown
给脚本添加执行权限。
chmod u+x upload.sh
此脚本实现了将 /hy-tmp/result
做成 zip 压缩包,再将此文件上传到了个人数据中。执行成功后执行关机操作。
在训练的任务代码中的最后调用此 /root/upload.sh
脚本运行即可,首次使用时建议先进行测试一下。如在 Python 代码中引用:
import os
os.system('/root/upload.sh')
当训练执行完成关机后,在本地可以使用 oss
命令行工具下载打包好的结果文件。当实例机器被占用无法开机时,也可以通过在其他机器上创建新实例并通过 oss
下载数据到新实例中。具体关于 oss
相关操作参考文档 oss 命令工具。
# 登陆恒源云账号,使用恒源云的账号名与密码,账号名为手机号
# 如果是非*手机号码,需要加上带 + 的区号
~# oss login
Username:139********
Password:***********
139******** login successfully!
# 查看文件和文件夹,-s 表示只显示文件名
~# oss ls -s oss://
Folder list:
oss://
oss://backup/
Object list:
oss://backup/result-20211018-164323.zip
# 下载个人数据中的 result-20211018-164323.zip 文件到当前目录
~# oss cp oss://backup/result-20211018-164323.zip .
Download successfully, 310B, n/a, oss://backup/result-20211018-164323.zip --> /root/result-20211018-164323.zip, cost [57], status [200], request id [0000017C92929EF49014BE16738685B7]