华为云用户手册

  • 响应示例 状态码: 200 OK。 { "kind" : "Network", "apiVersion" : "v1", "metadata" : { "name" : "network-7a03-86c13962597848eeb29c5861153a391f", "creationTimestamp" : "2022-09-16T09:44:59Z", "labels" : { "os.modelarts/name" : "network-7a03", "os.modelarts/workspace.id" : "0" }, "annotations" : { } }, "spec" : { "cidr" : "192.168.128.0/17", "connection" : { } }, "status" : { "phase" : "" } } 状态码: 400 Bad Request。 { "error_code" : "ModelArts.50004000", "error_msg" : "Bad request." }
  • 请求示例 创建网络。设置资源类型为“Network”,用户指定的network名称为“network-7a03”,网络的cidr为“192.168.128.0/17”。 POST {endpoint}/v2/{project_id}/pools { "apiVersion" : "v1", "kind" : "Network", "metadata" : { "labels" : { "os.modelarts/name" : "network-7a03", "os.modelarts/workspace.id" : "0" } }, "spec" : { "cidr" : "192.168.128.0/17" } }
  • 请求示例 对在线服务进行鉴权。设置付费工作流计费周期为“day”,付费工作流可使用的时间为“100”。 POST https://{endpoint}/v2/{project_id}/workflows/service/auth { "content_id" : "xxx", "main_service_id" : "xxx", "consume" : { "period" : "day", "value" : 100 } }
  • 请求参数 表2 请求Body参数 参数 是否必选 参数类型 描述 main_service_id 否 String 在线服务ID。 content_id 否 String Gallery资产ID。 consume 否 WorkflowConsume object 消费信息。 表3 WorkflowConsume 参数 是否必选 参数类型 描述 period 否 String 付费工作流计费周期。 value 否 Long 付费工作流可使用的时间值。
  • 响应示例 状态码: 200 返回调度信息。 { "created_at" : "2022-11-02T09:40:52.714657+08:00", "uuid" : "fa4ac58e-088b-4fd7-ae8c-b36fee50f884", "type" : "time", "content" : { "cron" : "0 0 0 * * Thu,Tue", "method" : "fixed" }, "action" : "run", "policies" : { "on_failure" : "retry", "on_running" : "cancel" }, "workflow_id" : "f1642618-43eb-4ab1-a0b1-9cc584182c60", "user_id" : "75540c679ab44074bc100022d8a4b204", "enable" : true }
  • URI PUT /v2/{project_id}/workflows/{workflow_id}/schedules/{schedule_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 workflow_id 是 String 工作流的ID。 schedule_id 是 String 工作流调度信息ID。
  • 请求示例 更新调度信息 PUT https://{endpoint}/v2/{project_id}/workflows/{workflow_id}/schedules/fa4ac58e-088b-4fd7-ae8c-b36fee50f884 { "content" : { "cron" : "0 0 0 * * Thu,Tue", "method" : "fixed" }, "enable" : true }
  • 响应示例 状态码: 200 OK { "total" : 5, "items" : [ { "time" : "2022-10-28T15:31:43.409368+08:00", "duration" : 366181, "workflow_id" : "bd711470-e00f-422a-8da4-8a7fa06f4b8c", "workflow_name" : "wf-test-service-xiahou", "execution_id" : "837f989e-ff44-4089-90f5-ec6d790d339d", "step_name" : "service_step", "step_title" : "install service", "status" : "wait_inputs" }, { "time" : "2022-10-28T15:31:28.753908+08:00", "duration" : 366196, "workflow_id" : "acf1a43e-3037-4e97-8438-d21fe38d31dd", "workflow_name" : "workflow-service-infer2", "execution_id" : "2d235b72-c9e2-4277-9a10-b826746d38e7", "step_name" : "service_step", "step_title" : "service_step", "status" : "wait_inputs" }, { "time" : "2022-10-27T15:01:33.644611+08:00", "duration" : 454391, "workflow_id" : "79232863-7d4c-4e36-af8a-b4030da7b525", "workflow_name" : "MAssist_checkpoint_url_beta2_4dc3a098-2687-400a-a621-11fe1ff6542", "execution_id" : "2d2affa3-892f-4b2f-87de-a22f8b8d018a", "step_name" : "condition_step", "step_title" : "skip training", "status" : "wait_inputs" }, { "time" : "2022-10-20T15:01:42.650076+08:00", "duration" : 1059182, "workflow_id" : "b94d87ad-ccc3-4d7a-ac3e-a4907ccf8247", "workflow_name" : "MAssist_checkpoint_url2_c508a2ac-e146-42dd-8e5b-249dc4a117ee", "execution_id" : "0f2bb91c-3a60-49bd-a32e-190797d90ebd", "step_name" : "condition_step_test", "step_title" : "condition_step_test", "status" : "wait_inputs" }, { "time" : "2022-10-20T14:53:13.05412+08:00", "duration" : 1059692, "workflow_id" : "e6d01c2e-0ff7-42ea-a0da-363660b730bd", "workflow_name" : "MAssist_checkpoint_url3_2086aa8f-09b7-4dae-b262-642d0d80519e", "execution_id" : "2aa33bf2-7ddb-4401-adb9-627952a282e9", "step_name" : "labeling", "step_title" : "data labeling", "status" : "hold" } ] }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 items Array of WorkflowTodo objects 待办列表。 total Integer 条目个数。 表4 WorkflowTodo 参数 参数类型 描述 time String 时间。 duration Integer 运行时长。 workflow_id String 工作流ID。 workflow_name String 工作流名称。填写1-64位,仅包含英文、数字、下划线(_)和中划线(-),并且以英文开头的名称。 execution_id String 工作流执行ID。 step_name String 节点名称。 step_title String 节点的Title。 status String 状态。
  • 响应示例 状态码: 200 OK { "total" : 1, "count" : 1, "items" : [ { "created_at" : "2022-09-09T11:28:29.639658+08:00", "workflow_id" : "6b596c75-fe1f-440b-be83-fe5e240133c4", "name" : "graph-test-has-condition-step", "description" : "", "user_name" : "zuoping", "workspace_id" : "0", "labels" : [ "subgraph" ], "data" : [ { "name" : "a2ff296da618452daa8243399f06db8e", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job1" ] }, { "name" : "f78e46676a454ccdacb9907f589f8d67", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job2" ] }, { "name" : "dee65054c96b4bf3b7ac98c0709f9ae0", "type" : "obs", "value" : { "obs_url" : "/test-lh/test-metrics/" }, "used_steps" : [ "training_job3" ] } ], "parameters" : [ { "name" : "is_true", "type" : "bool", "delay" : true, "value" : true, "used_steps" : [ "condition_step_test" ] }, { "name" : "train_spec", "type" : "str", "format" : "flavor", "description" : "training specification", "default" : "modelarts.vm.cpu.8u", "used_steps" : [ "training_job1", "training_job2", "training_job3" ] }, { "name" : "service_config1", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job1" ] }, { "name" : "service_config2", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job2" ] }, { "name" : "service_config3", "type" : "str", "default" : "/test-lh/test-metrics/metrics.json", "used_steps" : [ "training_job3" ] } ], "sub_graphs" : [ { "name" : "stage_A", "steps" : [ "training_job1", "training_job2" ] } ], "policy" : { }, "last_modified_at" : "2022-10-28T16:49:13.056726+08:00", "source_workflow_id" : "05427e9d-42ac-4816-bd45-360c1bfd780b", "latest_execution" : { "execution_id" : "43e317e2-34b0-4348-9c1b-08d3083512e1", "created_at" : "2022-10-28T16:49:03.894771+08:00", "status" : "completed", "duration" : 209 }, "run_count" : 2, "param_ready" : true } ] }
  • URI GET /v2/{project_id}/workflows 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 表2 Query参数 参数 是否必选 参数类型 描述 name 否 String 工作流名称。 description 否 String 工作流描述信息。 status 否 String 工作流状态。 labels 否 String 工作流标签。 template_id 否 String 工作流模板ID。 limit 否 String 分页参数limit,表示单次查询的条目数上限。假如要查询20~29条记录,offset为20,limit为10。 offset 否 String 分页参数offset,表示单次查询的条目偏移数量。假如要查询20~29条记录,offset为20,limit为10。 sort_by 否 String 排序依据字段,例如sort_by=create_time,则表示以条目的创建时间进行排序。 search_type 否 String 过滤方式。可选值如下: equal表示精确匹配。 contain表示模糊匹配。 具体过滤的字段,由各个接口额外定义参数。例如Workflow支持按照名称(name)进行过滤,则相应的过滤字段为name。name=workflow&search_type=contain表示查询名称中含有Workflow字样的所有工作流。
  • 训练作业权限 表1 训练作业(新版)细化权限说明 权限 对应API接口 授权项 依赖的授权项 IAM项目 企业项目 创建训练作业 POST /v2/{project_id}/training-jobs modelarts:trainJob:create swr:repository:listTags swr:repository:getRepository swr:repository:listRepositories smn:topic:publish smn:topic:list obs:object:GetObjectAcl obs:object:PutObjectAcl obs:object:PutObject obs:object:GetObject obs:object:DeleteObject obs:object:ModifyObjectMetaData √ √ 更新训练作业 PUT /v2/{project_id}/training-jobs/{training_job_id} modelarts:trainJob:update - √ √ 删除训练作业 DELETE /v2/{project_id}/training-jobs/{training_job_id} modelarts:trainJob:delete - √ √ 查询训练作业详情 GET /v2/{project_id}/training-jobs/{training_job_id} modelarts:trainJob:get - √ √ 查询训练作业列表 POST /v2/{project_id}/training-job-searches modelarts:trainJob:list - √ √ 训练作业日志预览 GET /v2/{project_id}/training-jobs/{training_job_id}/tasks/{task_id}/logs/preview - - √ √ 训练作业日志下载 GET /v2/{project_id}/training-jobs/{training_job_id}/tasks/{task_id}/logs/url modelarts:trainJob:logExport - √ √ 创建算法 POST /v2/{project_id}/algorithms modelarts:aiAlgorithm:create - √ √ 更新算法 PUT /v2/{project_id}/algorithms/{algorithm_id} modelarts:aiAlgorithm:update - √ √ 删除算法 DELETE /v2/{project_id}/algorithms/{algorithm_id} modelarts:aiAlgorithm:delete - √ √ 查询算法列表 GET /v2/{project_id}/algorithms modelarts:aiAlgorithm:get - √ √ 查询算法详情 GET /v2/{project_id}/algorithms/{algorithm_id} modelarts:aiAlgorithm:get - √ √ 父主题: 权限策略和授权项
  • 响应示例 状态码: 200 创建工作空间成功的响应参数。 { "id" : "**d05d1a553b4e188ea878e7dcb85e**", "name" : "test-workspace", "description" : "It is a test project'", "owner" : "testUser", "create_time" : 1470000020000, "update_time" : 1470000030000, "enterprise_project_id" : "***b0091-887f-4839-9929-cbc884f1e***", "enterprise_project_name" : "test-eps", "auth_type" : "public", "status" : "NORMAL", "status_info" : "" }
  • 响应参数 状态码: 200 表5 响应Body参数 参数 参数类型 描述 owner String 创建者名称。 auth_type String 授权类型。默认值为PUBLIC。PUBLIC:租户内部公开访问。PRIVATE:仅创建者和主账号可访问。INTERNAL:创建者、主账号、指定IAM子账号可访问,需要与grants参数配合使用。 enterprise_project_id String 企业项目ID。 update_time Integer 最后修改时间,UTC。 create_time Integer 创建时间,UTC。 enterprise_project_name String 企业项目名称。 name String 工作空间名称。 description String 工作空间描述。 id String 工作空间ID,系统生成的32位UUID,不带橫线。 status String 工作空间状态。 CREATE_FAILED:创建失败。 NORMAL:状态正常。 DELETING:正在删除。 DELETE_FAILED:删除失败。 status_info String 状态描述,默认为空。该字段会补充显示状态的详细信息。如删除失败时,可通过该字段查看删除失败的原因。 grants Array of grants objects 授权用户列表。默认为空。需要与“auth_type”参数配合使用,且仅当授权类型为“INTERNAL”时才会生效。 表6 grants 参数 参数类型 描述 user_id String 用户ID,此参数与user_name必填一个。两者都填优先使用user_id。 user_name String IAM用户名称。此参数与user_id必填一个。
  • 请求示例 创建工作空间。设置工作空间名称为“test-workspace”,授权类型为“internal”,授权的IAM用户名称为“test”。 POST https://{endpoint}/v1/{project_id}/workspaces { "name" : "test-workspace", "description" : "It is a test project", "enterprise_project_id" : "***b0091-887f-4839-9929-cbc884f1e***", "auth_type" : "internal", "grants" : [ { "user_name" : "test" } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 grants 否 Array of grants objects 授权用户列表,默认为空。需要与“auth_type”参数配合使用,且仅当授权类型为“INTERNAL”时才会生效。 auth_type 否 String 授权类型。可选值有PUBLIC、PRIVATE、INTERNAL。默认值为PUBLIC。 PUBLIC:租户内部公开访问。 PRIVATE:仅创建者和主账号可访问。 INTERNAL:创建者、主账号、指定IAM子账号可访问,需要与grants参数配合使用。 enterprise_project_id 否 String 企业项目ID。 name 是 String 工作空间名称。长度限制为4-64字符,支持中文、大小写字母、数字、中划线和下划线。同时'default'为系统预留的默认工作空间名称,用户无法自己创建名为'default'的工作空间。 description 否 String 工作空间描述,默认为空。长度限制为0-256字符。 表4 grants 参数 是否必选 参数类型 描述 user_id 否 String IAM用户ID。此参数与user_name必填一个。两者都填优先使用user_id。 user_name 否 String IAM用户名称。此参数与user_id必填一个。
  • 响应示例 状态码: 200 OK。 { "kind" : "Network", "apiVersion" : "v1", "metadata" : { "name" : "network-7a03-86c13962597848eeb29c5861153a391f", "creationTimestamp" : "2022-09-16T09:44:59Z", "deletionTimestamp" : "2022-09-16T10:06:27Z", "labels" : { "os.modelarts/name" : "network-7a03", "os.modelarts/workspace.id" : "0" }, "annotations" : { } }, "spec" : { "cidr" : "192.168.128.0/17", "connection" : { "peerConnectionList" : [ { "peerVpcId" : "03e4f4d7-fc62-409b-9c52-df885525e30b", "peerSubnetId" : "42aeebc3-f7c7-45aa-b884-e6e9ac2f841d", "defaultGateWay" : false } ] } }, "status" : { "phase" : "Active", "connectionStatus" : { "peerConnectionStatus" : [ { "peerVpcId" : "03e4f4d7-fc62-409b-9c52-df885525e30b", "peerSubnetId" : "42aeebc3-f7c7-45aa-b884-e6e9ac2f841d", "defaultGateWay" : false, "phase" : "Active" } ] } } } 状态码: 404 Not Found。 { "error_code" : "ModelArts.50025001", "error_msg" : "Network not exist." }
  • 请求示例 PUT https://{endpoint}/v1/{project_id}/workspaces/ccd05d1a553b4e188ea878e7dcb85e47 { "name" : "my_workspace", "description" : "It is my workspace", "auth_type" : "INTERNAL", "grants" : [ { "user_name" : "my_iam_user" } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 grants 否 Array of grants objects 训练作业使用的数据集。不可与data_url或dataset_id/dataset_version_id同时使用。 auth_type 否 String 授权类型。可选值有PUBLIC、PRIVATE、INTERNAL。默认值为PUBLIC。 PUBLIC:租户内部公开访问。 PRIVATE:仅创建者和主账号可访问。 INTERNAL:创建者、主账号、指定IAM子账号可访问,需要与grants参数配合使用。 name 否 String 工作空间名称。长度限制为4-64字符,支持中文、大小写字母、数字、中划线和下划线。同时'default'为系统预留的默认工作空间名称,用户无法自己创建名为'default'的工作空间。 description 否 String 工作空间描述,默认为空。长度限制为0-256字符。 表4 grants 参数 是否必选 参数类型 描述 user_id 否 String IAM用户ID。此参数与user_name必填一个。两者都填优先使用user_id。 user_name 否 String IAM用户名称。此参数与user_id必填一个。
  • 响应示例 状态码: 200 查询工作空间详情成功的响应参数。 { "id" : "**d05d1a553b4e188ea878e7dcb85e**", "name" : "test-workspace", "status" : "NORMAL", "status_info" : "", "description" : "", "owner" : "testUser", "create_time" : 1470000020000, "update_time" : 1470000030000, "enterprise_project_id" : "***b0091-887f-4839-9929-cbc884f1e***", "enterprise_project_name" : "test-eps", "auth_type" : "INTERNAL", "grants" : [ { "user_id" : "***55d2cd53b4x458ea878e7dcb85***", "user_name" : "test-iam-user" } ] }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 grants Array of grants objects 授权用户列表。默认为空。需要与“auth_type”参数配合使用,且仅当授权类型为“INTERNAL”时才会生效。 owner String 创建者名称。 auth_type String 授权类型。可选值有PUBLIC、PRIVATE、INTERNAL。默认值为PUBLIC。 PUBLIC:租户内部公开访问。 PRIVATE:仅创建者和主账号可访问。 INTERNAL:创建者、主账号、指定IAM子账号可访问,需要与grants参数配合使用。 enterprise_project_id String 企业项目ID。 update_time Integer 最后修改时间,UTC。 create_time Integer 创建时间,UTC。 enterprise_project_name String 企业项目名称。 name String 工作空间名称。长度限制为4-64字符,支持中文、大小写字母、数字、中划线和下划线。同时'default'为系统预留的默认工作空间名称,用户无法自己创建名为'default'的工作空间。 description String 工作空间描述,默认为空。长度限制为0-256字符。 id String 工作空间ID,系统生成的32位UUID,不带橫线。 status String 工作空间状态。 CREATE_FAILED:创建失败。 NORMAL:状态正常。 DELETING:正在删除。 DELETE_FAILED:删除失败。 status_info String 状态描述,默认为空。该字段会补充显示状态的详细信息。如删除失败时,可通过该字段查看删除失败的原因。 表4 grants 参数 参数类型 描述 user_id String IAM用户ID。此参数与user_name必填一个。两者都填优先使用user_id。 user_name String IAM用户名称。此参数与user_id必填一个。
  • 响应示例 状态码: 200 ok { "header" : [ "done", "pid", "best_reward", "time_total_s", "config", "acc", "loss", "trial_id", "training_iteration", "reward_attr" ], "data" : [ [ "False", "314", "0.0625", "19.477163314819336", { "batch_size" : 32, "learning_rate" : 0.05512301741232006, "trial_index" : 0, "param/batch_size" : 32, "param/learning_rate" : 0.05512301741232006 }, "0.0625", "tensor(0.0754, device='cuda:0', requires_grad=True)", "ae544174", "2", "0.0625" ], [ "True", "314", "0.0625", "19.477163314819336", { "batch_size" : 32, "learning_rate" : 0.05512301741232006, "trial_index" : 0, "param/batch_size" : 32, "param/learning_rate" : 0.05512301741232006 }, "0.0625", "tensor(0.0754, device='cuda:0', requires_grad=True)", "ae544174", "2", "0.0625" ] ] }
  • URI GET /v2/{project_id}/training-jobs/{training_job_id}/autosearch-trials/{trial_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 training_job_id 是 String 训练作业ID。 trial_id 是 String 超参搜索的trial_id。
  • 请求示例 如以下查询training_job_id为5b60a667-1438-4eb5-9705-85b860e623dc的作业中trial为ae544174的信息。 GET https://endpoint//v2/{project_id}/training-jobs/5b60a667-1438-4eb5-9705-85b860e623dc/autosearch-trials/ae544174
  • URI GET /v2/{project_id}/workflows/{workflow_id}/executions/{execution_id}/step-executions/{step_execution_id}/metrics 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 workflow_id 是 String 工作流的ID。 execution_id 是 String 工作流执行ID。 step_execution_id 是 String 工作流的一次执行中一个节点的执行ID。
  • 响应示例 状态码: 200 OK [ { "created_at" : "2022-11-03T17:30:49.735253+08:00", "key" : "accuracy", "title" : "accuracy", "type" : "line chart", "data" : { "x_axistrhrth" : [ { "title" : "step", "value" : [ 1, 2, 3, 4, 5 ] }, { "title" : "timestamp", "value" : [ 1667467812015, 1667467817223, 1667467822783, 1667467828078, 1667467833344 ] } ], "y_axishdsfgsdvg" : [ { "title" : "value", "value" : [ 0.5, 0.6, 0.7, 0.8, 0.9 ] } ], "z_wefwe" : [ ] } }, { "created_at" : "2022-11-03T17:30:49.009943+08:00", "key" : "loss", "title" : "loss", "type" : "line chart", "data" : { "x_axis" : [ { "title" : "step", "value" : [ 1, 2, 3, 4, 5 ] }, { "title" : "timestamp", "value" : [ 1667467811884, 1667467817178, 1667467822255, 1667467827822, 1667467833115 ] } ], "y_axis" : [ { "title" : "value", "value" : [ 0.5, 0.6, 0.7, 0.8, 0.9 ] } ] } } ]
  • 响应示例 状态码: 200 查询工作空间配额成功的响应参数。 { "quotas" : [ { "max_quota" : 60000, "update_time" : 1470000020000, "resource" : "exemlProject.gpu_duration", "used_quota" : 5, "quota" : 10, "min_quota" : -1, "name_cn" : "自动学习(图像分类、物体检测、声音分类)训练时长", "unit_cn" : "分钟", "name_en" : "ExeMLtraining duration (image classification, object detection, and soundclassification)", "unit_en" : "minute" } ] }
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 quotas Array of WorkspaceQuotasResponse objects 工作空间配额数据。 表4 WorkspaceQuotasResponse 参数 参数类型 描述 max_quota Integer 配额允许设置的最大值。 update_time Integer 最后修改时间,UTC。如用户未修改过该资源配额,则该值默认为该工作空间的创建时间。 resource String 资源的唯一标识。 quota Integer 当前配额值。配额值为-1代表不限制配额。 min_quota Integer 配额允许设置的最小值。 name_cn String 配额名称(中文)。 unit_cn String 数量单位(中文)。 name_en String 工作空间ID,系统生成的32位UUID,不带橫线。默认的工作空间id为'0'。 unit_en String 数量单位(英文)。 used_quota Integer 已用配额值。当quota为-1(不限制配额)时,used_quota为null。
  • URI DELETE /v2/{project_id}/workflows/{workflow_id}/subscriptions/{subscription_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 workflow_id 是 String 工作流的ID。 subscription_id 是 String 工作流的消息订阅ID。
  • URI GET /v2/{project_id}/training-jobs/{training_job_id}/autosearch-parameter-analysis/{parameter_name} 表1 路径参数 参数 是否必选 参数类型 描述 parameter_name 是 String 搜索参数名称 project_id 是 String 用户项目ID。获取方法请参见获取项目ID和名称。 training_job_id 是 String 训练作业ID。
共100000条