ACP API V1 版本下线通知 | 大装置帮助中心
跳到主要内容

ACP API V1 版本下线通知

下线背景

为持续提升产品能力,训练产品 ACP 及工具 SCO、SCC 已全面支持 API V2 版本,API V1 不再提供功能迭代及后续版本维护服务。

下线时间

API V1 将于 2025 年 9 月 30 日 正式下线,建议您尽快完成迁移,避免对您的业务造成影响。

版本要求

  • SCO 中ACP组件低于 v2.0.0 的用户将无法使用 V2 API,建议升级至 v2.0.0 及以上版本
  • SCC低于 v2.9.5 的用户将无法使用 V2 API,建议升级至 v2.9.5 及以上版本

升级操作指南见附录。

变更说明

建议您参照下方对照表逐项比对 V1 与 V2 API ,尽快完成迁移操作。

接口名称对照:

请求类型V1 APIV2 API
GET Get training jobGet training job
Get the training job list Get training job list
Get the training job owner list
Get training job pod listGet worker list
Get training job pod events list待上线
Get training job events list待上线
POST Create training job Create training job
BatchDeleteTrainingJobBatchDeleteTrainingJob
PATCH Update training job by training job IDUpdate training job
停止训练任务(待上线)
重启训练任务(待上线)
DELETEDelete training job by training job IDBatchDeleteTrainingJob

URL 变更对照:

注:目前按照V1 API接口进行了功能罗列,表格最后一行为匹配的V2接口,如下所示。注意,需关注V1,V2 URL 的加粗部分。

1、获取任务列表

Get the training job listGET
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs
Get the training job owner listGET
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/ {workspace_name}/trainingJobsOwn
Get training job list GET
/compute/acp/data/v2/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs

2、获取任务详情

Get training jobGET
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_id}
Get training jobGET
/compute/acp/data/v2/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_name}

3、获取worker列表

Get training job pod listGET
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_id}/pods
Get worker listGET
/compute/acp/data/v2/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_name}/workers

4、创建任务

Create training jobPOST
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs
Create training jobPOST
/compute/acp/data/v2/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs

5、删除任务

BatchDeleteTrainingJobPOST
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs:batchDelete
Delete training job by training job ID DELETE
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_id}
BatchDeleteTrainingJobPOST
/compute/acp/data/v2/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs:batchDelete

6、修改任务

Update training job by training job IDPATCH
/compute/workspace/data/v1/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_id}
Update training jobPATCH
/compute/acp/data/v2/subscriptions/{subscription_name}/resourceGroups/{resource_group_name}/zones/{zone}/workspaces/{workspace_name}/trainingJobs/{training_job_name}

字段变更对照:

变更字段变更说明V1 字段V2 字段
name1. 该字段为 V2 新增,表示任务名称,在工作空间下唯一。
2. 支持用户填写,如未填写,系统将自动生成,生成规则与V1的id一致。
-

{
"name": "pt-zey0c59q"
}
任务uid1. 该字段为 V2 新增,用作任务的唯一标识符。-

{
"uid": ""
}
id1. V1:工作空间下唯一,由后台生成,不支持用户填写。相当于V2的name字段。
2. V2:(subscription_id, resource_group_name, zone, workspace_name, id)五元组下全局唯一

{
"id": "pt-zey0c59q"
}

{
"id":
"subscriptions/{subscription_id}/resourceGroups/{resource_group_name}/zones/{zone}/workspace/{workspace_name}/trainingJobs/pt-zey0c59q"
}
aec2_name1. V1:使用独立的aec2_name字段。
2. V2:将 AEC2 相关信息整合至 resource_pool 中,resource_pool.name相当于 V1 的 aec2_name。公共集群下支持填写zone和对应vpc_id

{
"aec2_name": "string"
}

{
"resource_pool": {
"name": "string",
"zone": "string",
"vpc_id": "string"
}
}
display_name-

{
"display_name": "string"
}

{
"display_name": "string"
}
description1. V1:任务描述字段。
2. V2:无独立字段。

{
"description": "string"
}
-
labels1. V1:任务标签字段。
2. V2:无独立字段。

{
"labels": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
-
training_type1. V1:区分单机任务或分布式任务。
2. V2:不再使用独立字段,通过副本数区分单机或分布式任务。

{
"training_type": "string"
}
-
training_operator1. framework_type改为framework,由string改为枚举,支持:MPI、PYTORCH、PYTORCH_DDP、TENSORFLOW、TENSORFLOW_PS、SENSEPARROTS、SENSEPARROTS_DDP。
2. V2 中无独立的mpi字段,已合并至framework,填写 MPI 即表示启用 MPI。
3. V2 中无distributed_architecture字段,是否为单机/分布式由副本数个数判断,大于1为分布式
4. V2 中不再使用image_display_nameimage_typeimage_name
5. name改为image_path
a. V1:一个任务只支持填写一个image
b. V2:支持一个角色填写一个image
6. V2中无omnijob字段。
7. max_retries字段从training_operator移至lme下。
8. quota_type字段从training_operator移至scheduling下。
9. V2 中无tolerance_opt字段。
10. V2中,与TensorBoard相关的字段从training_operator拆分至独立的tensorboard字段中。

"training_operator": {
"framework_type": "string",
"mpi": true,
"distributed_architecture": "string",
"image": "string",
"image_display_name": "string",
"image_type": "string",
"image_name": "string",
"omnijob": true,
"max_retries": 0,
"quota_type": "RESERVED",
"tolerance_opt": {
"enable_warmingup": true,
"enable_checker": true,
"envs": [
{
"key": "string",
"value": "string"
}
]
},
"enable_tensorboard": true,
"tensorboard_log_path": "string"
}

framework_type


{
"framework": "PYTORCH"
}

image


"roles": [
{
"image_path": "string"
}
]

max_retries


"lme": {
"max_retries": 0
}
quota_type

"scheduling": {
"quota_type": "RESERVED"
}
tensorboard

"tensorboard": {
"log_path": "string"
}
execution_type1. V1:通过更新接口中的execution_type参数实现停止(Suspend)和重启(Restart)操作。
2. V2:新增停止/重启 API

{
"execution_type": "string"
}
-
task_roles1. task_roles 改为roles
2. role_name 改为name
3. resources 改为resource_spec
4. resources[i].num改为resource_spec[i].replicas
5. replic改为total_replicas
6. V2 无mode,通过total_replicasresource_spec.replicas 来区分。
7. V2 roles支持一个角色填写一个启动命令。
8. V2 roles支持一个角色填写一个镜像。

"task_roles": [
{
"role_name": "string",
"resources": [
{
"name": "string",
"num": 0
}
],
"replica": 0,
"mode": "UNKNOWNMODE"
}
]

"roles": [
{
"name": "string",
"resource_spec": [
{
"name": "string",
"replicas": 0,
"description": "string",
"limits": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
},
"requests": {
"additionalProp1": "string",
"additionalProp2": "string",
"additionalProp3": "string"
}
}
],
"total_replicas": 0,
"startup_script": "string",
"image_path": "string"
}
]
volume_infos1. volume_infos改为mount
2. V2 通过type是否为PV_AFS,来判断挂载是否为AFS。
3. volume_id 改为id
4. dir_path改为subdir
5. V2 支持跨区挂载AFS。

"volume_infos": [
{
"volume_id": "string",
"mount_path": "string",
"dir_path": [
"string"
]
}
]

"mount": [
{
"type": "PV_AFS",
"id": "string",
"mount_path": "string",
"subdir": "string",
"zone": "string",
"endpoint": "string"
}
]
commands1. V1:一个任务支持一个启动命令。
2. V2:支持每个角色一个启动命令。

"commands": [
"string"
]

"roles": [
{
"startup_script": "string",
}
]
enable_cache1. V2 无 enable_cache,通过mount type是否为PV_ACS判断是否开启ACS缓存。

{
"enable_cache": true
}
-
priority1. V2 字段名称不变,位置调整至 scheduling 下,支持普通(NORMAL)、高优(HIGH)和最高(HIGHEST)。

{
"priority": "NONE"
}

"scheduling": {
"priority": "NORMAL",
}
enable_anomaly_detection
enable_async_ckpt
max_ckpt_rounds
1. V2:无独立字段。

{
"enable_anomaly_detection": true,
"enable_async_ckpt": true,
"max_ckpt_rounds": 0,
}
-
env-

"env": [
{
"key": "string",
"value": "string"
}
]

"env": [
{
"key": "string",
"value": "string"
}
]
vpc_id1. V2 中,字段名称不变,但结构调整至resource_pool下。

{
"vpc_id": "string"
}

"resource_pool": {
"vpc_id": "string"
}
acs_list1. V2 取消acs_list,改为mount,并通过type是否为PV_ACS来判断是否开启缓存。
2. bucket_path 改为subdir

"acs_list": [
{
"id": "string",
"mount_path": "string",
"bucket_path": [
"string"
]
}
]

"mount": [
{
"type": "PV_ACS",
"id": "string",
"mount_path": "string",
"subdir": "string",
"zone": "string",
"endpoint": "string"
}
]
fault_tolerance1. 该字段为 V2 新增,用于容错相关配置。-

"fault_tolerance": {
"backoff_limit": 0,
"rules": [
{
"action": "RESTART_JOB",
"exit_codes": "string",
"mark_node_unschedulable": false,
}
]
}
disable_ssh_key_setup1. 该字段为 V2 新增,用于控制是否禁用 worker 节点(包括master或 launcher等)之间的 SSH 免密通信。-

{
"disable_ssh_key_setup": false
}

升级操作指南

方式一:执行 sco components upgrade ,将所有已安装组件更新至最新版本。
方式二:如仅需升级 ACP,可选择卸载后重新安装该组件,其他组件无需变更。

# 先卸载
sco components remove acp

# 然后重装
sco components install acp

说明:如果升级后执行有问题,建议先执行sco init重新进行初始化配置

联系我们

如有疑问或需技术协助,请联系大装置内部客户服务:scoics@sensetime.com