简介
离线任务提供一种离线的低成本算力资源使用方式,用户仅需要提交任务,不需要关心任务何时运行,待任务执行完成后查看结果即可。
存储
离线任务默认挂载【实例共享存储】,容器内路径为 /az-data
,建议将数据和结果保存在该路径下。
任务停止和恢复
任务停止
以下情况任务会停止并不再运行:
- 容器主进程退出码为0时,代表任务已完成
- 容器主进程退出码不是0,代表任务运行失败,不会再被重新拉起
- 任务超出完成窗口时间,会停止运行并被设置为过期状态
- 任务调度器会随时中断运行中的任务,当
resumable
为 false,则任务结束,不会被重新拉起
任 务恢复
当创建任务时指定 resumable
为 true,代表该任务可以恢复执行,首次运行会执行 container.command
命令,恢复执行时会执行 container.resume_command
命令。
对于可恢复的任务,应通过 container.resume_command
找到中断点,并继续执行。建议通过【实例共享存储】中的持久化文件或其他中心服务来记录和查看进度,以便恢复执行。
注意: 任务中断后恢复会在新的容器中执行,非持久化的内容都会丢失,在构建镜像和执行恢复命令时应注意环境持久化问题。
快速使用
1. 准备镜像
建议准备两个脚本start.sh
和 resume.sh
,分别用于首次运行和恢复运行的时候执行,将脚本打包进镜像。
推送镜像:
# 登录(按照提示依次输入用户名和密码)
docker login registry.lanrui.co
# 镜像打 tag
docker tag {image}:v1.0 registry.lanrui.co/{username}/{image}:v1.0
# 推送镜像
docker push registry.lanrui.co/{username}/{image}:v1.0
推送的镜像可以在【控制台-我的镜像】查看和管理。
2. 查询 SKU
查询可用的sku列表:
GET /api/v1/job/sku/list
选择一个合适的资源,例如:
{
"id": 1,
"sku_name": "NVIDIA 3090·单卡·12核·48G内存",
"region": "t1",
"region_name": "T1",
"price": "0.017"
}
3. 创建任务
POST /api/v1/job/create
指定以下参数:
{
"type": "Custom",
"name": "job-1",
"completion_window": "24h",
"resumable": true,
"environment": {
"type": "Specified",
"specified_skus": [1]
},
"container": {
"image": "{username}/{image}:v1.0",
"command": ["./start.sh", "/az-data/job-1/input", "/az-data/job-1/ouput"],
"resume_command": ["./resume.sh", "/az-data/job-1/input", "/az-data/job-1/ouput"]
}
}
4. 查询任务状态
GET /api/v1/job/list
[
{
"id": 35,
"name": "job-1",
"resumable": true,
"status": "Processing",
"reason": "",
"completion_window": "24h",
"run_times": 1,
"total_running_time": 6000,
"fee": "0.00"
"expired_time": "2024-08-15 15:58:50",
"create_time": "2024-08-14 15:58:50"
}
]
当状态为 Completed
时代表该任务已完成,可以在【控制台-实例共享存储】查看结果文件。
接口详情见【离线任务接口文档】