Implantar modelos do Hub de Detecção Facial para Azure Machine Learning pontos de extremidade online para inferência em tempo real

Microsoft em parceria com o Hugging Face para trazer modelos de software livre do Hugging Face Hub para Azure Machine Learning. O Hugging Face é a criadora da Transformers, uma biblioteca muito popular para a criação de grandes modelos de linguagem. O hub de modelos do Hugging Face tem milhares de modelos de código aberto. Ao integrar com Azure Machine Learning, você pode implantar modelos de software livre de sua escolha para proteger e dimensionar a infraestrutura de inferência em Azure. Você pode pesquisar entre milhares de modelos de transformadores no catálogo de modelos do Azure Machine Learning e implantar modelos no ponto de extremidade online gerenciado com facilidade por meio do assistente guiado. Quando você implanta o ponto de extremidade online gerenciado, ele oferece uma API REST segura para pontuar seu modelo em tempo real.

Note

Os modelos da Hugging Face estão sujeitos a termos de licença de terceiros disponíveis na página de detalhes de modelos dessa empresa. É sua responsabilidade cumprir os termos de licença do modelo.

Benefícios do uso de pontos de extremidade online para inferência em tempo real

Os pontos de extremidade online gerenciados no Azure Machine Learning ajudam você a implantar modelos em computadores com CPU e GPU avançados no Azure de maneira pronta para uso. Os pontos de extremidade online gerenciados cuidam de servir, dimensionar, proteger e monitorar seus modelos, para que você não precise configurar e gerenciar a infraestrutura subjacente. As máquinas virtuais são provisionadas para você quando você implanta modelos. Você pode ter vários ambientes e dividir ou espelhar o tráfego entre esses ambientes. O tráfego espelho ajuda você a testar novas versões de modelos no tráfego de produção sem liberá-las para ambientes de produção. Dividir o tráfego permite aumentar gradualmente o tráfego de produção para novas versões de modelo enquanto observa o desempenho. O Dimensionamento automático permite que você aumente ou diminua dinamicamente os recursos com base nas cargas de trabalho. Você pode configurar o dimensionamento com base em métricas de utilização, um agendamento específico ou uma combinação de ambos. Um exemplo de dimensionamento baseado em métricas de utilização é adicionar nós se a utilização da CPU for maior a 70%. Um exemplo de dimensionamento baseado em agendamento é adicionar nós com base no horário comercial de pico.

Implantar modelos de hub de detecção facial usando o Studio

Para encontrar um modelo a ser implantado, abra o catálogo de modelos no Estúdio do Azure Machine Learning. Selecione Todos os Filtros e, em seguida, selecione HuggingFace na seção Filtrar por coleções . Selecione o bloco do modelo para abrir a página do modelo.

Implantar o modelo

Escolha a opção de implantação em tempo real para abrir a caixa de diálogo de implantação rápida. Especifique as seguintes opções:

  • Selecione o modelo para GPU ou CPU. Os tipos de instância de CPU são bons para testes e os tipos de instância de GPU oferecem melhor desempenho na produção. Modelos grandes não se encaixam em um tipo de instância de CPU.
  • Selecione o tipo de instância. Essa lista de instâncias é filtrada para mostrar apenas as que podem implantar o modelo sem ficar sem memória.
  • Selecione o número de instâncias. Uma instância é suficiente para teste, mas considere duas ou mais instâncias para produção.
  • Opcionalmente, especifique um ponto de extremidade e um nome de implantação.
  • Selecione Implantar. Em seguida, você é direcionado para a página do endpoint, o que pode levar alguns segundos. A implantação leva vários minutos para ser concluída com base no tamanho do modelo e no tipo de instância.

Observação: se você quiser fazer a implantação em um ponto de extremidade existente, selecione More options na caixa de diálogo de implantação rápida e use o assistente de implantação completo.

Modelos restritos

Modelos fechados são modelos que exigem aprovação do autor do modelo antes do uso. Para usar estes modelos:

  1. Tenha um token com o rosto abraçado ou refinado.
  2. Solicite acesso na página do modelo no Hugging Face.
  3. Crie uma conexão de chave personalizada chamada HuggingFaceTokenConnection com a chave HF_TOKEN e o valor sendo seu token do Hugging Face marcado como segredo.
  4. Criar um ponto de extremidade com enforce_access_to_default_secret_stores definido como enabled.
  5. Implante o modelo usando o ponto de extremidade recém-criado.

Testar o modelo implantado

Quando a implantação for concluída, você poderá encontrar o ponto de extremidade REST para o modelo na página de pontos de extremidade . Use esse ponto de extremidade para pontuar o modelo. Você encontra opções para adicionar mais implantações, gerenciar o tráfego e dimensionar o hub de pontos de extremidade. Use a guia Teste na página do endpoint para testar o modelo com entradas de exemplo. As entradas de amostra estão disponíveis na página do modelo. Você pode encontrar o formato de entrada, os parâmetros e as entradas de exemplo na documentação da API de inferência do Hugging Face Hub.

Implantar modelos de hub do HuggingFace usando Python SDK

Configure o SDK do Python.

Encontre o modelo a ser implantado

Navegue pelo catálogo de modelos no Estúdio do Azure Machine Learning e encontre o modelo que você deseja implantar. Copie o nome do modelo que você deseja implantar. Importar as bibliotecas necessárias. Os modelos mostrados no catálogo estão listados a partir do registro HuggingFace. Crie o model_id usando o nome do modelo que você copiou do catálogo de modelos e do registro HuggingFace. Neste exemplo, você implanta o modelo bert-base-uncased com a versão mais recente.

from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
)
from azure.identity import DefaultAzureCredential

ml_client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="<your-subscription-id>",
    resource_group_name="<your-resource-group>",
    workspace_name="<your-workspace-name>"
)


registry_name = "HuggingFace"
model_name = "bert-base-uncased"
model_id = f"azureml://registries/{registry_name}/models/{model_name}/labels/latest"

Implantar o modelo

Crie um ponto de extremidade online. Em seguida, crie a implantação. Por fim, defina todo o tráfego para usar essa implantação. Você pode encontrar a CPU ou GPU instance_type ideal para um modelo abrindo a caixa de diálogo de implantação rápida na página do modelo no catálogo de modelos. Certifique-se de usar um instance_type para o qual você tenha cota.

import time
endpoint_name="hf-ep-" + str(int(time.time())) # endpoint name must be unique per Azure region, hence appending timestamp 
ml_client.begin_create_or_update(ManagedOnlineEndpoint(name=endpoint_name) ).wait()
ml_client.online_deployments.begin_create_or_update(ManagedOnlineDeployment(
    name="demo",
    endpoint_name=endpoint_name,
    model=model_id,
    instance_type="Standard_DS2_v2",
    instance_count=1,
)).wait()
endpoint = ml_client.online_endpoints.get(endpoint_name)
endpoint.traffic = {"demo": 100}
ml_client.begin_create_or_update(endpoint).result()

Testar o modelo implantado

Crie um arquivo com entradas que você pode enviar para o ponto de extremidade online para pontuação. O exemplo de código nesta seção permite uma entrada para o fill-mask tipo desde que você implantou o bert-base-uncased modelo. Você pode encontrar o formato de entrada, os parâmetros e as entradas de exemplo na documentação da API de inferência do Hugging Face Hub.

import json
scoring_file = "./sample_score.json"
with open(scoring_file, "w") as outfile:
    outfile.write('{"inputs": ["Paris is the [MASK] of France.", "The goal of life is [MASK]."]}')   
response = ml_client.online_endpoints.invoke(
    endpoint_name=endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Implantar modelos através do hub do HuggingFace usando a CLI

Configurar a CLI.

Encontre o modelo a ser implantado

Navegue pelo catálogo de modelos no Estúdio do Azure Machine Learning e encontre o modelo que você deseja implantar. Copie o nome do modelo que você deseja implantar. Os modelos mostrados no catálogo estão listados a partir do registro HuggingFace. Neste exemplo, você implanta o modelo bert-base-uncased com a versão mais recente.

Implantar o modelo

Você precisa dos valores e model dos instance_type valores para implantar o modelo. Você pode encontrar a CPU ou GPU instance_type ideal para um modelo abrindo a caixa de diálogo de implantação rápida na página do modelo no catálogo de modelos. Certifique-se de usar um instance_type para o qual você tenha cota.

Os modelos mostrados no catálogo estão listados a partir do registro HuggingFace. Neste exemplo, você implanta o modelo bert-base-uncased com a versão mais recente. A ID do ativo model totalmente qualificado com base no nome do modelo e no registro é azureml://registries/HuggingFace/models/bert-base-uncased/labels/latest. Você cria o deploy.yml arquivo usado para o az ml online-deployment create comando embutido.

Crie um ponto de extremidade online. Em seguida, crie a implantação.

# create endpoint
endpoint_name="hf-ep-"$(date +%s)
model_name="bert-base-uncased"
az ml online-endpoint create --name $endpoint_name 

# create deployment file. 
cat <<EOF > ./deploy.yml
name: demo
model: azureml://registries/HuggingFace/models/$model_name/labels/latest
endpoint_name: $endpoint_name
instance_type: Standard_DS3_v2
instance_count: 1
EOF
az ml online-deployment create --file ./deploy.yml --workspace-name $workspace_name --resource-group $resource_group_name

Testar o modelo implantado

Crie um arquivo com entradas que você pode enviar para o ponto de extremidade online para pontuação. Abraçando o Rosto fornece uma entrada de exemplo de código para o fill-mask tipo para o modelo implantado bert-base-uncased . Você pode encontrar o formato de entrada, os parâmetros e as entradas de exemplo na documentação da API de inferência do Hub de Detecção Facial.

scoring_file="./sample_score.json"
cat <<EOF > $scoring_file
{
  "inputs": [
    "Paris is the [MASK] of France.",
    "The goal of life is [MASK]."
  ]
}
EOF
az ml online-endpoint invoke --name $endpoint_name --request-file $scoring_file

Código de exemplo do Modelo de Detecção Facial

Siga este link para encontrar o código de exemplo de modelo de detecção facial para vários cenários, incluindo classificação de token, tradução, resposta a perguntas e classificação de zero shot.

Solução de problemas: Erros de implantação e modelos sem suporte

O hub HuggingFace tem milhares de modelos com centenas sendo atualizados todos os dias. Somente os modelos mais populares da coleção são testados e outros podem falhar com um dos erros a seguir.

Modelos restritos

Modelos fechados exigem que os usuários concordem em compartilhar suas informações de contato e aceitem os termos e condições dos proprietários do modelo para acessar o modelo. A tentativa de implantar esses modelos sem seguir corretamente as etapas anteriores falha com um KeyError.

Modelos que precisam de executar código remoto

Os modelos normalmente usam o código do SDK de transformadores, mas alguns modelos executam o código do repositório de modelos. Esses modelos precisam definir o parâmetro trust_remote_code para True. Siga este link para saber mais sobre como usar código remoto. Por motivos de segurança, esses modelos não têm suporte. A tentativa de implantar esses modelos falha com o seguinte erro: ValueError: Loading <model> requires you to execute the configuration file in that repo on your local machine. Make sure you read the code to avoid malicious use, then set the option trust_remote_code=True to remove this error.

Modelos com tokenizadores incorretos

Um tokenizador especificado incorretamente ou ausente no pacote do modelo pode resultar em um erro OSError: Can't load tokenizer for <model>.

Bibliotecas ausentes

Alguns modelos precisam de bibliotecas de Python adicionais. Você pode instalar as bibliotecas ausentes ao executar modelos localmente. Modelos que precisam de bibliotecas especiais além das bibliotecas de transformadores padrão falham com ModuleNotFoundError ou ImportError erro.

Memória insuficiente

Se você vir o OutOfQuota: Container terminated due to insufficient memory erro, tente usar um instance_type com mais memória.

Perguntas frequentes

Onde estão armazenados os pesos do modelo?

Os modelos de Detecção Facial aparecem no catálogo de modelos Azure Machine Learning por meio do HuggingFace registro. O Abraçando o Rosto cria e gerencia esse registro e o disponibiliza para Azure Machine Learning como um Registro da Comunidade. Os pesos do modelo não estão hospedados no Azure. Quando você implanta esses modelos, os pontos de extremidade online em seu workspace baixam os pesos diretamente do Hub de Detecção Facial. O HuggingFace registro em Azure Machine Learning funciona como um catálogo para ajudá-lo a descobrir e implantar modelos de hub de detecção facial em Azure Machine Learning.

Quais modelos têm suporte?

Azure dá suporte a modelos de Detecção Facial que atendem aos seguintes critérios:

  • O modelo tem as marcas ou o TransformersDiffusersSentence-Transformers Hub de Detecção Facial.
  • O modelo tem uma tarefa com suporte , como chat-completion, image-to-textou embeddings.
  • Os pesos do modelo estão no formato Safetensors e o modelo não requer trust_remote_code.

Como implantar os modelos para inferência em lote? Atualmente, você não pode implantar esses modelos em pontos de extremidade em lote para inferência em lote.

Posso usar modelos do HuggingFace Registro como entrada para trabalhos para que eu possa ajustar esses modelos usando o SDK de transformadores? Como os pesos do modelo não são armazenados no HuggingFace registro, você não pode acessar pesos de modelo usando esses modelos como entradas para trabalhos.

Como obter suporte se minhas implantações falharem ou a inferência não funcionar conforme o esperado?HuggingFace é um registro da comunidade e Microsoft suporte não o abrange. Examine os logs de implantação para descobrir se o problema está relacionado ao Azure Machine Learning plataforma ou específico aos transformadores de detecção facial. Entre em contato com o suporte da Microsoft para quaisquer problemas de plataforma, como a incapacidade de criar um endpoint online ou quando a autenticação na API REST do endpoint não funciona. Para problemas específicos de transformadores, crie um problema no GitHub, use o fórum HuggingFace ou use o suporte do HuggingFace.

O que é um registro da comunidade? Parceiros de Azure Machine Learning confiáveis criam registros de comunidade como registros Azure Machine Learning. Todos os usuários Azure Machine Learning podem acessá-los.

Onde os usuários podem enviar perguntas e preocupações sobre o Hugging Face no Azure Machine Learning? Envie suas perguntas no fórum de discussão do Azure Machine Learning ou abra uma Problema do GitHub.

Disponibilidade regional

Atualmente, a Coleção Hugging Face está disponível em todas as regiões da nuvem pública.