使用 atlctl 进行原地调试
AIStudio 任务功能提供 atlctl
命令行调试工具,您可以从 Web Terminal 登录任意的任务 Worker,执行停止任务、统一下发测试命令等调试工作。
了解调试状态
atlctl
命令行调试工具可手动控制任务的生命周期。运行中的任务在生命周期中的部分状态下,可被手动设置为调试(Debug)状态。在调试状态下,允许用户对所有任务 Worker 统一发起检测,或下发测试命令等。调试结束后,可恢复任务执行。
进入调试状态
必须从网页端登录任务 Worker。打开 Web Terminal 后,可直接使用 atlctl
工具。
Worker 登录入口在任务详情页 Worker 信息中,点击登录后可打开 Web Terminal。
NOTE
仅在任务运行中时可登录 Worker。
使用流程
atlctl 工具支持发起内置检测和执行用户自定义检测。
执行内置检测脚本
atlctl 工具内置了 GPU 与通信检测脚本,可通过 atlctl check
命令发起检测。
查看训练任务状态。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl status Job status: command
输出 Job status 为
command
表示正在执行任务中的启动命令。停止当前训练任务,将任务置于 Debug 状态。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop Stopping task in all workers... Stop job task success.
在开始调试前,建议检查当前任务是否有 python 进程残留,如有则清理。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl run "ps -ef |grep python |grep -v grep |grep -v tini |awk '{print \$2}'|xargs kill -9" Send command to all workers success.
每次执行
atlctl run
后,必须执行atlctl stop
,否则无法再次下发其他atlctl
命令。shellatlctl stop
执行 atlctl 工具内置检测脚本。
atlctl check
默认对任务中的全部 Worker 进行检测 GPU 和通讯检测。可通过添加参数检测具体项目和自定义的临时环境变量。shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl check All workers will be checked. Check finished. Check Quit.
检查结束,终止检测。修复问题后,可再次执行
atlctl check
命令,或使用atlctl run
执行自定义调试命令。shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop Stopping task in all workers... Stop job task success.
如需恢复任务运行,请先查看训练任务是否处于 debugStop 状态。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl status Job status: debugStop
如果任务状态已处于 debugStop 状态,可恢复训练任务:
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl status Job status: debugStop root@jo-daxbirgzm6e727pd-worker-0:~# atlctl recover Task recovering... Task recover success.
执行自定义调试命令
自定义的流程与执行内置检测主流程类似,区别仅在于使用 atlctl run
下发自定义检测命令。
查看训练任务状态。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl status Job status: command
输出 Job status 为
command
表示正在执行任务中的启动命令。停止当前训练任务,将任务置于 Debug 状态。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop Stopping task in all workers... Stop job task success.
在开始调试前,建议检查当前任务是否有 python 进程残留,如有则清理。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl run "ps -ef |grep python |grep -v grep |grep -v tini |awk '{print \$2}'|xargs kill -9" Send command to all workers success.
每次执行
atlctl run
后,必须执行atlctl stop
,否则无法再次下发其他atlctl
命令。shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop Stopping task in all workers... Stop job task success.
执行自定义测试命令。如有多个命令需要连续运行,建议封装为 Shell 脚本。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl run "/mnt/public/debug/test-comms.sh"
调试结束,终止测试任务:
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop Stopping task in all workers... Stop job task success.
如需恢复任务运行,请先查看训练任务是否处于 debugStop 状态。
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl status Job status: debugStop
如果任务状态已处于 debugStop 状态,可恢复训练任务:
shellroot@jo-daxbirgzm6e727pd-worker-0:~# atlctl status Job status: debugStop root@jo-daxbirgzm6e727pd-worker-0:~# atlctl recover Task recovering... Task recover success.
命令说明
atlctl
工具提供以下命令:
status
: 查看当前任务的生命周期的状态。仅当任务处于 debugStop 状态下才能执行其他调试命令。stop
:停止执行训练任务代码,将任务置于 Debug 状态,可通过atlctl status
确认执行结果。IMPORTANT
每次执行
atlctl run
/atlctl check
命令后,也必须执行atlctl stop
终止调试任务,否则无法再次下发检测命令。run "<command>"
: 在任务所有 Worker 上同时下发并运行自定义调试命令。该命令不支持连续执行,建议您使用 Shell 脚本封装复杂调试命令,或在<command>
中拼接多个 Shell 命令。 例如:shellatlctl run "/mnt/public/debug/test-comms.sh"
run check
: 在任务所有 Worker 上同时运行 atlctl 工具内置检测。默认对任务中的全部 Worker 进行检测 GPU 和通讯检测。该命令支持以下可选参数,可控制检测范围。选项:
-t, --checkType string
:自定义检测范围。默认全部检测(gpu/通讯)。选项:gpu
: 执行与 GPU 相关的检查。allreduce
: 执行与 allreduce 操作相关的检查。all
: 执行所有可用的检查。(默认值:"all")
-e, --envs string
:添加自定义环境变量。默认为空。选项:key1=value1,key2=value2,...
:通过提供逗号分隔的键值对列表来设置特定的环境变量。
-h, --help
:显示check
命令的帮助信息。-w, --workerList string
:自定义参与检测的 worker 范围。默认为全部。选项:all
: 检查所有可用的工作节点。jo-xxx-worker1,jo-xxx-worker2
: 通过提供逗号分隔的工作节点名称列表来检查特定的工作节点。(默认值:"all")
recover
调试结束后,恢复执行训练任务的用户代码。
NOTE
以上命令不会占用任务的容错次数。