Modèles personnalisés
Vous pouvez charger des modèles personnalisés dans une grappe à l'aide du processus Utiliser votre propre modèle (BYOM).
Pour utiliser des modèles personnalisés, vous avez besoin d'une grappe configurée pour utiliser OpenSearch version 2.11. Par défaut, les nouvelles grappes utilisent la version 2.11. Pour créer une grappe, voir Création d'une grappe OpenSearch.
Pour les grappes existantes configurées pour la version 2.3, vous pouvez effectuer une mise à niveau en ligne vers la version 2.11. Pour plus d'informations, voir Mises à niveau du logiciel de grappe OpenSearch.
Pour mettre à niveau les grappes existantes configurées pour la version 1.2.3 vers la version 2.11, utilisez le processus de mise à niveau décrit dans Mises à niveau du logiciel de grappe OpenSearch.
Le processus BYOM d'importation de modèles personnalisés comprend les étapes suivantes :
- Entrez les conditions requises suivantes :
- Configurer la politique IAM requise.
- Configurer les paramètres de grappe recommandés.
- Chargez un modèle personnalisé dans un seau de stockage d'objets.
- Enregistrez le modèle.
- Déployez le modèle.
- Testez le modèle (facultatif).
1 : Préalables
Politique du service IAM
Vous devez créer une politique pour accorder à la recherche OCI avec OpenSearch l'accès au seau de stockage d'objets dans lequel vous chargez le modèle personnalisé. L'exemple de politique suivant inclut les autorisations requises :
ALLOW ANY-USER to manage object-family in tenancy WHERE ALL {request.principal.type='opensearchcluster', request.resource.compartment.id='<cluster_compartment_id>'}
Pour en connaître davantage sur les politiques, voir Introduction aux politiques et Politiques communes.
Régions pour les connecteurs du service d'intelligence artificielle générative
Pour utiliser le service d'intelligence artificielle générative pour OCI, votre location doit être abonnée à la région Midwest des États-Unis (Chicago) ou à la région Centre de l'Allemagne (Francfort). Vous n'avez pas besoin de créer la grappe dans l'une ou l'autre de ces régions. Assurez-vous simplement que votre location est abonnée à l'une des régions.
Configurer les paramètres de grappe
Utilisez l'opération paramètres des API de grappe pour configurer les paramètres de grappe recommandés pour la recherche sémantique. L'exemple suivant présente 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
}
}
}
}
Charger le modèle dans le seau de stockage d'objets
Pour rendre un modèle personnalisé disponible pour l'inscription à une grappe, vous devez charger le modèle dans un seau de stockage d'objets de la location. Si vous n'avez pas de seau de stockage d'objets existant, vous devez créer le seau. Pour un tutoriel qui explique comment créer un seau, voir Création d'un seau.
Ensuite, vous devez charger le modèle personnalisé dans le seau. Voir Chargement de fichiers dans un seau pour un tutoriel qui vous explique comment charger des fichiers dans un seau. Aux fins de cette procédure pas à pas, vous pouvez télécharger tout modèle de visage de câblage pris en charge à charger.
2 : Enregistrer le modèle
Après avoir chargé un modèle personnalisé dans un seau de stockage d'objets, vous devez obtenir l'URL permettant d'accéder au fichier chargé et transmettre l'URL dans l'opération d'inscription à partir des API de modèle. Vous pouvez ensuite utiliser l'opération Obtenir des API de tâches pour suivre l'achèvement de l'opération d'enregistrement et obtenir l'ID modèle à utiliser lors du déploiement du modèle.
Pour obtenir l'URL du fichier de modèle chargé
Ouvrez le menu de navigation et cliquez sur Stockage. Sous Service de stockage d'objets et service de stockage d'archives, cliquez sur Seaux.
Cliquez sur le seau qui contient le modèle chargé. La page Détails du seau s'affiche.
Cliquez sur le menu
à côté du nom de l'objet, puis sélectionnez Voir les détails de l'objet. La boîte de dialogue Détails de l'objet s'affiche.L'URL pour accéder au fichier de modèle est affichée dans le champ Chemin de l'URL (URI). Copiez l'URL à utiliser à l'étape suivante lorsque vous enregistrez le modèle personnalisé.
Important
Vous pourriez voir un message d'avertissement indiquant que l'URL courante dans le champ Chemin de l'URL (URI) est obsolète, avec une nouvelle URL spécifiée dans le message d'avertissement. Si ce message d'avertissement s'affiche, utilisez plutôt la nouvelle URL dans le message d'avertissement pour enregistrer le modèle personnalisé.
Enregistrer le modèle personnalisé
Utilisez l'opération d'enregistrement pour enregistrer le modèle personnalisé. Dans l'exemple suivant, le modèle personnalisé chargé dans le seau de stockage d'objets est le modèle huggingface/sentence-transformers/all-MiniLM-L12-v2
. Les valeurs spécifiées dans model_config
pour cet exemple proviennent du fichier de configuration du modèle. Assurez-vous d'utiliser les valeurs de configuration de modèle applicables pour le modèle personnalisé que vous enregistrez.
Spécifiez l'URL du stockage d'objets dans la section actions
. Il s'agit d'une recherche OCI avec l'API OpenSearch ajoutée pour prendre en charge le scénario BYOM.
POST /_plugins/_ml/models/_register
{
"model_group_id": "<Model_Group_ID>",
"name": "sentence-transformers/all-MiniLM-L12-v2",
"version": "1.0.1",
"description": "This is a sentence-transformers model: It maps sentences & paragraphs to a 384 dimensional dense vector space and can be used for tasks like clustering or semantic search.",
"model_task_type": "TEXT_EMBEDDING",
"model_format": "TORCH_SCRIPT",
"model_content_size_in_bytes": 134568911,
"model_content_hash_value": "f8012a4e6b5da1f556221a12160d080157039f077ab85a5f6b467a47247aad49",
"model_config": {
"model_type": "bert",
"embedding_dimension": 384,
"framework_type": "sentence_transformers",
"all_config": "{\"_name_or_path\":\"microsoft/MiniLM-L12-H384-uncased\",\"attention_probs_dropout_prob\":0.1,\"gradient_checkpointing\":false,\"hidden_act\":\"gelu\",\"hidden_dropout_prob\":0.1,\"hidden_size\":384,\"initializer_range\":0.02,\"intermediate_size\":1536,\"layer_norm_eps\":1e-12,\"max_position_embeddings\":512,\"model_type\":\"bert\",\"num_attention_heads\":12,\"num_hidden_layers\":12,\"pad_token_id\":0,\"position_embedding_type\":\"absolute\",\"transformers_version\":\"4.8.2\",\"type_vocab_size\":2,\"use_cache\":true,\"vocab_size\":30522}"
},
"url_connector": {
"protocol": "oci_sigv1",
"parameters": {
"auth_type": "resource_principal"
},
"actions": [
{
"method": "GET",
"action_type": "DOWNLOAD",
"url": "<Object_Storage_URL_Path>"
}
]
}
}
https://<tenancy_name>.objectstorage.us-ashburn-1.oraclecloud.com/n/<tenancy_name>/b/<bucket_name>/o/sentence-transformers_all-distilroberta-v1-1.0.1-torch_script.zip
Notez la valeur task_id
retourné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": "<task_ID>
",
"status": "CREATED"
}
Effectuer le suivi de la tâche d'enregistrement et obtenir l'ID modèle
Pour vérifier le statut de l'opération d'enregistrement, utiliseztask_id
avec l'opération Obtenir des API de tâches, comme illustré dans l'exemple suivant :
GET /_plugins/_ml/tasks/<task_ID>
Une fois l'opération d'enregistrement terminée, la valeur status
dans la réponse à l'opération Get est COMPLETED
, comme illustré dans l'exemple suivant :
{
"model_id": "<embedding_model_ID>",
"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
retournée dans la réponse à utiliser lors du déploiement du modèle.
3 : Déployer le modèle
Une fois l'opération d'enregistrement terminée pour le modèle, vous pouvez déployer le modèle dans la grappe à 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 illustré dans l'exemple suivant :
POST /_plugins/_ml/models/<embedding_model_ID>/_deploy
Notez la valeur task_id
retourné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": "<task_ID>
",
"task_type": "DEPLOY_MODEL",
"status": "CREATED"
}
pour vérifier le statut de l'opération d'enregistrement, utilisez task_id
avec l'opération Obtenir des API de tâches, comme illustré dans l'exemple suivant :
GET /_plugins/_ml/tasks/<task_ID>
Une fois l'opération de déploiement terminée, la valeur status
dans la réponse à l'opération Get est COMPLETED
.
4 : Tester le modèle
Une fois le modèle déployé, vous pouvez le tester à l'aide du point d'extrémité text_embedding
, comme illustré dans l'exemple suivant :
POST /_plugins/_ml/_predict/text_embedding/<embedding_model_ID>
{
"text_docs":["hellow world", "new message", "this too"]
}
Vous pouvez également utiliser le point d'extrémité _predict
, comme illustré dans l'exemple suivant :
POST /_plugins/_ml/models/<embedding_model_ID>/_predict
{
"parameters":{
"passage_text": "Testing the cohere embedding model"
}
}