Modelos Personalizados
Você pode fazer upload de modelos personalizados para um cluster com o processo BYOM (Bring Your Own Model).
Para usar modelos personalizados, você precisa de um cluster configurado para usar o OpenSearch versão 2.11. Por padrão, os novos clusters usam a versão 2.11. Para criar um cluster, consulte Criando um Cluster OpenSearch.
Para clusters existentes configurados para a versão 2.3, você pode executar um upgrade em linha para a versão 2.11. Para obter mais informações, consulte OpenSearch Upgrades de Software do Cluster.
Para fazer upgrade de clusters existentes configurados para a versão 1.2.3 para 2.11, use o processo de upgrade descrito em OpenSearch Upgrades de Software do Cluster.
O processo BYOM para importar modelos personalizados inclui as seguintes etapas:
- Você deve atender aos seguintes pré-requisitos:
- Configure a política do serviço IAM necessária.
- Configure as definições de cluster recomendadas.
- Fazer upload de um modelo personalizado para um bucket do Object Storage.
- Registre o modelo.
- Implante o modelo.
- (Opcional) Teste o modelo.
1: Pré-requisitos
Política do Serviço IAM
Você precisa criar uma política para conceder ao OCI Search acesso OpenSearch ao bucket do Object Storage para o qual você faz upload do modelo personalizado. O exemplo de política a seguir inclui as permissões necessárias:
ALLOW ANY-USER to manage object-family in tenancy WHERE ALL {request.principal.type='opensearchcluster', request.resource.compartment.id='<cluster_compartment_id>'}
Se você não conhece as políticas, consulte Conceitos Básicos de Políticas e Políticas Comuns.
Regiões para Conectores de IA Generativa
Para usar o OCI Generative AI, sua tenancy deve estar inscrita na região Centro-Oeste dos EUA (Chicago) ou na região Central da Alemanha (Frankfurt). Você não precisa criar o cluster em nenhuma dessas regiões, apenas certifique-se de que sua tenancy esteja inscrita em uma das regiões.
Configurar Definições de Cluster
Use a operação configurações das APIs do Cluster para configurar as definições de cluster recomendadas para 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
}
}
}
}
Fazer Upload do Modelo para o Bucket do Object Storage
Para disponibilizar um modelo personalizado para se registrar em um cluster, você precisa fazer upload do modelo para um bucket do Object Storage na tenancy. Se você não tiver um bucket do Object Storage existente, precisará criar o bucket. Para obter um tutorial que o orienta sobre como criar um bucket, consulte Criando um Bucket.
Em seguida, você precisa fazer upload do modelo personalizado para o bucket. Consulte Fazendo Upload de Arquivos para um Bucket para obter um tutorial que o orienta sobre como fazer upload de arquivos para um bucket. Para os fins deste passo a passo, você pode fazer download de qualquer modelo de rosto de abraço suportado para upload.
2: Registrar o Modelo
Após fazer upload de um modelo personalizado para um bucket do serviço Object Storage, você precisará obter o URL para acessar o arquivo submetido a upload e informar o URL na operação de registro das APIs do Modelo. Em seguida, você pode usar a operação Obter das APIs de Tarefas para rastrear a conclusão da operação de registro e obter o ID do modelo a ser usado ao implantar o modelo.
Para obter o URL do arquivo de modelo submetido a upload
Abra o menu de navegação e clique em Armazenamento. Em Object Storage e Archive Storage, clique em Buckets.
Clique no bucket que contém o modelo submetido a upload. A página Detalhes do bucket é exibida.
Clique no menu
ao lado do nome do objeto e selecione Exibir Detalhes do Objeto. A caixa Detalhes do Objeto é exibida.O URL para acessar o arquivo de modelo é exibido no campo Caminho do URL (URI). Copie o URL a ser usado na próxima etapa ao registrar o modelo personalizado.
Importante
Você poderá ver uma mensagem de advertência indicando que o URL atual no campo Caminho do URL (URI) está obsoleto, com um novo URL especificado na mensagem de advertência. Se você vir essa mensagem de aviso, use o novo URL na mensagem de aviso para registrar o modelo personalizado.
Registrar o modelo personalizado
Use a operação de registro para registrar o modelo personalizado. No exemplo a seguir, o modelo personalizado submetido a upload para o bucket do Object Storage é o modelo huggingface/sentence-transformers/all-MiniLM-L12-v2
. Os valores especificados no model_config
para este exemplo são do arquivo de configuração do modelo. Certifique-se de usar os valores de configuração de modelo aplicáveis para o modelo personalizado que você está registrando.
Especifique o URL do serviço Object Storage na seção actions
. Trata-se de uma Pesquisa do OCI com a API OpenSearch adicionada para suportar o cenário 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 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": "<task_ID>
",
"status": "CREATED"
}
Rastrear a tarefa de registro e obter o ID do modelo
Para verificar o status da operação de registro, use otask_id
com a operação Get das APIs de Tarefas, conforme mostrado no seguinte exemplo:
GET /_plugins/_ml/tasks/<task_ID>
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": "<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 o valor model_id
retornado na resposta a ser usada quando você implantar o modelo.
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/<embedding_model_ID>/_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": "<task_ID>
",
"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/<task_ID>
Quando a operação de implantação estiver concluída, o valor status
na resposta à operação Obter será COMPLETED
.
4: Testar o Modelo
Depois que o modelo for implantado com sucesso, você poderá testá-lo usando o ponto final text_embedding
, conforme mostrado no seguinte exemplo:
POST /_plugins/_ml/_predict/text_embedding/<embedding_model_ID>
{
"text_docs":["hellow world", "new message", "this too"]
}
Como alternativa, você pode usar o ponto final _predict
, conforme mostrado no seguinte exemplo:
POST /_plugins/_ml/models/<embedding_model_ID>/_predict
{
"parameters":{
"passage_text": "Testing the cohere embedding model"
}
}