Utilisation d'un modèle préentraîné OpenSearch
OCI Search avec OpenSearch fournit une prise en charge intégrée des modèles préentraînés OpenSearch.
Cette rubrique explique comment enregistrer et déployer n'importe lequel des modèles de transformateur de phrase préentraînés dans un cluster en spécifiant uniquement le nom du modèle. Pour obtenir la liste des modèles approuvés, reportez-vous à Modèles préentraînés. Pour obtenir une procédure de bout en bout sur l'utilisation d'un modèle préentraîné OpenSearch pour la recherche sémantique dans OCI Search avec OpenSearch, reportez-vous à Présentation de la recherche sémantique.
Prérequis
Avant de commencer, vous devez effectuer les opérations suivantes :
- Sélectionnez l'un des modèles préentraînés pris en charge par OCI Search avec OpenSearch
- Vérifiez que le cluster OpenSearch est version 2.11 ou ultérieure.
- Mettez à jour les paramètres du cluster pour effectuer une recherche sémantique. L'exemple suivant inclut les paramètres recommandés :
PUT _cluster/settings { "persistent": { "plugins": { "ml_commons": { "only_run_on_ml_node": "false", "model_access_control_enabled": "true", "native_memory_threshold": "99", "rag_pipeline_feature_enabled": "true", "memory_feature_enabled": "true", "allow_registering_model_via_local_file": "true", "allow_registering_model_via_url": "true", "model_auto_redeploy.enable":"true", "model_auto_redeploy.lifetime_retry_times": 10 } } } }
Etape 1 : Enregistrer le groupe de modèles
Les groupes de modèles vous permettent de gérer l'accès à des modèles spécifiques. L'enregistrement d'un groupe de modèles est facultatif. Cependant, si vous n'enregistrez pas, ML Commons crée un nouveau groupe de modèles pour vous. Nous vous recommandons donc d'enregistrer le groupe de modèles.
Enregistrez un groupe de modèles à l'aide de l'opération Enregistrer dans les API de groupe de modèles, comme indiqué dans l'exemple suivant :
POST /_plugins/_ml/model_groups/_register
{
"name": "new_model_group",
"description": "A model group for local models"
}
Notez le message model_group_id
renvoyé dans la réponse :
{
"model_group_id": "<modelgroupID>",
"status": "CREATED"
}
Etape 2 : Enregistrer le modèle
model_group_id
: si vous avez terminé l'étape 1, il s'agit de la valeur de model_group_id pour la demande _register.name
: nom du modèle à utiliser pour le modèle préentraîné.version
: numéro de version du modèle préentraîné à utiliser.model_format
: format du modèle,TORCH_SCRIPT
ouONNX
.
Enregistrez le modèle à l'aide de l'opération d'enregistrement à partir des API de modèle, comme indiqué dans l'exemple suivant :
POST /_plugins/_ml/models/_register
{
"name": "huggingface/sentence-transformers/msmarco-distilbert-base-tas-b",
"version": "1.0.2",
"model_group_id": "TOD4Zo0Bb0cPUYbzwcpD",
"model_format": "TORCH_SCRIPT"
}
Notez la valeur task_id
renvoyée dans la réponse. Vous pouvez utiliser task_id
pour vérifier le statut de l'opération.
Par exemple, à partir de la réponse suivante :
{
"task_id": "TuD6Zo0Bb0cPUYbz3Moz",
"status": "CREATED"
}
pour vérifier le statut de l'opération d'inscription, utilisez task_id
avec l'opération Get des API de tâche, comme indiqué dans l'exemple suivant :
GET /_plugins/_ml/tasks/TuD6Zo0Bb0cPUYbz3Moz
Une fois l'opération d'inscription terminée, la valeur status
dans la réponse à l'opération Get est COMPLETED
, comme indiqué dans l'exemple suivant :
{
"model_id": "iDf6Zo0BkIugivXi3E7z",
"task_type": "REGISTER_MODEL",
"function_name": "TEXT_EMBEDDING",
"state": "COMPLETED",
"worker_node": [
"3qSqVfK2RvGJv1URKfS1bw"
],
"create_time": 1706829732915,
"last_update_time": 1706829780094,
"is_async": true
}
Notez la valeur model_id
renvoyée dans la réponse à utiliser lors du déploiement du modèle.
Etape 3 : Déployer le modèle
Une fois l'opération d'inscription terminée pour le modèle, vous pouvez déployer le modèle vers le cluster à l'aide de l'opération de déploiement des API de modèle, en transmettant model_id
à partir de la réponse de l'opération Get à l'étape précédente, comme indiqué dans l'exemple suivant :
POST /_plugins/_ml/models/cleMb4kBJ1eYAeTMFFg4/_deploy
Notez la valeur task_id
renvoyée dans la réponse. Vous pouvez utiliser task_id
pour vérifier le statut de l'opération.
Par exemple, à partir de la réponse suivante :
{
"task_id": "T-D7Zo0Bb0cPUYbz-cod",
"task_type": "DEPLOY_MODEL",
"status": "CREATED"
}
pour vérifier le statut de l'opération d'inscription, utilisez task_id
avec l'opération Get des API des tâches, comme indiqué dans l'exemple suivant :
GET /_plugins/_ml/tasks/T-D7Zo0Bb0cPUYbz-cod
Une fois l'opération de déploiement terminée, la valeur status
dans la réponse à l'opération Get est COMPLETED
, comme indiqué dans l'exemple suivant :
{
"model_id": "iDf6Zo0BkIugivXi3E7z",
"task_type": "DEPLOY_MODEL",
"function_name": "TEXT_EMBEDDING",
"state": "COMPLETED",
"worker_node": [
"3qSqVfK2RvGJv1URKfS1bw"
],
"create_time": 1706829732915,
"last_update_time": 1706829780094,
"is_async": true
}
Etape 4 : test du modèle
Utilisez l'API de prévision pour tester le modèle, comme indiqué dans l'exemple suivant pour un modèle d'intégration de texte :
POST /_plugins/_ml/_predict/text_embedding/<your_embedding_model_ID>
{
"text_docs":[ "today is sunny"],
"return_number": true,
"target_response": ["sentence_embedding"]
}
La réponse contient des incorporations de texte pour la phrase fournie, comme indiqué dans l'exemple de réponse suivant :
"inference_results" : [
{
"output" : [
{
"name" : "sentence_embedding",
"data_type" : "FLOAT32",
"shape" : [
768
],
"data" : [
0.25517133,
-0.28009856,
0.48519906,
...
]
}
]
}
]
}