跳到主要内容

简介

离线任务提供一种离线的低成本算力资源使用方式,用户仅需要提交任务,不需要关心任务何时运行,待任务执行完成后查看结果即可。

价格

离线任务的价格为工作空间按量付费价格的一半,按运行时长收费。

存储

离线任务默认挂载【实例共享存储】,容器内路径为 /az-data,建议将数据和结果保存在该路径下。

任务停止和恢复

任务停止

以下情况任务会停止并不再运行:

  1. 容器主进程退出码为0时,代表任务已完成
  2. 容器主进程退出码不是0,代表任务运行失败,不会再被重新拉起
  3. 任务超出完成窗口时间,会停止运行并被设置为过期状态
  4. 任务调度器会随时中断运行中的任务,当 resumable 为 false,则任务结束,不会被重新拉起

任务恢复

当创建任务时指定 resumable 为 true,代表该任务可以恢复执行,首次运行会执行 container.command 命令,恢复执行时会执行 container.resume_command 命令。

对于可恢复的任务,应通过 container.resume_command 找到中断点,并继续执行。建议通过【实例共享存储】中的持久化文件或其他中心服务来记录和查看进度,以便恢复执行。

注意: 任务中断后恢复会在新的容器中执行,非持久化的内容都会丢失,在构建镜像和执行恢复命令时应注意环境持久化问题。

快速使用

1. 准备镜像

建议准备两个脚本start.shresume.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 时代表该任务已完成,可以在【控制台-实例共享存储】查看结果文件。

接口详情见【离线任务接口文档】