Modelli personalizzati

Puoi caricare modelli personalizzati in un cluster con il processo BYOM (Bring Your Own Model).

Per utilizzare i modelli personalizzati, è necessario un cluster configurato per utilizzare OpenSearch versione 2.11. Per impostazione predefinita, i nuovi cluster utilizzano la versione 2.11. Per creare un cluster, vedere Creazione di un cluster OpenSearch.

Per i cluster esistenti configurati per la versione 2.3, è possibile eseguire un upgrade in linea alla versione 2.11. Per ulteriori informazioni, vedere OpenSearch Cluster Software Upgrades.

Per aggiornare i cluster esistenti configurati per la versione 1.2.3 alla 2.11, utilizzare il processo di aggiornamento descritto in OpenSearch Aggiornamenti software del cluster.

Il processo BYOM per importare i modelli personalizzati include i passi riportati di seguito.

  1. Completare i prerequisiti riportati di seguito.
    • Configurare il criterio IAM necessario.
    • Configurare le impostazioni cluster consigliate.
    • Caricare un modello personalizzato in un bucket di storage degli oggetti.
  2. Registrazione del modello.
  3. Distribuire il modello.
  4. (Opzionale) Provare il modello.

1: Requisiti indispensabili

Criterio IAM

Devi creare un criterio per concedere a OCI Search l'accesso OpenSearch al bucket di storage degli oggetti in cui carichi il modello personalizzato. L'esempio di criteri riportato di seguito include le autorizzazioni necessarie.

ALLOW ANY-USER to manage object-family in tenancy WHERE ALL {request.principal.type='opensearchcluster', request.resource.compartment.id='<cluster_compartment_id>'}

Se non si conoscono i criteri, vedere Guida introduttiva ai criteri e Criteri comuni.

Aree per i connettori AI generativa

Per utilizzare OCI Generative AI, la tenancy deve essere sottoscritta all'area Midwest degli Stati Uniti (Chicago) o all'area centrale della Germania (Francoforte). Non è necessario creare il cluster in nessuna di queste aree, assicurarsi solo che la tenancy sia sottoscritta a una delle aree.

Configura impostazioni cluster

Utilizzare l'operazione settings delle API cluster per configurare le impostazioni cluster consigliate per 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
      }
    }
  }
}

Carica modello nel bucket di storage degli oggetti

Per rendere disponibile un modello personalizzato per la registrazione a un cluster, è necessario caricare il modello in un bucket di storage degli oggetti nella tenancy. Se non disponi di un bucket di storage degli oggetti esistente, devi creare il bucket. Per un'esercitazione sulla creazione di un bucket, vedere Creazione di un bucket.

Successivamente, è necessario caricare il modello personalizzato nel bucket. Per un'esercitazione che descrive come caricare i file in un bucket, vedere Caricamento di file in un bucket. Ai fini di questa procedura guidata, è possibile scaricare qualsiasi modello viso di abbraccio supportato da caricare.

2: Registrazione del modello

Dopo aver caricato un modello personalizzato in un bucket di storage degli oggetti, devi ottenere l'URL per accedere al file caricato e passare l'URL nell'operazione di registrazione dalle API del modello. È quindi possibile utilizzare l'operazione Ottieni delle API dei task per tenere traccia del completamento dell'operazione di registrazione e ottenere l'ID modello da utilizzare quando si distribuisce il modello.

Per ottenere l'URL del file modello caricato

  1. Aprire il menu di navigazione e fare clic su Memorizzazione. In Storage degli oggetti e storage di archivio, fare clic su Bucket.

  2. Fare clic sul bucket che contiene il modello caricato. Viene visualizzata la pagina Dettagli del bucket.

  3. Fare clic sul menu Azioni (tre punti) accanto al nome dell'oggetto, quindi selezionare Visualizza dettagli oggetto. Viene visualizzata la finestra di dialogo Dettagli oggetto.

  4. L'URL per accedere al file modello viene visualizzato nel campo Percorso URL (URI). Copiare l'URL da utilizzare nel passo successivo quando si registra il modello personalizzato.

    Importante

    È possibile che venga visualizzato un messaggio di avvertenza che indica che l'URL corrente nel campo Percorso URL (URI) non è più valido, con un nuovo URL specificato nel messaggio di avvertenza. Se viene visualizzato questo messaggio di avvertenza, utilizzare il nuovo URL nel messaggio di avvertenza per registrare il modello personalizzato.

Registra il modello personalizzato

Utilizzare l'operazione di registrazione per registrare il modello personalizzato. Nell'esempio seguente, il modello personalizzato caricato nel bucket di storage degli oggetti è il modello huggingface/sentence-transformers/all-MiniLM-L12-v2. I valori specificati in model_config per questo esempio provengono dal file di configurazione del modello. Assicurarsi di utilizzare i valori di configurazione del modello applicabili per il modello personalizzato che si sta registrando.

Specificare l'URL di storage degli oggetti nella sezione actions. Si tratta di una ricerca OCI con l'API OpenSearch aggiunta per supportare lo scenario 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>"
            }
        ]
    }
}
Sostituire <Object_Storage_URL_Path> con un URL di storage degli oggetti valido, ad esempio:
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

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": "<task_ID>",
  "status": "CREATED"
}

Tenere traccia del task di registrazione e ottenere l'ID modello

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/<task_ID>

Una volta completata l'operazione di registrazione, il valore status nella risposta all'operazione Get è COMPLETED, come mostrato nell'esempio seguente:

{
  "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
}

Prendere nota del valore model_id restituito nella risposta da utilizzare quando si distribuisce il modello.

3: Distribuisci 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/<embedding_model_ID>/_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": "<task_ID>",
  "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/<task_ID>

Una volta completata l'operazione di distribuzione, il valore status nella risposta all'operazione Get è COMPLETED.

4: Prova il modello

Una volta completata la distribuzione del modello, è possibile eseguire il test del modello utilizzando l'endpoint text_embedding, come mostrato nell'esempio riportato di seguito.

POST /_plugins/_ml/_predict/text_embedding/<embedding_model_ID>
{
  "text_docs":["hellow world", "new message", "this too"]
}

In alternativa, è possibile utilizzare l'endpoint _predict, come mostrato nell'esempio riportato di seguito.

POST /_plugins/_ml/models/<embedding_model_ID>/_predict
{
 "parameters":{
    "passage_text": "Testing the cohere embedding model"
}
}