Usando um Modelo Pré-treinado OpenSearch

O OCI Search com OpenSearch fornece suporte integrado para modelos pré-treinados do OpenSearch.

Este tópico descreve como registrar e implantar qualquer um dos modelos de transformador de frase de abraço pré-treinados em um cluster especificando apenas o nome do modelo. Consulte Modelos Pré-treinados para obter a lista de modelos aprovados. Para obter um procedimento completo sobre como usar um modelo pré-treinado OpenSearch para pesquisa semântica na Pesquisa do OCI com OpenSearch, consulte Passo a Passo da Pesquisa Semântica.

Pré-requisitos

Antes de começar, você precisa fazer o seguinte:

  • Selecione um dos modelos pré-treinados suportados pelo OCI Search com o OpenSearch
  • Confirme se o cluster do OpenSearch é da versão 2.11 ou mais recente.
  • Atualize as definições do cluster para executar a pesquisa semântica. O exemplo a seguir inclui as configurações recomendadas:
    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
          }
        }
      }
    }

Etapa 1: Registrar o Grupo de Modelos

Os grupos de modelos permitem que você gerencie o acesso a modelos específicos. O registro de um grupo de modelos é opcional. No entanto, se você não registrar um grupo de modelos, o ML Commons criará registros de um novo grupo de modelos para você. Por isso, recomendamos que você registre o grupo de modelos.

Registre um grupo de modelos usando a operação registrar nas APIs do Grupo de Modelos, conforme mostrado no seguinte exemplo:

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

Anote o model_group_id retornado na resposta:

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

Etapa 2: Registrar o Modelo

Para registrar um modelo pré-treinado, você precisa do seguinte:
  • model_group_id: Se você concluiu a Etapa 1, este é o valor de model_group_id para a solicitação _register.
  • name: O nome do modelo do modelo pré-treinado que você deseja usar.
  • version: O número da versão do modelo pré-treinado que você deseja usar.
  • model_format: O formato do modelo, TORCH_SCRIPT ou ONNX.

Registre o modelo usando a operação registrar nas APIs de Modelo, conforme mostrado no seguinte exemplo:

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 o task_id retornado na resposta. Você pode usar o task_id para verificar o status da operação.

Por exemplo, a partir da seguinte resposta:

{
  "task_id": "TuD6Zo0Bb0cPUYbz3Moz",
  "status": "CREATED"
}

para verificar o status da operação de registro, use task_id com a operação Obter das APIs da Tarefa, conforme mostrado no seguinte exemplo:

GET /_plugins/_ml/tasks/TuD6Zo0Bb0cPUYbz3Moz

Quando a operação de registro estiver concluída, o valor status na resposta à operação Obter será COMPLETED, conforme mostrado o seguinte exemplo:

{
  "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 o valor model_id retornado na resposta a ser usada quando você implantar o modelo.

Etapa 3: Implantar o Modelo

Depois que a operação de registro for concluída para o modelo, você poderá implantar o modelo no cluster usando a operação de implantação das APIs de Modelo, informando o model_id da resposta da operação Obter na etapa anterior, conforme mostrado no seguinte exemplo:

POST /_plugins/_ml/models/cleMb4kBJ1eYAeTMFFg4/_deploy

Anote o task_id retornado na resposta. Você pode usar o task_id para verificar o status da operação.

Por exemplo, a partir da seguinte resposta:

{
  "task_id": "T-D7Zo0Bb0cPUYbz-cod",
  "task_type": "DEPLOY_MODEL",
  "status": "CREATED"
}

para verificar o status da operação de registro, use o task_id com a operação Get das APIs de Tarefas, conforme mostrado no seguinte exemplo:

GET /_plugins/_ml/tasks/T-D7Zo0Bb0cPUYbz-cod

Quando a operação de implantação estiver concluída, o valor status na resposta à operação Obter será COMPLETED, conforme mostrado o seguinte exemplo:

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

Etapa 4: Testar o Modelo

Use a API de Previsão para testar o modelo, conforme mostrado no exemplo a seguir para um modelo de incorporação de texto:

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

A resposta contém incorporações de texto para a instrução fornecida, conforme mostrado no exemplo de resposta a seguir:

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