跳到主要内容

API使用指南

本指南是用于算力用户(模型训练、微调用户)接入算想云的说明文档。 算想云持续迭代,本文档也将随时更新(2023-12-22)

接入流程

创建用户

访问算想云首页 https://llm.sxwl.ai,完成注册并登录。

获取API Token

注册登录成功后,用户邮箱会收到Access Key(即为API Token)邮件(如下图),所有算想云API请求需在header中携带token。

API请求Header示例:

Header KeyHeader Value
AuthorizationBearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJmZDQ2ZDBiMjFiMGE0Zm6Q2ODQ5YWZmNWQ3ZWYyMjdkOSIsInVzZXIiOiJlbmdAc3h3bC5haSIslInN1YiI6ImVuZ0BzeHdsLmFpIn0.Y55g0189h96oTgCt_qrihKcXV1oWeGBzhpPqqy35TgWmfCl0KC6rk9DRvGrvNFt-1XjGtLOwNCSzCGvsa_pJA

任务管理

目前任务管理API支持任务的创建、查询和终止。并且可以通过设置回调函数的方式来及时获取任务状态的变更。

流程图:

API文档

API Base URL:https://llm.sxwl.ai/api/

创建任务

接口/userJob
方法POST
bodyJSON

body示例:

{
"gpuNumber": 1,
"gpuType": "NVIDIA-GeForce-RTX-3090",
"ckptPath": "/data",
"ckptVol": "10000",
"modelPath": "/data2",
"modelVol": "10000",
"imagePath": "dockerhub.kubekey.local/kubesphereio/train:test",
"jobType": "GeneralJob",
"stopType": "1",
"stopTime": 5,
"pretrainedModelName": "chatglm3-6b",
"pretrainedModelPath": "/sixpen_models/chatlm3",
"datasetName": "train-dataset",
"datasetPath": "/sixpen_models/train_outputs/test_10059997",
"runCommand": "python run.py",
"callbackUrl": "https://llm.nascentcore.cn/api/test/callback",
"env": {
"OPEN_NODE_TOKEN": "xxxxx"
}
}

必选参数:

参数类型是否必选描述举例备注
gpuNumberint必选GPU数量1
gpuTypeString必选GPU型号NVIDIA-GeForce-RTX-3090
ckptPathString必选cktp路径/data训练过程中产生的数据存放路径,对应用户训练程序中设置的路径
ckptVolString必选cktp容量单位M10000CKPT 路径将挂载对应的 PV ,容量是需要申请的 PV 大小,根据训练预估数据量大小填写
modelPathString必选挂载路径/data2训练完成后的模型保存路径,对应用户训练程序中设置的保存路径
modelVolString必选model容量单位M10000模型保存路径将挂载对应的 PV ,容量是需要申请的 PV 大小,根据训练预估数据量大小填写
imagePathString必选镜像路径dockerhub.kubekey.local/kubesphereio/train:test用户需要将训练程序、训练数据以及所需环境打包成镜像,并将镜像上传到公网可访问的镜像仓库
jobTypeString必选任务类型GeneralJob目前支持MPI、pytorch tensorflow的任务
stopTypeint必选终止类型:0 自然终止 1设定时长0

可选参数:

参数类型是否必选描述举例备注
stopTimeString可选设定时常以分钟为单位5
datasetNameString可选挂载路径名称train-dataset预缓存的开源数据集名字
datasetPathString可选dataset挂载路径/sixpen_models/train_outputs/test_10059997预缓存的开源数据集路径
pretrainedModelNameString可选预训练基底模型chatglm3-6b预缓存的开源模型名字
pretrainedModelPathString可选预训练基底模型对应路径/sixpen_models/chatlm3预缓存的开源模型路径
runCommandString可选训练启动命令python run.py
callbackUrlString可选回调接口urlhttps://domain/callback任务完成或失败时算想云会调用回调接口来通知用户
envJson可选环境变量参数{\"OPEN_NODE_TOKEN\": \"xxxxx\"}环境变量会作用于训练任务pod中,由用户自行设置和使用

http状态返回代码

代码说明
200(成功) 服务器已成功处理了请求
401无权限访问
501服务器内部错误

返回参数格式:json

{
"job_id": "aia1905cd8-650a-4cd9-b005-677ec3376db0"
}
参数类型描述
job_idString任务ID,唯一标识

示例请求

curl --location 'https://llm.sxwl.ai/api/userJob' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJmZDQ2ZDBiMjFiMGE0Zm6Q2ODQ5YWZmNWQ3ZWYyMjdkOSIsInVzZXIiOiJlbmdAc3h3bC5haSIslInN1YiI6ImVuZ0BzeHdsLmFpIn0.Y55g0189h96oTgCt_qrihKcXV1oWeGBzhpPqqy35TgWmfCl0KC6rk9DRvGrvNFt-1XjGtLOwNCSzCGvsa_pJA' \
--data '{
"gpuNumber": 1,
"gpuType": "NVIDIA-GeForce-RTX-3090",
"ckptPath": "/data",
"ckptVol": "10000",
"modelPath": "/data2",
"modelVol": "10000",
"imagePath": "dockerhub.kubekey.local/kubesphereio/train:test",
"jobType": "GeneralJob",
"stopType": "1",
"stopTime": 5,
"pretrainedModelName": "chatglm3-6b",
"pretrainedModelPath": "/sixpen_models/chatlm3",
"datasetName": "train-dataset",
"datasetPath": "/sixpen_models/train_outputs/test_10059997",
"runCommand": "sleep 600",
"callbackUrl": "https://llm.nascentcore.cn/api/test/callback",
"env": {"OPEN_NODE_TOKEN": "9999"}
}'

查询任务

接口/userJob/job_status
方法POST
bodyJSON

body示例:

{
"job_id": "ai81e6f92e-f1dd-4033-910e-ceafbf7991db"
}

对应json里的参数定义如下:

参数类型是否必选描述
job_idString必选任务的唯一标识

http状态返回代码

代码说明
200(成功) 服务器已成功处理了请求
401无权限访问
501服务器内部错误

返回参数格式:json

{
"url": "https://sxwl-ai-test.oss-cn-beijing.aliyuncs.com/aid828f15e-60a3-43d9-9fc5-03910b989c5a%2Fds_model.bin?Expires=1702269241&OSSAccessKeyId=LTAI5t9sFbN2QcksHK1LVgRW&Signature=bFuarx6Yo4AAZNEWWWCSBMMT5SA%3D",
"status": "success"
}

参数类型描述
statusString任务状态:成功:success ,失败:fail,运行中:working
urlString任务状态成功时,返回的任务对应的下载模型路径

示例请求

curl --location 'https://llm.sxwl.ai/api/userJob/job_status' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJmZDQ2ZDBiMjFiMGE0Zm6Q2ODQ5YWZmNWQ3ZWYyMjdkOSIsInVzZXIiOiJlbmdAc3h3bC5haSIslInN1YiI6ImVuZ0BzeHdsLmFpIn0.Y55g0189h96oTgCt_qrihKcXV1oWeGBzhpPqqy35TgWmfCl0KC6rk9DRvGrvNFt-1XjGtLOwNCSzCGvsa_pJA' \
--data '{"job_id":"ai07746341-aa8d-4d7d-96b3-986d2ab8b61f"}'

终止任务

接口/userJob/job_del
方法POST
bodyJSON

json实例如下:

{
"job_id": "ai81e6f92e-f1dd-4033-910e-ceafbf7991db"
}

对应json里的参数定义如下:

参数类型是否必选描述
job_idString必选任务的唯一标识
代码说明
200(成功) 服务器已成功处理了请求
401无权限访问
501服务器内部错误

示例请求

curl --location 'https://llm.sxwl.ai/api/userJob/job_del' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJqdGkiOiJmZDQ2ZDBiMjFiMGE0Zm6Q2ODQ5YWZmNWQ3ZWYyMjdkOSIsInVzZXIiOiJlbmdAc3h3bC5haSIslInN1YiI6ImVuZ0BzeHdsLmFpIn0.Y55g0189h96oTgCt_qrihKcXV1oWeGBzhpPqqy35TgWmfCl0KC6rk9DRvGrvNFt-1XjGtLOwNCSzCGvsa_pJA' \
--data '{"job_id":"ai07746341-aa8d-4d7d-96b3-986d2ab8b61f"}'

callback回调函数参数定义

方法:post

请求参数格式:json

{
"status": "success",
"job_id": "aia1905cd8-650a-4cd9-b005-677ec3376db0",
"url": "https://xxxxx"
}
参数类型描述
statusString任务执行后的返回结果,success为成功 和fail为失败
job_idString任务ID,唯一标识
urlStringstatus为成功时,模型存储对应的路径