Compartilhar via


Como implantar modelos de linguagem grandes com o Estúdio de IA do Azure

Importante

Alguns dos recursos descritos nesse artigo podem estar disponíveis apenas na versão prévia. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Implantação de um modelo de linguagem grande (LLM) disponibiliza-o para uso em um site, aplicativo ou outro ambiente de produção. Normalmente, a implantação envolve hospedar o modelo em um servidor ou na nuvem e criar uma API ou outra interface para que os usuários interajam com o modelo. Você pode invocar a implantação para inferência em tempo real em aplicativos de IA generativa, como chat e copiloto.

Neste artigo, você aprenderá a implantar modelos de linguagem grande no Estúdio de IA do Azure. Você pode implantar os modelos do catálogo de modelos ou do seu projeto. Também é possível implantar modelos usando o SDK do Azure Machine Learning. O artigo também explicar como realizar a inferência no modelo implantado.

Implantar e realizar a inferência de um modelo de API sem servidor com código

Implantação de um modelo

Modelos de API sem servidor são aqueles você pode implantar com a cobrança paga conforme o uso. Alguns exemplos são: Phi-3, Llama-2, Command R, Mistral Large e outros. Para modelos de API sem servidor, você só é cobrado pela inferência, a menos que opte por ajustar o modelo.

Obter a ID do modelo

Você pode implantar modelos de API sem servidor usando o SDK do Azure Machine Learning, mas primeiro, vamos navegar pelo catálogo de modelos e obter a ID do modelo necessário para implantação.

  1. Entre no Estúdio de IA e vá para a Página inicial.

  2. Selecione Catálogo de modelos na barra lateral esquerda.

  3. No filtro de Opções de implantação, selecione API sem servidor.

    Uma captura de tela mostrando como filtrar por modelos de API sem servidor no catálogo.

  4. Selecione um modelo.

  5. Copie a ID do modelo na página de detalhes do modelo selecionado. É algo parecido com isso: azureml://registries/azureml-cohere/models/Cohere-command-r-plus/versions/3

Instalar o SDK do Azure Machine Learning

Depois, você precisa instalar o SDK do Azure Machine Learning. Execute os seguintes comandos em seu terminal:

pip install azure-ai-ml
pip install azure-identity

Implantar o modelo de API sem servidor

Primeiro, você precisa se autenticar na IA do Azure.

from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
from azure.ai.ml.entities import MarketplaceSubscription, ServerlessEndpoint

# You can find your credential information in project settings.
client = MLClient(
    credential=DefaultAzureCredential(),
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

Em seguida, vamos referenciar a ID do modelo que você encontrou anteriormente.

# You can find the model ID on the model catalog.
model_id="azureml://registries/azureml-meta/models/Llama-2-70b-chat/versions/18" 

Modelos de API sem servidor de provedores terceirizados necessitam uma assinatura do Azure Marketplace para usar o modelo. Vamos criar uma assinatura do marketplace.

Observação

Você pode pular esta parte se estiver implantando um modelo de API sem servidor da Microsoft, como o Phi-3.

# You can customize the subscription name.
subscription_name="Meta-Llama-2-70b-chat" 

marketplace_subscription = MarketplaceSubscription(
    model_id=model_id,
    name=subscription_name,
)

marketplace_subscription = client.marketplace_subscriptions.begin_create_or_update(
    marketplace_subscription
).result()

Por fim, vamos criar um ponto de extremidade sem servidor.


endpoint_name="Meta-Llama-2-70b-chat-qwerty" # Your endpoint name must be unique

serverless_endpoint = ServerlessEndpoint(
    name=endpoint_name,
    model_id=model_id
)

created_endpoint = client.serverless_endpoints.begin_create_or_update(
    serverless_endpoint
).result()

Obter o ponto de extremidade e as chaves da API sem servidor

endpoint_keys = client.serverless_endpoints.get_keys(endpoint_name)
print(endpoint_keys.primary_key)
print(endpoint_keys.secondary_key)

Realizar a inferência da implantação

Para fazer a inferência, use o código que atenda especificamente aos diferentes tipos de modelo e SDK que você está usando. Você pode encontrar exemplos de código no repositório de exemplos Azure/azureml-examples.

Implantar e realizar a inferência de uma implantação de computação gerenciada com código

Implantação de um modelo

O catálogo de modelos do Estúdio de IA oferece mais de 1.600 modelos, e a forma mais simples de implantar esses modelos é usar a opção de implantação de computação gerenciada, que às vezes é conhecida como implantação gerenciada online.

Obter a ID do modelo

Você pode implantar modelos de computação sem servidor usando o SDK do Azure Machine Learning, mas primeiro, vamos navegar pelo catálogo de modelos e obter a ID do modelo necessário para implantação.

  1. Entre no Estúdio de IA e vá para a Página inicial.

  2. Selecione Catálogo de modelos na barra lateral esquerda.

  3. No filtro de Opções de implantação, selecione Computação gerenciada.

    Uma captura de tela mostrando como filtrar por modelos de computação gerenciada no catálogo.

  4. Selecione um modelo.

  5. Copie a ID do modelo na página de detalhes do modelo selecionado. É algo parecido com isso: azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16

Instalar o SDK do Azure Machine Learning

Nessa etapa, você precisa instalar o SDK do Azure Machine Learning.

pip install azure-ai-ml
pip install azure-identity

Implantar o modelo

Primeiro, você precisa se autenticar na IA do Azure.

from azure.ai.ml import MLClient
from azure.identity import InteractiveBrowserCredential

client = MLClient(
    credential=InteractiveBrowserCredential,
    subscription_id="your subscription name goes here",
    resource_group_name="your resource group name goes here",
    workspace_name="your project name goes here",
)

Vamos implantar o modelo.

Para a opção de implantação de computação gerenciada, é necessário criar um ponto de extremidade antes de implantar o modelo. Pense que o ponto de extremidade é um contêiner que pode abrigar várias implantações de modelo. Os nomes de ponto de extremidade precisam ser exclusivos em uma região. Por isso, neste exemplo, estamos usando o carimbo de data/hora para criar um nome de ponto de extremidade exclusivo.

import time, sys
from azure.ai.ml.entities import (
    ManagedOnlineEndpoint,
    ManagedOnlineDeployment,
    ProbeSettings,
)

# Make the endpoint name unique
timestamp = int(time.time())
online_endpoint_name = "customize your endpoint name here" + str(timestamp)

# Create an online endpoint
endpoint = ManagedOnlineEndpoint(
    name=online_endpoint_name,
    auth_mode="key",
)
workspace_ml_client.begin_create_or_update(endpoint).wait()

Crie uma implantação. Você pode encontrar a ID do modelo no catálogo de modelos.

model_name = "azureml://registries/azureml/models/deepset-roberta-base-squad2/versions/16" 

demo_deployment = ManagedOnlineDeployment(
    name="demo",
    endpoint_name=online_endpoint_name,
    model=model_name,
    instance_type="Standard_DS3_v2",
    instance_count=2,
    liveness_probe=ProbeSettings(
        failure_threshold=30,
        success_threshold=1,
        timeout=2,
        period=10,
        initial_delay=1000,
    ),
    readiness_probe=ProbeSettings(
        failure_threshold=10,
        success_threshold=1,
        timeout=10,
        period=10,
        initial_delay=1000,
    ),
)
workspace_ml_client.online_deployments.begin_create_or_update(demo_deployment).wait()
endpoint.traffic = {"demo": 100}
workspace_ml_client.begin_create_or_update(endpoint).result()

Realizar a inferência da implantação

Você precisa de uma amostra de dados JSON para testar a inferência. Crie sample_score.json com o seguinte exemplo.

{
  "inputs": {
    "question": [
      "Where do I live?",
      "Where do I live?",
      "What's my name?",
      "Which name is also used to describe the Amazon rainforest in English?"
    ],
    "context": [
      "My name is Wolfgang and I live in Berlin",
      "My name is Sarah and I live in London",
      "My name is Clara and I live in Berkeley.",
      "The Amazon rainforest (Portuguese: Floresta Amaz\u00f4nica or Amaz\u00f4nia; Spanish: Selva Amaz\u00f3nica, Amazon\u00eda or usually Amazonia; French: For\u00eat amazonienne; Dutch: Amazoneregenwoud), also known in English as Amazonia or the Amazon Jungle, is a moist broadleaf forest that covers most of the Amazon basin of South America. This basin encompasses 7,000,000 square kilometres (2,700,000 sq mi), of which 5,500,000 square kilometres (2,100,000 sq mi) are covered by the rainforest. This region includes territory belonging to nine nations. The majority of the forest is contained within Brazil, with 60% of the rainforest, followed by Peru with 13%, Colombia with 10%, and with minor amounts in Venezuela, Ecuador, Bolivia, Guyana, Suriname and French Guiana. States or departments in four nations contain \"Amazonas\" in their names. The Amazon represents over half of the planet's remaining rainforests, and comprises the largest and most biodiverse tract of tropical rainforest in the world, with an estimated 390 billion individual trees divided into 16,000 species."
    ]
  }
}

Vamos realizar a inferência com sample_score.json. Altere o local conforme onde você salvou sua amostra de arquivo JSON.

scoring_file = "./sample_score.json" 
response = workspace_ml_client.online_endpoints.invoke(
    endpoint_name=online_endpoint_name,
    deployment_name="demo",
    request_file=scoring_file,
)
response_json = json.loads(response)
print(json.dumps(response_json, indent=2))

Excluir o ponto de extremidade de implantação

Para excluir implantações no Estúdio de IA, selecione o botão Excluir no painel superior da página de detalhes da implantação.

Considerações sobre cotas

Para implantar e realizar a inferência com pontos de extremidade em tempo real, você consome a cota de núcleos da Máquina Virtual (VM) atribuída à sua assinatura por região. Ao se inscrever no Estúdio de IA, você recebe uma cota de VM padrão para várias famílias de VM disponíveis na região. Você pode continuar a criar implantações até atingir o limite de cota. Depois que isso acontecer, você poderá solicitar um aumento de cota.

Próximas etapas