Modèles personnalisés
Vous pouvez télécharger des modèles personnalisés vers un cluster à l'aide du processus Utilisation de votre propre modèle (BYOM).
Pour utiliser des modèles personnalisés, vous avez besoin d'un cluster configuré pour utiliser OpenSearch version 2.11. Par défaut, les nouveaux clusters utilisent la version 2.11. Pour créer un cluster, reportez-vous à Création d'un cluster OpenSearch.
Pour les clusters existants configurés pour la version 2.3, vous pouvez effectuer une mise à niveau en ligne vers la version 2.11. Pour plus d'informations, reportez-vous à OpenSearch Cluster Software Upgrades.
Pour mettre à niveau des clusters existants configurés pour la version 1.2.3 vers la version 2.11, utilisez le processus de mise à niveau décrit dans OpenSearch Cluster Software Upgrades.
Le processus BYOM d'importation de modèles personnalisés comprend les étapes suivantes :
- Remplissez les conditions préalables suivantes :
- Configuration de la stratégie IAM requise.
- Configurez les paramètres de cluster recommandés.
- Téléchargez un modèle personnalisé vers un bucket Object Storage.
- Enregistrez le modèle.
- Déployez le modèle.
- (Facultatif) Testez le modèle.
1 : Prérequis
Stratégie IAM
Vous devez créer une stratégie pour accorder à OCI Search avec un accès OpenSearch au bucket Object Storage vers lequel télécharger le modèle personnalisé. L'exemple de stratégie suivant inclut les droits d'accès requis :
ALLOW ANY-USER to manage object-family in tenancy WHERE ALL {request.principal.type='opensearchcluster', request.resource.compartment.id='<cluster_compartment_id>'}
Si vous ne connaissez pas les stratégies, reportez-vous à Introduction aux stratégies et à Stratégies courantes.
Régions pour les connecteurs d'IA générative
Pour utiliser OCI Generative AI, votre location doit être abonnée à la région Midwest des Etats-Unis (Chicago) ou à la région Allemagne centrale (Francfort). Vous n'avez pas besoin de créer le cluster 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 cluster
Utilisez l'opération paramètres des API de cluster pour configurer les paramètres de cluster recommandés pour la 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
}
}
}
}
Télécharger le modèle vers le bucket Object Storage
Pour qu'un modèle personnalisé puisse être inscrit pour un cluster, vous devez télécharger le modèle vers un bucket Object Storage de la location. Si vous n'avez pas de bucket Object Storage existant, vous devez le créer. Pour obtenir un tutoriel sur la création d'un bucket, reportez-vous à Création d'un bucket.
Vous devez ensuite télécharger le modèle personnalisé vers le bucket. Pour obtenir un tutoriel expliquant comment télécharger des fichiers vers un bucket, reportez-vous à Téléchargement de fichiers vers un bucket. Aux fins de cette revue de processus, vous pouvez télécharger n'importe quel modèle de face d'étreinte pris en charge à télécharger.
2 : Enregistrer le modèle
Une fois que vous avez téléchargé un modèle personnalisé vers un bucket Object Storage, vous devez obtenir l'URL permettant d'accéder au fichier téléchargé et transmettre l'URL de l'opération d'inscription à partir des API de modèle. Vous pouvez ensuite utiliser l'opération Obtenir des API des tâches pour suivre la fin de l'opération de CdM et obtenir l'ID de modèle à utiliser lorsque vous déployez le modèle.
Pour obtenir l'URL du fichier de modèle chargé
Ouvrez le menu de navigation et cliquez sur Stockage. Sous Object Storage et Archive Storage, cliquez sur Buckets.
Cliquez sur le bucket qui contient le modèle téléchargé. La page Détails du bucket apparaît.
Cliquez sur le menu
en regard du nom de l'objet, puis sélectionnez Afficher les détails de l'objet. La boîte de dialogue Détails d'objet apparaît.L'URL permettant d'accéder au fichier de modèle est affichée dans le champ Chemin URL (URI). Copiez l'URL à utiliser à l'étape suivante lors de l'inscription du modèle personnalisé.
Important
Un message d'avertissement peut s'afficher indiquant que l'URL en cours dans le champ Chemin d'URL (URI) est en phase d'abandon, 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é.
Inscrire le modèle personnalisé
Utilisez l'opération d'inscription pour inscrire le modèle personnalisé. Dans l'exemple suivant, le modèle personnalisé téléchargé vers le bucket Object Storage 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 config du modèle. Assurez-vous que vous utilisez les valeurs de configuration de modèle applicables pour le modèle personnalisé que vous enregistrez.
Indiquez l'URL Object Storage 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
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": "<task_ID>
",
"status": "CREATED"
}
Suivre la tâche de CdM et obtenir l'ID modèle
Pour vérifier le statut de l'opération d'inscription, utiliseztask_id
avec l'opération Get des API des tâches, comme indiqué dans l'exemple suivant :
GET /_plugins/_ml/tasks/<task_ID>
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": "<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
renvoyée dans la réponse à utiliser lors du déploiement du modèle.
3 : Déployer un 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/<embedding_model_ID>/_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": "<task_ID>
",
"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/<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 de l'adresse text_embedding
, comme indiqué 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 l'adresse _predict
, comme indiqué dans l'exemple suivant :
POST /_plugins/_ml/models/<embedding_model_ID>/_predict
{
"parameters":{
"passage_text": "Testing the cohere embedding model"
}
}