Le moteur IA de Lindorm fournit un ensemble d'API RESTful pour déployer, gérer et consulter vos modèles. Cette rubrique explique comment utiliser ces API pour gérer les modèles.
Déployer un modèle
Utilisez l'API suivante pour déployer un modèle IA préentraîné afin d'analyser et de traiter les données de votre base de données. Vous pouvez déployer un modèle open source pris en charge par la plateforme ou importer un modèle personnalisé (Bring Your Own Model, BYOM) en téléchargeant un fichier de modèle.
Avant de déployer un modèle BYOM, vous devez le télécharger sur Lindorm DFS. Pour obtenir des instructions, consultez Télécharger un fichier de modèle.
API
POST v1/ai/models/create
Paramètres de requête
Paramètre | Description |
model_name | Nom personnalisé du modèle. Le nom ne peut contenir que des lettres majuscules, des lettres minuscules et des traits de soulignement (_). |
task | Type de tâche du modèle. Valeurs valides :
|
model_path |
|
algorithm | Algorithme du modèle.
|
settings | Chaîne au format JSON contenant des paramètres personnalisés. Les paramètres personnalisés pris en charge dépendent de la valeur de task. Pour plus d'informations, consultez Paramètres personnalisés (settings). |
Paramètres personnalisés (settings)
Feature extraction
|**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
quantization
|
STRING
|
Indique s'il faut appliquer la quantification du modèle. Cette option est désactivée par défaut. Pour activer la quantification fp16, définissez ce paramètre sur `'fp16'`.
| |
instance_count
|
INT
|
Nombre d'instances de modèle. Par défaut : `1`. Un nombre d'instances plus élevé peut améliorer les performances d'inférence du modèle, mais augmente également la consommation de mémoire GPU.
| |
max_batch_size
|
INT
|
Taille maximale du lot pour le modèle. Par défaut : `1024`. La valeur doit être comprise dans la plage `[1,1024]`.
| |
model_type
|
STRING
|
Spécifie le type de modèle. Ce paramètre est désactivé par défaut. Lorsque vous utilisez le modèle d'embedding MT5_BASE, vous pouvez définir ce paramètre sur `'TENSORRTLLM'` pour activer l'optimisation TensorRT-LLM.
|
Question answering
Paramètre | Type | Description |
stream_mode | STRING | Indique si le modèle LLM de questions-réponses fournit une sortie en streaming. Valeurs valides :
|
Semantic similarity
|**Paramètre**
|
**Type**
|
**Description**
| | --- | --- | --- | |
quantization
|
STRING
|
Indique s'il faut appliquer la quantification du modèle. Cette option est désactivée par défaut. Pour activer la quantification fp16, définissez ce paramètre sur `'fp16'`.
| |
instance_count
|
INT
|
Nombre d'instances de modèle. Par défaut : `1`. Un nombre d'instances plus élevé peut améliorer les performances d'inférence du modèle, mais augmente également la consommation de mémoire GPU.
|
Exemples
Exemple 1 : Feature extraction
Open-source model
Requête :
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"
}
Réponse :
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 model
Requête :
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"
}
Réponse :
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
}
Exemple 2 : Question answering
Les modèles BYOM ne prennent actuellement pas en charge la tâche de questions-réponses.
L'exemple suivant déploie le modèle ChatGLM2 avec la sortie en streaming activée :
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"}
}
Réponse :
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
}
Exemple 3 : Semantic similarity
Open-source model
Requête :
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"
}
Réponse :
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 model
Requête :
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"
}
Réponse :
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
}
Lister les modèles
Utilisez l'API suivante pour lister tous vos modèles.
API
GET v1/ai/models/list
Paramètres de réponse
Paramètre | Description |
models | Liste des détails des modèles, renvoyée sous forme de tableau. |
models.name | Nom du modèle. |
models.status | État du modèle. Valeurs valides :
|
models.sql_function | Fonction SQL permettant d'appeler le modèle. |
models.created_time | Heure de création du modèle. |
models.update_time | Heure de la dernière mise à jour du modèle. |
Exemple
Requête :
GET v1/ai/models/list HTTP/1.1
Réponse :
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
}
Détails du modèle
Après avoir déployé un modèle, utilisez l'API suivante pour afficher ses détails.
API
GET v1/ai/models/${MODEL_NAME}/status
Paramètres de réponse
Paramètre | Description |
name | Nom du modèle. |
status | État du modèle. Valeurs valides :
|
sql_function | Fonction SQL permettant d'appeler le modèle. |
task_type | Type de tâche du modèle. |
algorithm | Algorithme du modèle. |
query | Requête SQL associée. (Facultatif) |
preprocessors | Opérations de prétraitement associées. (Facultatif) |
settings | Paramètres de configuration du modèle. |
metrics | Métriques associées au modèle. (Facultatif) |
error | Message d'erreur issu du processus de déploiement du modèle. (Facultatif) |
progress | Progression du déploiement du modèle. (Facultatif) |
created_time | Heure de création du modèle. |
update_time | Heure de la dernière mise à jour du modèle. |
Exemple
Requête :
GET v1/ai/models/bge_m3_model/status HTTP/1.1
Réponse :
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
}
Supprimer un modèle
Utilisez l'API suivante pour supprimer un modèle spécifique.
API
POST v1/ai/models/${MODEL_NAME}/drop
Exemple
Requête :
POST v1/ai/models/bge_m3_model/drop HTTP/1.1
Réponse :
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
}
Télécharger un fichier de modèle
Utilisez l'API suivante pour télécharger un fichier de modèle compressé vers LDFS afin de déployer un modèle BYOM.
API
POST v1/ai/models/upload
Paramètres de requête
Dans l'en-tête de la requête HTTP, ajoutez la clé x-ld-filename. Définissez sa valeur sur le nom du fichier de modèle. Ce nom de fichier fait partie du paramètre model_path que vous spécifiez lors du déploiement du modèle BYOM.
Téléchargez le fichier de modèle au format binaire.
Paramètres de réponse
|**Paramètre**
|
**Description**
| | --- | --- | |
model_path
|
Chemin d'accès LDFS du fichier de modèle téléchargé.
|
Exemple
Requête :
POST /v1/ai/models/upload HTTP/1.1
x-ld-filename: m3e_finetuned.zip
Content-Type: application/zip
Content-Length: 22
"<file contents here>"
Réponse :
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"
}