文章目录
GPUSEEK算力平台AI大模型:API详细调用教程,为了方便大家灵活调用 算力实例资源,平台提供通过API调用方式使用实例相关功能,让大家训练推理大模型更加便捷智能可控,目前仅对企业用户开放。这篇文章详细总结了官方的API,希望可以帮到大家。
前言
GPUGEEK是面向AI开发者和中小企业的AI赋能平台。通过差异化竞争,构建全球 GPU 算力网络,为用户提供高性价比的 GPU 算力、存储服务和社区服务。让用户获得高效的云端编程和训练体验,加速AI算法的研究和产品的实际应用。
产品优势
GPUGEEK提供的云服务,具备多项核心优势:
- 高性价比:弹性调度,按需使用,关机不付费;
- 便捷使用:内置框架,支持镜像保存,无需配置环境;
- 业务适配:提供高配置性能实例,来最大化满足不同客户的使用需求。
快去体验吧,点击进入官网,送20元体验券,可以用券不花钱直接使用体验!
与自建GPU服务器对比:
GPU云服务器 | 自建下GPU服务器 | |
---|---|---|
性能 | 保障算力稳定 提供各型号GPU卡,适配多种业务 | 服务器折损,无法保障性能稳定 业务升级,硬件无法及时更新适配,成本过高 |
弹性 | 按业务需求灵活配置GPU、CPU、内存等 随时拓展或缩减GPU云服务器数量,快速响应业务变化 调整配置,数据不丢失 | 服务器规模固定,无法应对突发的业务规模增长,或造成长期闲置,带来成本的大幅提高 |
易用 | -键开启,支持镜像备份,数据存储使用便捷 | 需运维持续投入人力,不断人工重复部署和维护工作 |
成本 | 支持包年包月或按量计费,灵活使用,节约成本无需人力物力维护硬件和网络设施 | 租用费用高,只能包年包月 需持续投入人力维护,运维成本高 |
一、API概览
平台对外提供的API如下:
API | 说明 |
---|---|
获取平台GPU类型 | 查询平台当前可用显卡类型 |
获取镜像 | 查询当前账户可用的镜像,包括平台官方镜像和自定义镜像 |
创建实例 | 创建实例,根据平台推荐规则选择符合条件的最优机器执行创建计划。 |
查询操作结果 | 查询实例操作结果 |
查询实例 | 查询结果返回未释放实例 |
实例操作 | OpenAPI支持实例开机、关机、重启、释放和设置自定义端口,更多复杂操作请到网页端执行。 |
二、如何调用API
2.1 申请企业资质
API当前只针对企业用户开放,未开通企业资质请前往账户中心提交企业认证申请。
2.2 创建API密钥
API调用需要先创建API 密钥,可以在 “账户中心 - OpenAPI 密钥” 页面创建密钥,点击添加后即下载密钥到本地,后续无法再重复下载,请妥善保管,切勿泄露。
2.3 终端节点
终端节点即调用API的请求地址目前平台提供的服务器调用地址如下:
请求地址 | 协议类型 |
---|---|
https://api-cloud.gpugeek.com | HTTPS |
2.4 认证鉴权
所有API接口须要通过在header中携带平台的 API 密钥来进行身份认证。 在 Header 中携带 API 密钥的消息头域格式如下:
{
"gz-api-token":"test123abcxxxxxxxxx"
}
其中 gm-api-token
是平台自定义header key。
2.5 返回结果
API 请求返回统一使用 JSON (对应请求/响应header为Content-Type: application/json)
格式,通用结构如下:
{
"code": 0,
"message": "success",
"traceid": "",
"data": {}
}
返回结果参数说明:
消息元素名 | 描述 |
---|---|
code | 请求响应码,请求成功时为 0,失败时为相应的错误码,具体错误码请参考附录错误码说明。 |
message | 请求成功为 success, 请求失败为具体的业务错误信息 |
data | 返回的业务数据 |
三、API详情
3.1 获取平台GPU类型
接口说明
- 请求URI:
/api/v1/openapi/gpu/list
- 请求方法:
GET
请求参数无返回结果
参数名称 | 类型 | 描述 |
---|---|---|
gpus | Array | 显卡类型数组 ,显卡类型一致 |
返回值示例
{
"code": 0,
"message": "success",
"traceid": "",
"data": {
"gpus": [
"G40-24G",
"G30-24G",
"A100-PCIE-40G"
]
}
}
3.2 获取可用数据中心ID
接口说明
- 请求URI:
/api/v1/openapi/datacenter/list
- 请求方法:
GET
请求参数无返回结果
参数名称 | 类型 | 描述 |
---|---|---|
datacenters | Array | 数据中心数组 |
Datacenter
参数名称 | 类型 | 描述 |
---|---|---|
name | String | 数据中心名称 |
dcId | String | 数据中心ID |
返回值示例
{
"code": 0,
"message": "success",
"traceid": "57cbd46995d11318814a78746318bc32",
"data": {
"datacenters": [
{
"name": "宿迁B区",
"dcId": "suqian-b"
},
{
"name": "庆阳A区",
"dcId": "qingyang-a"
},
{
"name": "美国-达拉斯N区",
"dcId": "dallas-n"
}
]
}
}
3.3 获取镜像
接口说明
- 请求URI:
/api/v1/openapi/image/list
- 请求方法:
GET
请求参数 无 返回参数 Image参数描述
参数名称 | 类型 | 描述 |
---|---|---|
type | String | 镜像类型,user / official, user:备份镜像,official: 官方镜像 |
imageId | String | 镜像Id,创建实例使用 |
name | String | 镜像名称 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "90223a7f6632b1176c74fa17445cfe0e",
"data": {
"images": [
{
"type": "official",
"name": "torch2.1.1-cuda12.1.0-py3.10",
"imageId": "torch2.1.1-cuda12.1.0-py3.10"
},
{
"type": "user",
"name": "testimage",
"imageId": "123abc"
},
]
}
}
3.4 创建实例
接口说明
- 请求URI:
/api/v1/openapi/instance/create
- 请求方法:
POST
请求参数 Body
参数名称 | 类型 | 必填 | 描述 |
---|---|---|---|
type | Integer | 是 | type类型值,当前仅支持type=2 |
gpuName | String | 是 | 显卡类型,可通过获取显卡列表接口查询,或者从官网查询 |
skuName | String | 是 | 支付方式, 取值范围: 按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly) |
gpuNum | Integer | 是 | 租用显卡数量 |
cpuNum | Integer | 否 | 单卡分配cpu核心数 |
memory | Integer | 否 | 单卡分配的内存 |
diskType | String | 否 | 磁盘类型(SSD/NVME) |
tags | Array | 否 | 查询符合某些标签的机器 |
imageId | String | 是 | 创建实例使用的镜像ID,可通过查询可用镜像列表获取 |
autoRenew | Boolean | 否 | 是否设置到期自动续费,按量付费默认为自动续费,其他预付费支付方式默认为false |
duration | Integer | 否 | 预付费实例租用周期,默认为 1 |
name | String | 否 | 实例名称 |
servicePort | Array | 否 | 自定义服务端口,最多设置3个服务端口 |
cmd | String | 否 | 启动命令 |
env | String | 否 | 环境变量 |
dryRun | Boole | 否 | 空跑,为 true 时只做机器筛选和价格检查 |
dcId | String | 否 | 数据中心ID |
返回参数 Data
参数名称 | 类型 | 描述 |
---|---|---|
instanceId | Int64 | 实例ID, dryRun=true时为0 |
operationId | Int64 | 当前操作ID, dryRun=true时为 0 |
spec | Object | 实例规格 |
Spec
参数名称 | 类型 | 描述 |
---|---|---|
gpuName | String | 显卡名称 |
vram | String | 单卡显存大小,单位:G |
skuName | String | 支付类型,取值范围:按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly) |
price | String | 单价 |
cpuName | String | cpu 型号 |
cpuCoreNum | int | cpu 核心数,根据租用卡数按比例分配 |
memorySize | int | 内存大小,根据租用卡数按比例分配 |
payByVoucher | int | 是否支持代金券支付, 支持:1, 不支持:0 |
regionName | String | 所在区域 |
dcId | String | 所在数据中心 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "905b8753fb3db11760f67138872918cb",
"data": {
"InstanceId": 512300905672709,
"operationId": 512303116840965,
"spec": {
"gpuName": "G30-24G",
"vram": "10G",
"skuName": "payg",
"price": "10",
"cpuCoreNum": 16,
"cpuName": "Intel Xeon Processor (Skylake, IBRS)",
"memorySize": 17179869184,
"payByVoucher": 1,
"regionName": "华东",
"dcId": "suqian-b"
}
}
}
3.5 查询操作状态
接口说明
- 请求URI:
/api/v1/openapi/instance/op/result
- 请求方法:
POST
请求参数 Body
参数名称 | 类型 | 必填 | 描述 |
---|---|---|---|
ids | Array | 是 | 操作ID列表 |
返回参数 Operation
参数名称 | 类型 | 描述 |
---|---|---|
instanceId | Int64 | 实例ID |
status | int | 操作完成状态 进行中:1,成功:2,失败:3 |
action | String | 当前进行中的操作 |
operationId | String | 当前操作ID |
isCompleted | int | 操作是否已完成, 已完成:1, 未完成: 0 |
startTime | String | 开始时间 |
completeTime | String | 完成时间 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "287bfb0b8e3fb11797f57d7a4f92b05b",
"data": {
"operations": [
{
"instanceId": 512300905672709,
"operationId": 512303116840965,
"action": "stop",
"status": 2,
"isCompleted": 1,
"startTime": "2024-02-06 17:06:45",
"completeTime": "2024-02-06 17:06:47"
}
]
}
}
3.6 查询实例列表
接口说明
- 请求URI:
/api/v1/openapi/instance/query
- 请求方法:
GET
请求参数 Query
参数名称 | 类型 | 必填 | 描述 |
---|---|---|---|
status | String | 否 | 实例状态, 可选枚举值: stopd, running, creating |
instanceId | Int | 否 | 查询单个实例 |
pn | Integer | 否 | 分页页码 |
ps | Integer | 否 | 每页大小,默认为20 |
返回参数
参数名称 | 类型 | 描述 |
---|---|---|
instances | Array | 实例数组 |
total | Integer | 总数 |
Instance
参数名称 | 类型 | 描述 |
---|---|---|
instanceId | int64 | 实例ID |
name | String | 自定义实例名称 |
imageId | String | 镜像ID |
status | String | 实例状态 |
isPending | Int | 是否操作执行中, 1 为操作中 |
gpuName | String | 显卡名称 |
gpuNum | Integer | 显卡数量 |
availableGpuNum | Int | 实例所在物理机可用显卡数 |
skuName | String | 租用方式: payg(按量付费), daily(包天), weekly(包周), monthly(包月),card_less(无卡启动) |
createdAt | String | 创建时间 |
cpuCoreNum | Int | cpu核心数 |
memorySize | Int64 | 内存大小,单位 Byte |
systemDiskSize | Int64 | 系统盘分配空间(根目录/),单位byte |
systemDiskUsedSize | Int64 | 系统盘已用空间(根目录/), 单位byte |
dataDiskSize | Int64 | 数据盘分配空间(/gz-data),单位byte |
dataDiskUsedSize | Int64 | 数据盘已用空间(/gz-data), 单位 byte |
sshCmd | String | ssh 登录命令 |
sshPwd | String | ssh 登录密码 |
notebookUrl | String | JupyterLab Notebook 访问地址 |
tensorboardUrl | String | Tensorboard 访问地址 |
customServices | Array | 自定义端口访问地址(数组,每个元素为一个端口的对应访问地址) |
operationId | Int64 | 实例最近一次操作id |
dcId | String | 数据中心ID |
isStartable | Boolean | 是否可以直接启动,根据所在物理机状态及剩余显卡数是否满足实例要求确定 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "3082737a3085b5177f74d5555f57a69f",
"data": {
"instances": [
{
"instanceId": 504838617333765,
"name": "testname",
"status": "stopd",
"imageId": "stable-diffusion-webui_v1.7.0",
"isPending": 0,
"gpuName": "G40-24G",
"gpuNum": 0,
"skuName": "payg",
"operationId": 511642810499077,
"cpuCoreNum": 1,
"memorySize": 2147483648,
"systemDiskSize": 32212254720,
"systemDiskUsedSize": 4311059,
"dataDiskSize": 53687091200,
"dataDiskUsedSize": 0,
"sshCmd": "ssh -p 59064 root@xxxxx",
"sshPwd": "Q3rDHh7QEwgYsuPxYSdVbE9zzKQQW45e",
"notebookUrl": "http://xxxxx:42757/lab?token=f4jzygqwno3fecinx9arnetu",
"tensorboardUrl": "http://xxxxx:44634",
"customServices": [
"http://xxxxx:48548"
],
"createdAt": "2024-01-16 14:53:38",
"dcId": "qingyang-a",
"availableGpuNum": 8,
"isStartable": true
}
],
"total": 1
}
}
3.7 实例操作
接口说明
- 请求URI:
/api/v1/openapi/instance/action
- 请求方法:
POST
请求参数Body
参数名称 | 类型 | 必填 | 描述 |
---|---|---|---|
instanceId | Int64 | 是 | 实例ID |
action | String | 是 | 实例操作名称,仅支持stop(实例关机), start(开机), restart(重启), release(释放), set_port(设置自定义端口) |
ports | Array | 否(action=set_port时必填) | 内部端口号数组,最多同时开启3个,需要先完成实名认证或企业认证 |
返回参数
参数名称 | 类型 | 描述 |
---|---|---|
operationId | Int64 | 操作ID |
返回示例
{
"code": 0,
"message": "success",
"traceid": "3082737a3085b5177f74d5555f57a69f",
"data": {
"operationId": 511642810499077
}
}
四、附录
4.1 请求返回的通用结构
{
"code": 0,
"message": "success",
"traceid": "180114fedf26b1177b44121fa5c1e5d9",
"data": {}
}
4.2 HTTP状态码
状态码 | 含义 | 描述 |
---|---|---|
404 | Not Found | 请求URI不存在 |
403 | Forbidden | 请求未授权 |
200 | OK | 请求成功 |
500 | Internal Server Error | 服务器错误 |
4.3 常用错误码
错误码 | 错误信息 | 描述 |
---|---|---|
10001 | 服务器内部错误 | 未定义的服务器内部错误, 可提供单反馈协助解决 |
10002 | 未登录或者登录已过期 | 一般是请求header 中缺少gz-api-token |
10005 | 参数错误 | 参数校验错误 |
10135 | 实例操作错误 | 实例操作错误,错误信息在 message 中 |
五、总结
谁说搞AI只能烧钱?GPUSEEK用实力告诉你:高性价比+极致弹性=真香! 💰 从按需付费到镜像秒启,再到全球GPU网络覆盖,这平台简直是“懒人”开发者的福音——关机不扣费,开机即战斗,妈妈再也不用担心我的算力账单爆炸了!
🎯 三大绝活秀翻天:
1️⃣ 性价比之王:比自建GPU省心又省钱,包年包月?按量付费?随便选!
2️⃣ 操作如德芙般丝滑:一键创建实例,内置框架免配置,连环境都帮你“腌”好了!
3️⃣ API调用超智能:企业级接口全开放,从查询GPU到操控实例,代码搞定一切,连运维小哥都失业了(误)!
🤖 大模型训练?GPUSEEK:“小case,A100随便挑!” 无论是炼丹(训练)还是推理,分分钟给你“算到飞起”的体验。
💡 总结:想玩转AI又不想被算力绑架?GPUSEEK就是你的“钞能力”外挂!(附赠不秃头buff) 🧑💻✨
结束语
亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。
愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。
至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。
① 🉑提供云服务部署(有自己的阿里云);
② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
如🈶合作请联系我,期待您的联系。
亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌