云服务器内容精选

  • ma-cli dli-job提交DLI Spark作业支持的命令 $ma-cli dli-job -h Usage: ma-cli dli-job [OPTIONS] COMMAND [ARGS]... DLI spark job submission and query jod details. Options: -h, -H, --help Show this message and exit. Commands: get-job Get DLI spark job details. get-log Get DLI spark log details. get-queue Get DLI spark queues info. get-resource Get DLI resources info. stop Stop DLI spark job by job id. submit Submit dli spark batch job. upload Upload local file or OBS object to DLI resources. 表1 提交DLI Spark作业命令总览 命令 命令详情 get-job 查询DLI Spark作业列表及详情。 get-log 查询DLI Spark运行日志。 get-queue 查询DLI 队列。 get-resource 查询DLI 分组资源。 stop 停止DLI Spark作业。 submit 提交DLI Spark作业。 upload 上传本地文件或OBS文件到DLI分组资源。 父主题: 使用ma-cli dli-job命令提交DLI Spark作业
  • 数据规划 发布者Job使用自定义算子每秒钟产生10000条数据 数据包含两个属性:分别是Int和String类型 配置文件 nettyconnector.registerserver.topic.storage:设置NettySink的IP、端口及并发度信息在第三方注册服务器上的路径(必填),例如: nettyconnector.registerserver.topic.storage: /flink/nettyconnector nettyconnector.sinkserver.port.range:设置NettySink的端口范围(必填),例如: nettyconnector.sinkserver.port.range: 28444-28943 nettyconnector.sinkserver.subnet:设置网络所属域,例如: nettyconnector.sinkserver.subnet: 10.162.0.0/16 接口说明 注册服务器接口 注册服务器用来保存NettySink的IP、端口以及并发度信息,以便NettySource连接使用。为用户提供以下接口: public interface RegisterServerHandler { /** * 启动注册服务器 * @param configuration Flink的Configuration类型 */ void start(Configuration configuration) throws Exception; /** *注册服务器上创建Topic节点(目录) * @param topic topic节点名称 */ void createTopicNode(String topic) throw Exception; /** *将信息注册到某个topic节点(目录)下 * @param topic 需要注册到的目录 * @param registerRecord 需要注册的信息 */ void register(String topic, RegisterRecord registerRecord) throws Exception; /** *删除topic节点 * @param topic 待删除topic */ void deleteTopicNode(String topic) throws Exception; /** *注销注册信息 *@param topic 注册信息所在的topic *@param recordId 待注销注册信息ID */ void unregister(String topic, int recordId) throws Exception; /** * 查寻信息 * @param 查询信息所在的topic *@recordId 查询信息的ID */ RegisterRecord query(String topic, int recordId) throws Exception; /** * 查询某个Topic是否存在 * @param topic */ Boolean isExist(String topic) throws Exception; /** *关闭注册服务器句柄 */ void shutdown() throws Exception; 工程基于以上接口提供了ZookeeperRegisterHandler供用户使用。 NettySink算子 Class NettySink(String name, String topic, RegisterServerHandler registerServerHandler, int numberOfSubscribedJobs) name:为本NettySink的名称。 topic:为本NettySink产生数据的Topic,每个不同的NettySink(并发度除外)必须使用不同的TOPIC,否则会引起订阅混乱,数据无法正常分发。 registerServerHandler:为注册服务器的句柄。 numberOfSubscribedJobs:为订阅本NettySink的作业数量,该数量必须是明确的,只有当所有订阅者都连接上NettySink,NettySink才发送数据。 NettySource算子 Class NettySource(String name, String topic, RegisterServerHandler registerServerHandler) name:为本NettySource的名称,该NettySource必须是唯一的(并发度除外),否则,连接NettySink时会出现冲突,导致无法连接。 topic:订阅的NettySink的topic。 registerServerHandler:为注册服务器的句柄。 NettySource的并发度必须与NettySource的并发度相同,否则无法正常创建连接。
  • 数据规划 发布者Job使用自定义算子每秒钟产生10000条数据。 数据包含两个属性:分别是Int和String类型。 配置文件 nettyconnector.registerserver.topic.storage:设置NettySink的IP、端口及并发度信息在第三方注册服务器上的路径(必填),例如: nettyconnector.registerserver.topic.storage: /flink/nettyconnector nettyconnector.sinkserver.port.range:设置NettySink的端口范围(必填),例如: nettyconnector.sinkserver.port.range: 28444-28943 nettyconnector.ssl.enabled:设置NettySink与NettySource之间通信是否SSL加密(默认为false),例如: nettyconnector.ssl.enabled: true nettyconnector.sinkserver.subnet:设置网络所属域,例如: nettyconnector.sinkserver.subnet: 10.162.0.0/16 安全认证配置: Zookeeper的SASL认证,依赖“flink-conf.yaml”中有关HA的相关配置,具体配置请参见配置管理Flink。 SSL的keystore、truststore、keystore password、truststore password以及password等也使用“flink-conf.yaml”的相关配置,具体配置请参见配置Flink应用安全认证。 接口说明 注册服务器接口 注册服务器用来保存NettySink的IP、端口以及并发度信息,以便NettySource连接使用。为用户提供以下接口: public interface RegisterServerHandler { /** * 启动注册服务器 * @param configuration Flink的Configuration类型 */ void start(Configuration configuration) throws Exception; /** *注册服务器上创建Topic节点(目录) * @param topic topic节点名称 */ void createTopicNode(String topic) throw Exception; /** *将信息注册到某个topic节点(目录)下 * @param topic 需要注册到的目录 * @param registerRecord 需要注册的信息 */ void register(String topic, RegisterRecord registerRecord) throws Exception; /** *删除topic节点 * @param topic 待删除topic */ void deleteTopicNode(String topic) throws Exception; /** *注销注册信息 *@param topic 注册信息所在的topic *@param recordId 待注销注册信息ID */ void unregister(String topic, int recordId) throws Exception; /** * 查寻信息 * @param 查询信息所在的topic *@recordId 查询信息的ID */ RegisterRecord query(String topic, int recordId) throws Exception; /** * 查询某个Topic是否存在 * @param topic */ Boolean isExist(String topic) throws Exception; /** *关闭注册服务器句柄 */ void shutdown() throws Exception; 工程基于以上接口提供了ZookeeperRegisterHandler供用户使用。 NettySink算子 Class NettySink(String name, String topic, RegisterServerHandler registerServerHandler, int numberOfSubscribedJobs) name:为本NettySink的名称。 topic:为本NettySink产生数据的Topic,每个不同的NettySink(并发度除外)必须使用不同的TOPIC,否则会引起订阅混乱,数据无法正常分发。 registerServerHandler:为注册服务器的句柄。 numberOfSubscribedJobs:为订阅本NettySink的作业数量,该数量必须是明确的,只有当所有订阅者都连接上NettySink,NettySink才发送数据。 NettySource算子 Class NettySource(String name, String topic, RegisterServerHandler registerServerHandler) name:为本NettySource的名称,该NettySource必须是唯一的(并发度除外),否则,连接NettySink时会出现冲突,导致无法连接。 topic:订阅的NettySink的topic。 registerServerHandler:为注册服务器的句柄。 NettySource的并发度必须与NettySink的并发度相同,否则无法正常创建连接。
  • ma-cli ma-job训练作业支持的命令 使用ma-cli ma-job命令可以提交训练作业,查询训练作业日志、事件、使用的AI引擎、资源规格及停止训练作业等。 $ ma-cli ma-job -h Usage: ma-cli ma-job [OPTIONS] COMMAND [ARGS]... ModelArts job submission and query jod details. Options: -h, -H, --help Show this message and exit. Commands: delete Delete training job by job id. get-engine Get job engines. get-event Get job running event. get-flavor Get job flavors. get-job Get job details. get-log Get job log details. get-pool Get job engines. stop Stop training job by job id. submit Submit training job. 表1 训练作业支持的命令 命令 命令详情 get-job 查询ModelArts训练作业列表及详情。 get-log 查询ModelArts训练作业运行日志。 get-engine 查询ModelArts训练AI引擎。 get-event 查询ModelArts训练作业事件。 get-flavor 查询ModelArts训练资源规格。 get-pool 查询ModelArts训练专属池。 stop 停止ModelArts训练作业。 submit 提交ModelArts训练作业。 delete 删除指定作业id的训练作业。 父主题: 使用ma-cli ma-job命令提交ModelArts训练作业
  • 响应示例 状态码: 200 成功响应示例 { "jobs": [ { "jobId": "b236a002-6acb-40cd-acca-bc3eb96b807d001680206", "rawRequest": "{\"algorithmName\":\"shortest_path\",\"parameters\":{\"source\":\"0000\",\"target\":\"38\"}}", "taskType": "Algorithm", "canStop": false, "progress": "100", "startTime": "2024-05-23 09:54:00", "failReason": "Running algorithm [shortest_path] error: parameter [source] is invalid!", "endTime": "2024-05-23 09:54:00", "status": "failed" }, { "jobId": "5a39d9f6-e955-4294-8ec6-2fe18eee98c7001680206", "rawRequest": "{\"algorithmName\":\"shortest_path\",\"parameters\":{\"source\":\"46\",\"target\":\"38\"}}", "taskType": "Algorithm", "canStop": false, "progress": "100", "startTime": "2024-05-23 09:41:40", "endTime": "2024-05-23 09:41:40", "status": "success" }, { "jobId": "cef6ae30-f21b-4a2a-a83c-cf91bee679d9001680206", "rawRequest": "", "taskType": "ImportGraph", "canStop": false, "progress": "100", "files": [ { "edgeFiles": [ { "fileName": "/root/ges-install/auDatas/ranking_edge.csv", "totalLines": 1659, "startTime": 1716428001745772, "successfulLines": 1659, "endTime": 1716428001757920, "status": "success", "failedLines": 0 } ] }, { "vertexFiles": [ { "fileName": "/root/ges-install/auDatas/movies_vertex_new.csv", "totalLines": 146, "startTime": 1716428001656072, "successfulLines": 146, "endTime": 1716428001659352, "status": "success", "failedLines": 0 } ] }, { "schemaFiles": [ { "totalLabels": 49, "fileName": "/root/ges-install/auDatas/schema.xml.bak", "failedLabels": 0, "startTime": 1716428001563921, "successfulLabels": 49, "endTime": 1716428001655884, "status": "success" } ] } ], "startTime": "2024-05-23 09:33:21", "endTime": "2024-05-23 09:33:21", "status": "success" } ], "jobCount": 3 }
  • URI GET /ges/v1.0/{project_id}/graphs/{graph_name}/jobs/status?limit={limit}&offset={offset} 表1 路径参数 参数 是否必选 类型 说明 project_id 是 String 项目ID。获取方法请参见获取项目ID。 offset 否 Integer 本次查询偏移量,默认为0。 job_id 是 String Response对应的任务Job ID。 limit 否 Integer 本次查询返回最大数量(最大100000),默认为100000。
  • 响应参数 表2 响应Body参数说明 参数 类型 说明 errorMessage String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误信息。 errorCode String 系统提示信息。 执行成功时,字段可能为空。 执行失败时,用于显示错误码。 result String 查询成功时值为success,失败时值为failed。 jobs Object 查询成功时包含jobs字段,jobs字段中包含系统中保存的job状态列表,单个job的状态结构如表3。 表3 job状态结构 参数 类型 说明 jobId String Job名称。 rawRequest String 原始请求Body体 taskType String 任务类型。 canStop Boolean 任务能否被停止。 progress Integer 任务进度,取值范围[0,100]。 startTime String 起始时间,Date型字符串或时间戳。 endTime String 终止时间,Date型字符串或时间戳。 status String Job执行状态,取值为pending/running/complete。 failReason String 失败原因,当status为failed时才有。 files Object 导入文件列表,当taskType为ImportGraph时才有。
  • 基于ModelArts预置镜像提交训练作业 指定命令行options参数提交训练作业 ma-cli ma-job submit --code-dir obs://your-bucket/mnist/code/ \ --boot-file main.py \ --framework-type PyTorch \ --working-dir /home/ma-user/modelarts/user-job-dir/code \ --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 \ --data-url obs://your-bucket/mnist/dataset/MNIST/ \ --log-url obs://your-bucket/mnist/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \ -q 使用预置镜像的train.yaml样例:
  • 基于自定义镜像创建训练作业 指定命令行options参数提交训练作业 ma-cli ma-job submit --image-url atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e \ --code-dir obs://your-bucket/mnist/code/ \ --user-command "export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH && cd /home/ma-user/modelarts/user-job-dir/code && /home/ma-user/anaconda3/envs/PyTorch-1.8/bin/python main.py" \ --data-url obs://your-bucket/mnist/dataset/MNIST/ \ --log-url obs://your-bucket/mnist/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \ -q 使用自定义镜像的train.yaml样例: # .ma/train.yaml样例(自定义镜像) image-url: atelier/pytorch_1_8:pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64-20220926104358-041ba2e user-command: export LD_LIBRARY_PATH=/usr/local/cuda/compat:$LD_LIBRARY_PATH && cd /home/ma-user/modelarts/user-job-dir/code && /home/ma-user/anaconda3/envs/PyTorch-1.8/bin/python main.py train-instance-type: modelarts.vm.cpu.8u train-instance-count: 1 data-url: obs://your-bucket/mnist/dataset/MNIST/ code-dir: obs://your-bucket/mnist/code/ log-url: obs://your-bucket/mnist/logs/ ##[Optional] Uncomment to set uid when use custom image mode uid: 1000 ##[Optional] Uncomment to upload output file/dir to OBS from training platform output: - name: output_dir obs_path: obs://your-bucket/mnist/output1/ ##[Optional] Uncomment to download input file/dir from OBS to training platform input: - name: data_url obs_path: obs://your-bucket/mnist/dataset/MNIST/ ##[Optional] Uncomment pass hyperparameters parameters: - epoch: 10 - learning_rate: 0.01 - pretrained: ##[Optional] Uncomment to use dedicated pool pool_id: pool_xxxx ##[Optional] Uncomment to use volumes attached to the training job volumes: - efs: local_path: /xx/yy/zz read_only: false nfs_server_path: xxx.xxx.xxx.xxx:/
  • 示例 基于yaml文件提交训练作业 ma-cli ma-job submit ./train-job.yaml 基于命令行和预置镜像pytorch1.8-cuda10.2-cudnn7-ubuntu18.04提交训练作业。 ma-cli ma-job submit --code-dir obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/code/ \ --boot-file test-pytorch.py \ --framework-type PyTorch \ --working-dir /home/ma-user/modelarts/user-job-dir/code \ --framework-version pytorch_1.8.0-cuda_10.2-py_3.7-ubuntu_18.04-x86_64 \ --data-url obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/data/ \ --log-url obs://automation-use-only/Original/TrainJob/TrainJob-v2/pytorch1.8.0_cuda10.2/data/logs/ \ --train-instance-type modelarts.vm.cpu.8u \ --train-instance-count 1 \
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200 { } 状态码: 400 失败响应示例 Http Status Code: 400 { "errorMessage": "can not find job to cancel, id is 9440a7ebXXXXXXXXXXXXXXXXXXXX2d079a67001679122", "errorCode": "GES.8303" }
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200 { "result": "success" } 状态码: 400 失败响应示例 HttpStatusCode: 400 { "errorMessage": "Graph [ {project_id} -movie1] does not exist, please check project_id and graph_name.", "errorCode": "GES.8000", "result": "failed" }
  • 请求示例 请求示例1:取消已经提交的某个作业。 DELETE http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/jobs/{job_id} 请求示例2:取消全部排队中的作业。 DELETE http://{SERVER_URL}/ges/v1.0/{project_id}/graphs/{graph_name}/jobs SERVER_URL:图的访问地址,取值请参考业务面API使用限制。
  • 响应示例 状态码: 200 成功响应示例 Http Status Code: 200 { "data": { "outputs": { "data_return_size": 2, "vertices": [ { "id": "Sarah", "label": "user", "properties": { "Occupation": [ "other or not specified" ], "Name": [ "莎拉" ], "Zip-code": [ "55105" ], "Gender": [ "F" ], "Age": [ "18-24" ] } }, { "id": "Sidney", "label": "user", "properties": { "Occupation": [ "writer" ], "Name": [ "西德尼" ], "Zip-code": [ "85296" ], "Gender": [ "M" ], "Age": [ "18-24" ] } } ], "data_offset": 0, "data_total_size": 19 } }, "status": "success" }
  • URI GET /ges/v1.0/{project_id}/graphs/{graph_name}/jobs/{job_id}/status?offset=offset&limit=limit 表1 路径参数 参数 是否必选 类型 说明 project_id 是 String 项目ID。获取方法请参见获取项目ID。 job_id 是 String Job ID offset 否 Integer 本次查询偏移量,默认为0。 limit 否 Integer 本次查询返回最大数量(最大100000),默认为100000。