Modelos personalizados
Puede cargar modelos personalizados en un cluster con el proceso Traiga su propio modelo (BYOM).
Para utilizar modelos personalizados, necesita un cluster configurado para utilizar OpenSearch versión 2.11. Por defecto, los nuevos clusters utilizan la versión 2.11. Para crear un cluster, consulte Creación de un cluster OpenSearch.
Para los clusters existentes configurados para la versión 2.3, puede realizar una actualización en línea a la versión 2.11. Para obtener más información, consulte OpenSearch Cluster Software Upgrades.
Para actualizar los clusters existentes configurados para la versión 1.2.3 a 2.11, utilice el proceso de actualización que se describe en OpenSearch Cluster Software Upgrades.
El proceso BYOM para importar modelos personalizados incluye los siguientes pasos:
- Complete los siguientes requisitos previos:
- Configure la política de IAM necesaria.
- Configure los valores de cluster recomendados.
- Cargar un modelo personalizado en un cubo de Object Storage.
- Registrar el modelo.
- Desplegar el modelo.
- (Opcional) Pruebe el modelo.
1: Requisitos
Politica de IAM
Debe crear una política para otorgar acceso a OCI Search con OpenSearch al cubo de Object Storage en el que cargue el modelo personalizado. El siguiente ejemplo de política incluye los permisos necesarios:
ALLOW ANY-USER to manage object-family in tenancy WHERE ALL {request.principal.type='opensearchcluster', request.resource.compartment.id='<cluster_compartment_id>'}
Si no está familiarizado con las políticas, consulte Introducción a las políticas y Políticas comunes.
Regiones para conectores de IA generativa
Para utilizar OCI Generative AI, su arrendamiento debe estar suscrito a la región del Medio Oeste de EE. UU. (Chicago) o a la región del Centro de Alemania (Fráncfort). No es necesario que cree el cluster en ninguna de esas regiones, solo asegúrese de que su arrendamiento esté suscrito a una de las regiones.
Configurar Valores de Cluster
Utilice la operación settings (Configuración) de las API del cluster para configurar los valores de cluster recomendados para la búsqueda semántica. El siguiente ejemplo incluye la configuración recomendada:
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
}
}
}
}
Cargar modelo en cubo de Object Storage
Para que un modelo personalizado esté disponible para registrarse en un cluster, debe cargar el modelo en un cubo de Object Storage del arrendamiento. Si no tiene un cubo de Object Storage existente, debe crear el cubo. Para ver un tutorial que le guíe por cómo crear un cubo, consulte Creación de un cubo.
A continuación, debe cargar el modelo personalizado en el cubo. Consulte Carga de archivos en un cubo para ver un tutorial que le guiará por cómo cargar archivos en un cubo. Para este tutorial, puede descargar cualquier modelo facial de abrazo soportado para cargar.
2: Registro del Modelo
Después de cargar un modelo personalizado en un cubo de Object Storage, debe obtener la URL para acceder al archivo cargado y transferir la URL en la operación registrar desde las API de modelo. A continuación, puede utilizar la operación Obtener de las API de tareas para realizar un seguimiento de la finalización de la operación de registro y obtener el ID de modelo que se utilizará al desplegar el modelo.
Para obtener la URL del archivo de modelo cargado
Abra el menú de navegación y haga clic en Storage. En Almacenamiento de objetos y de archivo, haga clic en Cubos.
Haga clic en el cubo que contiene el modelo cargado. Aparece la página Detalles del cubo.
Haga clic en el menú
situado junto al nombre del objeto y, a continuación, seleccione Ver detalles de objeto. Aparecerá el cuadro de diálogo Detalles de objeto.La URL para acceder al archivo de modelo se muestra en el campo Ruta de acceso de URL (URI). Copie la URL que desea utilizar en el siguiente paso al registrar el modelo personalizado.
Importante
Puede que aparezca un mensaje de advertencia que indique que la URL actual en el campo Ruta de acceso de URL (URI) está en desuso, con una nueva URL especificada en el mensaje de advertencia. Si ve este mensaje de advertencia, utilice la nueva URL en el mensaje de advertencia para registrar el modelo personalizado.
Registrar el modelo personalizado
Utilice la operación de registro para registrar el modelo personalizado. En el siguiente ejemplo, el modelo personalizado cargado en el cubo de Object Storage es el modelo huggingface/sentence-transformers/all-MiniLM-L12-v2
. Los valores especificados en model_config
para este ejemplo provienen del archivo de configuración del modelo. Asegúrese de que está utilizando los valores de configuración de modelo aplicables para el modelo personalizado que está registrando.
Especifique la URL de Object Storage en la sección actions
, se trata de una búsqueda de OCI con la API OpenSearch agregada para soportar el escenario 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
Anote el valor task_id
devuelto en la respuesta, puede utilizar task_id
para comprobar el estado de la operación.
Por ejemplo, de la siguiente respuesta:
{
"task_id": "<task_ID>
",
"status": "CREATED"
}
Realizar un seguimiento de la tarea de registro y obtener el ID de modelo
Para comprobar el estado de la operación de registro, utilicetask_id
con la operación Get de las API de tareas, como se muestra en el siguiente ejemplo:
GET /_plugins/_ml/tasks/<task_ID>
Cuando se completa la operación de registro, el valor status
en la respuesta a la operación Get es COMPLETED
, como se muestra en el siguiente ejemplo:
{
"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
}
Anote el valor model_id
devuelto en la respuesta para utilizarlo al desplegar el modelo.
3: Despliegue del Modelo
Una vez finalizada la operación de registro para el modelo, puede desplegar el modelo en el cluster mediante la operación desplegar de las API de modelo, transfiriendo model_id
de la respuesta de la operación Get del paso anterior, como se muestra en el siguiente ejemplo:
POST /_plugins/_ml/models/<embedding_model_ID>/_deploy
Anote el valor task_id
devuelto en la respuesta, puede utilizar task_id
para comprobar el estado de la operación.
Por ejemplo, de la siguiente respuesta:
{
"task_id": "<task_ID>
",
"task_type": "DEPLOY_MODEL",
"status": "CREATED"
}
Para comprobar el estado de la operación de registro, utilice task_id
con la operación Get de las API de tareas, como se muestra en el siguiente ejemplo:
GET /_plugins/_ml/tasks/<task_ID>
Cuando se completa la operación de despliegue, el valor status
de la respuesta a la operación Get es COMPLETED
.
4: Prueba del Modelo
Después de que el modelo se despliegue correctamente, puede probar el modelo mediante el punto final text_embedding
, como se muestra en el siguiente ejemplo:
POST /_plugins/_ml/_predict/text_embedding/<embedding_model_ID>
{
"text_docs":["hellow world", "new message", "this too"]
}
También puede utilizar el punto final _predict
, como se muestra en el siguiente ejemplo:
POST /_plugins/_ml/models/<embedding_model_ID>/_predict
{
"parameters":{
"passage_text": "Testing the cohere embedding model"
}
}