Utilizzo di un modello pre-addestrato OpenSearch
OCI Search con OpenSearch fornisce supporto integrato per i modelli pre-addestrati OpenSearch.
In questo argomento viene descritto come registrare e distribuire qualsiasi modello di trasformatore di frasi pre-addestrato in un cluster specificando solo il nome del modello. Vedere Modelli pre-addestrati per l'elenco dei modelli approvati. Per una procedura end-to-end su come utilizzare un modello pre-addestrato OpenSearch per la ricerca semantica in OCI Search con OpenSearch, consulta la guida di Semantic Search.
Requisiti indispensabili
Prima di iniziare, è necessario effettuare le operazioni riportate di seguito.
- Selezionare uno dei modelli pre-addestrati supportati da OCI Search con OpenSearch
- Verificare che il cluster OpenSearch sia versione 2.11 o successiva.
- Aggiornare le impostazioni del cluster per eseguire la ricerca semantica. L'esempio seguente include le impostazioni consigliate:
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 } } } }
Passo 1: registrare il gruppo di modelli
I gruppi di modelli consentono di gestire l'accesso a modelli specifici. La registrazione di un gruppo di modelli è facoltativa. Tuttavia, se non si registra un gruppo di modelli, ML Commons crea un nuovo gruppo di modelli per l'utente, pertanto è consigliabile registrarlo.
Registrare un gruppo di modelli utilizzando l'operazione di registrazione nelle API del gruppo di modelli, come mostrato nell'esempio riportato di seguito.
POST /_plugins/_ml/model_groups/_register
{
"name": "new_model_group",
"description": "A model group for local models"
}
Prendere nota del model_group_id
restituito nella risposta:
{
"model_group_id": "<modelgroupID>",
"status": "CREATED"
}
Passo 2: Registra il modello
model_group_id
: se si è completato il passo 1, questo è il valore di model_group_id per la richiesta _register.name
: il nome del modello per il modello preaddestrato che si desidera utilizzare.version
: il numero di versione del modello pre-addestrato che si desidera utilizzare.model_format
: il formato del modello,TORCH_SCRIPT
oONNX
.
Registrare il modello utilizzando l'operazione di registrazione dalle API modello, come mostrato nell'esempio riportato di seguito.
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"
}
Prendere nota del task_id
restituito nella risposta, è possibile utilizzare il task_id
per controllare lo stato dell'operazione.
Ad esempio, dalla risposta seguente:
{
"task_id": "TuD6Zo0Bb0cPUYbz3Moz",
"status": "CREATED"
}
per controllare lo stato dell'operazione di registrazione, utilizzare task_id
con l'operazione Recupera delle API task, come mostrato nell'esempio riportato di seguito.
GET /_plugins/_ml/tasks/TuD6Zo0Bb0cPUYbz3Moz
Una volta completata l'operazione di registrazione, il valore status
nella risposta all'operazione Get è COMPLETED
, come mostrato nell'esempio seguente:
{
"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
}
Prendere nota del valore model_id
restituito nella risposta da utilizzare quando si distribuisce il modello.
Passo 3: distribuzione del modello
Una volta completata l'operazione di registrazione per il modello, è possibile distribuire il modello nel cluster utilizzando l'operazione deploy delle API del modello, passando il valore model_id
dalla risposta dell'operazione Get nel passo precedente, come mostrato nell'esempio seguente:
POST /_plugins/_ml/models/cleMb4kBJ1eYAeTMFFg4/_deploy
Prendere nota del task_id
restituito nella risposta, è possibile utilizzare il task_id
per controllare lo stato dell'operazione.
Ad esempio, dalla risposta seguente:
{
"task_id": "T-D7Zo0Bb0cPUYbz-cod",
"task_type": "DEPLOY_MODEL",
"status": "CREATED"
}
per controllare lo stato dell'operazione di registrazione, utilizzare task_id
con l'operazione Recupera delle API dei task, come mostrato nell'esempio riportato di seguito.
GET /_plugins/_ml/tasks/T-D7Zo0Bb0cPUYbz-cod
Al termine dell'operazione di distribuzione, il valore status
nella risposta all'operazione Get è COMPLETED
, come mostrato nell'esempio riportato di seguito.
{
"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
}
Passo 4: Test del modello
Utilizzare l'API Prevedi per eseguire il test del modello, come mostrato nell'esempio riportato di seguito per un modello di incorporamento testo.
POST /_plugins/_ml/_predict/text_embedding/<your_embedding_model_ID>
{
"text_docs":[ "today is sunny"],
"return_number": true,
"target_response": ["sentence_embedding"]
}
La risposta contiene incorporamenti di testo per la frase fornita, come mostrato nel seguente esempio di risposta:
"inference_results" : [
{
"output" : [
{
"name" : "sentence_embedding",
"data_type" : "FLOAT32",
"shape" : [
768
],
"data" : [
0.25517133,
-0.28009856,
0.48519906,
...
]
}
]
}
]
}