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:
- 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.
- Das Modell registrieren.
- Das Modell bereitstellen.
- (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
Öffnen sie das Navigationsmenü, und klicken Sie auf Speicher. Klicken Sie unter Object Storage & Archive Storage auf Buckets.
Klicken Sie auf den Bucket, der das hochgeladene Modell enthält. Die Seite Details des Buckets wird angezeigt.
Klicken Sie neben dem Objektnamen auf das Menü
, und wählen Sie Objektdetails anzeigen aus. Das Dialogfeld Objektdetails wird angezeigt.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>"
}
]
}
}
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 Sietask_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"
}
}