Lindorm AI引擎提供了一系列RESTful风格的API,您可以调用这些API部署模型、管理已有模型、查看模型列表和指定模型的详细信息等。本文介绍如何通过RESTful API管理模型。
部署模型
您可以通过以下API接口部署预训练AI模型,对数据库内的数据进行分析和处理。您可以部署模型平台上已支持的开源模型,也可以通过上传模型文件的方式,导入BYOM(Bring Your Own Model)模型。
BYOM模型需先上传至Lindorm DFS,再进行部署。如何上传BYOM模型,请参见上传模型文件。
API接口
POST v1/ai/models/create
请求参数说明
参数 | 说明 |
model_name | 模型名称。您可以自定义模型名称。仅可包含大写英文字符、小写英文字符和下划线(_)。 |
task | 模型类型,取值如下:
|
model_path |
|
algorithm | 模型算法。
|
settings | JSON格式的字符串,用于传递自定义参数。不同的task支持的自定义参数不同。详细说明,请参见模型自定义参数(settings)说明。 |
模型自定义参数(settings)说明
FEATURE_EXTRACTION
参数名 | 类型 | 说明 |
quantization | STRING | 指定是否使用模型量化。默认不使用。支持设置为 |
instance_count | INT | 指定模型的实例数量,默认值为 |
max_batch_size | INT | 指定模型支持的最大批量大小,默认值为 |
QUESTION_ANSWERING
参数名 | 类型 | 说明 |
stream_mode | STRING | 指定LLM问答模型是否使用流式输出,取值如下:
|
SEMANTIC_SIMILARITY
参数名 | 类型 | 说明 |
quantization | STRING | 指定是否使用模型量化。支持设置为 |
instance_count | INT | 指定模型的实例数量,默认为 |
示例
示例一:特征提取
开源模型
请求:
POST v1/ai/models/create HTTP/1.1
Content-Type: application/json
{
"model_name": "bge_m3_model",
"model_path": "huggingface://BAAI/bge-m3",
"task": "FEATURE_EXTRACTION",
"algorithm": "BGE_M3"
}
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 17
{
"code": 0,
"msg": "SUCCESS",
"data": null,
"success": true
}
BYOM模型
请求:
POST v1/ai/models/create HTTP/1.1
Content-Type: application/json
{
"model_name": "byom_model",
"model_path": "ldfs://models/my_model_1.zip",
"task": "FEATURE_EXTRACTION"
}
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 17
{
"code": 0,
"msg": "SUCCESS",
"data": null,
"success": true
}
示例二:QA问答
BYOM模型暂不支持QA问答。
ChatGLM2模型,使用流式输出。请求代码如下:
POST v1/ai/models/create HTTP/1.1
Content-Type: application/json
{
"model_name": "qa_model",
"model_path": "huggingface://THUDM/chatglm2-6b-int4",
"task": "QUESTION_ANSWERING",
"algorithm": "CHATGLM2_6B_INT4",
"settings": {"stream_mode": "on"}
}
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 17
{
"code": 0,
"msg": "SUCCESS",
"data": null,
"success": true
}
示例三:语义相似度
开源模型
请求:
POST v1/ai/models/create HTTP/1.1
Content-Type: application/json
{
"model_name": "bge_rerank_model",
"model_path": "huggingface://BAAI/bge-reranker-large",
"task": "SEMANTIC_SIMILARITY",
"algorithm": "BGE_RERANKER_LARGE"
}
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 17
{
"code": 0,
"msg": "SUCCESS",
"data": null,
"success": true
}
BYOM模型
请求:
POST v1/ai/models/create HTTP/1.1
Content-Type: application/json
{
"model_name": "byom_rerank_model",
"model_path": "ldfs://models/my_model_2.zip",
"task": "SEMANTIC_SIMILARITY"
}
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 17
{
"code": 0,
"msg": "SUCCESS",
"data": null,
"success": true
}
查看模型列表
您可以通过以下API接口查看所有模型的信息。
API接口
GET v1/ai/models/list
应答参数说明
参数 | 说明 |
models | 模型信息列表。以数组形式显示。 |
models.name | 模型名称。 |
models.status | 模型状态,取值如下:
|
models.sql_function | 通过SQL使用的对应函数。 |
models.created_time | 模型创建时间。 |
models.update_time | 模型更新时间。 |
示例
请求:
GET v1/ai/models/list HTTP/1.1
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:19:26 GMT
Content-type: application/json
Content-length: 2099
{
"code": 0,
"msg": "SUCCESS",
"data": {
"models": [{
"name": "bge_m3_model",
"status": "READY",
"created_time": "...",
"updated_time": "...",
...
}, {
"name": "bge_model",
"status": "READY",
...
}]
},
"success": true
}
查看模型详细信息
在部署模型API接口调用成功后,您可以通过以下API接口查看指定模型的信息。
API接口
GET v1/ai/models/${MODEL_NAME}/status
应答参数说明
参数 | 说明 |
name | 模型名称。 |
status | 模型状态,取值如下:
|
sql_function | 通过SQL使用的函数。 |
task_type | 模型对应的任务类型。 |
algorithm | 模型对应的算法。 |
query | 模型关联的SQL查询(如果无则显示为空)。 |
preprocessors | 模型关联的预处理操作(如果无则显示为空)。 |
settings | 模型相关配置。 |
metrics | 模型相关的指标(如果无则显示为空)。 |
error | 模型部署过程中的错误信息(如果无则显示为空)。 |
progress | 模型部署的进度(如果无则显示为空)。 |
created_time | 模型创建时间。 |
update_time | 模型更新时间。 |
示例
请求:
GET v1/ai/models/bge_m3_model/status HTTP/1.1
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 419
{
"code": 0,
"msg": "SUCCESS",
"data": {
"name": "bge_m3_model",
"status": "READY",
"task_type":"FEATURE_EXTRACTION",
"algorithm":"BGE_M3",
"settings": "...",
"error":"...",
"progress": "...",
...
},
"success": true
}
删除指定模型
您可以通过以下API接口删除指定模型。
API接口
POST v1/ai/models/${MODEL_NAME}/drop
示例
请求:
POST v1/ai/models/bge_m3_model/drop HTTP/1.1
应答:
HTTP/1.1 200 OK
Date: Tue, 28 Nov 2023 03:18:55 GMT
Content-type: application/json
Content-length: 17
{
"code": 0,
"msg": "SUCCESS",
"data": null,
"success": true
}
上传模型文件
您可以通过以下API接口将模型文件压缩包上传至LDFS,用于部署BYOM模型。
API接口
POST v1/ai/models/upload
请求设置
在HTTP请求的header中添加Key:x-ld-filename。x-ld-filename即需要上传的模型文件名,部署BYOM模型时填写的模型路径(model_path)与此有关。
模型文件需要以二进制格式上传。
应答参数说明
应答参数 | 说明 |
model_path | 上传后模型文件在LDFS中的路径。 |
示例
请求:
POST /v1/ai/models/upload HTTP/1.1
x-ld-filename: m3e_finetuned.zip
Content-Type: application/zip
Content-Length: 22
"<file contents here>"
应答:
HTTP/1.1 200 OK
Date: Sat, 11 May 2024 02:51:51 GMT
Content-type: application/json
Content-length: 149
{
"code": 0,
"msg": "SUCCESS",
"data": {
"model_path": "ldfs://models/m3e_finetuned.zip"
},
"success": true,
"request_id": "cf4c9ed8-1185-4650-9687-d09826b839f4"
}