AIStudio SSH 公钥管理,一处配置,处处可用AIStudio SSH 公钥管理,一处配置,处处可用 ,只为更佳开发体验如何配置
Skip to content

使用 atlctl 进行原地调试

AIStudio 任务功能提供 atlctl 命令行调试工具,您可以从 Web Terminal 登录任意的任务 Worker,执行停止任务、统一下发测试命令等调试工作。

了解调试状态

atlctl 命令行调试工具可手动控制任务的生命周期。运行中的任务在生命周期中的部分状态下,可被手动设置为调试(Debug)状态。在调试状态下,允许用户对所有任务 Worker 统一发起检测,或下发测试命令等。调试结束后,可恢复任务执行。

进入调试状态

必须从网页端登录任务 Worker。打开 Web Terminal 后,可直接使用 atlctl 工具。

Worker 登录入口在任务详情页 Worker 信息中,点击登录后可打开 Web Terminal。

alt text

NOTE

仅在任务运行中时可登录 Worker。

使用流程

atlctl 工具支持发起内置检测和执行用户自定义检测。

执行内置检测脚本

atlctl 工具内置了 GPU 与通信检测脚本,可通过 atlctl check 命令发起检测。

  1. 查看训练任务状态。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl status
    Job status:  command

    输出 Job status 为 command 表示正在执行任务中的启动命令。

  2. 停止当前训练任务,将任务置于 Debug 状态。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop
    Stopping task in all workers...
    Stop job task success.
  3. 在开始调试前,建议检查当前任务是否有 python 进程残留,如有则清理。

    shell
    root@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.
  4. 每次执行 atlctl run 后,必须执行 atlctl stop,否则无法再次下发其他 atlctl 命令。

    shell
    atlctl stop
  5. 执行 atlctl 工具内置检测脚本。atlctl check 默认对任务中的全部 Worker 进行检测 GPU 和通讯检测。可通过添加参数检测具体项目和自定义的临时环境变量。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl check
    All workers will be checked.
    Check finished.
    Check Quit.
  6. 检查结束,终止检测。修复问题后,可再次执行 atlctl check 命令,或使用 atlctl run 执行自定义调试命令。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop
    Stopping task in all workers...
    Stop job task success.
  7. 如需恢复任务运行,请先查看训练任务是否处于 debugStop 状态。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl status
    Job status:  debugStop
  8. 如果任务状态已处于 debugStop 状态,可恢复训练任务:

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl status
    Job status:  debugStop
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl recover
    Task recovering...
    Task recover success.

执行自定义调试命令

自定义的流程与执行内置检测主流程类似,区别仅在于使用 atlctl run 下发自定义检测命令。

  1. 查看训练任务状态。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl status
    Job status:  command

    输出 Job status 为 command 表示正在执行任务中的启动命令。

  2. 停止当前训练任务,将任务置于 Debug 状态。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop
    Stopping task in all workers...
    Stop job task success.
  3. 在开始调试前,建议检查当前任务是否有 python 进程残留,如有则清理。

    shell
    root@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.
  4. 每次执行 atlctl run 后,必须执行 atlctl stop,否则无法再次下发其他 atlctl 命令。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop
    Stopping task in all workers...
    Stop job task success.
  5. 执行自定义测试命令。如有多个命令需要连续运行,建议封装为 Shell 脚本。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl run "/mnt/public/debug/test-comms.sh"
  6. 调试结束,终止测试任务:

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl stop
    Stopping task in all workers...
    Stop job task success.
  7. 如需恢复任务运行,请先查看训练任务是否处于 debugStop 状态。

    shell
    root@jo-daxbirgzm6e727pd-worker-0:~# atlctl status
    Job status:  debugStop
  8. 如果任务状态已处于 debugStop 状态,可恢复训练任务:

    shell
    root@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 命令。 例如:

    shell
    atlctl 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

以上命令不会占用任务的容错次数。