Uso de un modelo previamente entrenado OpenSearch

OCI Search con OpenSearch proporciona soporte incorporado para modelos preentrenados OpenSearch.

En este tema se describe cómo registrar y desplegar cualquiera de los modelos de transformador de instrucciones de abrazo entrenados previamente en un cluster especificando solo el nombre del modelo. Consulte Modelos previamente entrenados para obtener la lista de modelos aprobados. Para obtener un procedimiento integral sobre cómo utilizar un modelo entrenado previamente OpenSearch para la búsqueda semántica en OCI Search con OpenSearch, consulte Tutorial de búsqueda semántica.

Requisitos

Antes de comenzar, debe hacer lo siguiente:

  • Seleccione uno de los modelos previamente entrenados soportados por OCI Search con OpenSearch

  • Confirme que el cluster OpenSearch tenga la versión 2.11 o posterior.

  • Actualice la configuración del cluster para realizar una 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
          }
        }
      }
    }

Paso 1: Registrar el grupo de modelos

Los grupos de modelos permiten gestionar el acceso a modelos específicos. El registro de un grupo de modelos es opcional, pero si no registra un grupo de modelos, ML Commons crea un nuevo grupo de modelos para usted, por lo que le recomendamos que registre el grupo de modelos.

Registre un grupo de modelos mediante la operación register en las API de grupo de modelos, como se muestra en el siguiente ejemplo:

POST /_plugins/_ml/model_groups/_register
{
  "name": "new_model_group",
  "description": "A model group for local models"
}

Anote el valor model_group_id devuelto en la respuesta:

{
  "model_group_id": "<modelgroupID>",
  "status": "CREATED"
}

Paso 2: Registrar el modelo

Para registrar un modelo previamente entrenado, necesita lo siguiente:
  • model_group_id: si ha completado el paso 1, este es el valor de model_group_id para la solicitud _register.
  • name: nombre del modelo para el modelo previamente entrenado que desea utilizar.
  • version: número de versión del modelo previamente entrenado que desea utilizar.
  • model_format: formato del modelo, ya sea TORCH_SCRIPT o ONNX.

Registre el modelo mediante la operación register desde las API de modelo, como se muestra en el siguiente ejemplo:

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

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

Para comprobar el estado de la operación de registro, utilice task_id con la operación Get de las API de tarea, como se muestra en el siguiente ejemplo:

GET /_plugins/_ml/tasks/TuD6Zo0Bb0cPUYbz3Moz

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": "iDf6Zo0BkIugivXi3E7z",
  "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.

Paso 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/cleMb4kBJ1eYAeTMFFg4/_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": "T-D7Zo0Bb0cPUYbz-cod",
  "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/T-D7Zo0Bb0cPUYbz-cod

Cuando se completa la operación de despliegue, el valor status en la respuesta a la operación Get es COMPLETED, como se muestra en el siguiente ejemplo:

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

Paso 4: Probar el modelo

Utilice la API de Predict para probar el modelo, como se muestra en el siguiente ejemplo para un modelo de embebido de texto:

POST /_plugins/_ml/_predict/text_embedding/<your_embedding_model_ID>
{
  "text_docs":[ "today is sunny"],
  "return_number": true,
  "target_response": ["sentence_embedding"]
}

La respuesta contiene incrustaciones de texto para la frase proporcionada, como se muestra en el siguiente ejemplo de respuesta:

  "inference_results" : [
    {
      "output" : [
        {
          "name" : "sentence_embedding",
          "data_type" : "FLOAT32",
          "shape" : [
            768
          ],
          "data" : [
            0.25517133,
            -0.28009856,
            0.48519906,
            ...
          ]
        }
      ]
    }
  ]
}