Compartilhar via


Aperfeiçoar modelos usando implantações padrão no Azure AI Foundry da Microsoft

Importante

Os itens marcados (versão prévia) neste artigo estão atualmente em versão prévia pública. 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.

O Azure AI Foundry permite personalizar modelos de linguagem grandes para seus conjuntos de dados específicos por meio de um processo chamado ajuste fino. Esse processo oferece benefícios significativos, permitindo personalização e otimização adaptadas a tarefas e aplicativos específicos. As vantagens incluem melhor desempenho, eficiência de custo, latência reduzida e saídas personalizadas.

Eficiência de Custo: o ajuste fino do Azure AI Foundry pode ser mais econômico, especialmente para implantações em larga escala, graças aos preços Standard.

Variedade de Modelos: o ajuste de implantação padrão do Azure AI Foundry oferece suporte para modelos proprietários e de software livre, fornecendo aos usuários a flexibilidade para selecionar os modelos que melhor atendem às suas necessidades sem serem restritos a um único tipo.

Personalização e controle: o Azure AI Foundry fornece maior personalização e controle sobre o processo de ajuste fino, permitindo que os usuários adaptem modelos com mais precisão aos requisitos específicos.

Neste artigo, você descobrirá como ajustar modelos implantados usando implantações padrão no Azure AI Foundry.

Pré-requisitos

  • Uma assinatura do Azure com uma forma de pagamento válida. As assinaturas gratuitas ou de avaliação do Azure não funcionarão. Caso você não tenha uma assinatura do Azure, crie uma conta paga do Azure para começar.

  • Acesso ao portal do Azure.

  • Um projeto do Azure AI Foundry.

  • Os controles de acesso baseados em função do Azure (Azure RBAC) são usados para conceder acesso a operações no portal da Fábrica de IA do Azure. Para realizar as etapas deste artigo, a função de proprietário ou colaborador deve ser atribuída à conta de usuário da assinatura do Azure. Para obter mais informações sobre permissões, confira Controle de acesso baseado em função no portal do Azure AI Foundry.

Verificar o registro do provedor de assinatura

Verifique se a assinatura está registrada no provedor de recursos Microsoft.Network.

  1. Entre no portal do Azure.
  2. Selecione Assinaturas no menu à esquerda.
  3. Selecione a assinatura que deseja usar.
  4. Selecione Configurações>Provedores de recursos no menu à esquerda.
  5. Adicione o Microsoft.Network à lista de provedores de recursos se ele não estiver na lista.

Localizar modelos com suporte de ajuste fino

O catálogo de modelos da Fábrica de IA oferece suporte de ajuste fino para vários tipos de modelos, incluindo conclusões de chat e geração de texto. Para obter uma lista de modelos que dão suporte ao ajuste fino e às regiões do Azure de suporte para ajuste fino, consulte a disponibilidade da região para modelos como implantação padrão. As tarefas de ajuste fino estão disponíveis apenas para usuários cuja assinatura do Azure pertence a uma conta de cobrança em um país/região em que o provedor de modelo disponibilizou a oferta. Se a oferta estiver disponível na região relevante, o usuário precisará ter um recurso de projeto na região do Azure em que o modelo está disponível para implantação ou ajuste fino, conforme aplicável.

Você também pode acessar o portal da Fábrica de IA do Azure para exibir todos os modelos que contêm suporte de ajuste fino:

  1. Entre no Azure AI Foundry.

  2. Se você ainda não estiver em seu projeto, selecione-o.

  3. Navegue até o catálogo de modelos.

  4. Selecione o filtro Tarefas de ajuste fino.

    Captura de tela das opções de filtro de ajuste fino do catálogo de modelos.

  5. Selecione Tudo ou selecione uma tarefa específica.

Preparar dados para ajuste fino

Prepare seus dados de treinamento e validação para ajustar seu modelo. Seus dados de treinamento e validação consistem em exemplos de entrada e saída de como você gostaria que o modelo fosse executado.

Verifique se todos os seus exemplos de treinamento seguem o formato esperado para inferência. Para ajustar os modelos com eficiência, garanta um conjunto de dados diversificado mantendo o equilíbrio de dados, incluindo vários cenários, e refinando periodicamente dados de treinamento para se alinhar às expectativas do mundo real. Essas ações, em última análise, levam a respostas de modelo mais precisas e equilibradas.

Dica

Diferentes tipos de modelo exigem um formato diferente de dados de treinamento.

Formato de arquivo de exemplo

O tipo de arquivo com suporte é Linhas JSON. Os arquivos são carregados no armazenamento de dados padrão e disponibilizados em seu projeto.

    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Usar o assistente de modelo de ajuste fino

O portal do Azure AI Foundry fornece o assistente Criar modelo personalizado, para que você possa criar e treinar interativamente um modelo ajustado para o recurso do Azure.

Selecione um modelo base

  1. Escolha o modelo que você deseja ajustar no catálogo de modelos da Fábrica de IA do Azure.
  2. Na página Detalhes do modelo, selecione ajustar. Alguns modelos de base dão suporte à implantação padrão e à computação gerenciada, enquanto outros dão suporte a um ou outro.
  3. Se você apresentou as opções para implantação padrão e Computação gerenciada, selecione implantação padrão para o ajuste fino. Essa ação abre um assistente que mostra informações sobre ajuste fino Standard para seu modelo.

Escolher seus dados de treinamento

A próxima etapa é escolher dados de treinamento preparados existentes ou carregar novos dados de treinamento preparados para usar ao personalizar seu modelo. O painel Dados de treinamento exibe todos os conjuntos de dados existentes carregados anteriormente e também oferece opções para carregar novos dados de treinamento.

  • Se os dados de treinamento já estiverem carregados no serviço, selecione Arquivos do Azure AI Foundry.
    • Selecione o arquivo na lista suspensa mostrada.
  • Para carregar novos dados de treinamento, use uma das seguintes opções:
    • Selecione o arquivo local para carregar dados de treinamento de um arquivo local.
    • Selecione o blob do Azure ou outros locais da Web compartilhados para importar dados de treinamento do Blob do Azure ou de outro local da Web compartilhado.

Para arquivos de dados grandes, recomendamos que você importe de um Blob Storage do Azure. Para obter mais informações sobre o Armazenamento de Blobs do Azure, confira O que é o Armazenamento de Blobs do Azure?

Carregar dados de treinamento do arquivo local

Você pode carregar um novo conjunto de dados de treinamento para o serviço de um arquivo local usando um dos seguintes métodos:

  • Arraste e solte o arquivo na área do cliente do painel de dados Treinamento e selecioneCarregar arquivo.
  • Selecione Procurar um arquivo na área do cliente do painel de dados Treinamento, escolha o arquivo a ser carregado na caixa de diálogo Abrir e selecione Carregar arquivo. Depois de selecionar e carregar o conjunto de dados de treinamento, selecione Avançar para continuar.

Escolha seus dados de validação

A próxima etapa fornece opções para configurar o modelo para usar dados de validação no processo de treinamento. Se você não quiser usar dados de validação, você pode escolher Avançarpara continuar com as opções avançadas do modelo. Caso contrário, se você tiver um conjunto de dados de validação, poderá escolher os dados de validação preparados existentes ou carregar novos dados de validação preparados a serem usados ao personalizar seu modelo. O painel Dados de validação exibe todos os conjuntos de dados de treinamento e validação existentes e carregados anteriormente e fornece opções pelas quais você pode carregar novos dados de validação.

Dividir dados de treinamento

Você pode dividir automaticamente os dados de treinamento para gerar um conjunto de dados de validação. Depois de selecionar a divisão automática dos dados de treinamento, selecione Avançar para continuar.

Usar dados existentes no Azure AI Foundry

  • Se os dados de validação já estiverem carregados no serviço, selecione Escolher conjunto de dados.
    • Selecione o arquivo na lista mostrada no painel Dados de validação.
  • Para carregar novos dados de validação, use uma das seguintes opções:
    • Selecione arquivo local para carregar dados de validação de um arquivo local.
    • Selecione o blob do Azure ou outros locais da Web compartilhados para importar dados de validação do Blob do Azure ou de outro local da Web compartilhado. Para arquivos de dados grandes, recomendamos que você importe de um Blob Storage do Azure. Arquivos grandes podem se tornar instáveis quando carregados por meio de formulários de várias partes porque as solicitações são atômicas e não podem ser repetidas ou retomadas.

Observação

  • Semelhante aos arquivos de dados de treinamento, os arquivos de dados de validação devem ser formatados como arquivos JSONL,
  • codificado em UTF-8 com uma marca de ordem de byte (BOM). O arquivo deve ter menos de 512 MB de tamanho.

Carregar dados de validação do arquivo local

Você pode carregar um novo conjunto de dados de validação para o serviço de um arquivo local usando um dos seguintes métodos:

  • Arraste e solte o arquivo na área do cliente do painel Dados de validação e selecione Carregar arquivo.
  • Selecione Procurar um arquivo na área do cliente do painel de dados de validação, escolha o arquivo a ser carregado na caixa de diálogo Abrir e, em seguida, selecione Carregar arquivo. Depois de selecionar e carregar o conjunto de dados de validação, selecione Avançar para continuar.

Configurar os parâmetros de tarefa

O assistente de modelo de ajuste fino mostra os parâmetros para treinar seu modelo ajustado no painel Parâmetros de tarefa. Estão disponíveis os seguintes parâmetros:

Nome Tipo Descrição
batch_size número inteiro O tamanho do lote a ser usado para treinamento. O tamanho do lote é o número de exemplos de treinamento usados para treinar uma única passagem para frente e para trás. Em geral, descobrimos que tamanhos de lote maiores tendem a funcionar melhor para conjuntos de dados maiores. O valor padrão, bem como o valor máximo dessa propriedade, são específicos para um modelo base. Um tamanho de lote maior significa que os parâmetros do modelo são atualizados com menos frequência, mas com menor variância.
learning_rate_multiplier número O multiplicador de taxa de aprendizagem a ser usado para treinamento. A taxa de aprendizado de ajuste fino é a taxa de aprendizado original usada para pré-treinamento multiplicada por esse valor. Taxas de aprendizagem maiores tendem a ter um desempenho melhor com tamanhos de lote maiores. Recomendamos experimentar valores no intervalo de 0,02 a 0,2 para ver o que produz os melhores resultados. Uma taxa de aprendizagem menor pode ser útil para evitar o sobreajuste.
n_epochs número inteiro O número de períodos para treinamento do modelo. Um período refere-se a um ciclo completo através do conjunto de dados de treinamento.

Selecione Padrão para usar os valores padrão para o trabalho de ajuste fino ou selecione Personalizar para exibir e editar os valores do hiperparâmetro. Quando os padrões são selecionados, determinamos o valor correto por meio de algoritmos com base nos seus dados de treinamento. Após configurar as opções avançadas, selecione Avançar para examinar suas escolhas e treinar seu modelo ajustado.

Examinar suas escolhas e treinar seu modelo

O painel Revisão do assistente exibe informações sobre suas opções de configuração.

Se você estiver pronto para treinar seu modelo, selecione Iniciar Trabalho de Treinamento para iniciar o trabalho de ajuste fino e retornar à guia Modelos .

Verificar o status do seu modelo personalizado

A guia de ajuste fino exibe informações sobre seu modelo personalizado. A guia inclui informações sobre o status e a ID do trabalho de ajuste fino para seu modelo personalizado. Quando o trabalho for concluído, a guia exibirá a ID do arquivo de resultado. Talvez seja necessário selecionar Atualizar para ver um status atualizado para o trabalho de treinamento de modelo.

Captura de tela do painel de projetos em execução.

Depois de iniciar um trabalho de ajuste fino, pode levar algum tempo para ser concluído. Sua tarefa pode estar em fila atrás de outras tarefas no sistema. O treinamento do modelo pode levar minutos ou horas, dependendo do tamanho do modelo e do conjunto de dados. Aqui estão algumas das tarefas que você pode fazer na guia Modelos :

  • Verifique o status do trabalho de ajuste fino para seu modelo personalizado na coluna Status da guia Modelos Personalizados.
  • Na coluna Nome do modelo, selecione o nome do modelo para exibir mais informações sobre o modelo personalizado. Você pode ver o status da tarefa de ajuste fino, os resultados do treinamento, os eventos de treinamento e os hiperparâmetros usados na tarefa.
  • Selecione Atualizar para atualizar as informações na página.

Captura de tela do painel de detalhes de ajuste fino.

Cenários empresariais com suporte para ajuste fino

Há suporte para vários cenários empresariais para o refinamento da implantação padrão. A tabela abaixo descreve as configurações suportadas para rede de armazenamento de usuário e autenticação para garantir uma operação tranquila em cenários empresariais:

Observação

  • A autenticação das conexões de dados pode ser alterada por meio do AI Foundry clicando na conexão do armazenamento de dados em que seu conjunto de dados está armazenado e navegando até a configuração Detalhes de acesso>Método de autenticação.
  • A autenticação de armazenamento pode ser alterada no Armazenamento do Microsoft Azure >Configurações>Configurações página >Permitir acesso à chave da conta de armazenamento.
  • Sa rede de armazenamento pode ser alterada na página >Rede do Armazenamento do Microsoft Azure.
Rede de Armazenamento Autenticação de Armazenamento Autenticação de Conexão de Dados Suporte
Acesso à rede pública = Habilitado Chave de conta habilitada SAS/Chave de conta Sim, UX e SDK
Acesso à rede pública = Habilitado Chave de conta desabilitada Autenticação baseada em Entra (sem credenciais) Sim, UX e SDK

Nota: para UX, pode ser necessário adicionar o Storage Blob Data Reader ou o Storage Blob Data Contributor para sua ID de usuário na conta de armazenamento ou alterar a autenticação da conexão para usar a chave da conta/token SAS
Habilitado a partir das redes virtuais e endereços IP selecionados Chave de conta habilitada Chave de conta Sim, UX e SDK

Observação: para UX, o IP da computação que executa o navegador deve estar na lista selecionada
Habilitado a partir das redes virtuais e endereços IP selecionados Chave de conta habilitada SAS Sim, UX e SDK

Observação: para UX, o IP da computação que executa o navegador deve estar na lista selecionada
Habilitado a partir das redes virtuais e endereços IP selecionados Chave de conta desabilitada Autenticação baseada em Entra (sem credenciais) Sim, UX e SDK.

Nota: para UX, pode ser necessário adicionar o Storage Blob Data Reader ou o Storage Blob Data Contributor para sua ID de usuário na conta de armazenamento ou alterar a autenticação da conexão para usar a chave da conta/token SAS. Certifique-se também de que o IP do computador que executa o navegador esteja na lista selecionada
Acesso à rede pública = Desabilitado Chave de conta habilitada SAS/Chave de conta Sim, UX e SDK.

Nota: para que o upload e o envio de dados UX funcionem, o espaço de trabalho precisa ser acessado de dentro da Vnet que tem acesso apropriado ao armazenamento
Acesso à rede pública = Desabilitado Chave de conta desabilitada Autenticação baseada em Entra (sem credenciais) Sim, UX e SDK.

Nota: para que o upload e o envio de dados UX funcionem, o espaço de trabalho precisa ser acessado de dentro da Vnet que tem acesso apropriado ao armazenamento

Os cenários acima também devem funcionar em um espaço de trabalho de Vnet gerenciada. Veja a configuração do hub do VNET gerenciada AI Foundry aqui: Como configurar uma rede gerenciada para hubs da IA do Azure Foundry

As Chaves Gerenciadas pelo Cliente (CMKs) não são um cenário empresarial com suporte com ajuste de implantação padrão.

Problemas de ajuste fino em configurações de rede exclusivas no ambiente de trabalho e no armazenamento geralmente indicam um problema na configuração da rede.


Implantar um modelo otimizado

Quando o trabalho de ajuste fino for bem-sucedido, você poderá implantar o modelo personalizado na guia Fine-tune. Você deve implantar seu modelo personalizado para disponibilizá-lo para uso com solicitações de conclusão.

Importante

Depois de implantar um modelo personalizado e terminar com o ponto de extremidade, lembre-se de limpar os pontos de extremidade inativos. A exclusão de uma implantação inativa não exclui ou afeta o modelo personalizado subjacente, e o modelo personalizado pode ser reimplantado a qualquer momento. Conforme descrito na estrutura de preços do Azure AI Foundry, cada modelo personalizado (finamente ajustado) implantado incorre em um custo de hospedagem por hora, independentemente de estarem sendo feitas chamadas de conclusão ou de conclusão de chat para o modelo. Para saber mais sobre como planejar e gerenciar custos com o Azure AI Foundry, consulte as diretrizes em Plano para gerenciar custos do Serviço de Descoberta de IA do Azure.

Observação

Somente uma implantação é permitida para um modelo personalizado. Uma mensagem de erro será exibida se você selecionar um modelo personalizado já implantado. Para implantar seu modelo personalizado, selecione o modelo personalizado a ser implantado e selecione Implantar modelo.

A caixa de diálogo Implantar modelo é aberta. Na caixa de diálogo, insira o nome da Implantação e selecione Implantar para iniciar a implantação do modelo personalizado.

Você também pode implantar um modelo ajustado por meio da guia Modelos + pontos de extremidade selecionando o botão Implantar modelo e selecionando Implantar modelo ajustado na lista suspensa

Captura de tela do painel de gerenciamento de implantações de ajuste fino.

Em seguida, selecione o modelo ajustado que você deseja implantar e selecione Implantar.

Implantação entre regiões

O ajuste fino permite a implantação de um modelo ajustado em uma região diferente daquela onde foi originalmente ajustado. Você também pode implantar em uma assinatura/região diferente. As únicas limitações são que a nova região também deve dar suporte ao ajuste fino e, ao implantar a assinatura cruzada, a conta que gera o token de autorização para a implantação deve ter acesso às assinaturas de origem e de destino. A implantação entre assinaturas/regiões pode ser realizada por meio do Python

Usar um modelo personalizado implantado

Depois que seu modelo personalizado for implantado, você poderá usá-lo como qualquer outro modelo implantado. Você pode usar os Playgrounds no portal da IA do Azure Foundry para experimentar sua nova implantação. Você pode continuar a usar os mesmos parâmetros com seu modelo personalizado, como temperatura e max_tokens, como você pode com outros modelos implantados.

Limpar seus modelos ajustados

Você pode excluir um modelo com ajuste fino da lista de ajuste fino de modelos no Azure AI Foundry ou na página de detalhes do modelo. Para excluir o modelo ajustado da página ajuste fino,

  1. Selecione Ajuste fino na navegação à esquerda em seu projeto da Fábrica de IA do Azure.
  2. Selecione o botão Excluir para excluir o modelo ajustado.

Observação

Você não poderá excluir um modelo personalizado se ele tiver uma implantação existente. Primeiro, exclua sua implantação de modelo antes de excluir seu modelo personalizado.

Criar um cliente para consumir o modelo

As seções a seguir explicam como ajustar um modelo no Python. Para encontrar um exemplo de bloco de anotações desse código, consulte LLM de ajuste fino com Model-As-Service

  1. Certifique-se de instalar dependências para começar a ajustar seu modelo.
%pip install azure-ai-ml
%pip install azure-identity

%pip install mlflow
%pip install azureml-mlflow
  1. Crie o cliente para consumir o modelo. O código a seguir usa um URL de ponto de extremidade e uma chave que são armazenados em variáveis ​​de ambiente.
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()

try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<SUBSCRIPTION_ID>",
        resource_group_name="<RESOURCE_GROUP_NAME>",
        workspace_name="<PROJECT_NAME OR WORKSPACE_NAME>",
    )

# the models, fine tuning pipelines and environments are available in various AzureML system registries,
# Example: Phi family of models are in "azureml", Llama family of models are in "azureml-meta" registry.
registry_ml_client = MLClient(credential, registry_name="azureml")

# Get AzureML workspace object.
workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace.id

Localizar modelos com suporte de ajuste fino

O catálogo de modelos da Fábrica de IA oferece suporte de ajuste fino para vários tipos de modelos, incluindo conclusões de chat e geração de texto. Para obter uma lista de modelos que dão suporte ao ajuste fino e às regiões do Azure de suporte para ajuste fino, consulte a disponibilidade da região para modelos em uma implantação padrão. As tarefas de ajuste fino estão disponíveis apenas para usuários cuja assinatura do Azure pertence a uma conta de cobrança em um país/região em que o provedor de modelo disponibilizou a oferta. Se a oferta estiver disponível na região relevante, o usuário precisará ter um recurso de projeto na região do Azure em que o modelo está disponível para implantação ou ajuste fino, conforme aplicável.

Para este exemplo, usamos um modelo Phi-4-mini-instruct. Neste snippet de código, a propriedade de ID do modelo será passada como entrada para o trabalho de ajuste fino. Isso também está disponível como o campo ID do ativo na página de detalhes do modelo no Catálogo de Modelos do Azure AI Foundry.

model_name = "Phi-4-mini-instruct"
model_to_finetune = registry_ml_client.models.get(model_name, label="latest")
print(
    "\n\nUsing model name: {0}, version: {1}, id: {2} for fine tuning".format(
        model_to_finetune.name, model_to_finetune.version, model_to_finetune.id
    )
)

Preparar dados para ajuste fino

Prepare seus dados de treinamento e validação para ajustar seu modelo. Seus dados de treinamento e validação consistem em exemplos de entrada e saída de como você gostaria que o modelo fosse executado.

Verifique se todos os seus exemplos de treinamento seguem o formato esperado para inferência. Para ajustar os modelos com eficiência, garanta um conjunto de dados diversificado mantendo o equilíbrio de dados, incluindo vários cenários, e refinando periodicamente dados de treinamento para se alinhar às expectativas do mundo real. Essas ações, em última análise, levam a respostas de modelo mais precisas e equilibradas.

Dica

Diferentes tipos de modelo exigem um formato diferente de dados de treinamento.

Formato de arquivo de exemplo

O tipo de arquivo com suporte é Linhas JSON. Os arquivos são carregados no armazenamento de dados padrão e disponibilizados em seu projeto.

    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Is Xbox better than PlayStation?"}, {"role": "assistant", "content": "I apologize, but I cannot provide personal opinions. My primary job is to assist you with any issues related to your Xbox device. Do you have any Xbox-related issues that need addressing?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "Can I play PC games on my Xbox?"}, {"role": "assistant", "content": "While Xbox consoles don't natively support PC games, they can play an array of Xbox games, many of which are also available on PC. Can I assist you with finding games compatible with your Xbox device?"}]}
    {"messages": [{"role": "system", "content": "You are an Xbox customer support agent whose primary goal is to help users with issues they are experiencing with their Xbox devices. You are friendly and concise. You only provide factual answers to queries, and do not provide answers that are not related to Xbox."}, {"role": "user", "content": "I'm having trouble connecting my Xbox to the Wi-Fi."}, {"role": "assistant", "content": "No worries, let's go through the network settings on your Xbox. Can you please tell me what happens when you try to connect it to the Wi-Fi?"}]}

Criar entradas de dados de treinamento

Este snippet de código mostra como definir um conjunto de dados de treinamento.

from azure.ai.ml.constants import AssetTypes
from azure.ai.ml.entities import Data

dataset_version = "1"
train_dataset_name = "chat_training_small"
try:
    train_data_asset = workspace_ml_client.data.get(
        train_dataset_name, version=dataset_version
    )
    print(f"Dataset {train_dataset_name} already exists")
except:
    print("creating dataset")
    train_data = Data(
        path=f"./train.jsonl",
        type=AssetTypes.URI_FILE,
        description="Training dataset",
        name=train_dataset_name,
        version="1",
    )
    train_data_asset = workspace_ml_client.data.create_or_update(train_data)

Criar dados de validação

A próxima etapa fornece opções para configurar o modelo para usar dados de validação no processo de treinamento. Se você não quiser usar dados de validação, poderá optar por ignorar esta etapa para continuar para a próxima seção. Caso contrário, se você tiver um conjunto de dados de validação, poderá escolher os dados de validação preparados existentes ou carregar novos dados de validação preparados a serem usados ao personalizar seu modelo.

from azure.ai.ml.entities import Data

dataset_version = "1"
validation_dataset_name = "chat_validation_small"
try:
    validation_data_asset = workspace_ml_client.data.get(
        validation_dataset_name, version=dataset_version
    )
    print(f"Dataset {validation_dataset_name} already exists")
except:
    print("creating dataset")
    validation_data = Data(
        path=f"./validation.jsonl",
        type=AssetTypes.URI_FILE,
        description="Validation dataset",
        name=validation_dataset_name,
        version="1",
    )
    validation_data_asset = workspace_ml_client.data.create_or_update(validation_data)

Criar assinatura do Marketplace para modelos de terceiros

Esta etapa é necessária para todos os modelos que não são da Microsoft. Um exemplo de modelo da Microsoft é a família Phi de modelos.

model_id_to_subscribe = "/".join(model_to_finetune.id.split("/")[:-2])
print(model_id_to_subscribe)

normalized_model_name = model_name.replace(".", "-")

from azure.ai.ml.entities import MarketplaceSubscription


subscription_name = f"{normalized_model_name}-sub"

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

# note: this will throw exception if the subscription already exists or subscription is not required (for example, if the model is not in the marketplace like Phi family)
try:
    marketplace_subscription = (
        workspace_ml_client.marketplace_subscriptions.begin_create_or_update(
            marketplace_subscription
        ).result()
    )
except Exception as ex:
    print(ex)

Enviar a tarefa de ajuste de precisão usando o modelo e os dados como entradas

Há um conjunto de parâmetros a seguir que são necessários para ajustar seu modelo. Cada parâmetro é definido no seguinte:

  • modelo: modelo base para ajustar.
  • training_data: dados de treinamento para ajustar o modelo base.
  • validation_data: dados de validação para ajustar o modelo base.
  • tarefa: tarefa de ajuste fino a ser executada. Eg. CHAT_COMPLETION para trabalhos de ajuste fino de conclusão de chat.
  • saídas: nome do modelo registrado de saída.

Os seguintes parâmetros são opcionais:

  • hiperparâmetros: parâmetros que controlam o comportamento de ajuste fino em tempo de execução.
  • nome: Nome do trabalho de ajuste fino
  • experiment_name: nome do experimento para trabalho de ajuste de fin.
  • display_name: nome de exibição do trabalho de ajuste fino.
from azure.ai.ml.finetuning import FineTuningTaskType, create_finetuning_job
import uuid

guid = uuid.uuid4()
short_guid = str(guid)[:8]
display_name = f"{model_name}-display-name-{short_guid}-from-sdk"
name = f"{model_name}t-{short_guid}-from-sdk"
output_model_name_prefix = f"{model_name}-{short_guid}-from-sdk-finetuned"
experiment_name = f"{model_name}-from-sdk"

finetuning_job = create_finetuning_job(
    task=FineTuningTaskType.CHAT_COMPLETION,
    training_data=train_data_asset.id,
    validation_data=validation_data_asset.id,
    hyperparameters={
        "per_device_train_batch_size": "1",
        "learning_rate": "0.00002",
        "num_train_epochs": "1",
    },
    model=model_to_finetune.id,
    display_name=display_name,
    name=name,
    experiment_name=experiment_name,
    tags={"foo_tag": "bar"},
    properties={"my_property": "my_value"},
    output_model_name_prefix=output_model_name_prefix,
created_job = workspace_ml_client.jobs.create_or_update(finetuning_job)
workspace_ml_client.jobs.get(created_job.name)

status = workspace_ml_client.jobs.get(created_job.name).status

import time

while True:
    status = workspace_ml_client.jobs.get(created_job.name).status
    print(f"Current job status: {status}")
    if status in ["Failed", "Completed", "Canceled"]:
        print("Job has finished with status: {0}".format(status))
        break
    else:
        print("Job is still running. Checking again in 30 seconds.")
        time.sleep(30)
finetune_model_name = created_job.outputs["registered_model"]["name"]
finetune_model_name

Implantar um modelo otimizado

Quando o trabalho de ajuste fino for bem-sucedido, você poderá implantar o modelo personalizado.

Importante

Depois de implantar um modelo personalizado e terminar com o ponto de extremidade, lembre-se de limpar os pontos de extremidade inativos. A exclusão de uma implantação inativa não exclui ou afeta o modelo personalizado subjacente, e o modelo personalizado pode ser reimplantado a qualquer momento. Conforme descrito na estrutura de preços do Azure AI Foundry, cada modelo personalizado (finamente ajustado) implantado incorre em um custo de hospedagem por hora, independentemente de estarem sendo feitas chamadas de conclusão ou de conclusão de chat para o modelo. Para saber mais sobre como planejar e gerenciar custos com o Azure AI Foundry, consulte as diretrizes em Plano para gerenciar custos do Serviço de Descoberta de IA do Azure.

# Deploy the model as a serverless endpoint

endpoint_name = f"{normalized_model_name}-ft-{short_guid}"  # Name must be unique
model_id = f"azureml://locations/{workspace.location}/workspaces/{workspace._workspace_id}/models/{finetune_model_name}/versions/1"

Cenários empresariais com suporte para ajuste fino

Há suporte para vários cenários empresariais para o refinamento da implantação padrão. A tabela abaixo descreve as configurações suportadas para rede de armazenamento de usuário e autenticação para garantir uma operação tranquila em cenários empresariais:

Observação

  • A autenticação das conexões de dados pode ser alterada por meio do AI Foundry clicando na conexão do armazenamento de dados em que seu conjunto de dados está armazenado e navegando até a configuração Detalhes de acesso>Método de autenticação.
  • A autenticação de armazenamento pode ser alterada no Armazenamento do Microsoft Azure >Configurações>Configurações página >Permitir acesso à chave da conta de armazenamento.
  • Sa rede de armazenamento pode ser alterada na página >Rede do Armazenamento do Microsoft Azure.
Rede de Armazenamento Autenticação de Armazenamento Autenticação de Conexão de Dados Suporte
Acesso à rede pública = Habilitado Chave de conta habilitada SAS/Chave de conta Sim, UX e SDK
Acesso à rede pública = Habilitado Chave de conta desabilitada Autenticação baseada em Entra (sem credenciais) Sim, UX e SDK

Nota: para UX, pode ser necessário adicionar o Storage Blob Data Reader ou o Storage Blob Data Contributor para sua ID de usuário na conta de armazenamento ou alterar a autenticação da conexão para usar a chave da conta/token SAS
Habilitado a partir das redes virtuais e endereços IP selecionados Chave de conta habilitada Chave de conta Sim, UX e SDK

Observação: para UX, o IP da computação que executa o navegador deve estar na lista selecionada
Habilitado a partir das redes virtuais e endereços IP selecionados Chave de conta habilitada SAS Sim, UX e SDK

Observação: para UX, o IP da computação que executa o navegador deve estar na lista selecionada
Habilitado a partir das redes virtuais e endereços IP selecionados Chave de conta desabilitada Autenticação baseada em Entra (sem credenciais) Sim, UX e SDK.

Nota: para UX, pode ser necessário adicionar o Storage Blob Data Reader ou o Storage Blob Data Contributor para sua ID de usuário na conta de armazenamento ou alterar a autenticação da conexão para usar a chave da conta/token SAS. Certifique-se também de que o IP do computador que executa o navegador esteja na lista selecionada
Acesso à rede pública = Desabilitado Chave de conta habilitada SAS/Chave de conta Sim, UX e SDK.

Nota: para que o upload e o envio de dados UX funcionem, o espaço de trabalho precisa ser acessado de dentro da Vnet que tem acesso apropriado ao armazenamento
Acesso à rede pública = Desabilitado Chave de conta desabilitada Autenticação baseada em Entra (sem credenciais) Sim, UX e SDK.

Nota: para que o upload e o envio de dados UX funcionem, o espaço de trabalho precisa ser acessado de dentro da Vnet que tem acesso apropriado ao armazenamento

Os cenários acima também devem funcionar em um espaço de trabalho de Vnet gerenciada. Veja a configuração do hub do VNET gerenciada AI Foundry aqui: Como configurar uma rede gerenciada para hubs da IA do Azure Foundry

As Chaves Gerenciadas pelo Cliente (CMKs) não são um cenário empresarial com suporte com ajuste de implantação padrão.

Problemas de ajuste fino em configurações de rede exclusivas no ambiente de trabalho e no armazenamento geralmente indicam um problema na configuração da rede.

Implantação entre regiões

O ajuste fino permite a implantação de um modelo ajustado em uma região diferente daquela onde foi originalmente ajustado. Você também pode implantar em uma assinatura/região diferente. As únicas limitações são que a nova região também deve dar suporte ao ajuste fino e, ao implantar a assinatura cruzada, a conta que gera o token de autorização para a implantação deve ter acesso às assinaturas de origem e de destino. A implantação entre assinaturas/regiões pode ser realizada por meio do Python


# Create Cross region FT deployment client
from azure.ai.ml.entities import ServerlessEndpoint
from azure.ai.ml import MLClient
from azure.identity import (
    DefaultAzureCredential,
    InteractiveBrowserCredential,
)

try:
    credential = DefaultAzureCredential()
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    credential = InteractiveBrowserCredential()
try:
    workspace_ml_client = MLClient.from_config(credential=credential)
except:
    workspace_ml_client = MLClient(
        credential,
        subscription_id="<TARGET_SUBSCRIPTION_ID>",
        resource_group_name="<TARGET_RESOURCE_GROUP_NAME>",
        workspace_name="<TARGET_PROJECT_NAME>",
    )

workspace = workspace_ml_client._workspaces.get(workspace_ml_client.workspace_name)
workspace_region = workspace.location
model_to_finetune.tags
supported_regions = model_to_finetune.tags["maas-finetuning-deploy-regions"]
supported_regions
if workspace_region in supported_regions:
    print(f"Creating endpoint in the region:{workspace_region}")
    serverless_endpoint = ServerlessEndpoint(name=endpoint_name, model_id=model_id)
    created_endpoint = workspace_ml_client.serverless_endpoints.begin_create_or_update(
        serverless_endpoint
    ).result()
else:
    raise ValueError(
        f"For the model : {model_to_finetune}, the target region: {workspace_region} is not supported for deployment, the supported regions: {supported_regions}"
    )

Usar um modelo personalizado implantado

Depois que seu modelo personalizado for implantado, você poderá usá-lo como qualquer outro modelo implantado. Você pode continuar a usar os mesmos parâmetros com seu modelo personalizado, como temperatura e max_tokens, como você pode com outros modelos implantados.

endpoint = workspace_ml_client.serverless_endpoints.get(endpoint_name)
endpoint_keys = workspace_ml_client.serverless_endpoints.get_keys(endpoint_name)
auth_key = endpoint_keys.primary_key

import requests

url = f"{endpoint.scoring_uri}/v1/chat/completions"

payload = {
    "max_tokens": 1024,
    "messages": [
        {
            "content": "This script is great so far. Can you add more dialogue between Amanda and Thierry to build up their chemistry and connection?",
            "role": "user",
        }
    ],
}
headers = {"Content-Type": "application/json", "Authorization": f"{auth_key}"}

response = requests.post(url, json=payload, headers=headers)

response.json()

Limpar seus modelos ajustados

Depois de concluir o seu modelo, você executará o código a seguir para limpar seu modelo afinado.

workspace_ml_client.serverless_endpoints.begin_delete(endpoint_name).result()

Considerações de custo e cota para modelos implementados como uma configuração padrão

A cota é gerenciada por implantação. Cada implantação tem um limite de taxa de 200.000 tokens por minuto e 1.000 solicitações de API por minuto. No entanto, atualmente, limitamos uma implantação por modelo e projeto. Entre em contato com o Suporte do Microsoft Azure se os limites de taxa atuais não forem suficientes para seus cenários.

Custo para modelos da Microsoft

Você pode encontrar as informações de preços na guia Preços e termos do assistente de implantação ao implantar modelos da Microsoft (como modelos Phi-3) como uma implantação padrão.

Custo para modelos que não são da Microsoft

Modelos não Microsoft implantados como uma implantação padrão são oferecidos por meio do Azure Marketplace e integrados ao Azure AI Foundry para uso. Você pode encontrar preços do Azure Marketplace ao implantar ou ajustar esses modelos.

Cada vez que um projeto assina uma determinada oferta do Azure Marketplace, um novo recurso é criado para rastrear os custos associados ao seu consumo. O mesmo recurso é usado para acompanhar os custos associados à inferência e ao ajuste. No entanto, vários medidores estão disponíveis para acompanhar cada cenário de modo independente.

Para obter mais informações sobre como acompanhar os custos, consulte Monitorar os custos dos modelos oferecidos por meio do Azure Marketplace.

Uma captura de tela mostrando diferentes recursos correspondentes a diferentes ofertas de modelos e seus medidores associados.

Exemplo de bloco de anotações

Você poderá usar esse notebook de amostra para criar um trabalho de ajuste fino independente para aprimorar a capacidade de um modelo de resumir diálogos entre duas pessoas usando o conjunto de dados Samsum. Os dados de treinamento utilizados são o conjunto de dados ultrachat_200k, que é dividido em quatro divisões adequadas para ajuste fino supervisionado (sft) e classificação de geração (gen). O notebook utiliza os modelos de IA do Azure disponíveis para a tarefa de conclusão de chat (se desejar usar um modelo diferente do usado no notebook, você pode substituir o nome do modelo). O notebook inclui a configuração de pré-requisitos, a seleção de um modelo para ajuste fino, a criação de conjuntos de dados de treinamento e validação, a configuração e o envio do trabalho de ajuste fino e, por fim, a criação de uma implantação sem servidor usando o modelo ajustado para inferência de amostra.

CLI de amostra

Além disso, você pode usar essa CLI de exemplo para criar um trabalho de ajuste fino autônomo para aprimorar a capacidade de um modelo de resumir diálogos entre duas pessoas usando um conjunto de dados.

type: finetuning

name: "Phi-3-mini-4k-instruct-with-amlcompute"
experiment_name: "Phi-3-mini-4k-instruct-finetuning-experiment"
display_name: "Phi-3-mini-4k-instruct-display-name"
task: chat_completion
model_provider: custom
model: 
  path: "azureml://registries/azureml/models/Phi-3-mini-4k-instruct/versions/14"
  type: mlflow_model
training_data: train.jsonl
validation_data:
  path: validation.jsonl
  type: uri_file
hyperparameters:
  num_train_epochs: "1"
  per_device_train_batch_size: "1"
  learning_rate: "0.00002"
properties:
  my_property: "my_value"
tags:
  foo_tag: "bar"
outputs:
  registered_model:
    name: "Phi-3-mini-4k-instruct-finetuned-model"
    type: mlflow_model 

Os dados de treinamento usados são os mesmos demonstrados no notebook do SDK. A CLI emprega os modelos de IA do Azure disponíveis para a tarefa de conclusão de chat. Se você preferir usar um modelo diferente do da amostra da CLI, poderá atualizar os argumentos, como "caminho do modelo", de acordo.

Filtragem de conteúdo

Os modelos de implantação padrão são protegidos pela Segurança de Conteúdo de IA do Azure. Quando implantados em pontos de extremidade em tempo real, você pode recusar essa funcionalidade. Com a Segurança de Conteúdo de IA do Azure habilitada, o prompt e a conclusão passam por um conjunto de modelos de classificação destinados a detectar e impedir a saída de conteúdo prejudicial. O sistema de filtragem de conteúdo detecta e executa ações em categorias específicas de conteúdo potencialmente prejudicial em prompts de entrada e conclusões de saída. Saiba mais sobre de Segurança de Conteúdo de IA do Azure.

Próximas etapas