使用cloud shell调试生产训练作业-九游平台
modelarts standard提供了cloud shell,可以登录运行中的容器,用于调试生产环境的训练作业。
约束限制
仅专属资源池支持使用cloud shell登录训练容器,且训练作业必须处于“运行中”状态。
前提条件:给子账号配置允许使用cloud shell的权限
- 使用主用户账号登录华为云的管理控制台,单击右上角用户名,在下拉框中选择“统一身份认证”,进入统一身份认证(iam)服务。
- 在统一身份认证服务页面的左侧导航选择“创建自定义策略”按如下要求设置完成后单击“确定”。
- “策略名称”:设置自定义策略名称,例如:允许通过cloud shell访问运行中的训练作业。
- “策略配置方式”:选择可视化视图。
- “策略内容”:允许,云服务中搜索modelarts服务并选中,操作列中搜索关键词modelarts:trainjob:exec并选中,所有资源选择默认值。
,单击右上角的 - 在统一身份认证服务页面的左侧导航选择“用户组”,在用户组页面查找待授权的用户组名称,在右侧的操作列单击“授权”,勾选步骤2创建的自定义策略,单击“下一步”,选择授权范围方案,单击“确定”。
此时,该用户组下的所有用户均有权限通过cloud shell登录运行中的训练作业容器。
如果没有用户组,也可以创建一个新的用户组,并通过“用户组管理”功能添加用户,并配置授权。如果指定的子用户没有在用户组中,也可以通过“用户组管理”功能增加用户。
使用cloud shell
- 参考前提条件:给子账号配置允许使用cloud shell的权限,完成配置。
- 在modelarts管理控制台的左侧导航栏中选择“模型训练 > 训练作业”。
- 在训练作业列表中,单击作业名称进入训练作业详情页面。
- 在训练作业详情页面,单击“cloud shell”页签,登录训练容器。
连接成功后,cloud shell界面提示如下。
图1 cloud shell界面当作业处于非运行状态或权限不足时会导致无法使用cloud shell,请根据提示定位原因即可。
图2 报错提示部分用户登录cloud shell界面时,可能会出现路径显示异常情况,此时在cloud shell中单击回车键即可恢复正常。图3 路径异常
如何使训练作业保持运行中状态
由于需要训练作业处于“运行中”状态才能登录cloud shell,因此本文介绍如何使训练作业保持运行中状态,方便您快速通过cloud shell登录运行中的训练容器。
通过sleep命令使训练作业保持运行
- 如果训练作业使用的是预置框架:
在创建训练作业时,“创建方式”选择“自定义算法”,“启动方式”选择“预置框架”,代码目录中新增sleep.py并将此脚本作为“启动文件”。这样启动的作业将会持续运行60分钟。您可通过cloud shell进入容器进行调试。
sleep.py示例:
import os os.system('sleep 60m')
图4 预置框架启动方式 - 如果训练作业使用的是自定义镜像
在创建训练作业时,“创建方式”选择“自定义算法”,“启动方式”选择“自定义”,“启动命令”输入“sleep 60m”。这样启动的作业将会持续运行60分钟。您可通过cloud shell进入容器进行调试。
图5 自定义启动方式
出错的任务如何卡在运行中状态
cmd || sleep 5h
如果训练失败,则会执行sleep命令,此时可通过cloud shell登录容器镜像中调试。

在cloud shell中调试多节点训练作业时,需要在cloud shell中切换work0、work1来实现对不同节点下发启动命令,否则任务会处于等待其他节点的状态。
如何防止cloud shell的session断开
如果需要长时间运行某一个任务,为避免在期间连接断开导致任务失败,可通过使用screen命令使得任务在远程终端窗口运行。
- 如果镜像中未安装screen,则执行“apt-get install screen”安装。
- 创建screen终端。
# 使用 -s 创建一个叫name的screen终端 screen -s name
- 显示已创建的screen终端。
screen -ls there are screens on: 2433.pts-3.linux (2013年10月20日 16时48分59秒) (detached) 2428.pts-3.linux (2013年10月20日 16时48分05秒) (detached) 2284.pts-3.linux (2013年10月20日 16时14分55秒) (detached) 2276.pts-3.linux (2013年10月20日 16时13分18秒) (detached) 4 sockets in /var/run/screen/s-root.
- 连接“screen_id”为“2276”的screen终端。
screen -r 2276
- 按下“ctrl” “a” “d”键离开screen终端。离开后,screen会话仍将是活跃的,之后可以随时重新连接。
更多screen使用说明可参考。
通过py-spy工具分析卡死进程的调用栈并结合代码分析定位卡死问题
本文指导用户通过py-spy工具分析卡死进程的调用栈并结合代码分析定位卡死问题。
- 在modelarts standard控制台,选择“模型训练>训练作业”。
- 在训练作业详情页面,选择cloud shell页签,登录训练容器(训练作业需处于运行中)。
- 安装py-spy工具。
# 通过utils.sh脚本自动配置python环境 source /home/ma-user/modelarts/run/utils.sh # 安装py-spy pip install py-spy # 如果超时提示connection broken by 'proxyerror('cannot connect to proxy.')则表示用户设置了proxy,需要先关掉 export no_proxy=$no_proxy,repo.myhuaweicloud.com(此处需要替换成对应局点的pip源地址) pip install py-spy
- 查看堆栈。py-spy工具的具体使用方法可参考。
# 找到训练进程的pid ps -ef # 查看进程12345的进程堆栈 # 如果是8卡的训练作业,一般用此命令依次去查看主进程起的对应的8个进程的堆栈情况 py-spy dump --pid 12345
相关文档
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨