Benutzerdefinierte Models

Mit dem BYOM-Prozess (Bring Your Own Model) können Sie benutzerdefinierte Modelle in ein Cluster hochladen.

Um benutzerdefinierte Modelle zu verwenden, benötigen Sie ein Cluster, das für die Verwendung von OpenSearch Version 2.11 konfiguriert ist. Standardmäßig verwenden neue Cluster Version 2.11. Informationen zum Erstellen eines Clusters finden Sie unter OpenSearch-Cluster erstellen.

Für vorhandene Cluster, die für Version 2.3 konfiguriert sind, können Sie ein Inlineupgrade auf Version 2.11 ausführen. Weitere Informationen finden Sie unter OpenSearch Clustersoftwareupgrades.

Um ein Upgrade vorhandener Cluster auszuführen, die für Version 1.2.3 auf 2.11 konfiguriert sind, verwenden Sie den unter OpenSearch Cluster-Softwareupgrades beschriebenen Upgradeprozess.

Der BYOM-Prozess zum Importieren benutzerdefinierter Modelle umfasst die folgenden Schritte:

  1. Führen Sie die folgenden Voraussetzungen aus:
    • Konfigurieren Sie die erforderliche IAM-Policy.
    • Konfigurieren Sie empfohlene Clustereinstellungen.
    • Laden Sie ein benutzerdefiniertes Modell in einen Objektspeicher-Bucket hoch.
  2. Das Modell registrieren.
  3. Das Modell bereitstellen.
  4. (Optional) Testen Sie das Modell.

1: Voraussetzungen

IAM-Policy

Sie müssen eine Policy erstellen, um OCI Search mit OpenSearch Zugriff auf den Objektspeicher-Bucket zu erteilen, in den Sie das benutzerdefinierte Modell hochladen. Das folgende Policy-Beispiel enthält die erforderlichen Berechtigungen:

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

Wenn Sie mit Policys nicht vertraut sind, finden Sie weitere Informationen unter Erste Schritte mit Policys und Allgemeine Policys.

Regionen für generative KI-Connectors

Um OCI Generative AI verwenden zu können, muss Ihr Mandant die Region "US Midwest (Chicago)" oder die Region "Germany Central (Frankfurt)" abonniert haben. Sie müssen das Cluster nicht in einer dieser Regionen erstellen. Stellen Sie einfach sicher, dass Ihr Mandant eine der Regionen abonniert hat.

Clustereinstellungen konfigurieren

Verwenden Sie den Vorgang Einstellungen der Cluster-APIs, um die empfohlenen Clustereinstellungen für die semantische Suche zu konfigurieren. Das folgende Beispiel enthält die empfohlenen Einstellungen:

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

Modell in Objektspeicher-Bucket hochladen

Um ein benutzerdefiniertes Modell für die Registrierung für ein Cluster verfügbar zu machen, müssen Sie das Modell in einen Objektspeicher-Bucket im Mandanten hochladen. Wenn kein Objektspeicher-Bucket vorhanden ist, müssen Sie den Bucket erstellen. Ein Tutorial, das Sie durch das Erstellen eines Buckets führt, finden Sie unter Bucket erstellen.

Als Nächstes müssen Sie das benutzerdefinierte Modell in den Bucket hochladen. In einem Tutorial erfahren Sie, wie Sie Dateien in einen Bucket hochladen. Informationen hierzu finden Sie unter Dateien in einen Bucket hochladen. Für diese Schritt-für-Schritt-Anleitung können Sie jedes unterstützte Umarmungsmodell herunterladen, das hochgeladen werden soll.

2: Modell registrieren

Nachdem Sie ein benutzerdefiniertes Modell in einen Object Storage-Bucket hochgeladen haben, müssen Sie die URL für den Zugriff auf die hochgeladene Datei abrufen und die URL im Registrierungsvorgang über die Modell-APIs übergeben. Anschließend können Sie den Vorgang Get der Aufgaben-APIs verwenden, um den Abschluss des Registrierungsvorgangs zu verfolgen und die Modell-ID abzurufen, die beim Deployment des Modells verwendet werden soll.

So rufen Sie die URL der hochgeladenen Modelldatei ab

  1. Öffnen sie das Navigationsmenü, und klicken Sie auf Speicher. Klicken Sie unter Object Storage & Archive Storage auf Buckets.

  2. Klicken Sie auf den Bucket, der das hochgeladene Modell enthält. Die Seite Details des Buckets wird angezeigt.

  3. Klicken Sie neben dem Objektnamen auf das Menü Aktionen (drei Punkte), und wählen Sie Objektdetails anzeigen aus. Das Dialogfeld Objektdetails wird angezeigt.

  4. Die URL für den Zugriff auf die Modelldatei wird im Feld URL-Pfad (URI) angezeigt. Kopieren Sie die URL, die beim Registrieren des benutzerdefinierten Modells im nächsten Schritt verwendet werden soll.

    Wichtig

    Möglicherweise wird eine Warnmeldung angezeigt, die angibt, dass die aktuelle URL im Feld URL-Pfad (URI) veraltet ist, wobei in der Warnmeldung eine neue URL angegeben wird. Wenn diese Warnmeldung angezeigt wird, verwenden Sie stattdessen die neue URL in der Warnmeldung, um das benutzerdefinierte Modell zu registrieren.

Benutzerdefiniertes Modell registrieren

Verwenden Sie den Registrierungsvorgang, um das benutzerdefinierte Modell zu registrieren. Im folgenden Beispiel ist das in den Objektspeicher-Bucket hochgeladene benutzerdefinierte Modell das Modell huggingface/sentence-transformers/all-MiniLM-L12-v2. Die in diesem Beispiel in model_config angegebenen Werte stammen aus der Konfigurationsdatei des Modells. Stellen Sie sicher, dass Sie die anwendbaren Modellkonfigurationswerte für das benutzerdefinierte Modell verwenden, das Sie registrieren.

Geben Sie die Object Storage-URL im Abschnitt actions an. Dies ist eine OCI-Suche mit hinzugefügter OpenSearch-API zur Unterstützung des BYOM-Szenarios.

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>"
            }
        ]
    }
}
Ersetzen Sie <Object_Storage_URL_Path> durch eine gültige Object Storage-URL. Beispiel:
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

Notieren Sie sich die in der Antwort zurückgegebene task_id. Mit der task_id können Sie den Status des Vorgangs prüfen.

Beispiel: Von der folgenden Antwort:

{
  "task_id": "<task_ID>",
  "status": "CREATED"
}

Registrierungsaufgabe verfolgen und Modell-ID abrufen

Um den Status des Registrierungsvorgangs zu prüfen, verwenden Sie task_id mit dem Vorgang Abrufen der Aufgaben-APIs, wie im folgenden Beispiel dargestellt:
GET /_plugins/_ml/tasks/<task_ID>

Wenn der Kassenvorgang abgeschlossen ist, lautet der Wert status in der Antwort auf den Get-Vorgang COMPLETED, wie im folgenden Beispiel dargestellt:

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

Notieren Sie sich den in der Antwort zurückgegebenen Wert model_id, der beim Deployment des Modells verwendet werden soll.

3: Modell bereitstellen

Nachdem der Registrierungsvorgang für das Modell abgeschlossen ist, können Sie das Modell mit dem Deployment-Vorgang der Modell-APIs im Cluster bereitstellen und die model_id aus der Antwort des Get-Vorgangs im vorherigen Schritt übergeben, wie im folgenden Beispiel dargestellt:

POST /_plugins/_ml/models/<embedding_model_ID>/_deploy

Notieren Sie sich die in der Antwort zurückgegebene task_id. Mit der task_id können Sie den Status des Vorgangs prüfen.

Beispiel: Von der folgenden Antwort:

{
  "task_id": "<task_ID>",
  "task_type": "DEPLOY_MODEL",
  "status": "CREATED"
}

Um den Status des Registervorgangs zu prüfen, verwenden Sie task_id mit dem Vorgang Get der Aufgaben-APIs, wie im folgenden Beispiel dargestellt:

GET /_plugins/_ml/tasks/<task_ID>

Wenn der Deployment-Vorgang abgeschlossen ist, lautet der Wert status in der Antwort auf den Get-Vorgang COMPLETED.

4: Modell testen

Nachdem das Modell erfolgreich bereitgestellt wurde, können Sie das Modell mit dem Endpunkt text_embedding testen, wie im folgenden Beispiel dargestellt:

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

Alternativ können Sie den _predict-Endpunkt verwenden, wie im folgenden Beispiel dargestellt:

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