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"
}