Partilhar via


Ajuste um modelo com o AI Toolkit for VS Code

O AI Toolkit for VS Code (AI Toolkit) é uma extensão VS Code que permite baixar, testar, ajustar e implantar modelos de IA com seus aplicativos ou na nuvem. Para obter mais informações, consulte a visão geral do AI Toolkit.

Observação

Documentação adicional e tutoriais para o AI Toolkit for VS Code estão disponíveis no repositório GitHub: microsoft/vscode-ai-toolkit. Você encontrará orientações sobre o Playground, como trabalhar com modelos de IA, ajustar modelos locais e baseados em nuvem e muito mais.

Neste artigo, você aprenderá a:

  • Configure um ambiente local para ajustar.
  • Execute um trabalho de ajuste fino.

Pré-requisitos

  • Concluído Introdução ao AI Toolkit for Visual Studio Code.
  • Se você estiver a usar um computador Windows para afinar, instale o Windows Subsystem for Linux (WSL). Consulte Como instalar o Linux no Windows com WSL para obter o WSL e uma distribuição Linux padrão instalada. A distribuição WSL Ubuntu 18.04 ou superior deve ser instalada e definida como a distribuição padrão antes de usar o AI Toolkit para VS Code. Saiba como alterar a distribuição padrão.
  • Se você estiver usando um Linux computador, deve ser uma distribuição Ubuntu 18.04 ou superior.
  • Usar o modelo neste tutorial requer GPUs NVIDIA para ajuste fino. Existem outros modelos no catálogo que podem ser carregados em dispositivos Windows usando CPUs ou NPUs.

Dica

Certifique-se de ter os drivers NVIDIA mais recentes instalados no seu computador. Se lhe for dada a escolha entre Driver Pronto para Jogo ou Driver Studio, faça o download do Driver Studio.

Você precisará saber o modelo da sua GPU para baixar os drivers corretos. Para descobrir qual GPU você tem, consulte Como verificar sua GPU e por que ela é importante.

Configuração do ambiente

Para verificar se você tem todos os pré-requisitos necessários para executar trabalhos de ajuste fino em seu dispositivo local ou VM na nuvem, abra a paleta de comandos (Shift+Control+P) e pesquise AI Toolkit: Validar pré-requisitos do ambiente.

Se o dispositivo local passar nas verificações de validação, o botão Configurar Ambiente WSL será ativado para você selecionar. Isto irá instalar todas as dependências necessárias para realizar tarefas de ajuste de precisão.

VM na nuvem

Se o teu computador local não tiver um dispositivo GPU Nvidia, é possível ajustar parâmetros numa VM na nuvem - tanto Windows como Linux - com uma GPU Nvidia (se tiveres disponibilidade). No Azure, você pode ajustar com as seguintes séries de VMs:

  • Série NCasT4_v3
  • NC A100 série v4
  • ND A100 série v4
  • NCads H100 série v5
  • Série NCv3
  • NVadsA10 Série V5

Dica

VS Code permite que você se conecte remotamente em sua VM na nuvem. Se você não estiver familiarizado com esse recurso, leia o tutorial Desenvolvimento remoto sobre SSH

Ajuste um modelo

O AI Toolkit usa um método chamado QLoRA, que combina quantização e adaptação de baixa classificação (LoRA) para ajustar modelos com seus próprios dados. Saiba mais sobre QLoRA em QLoRA: Eficiência no ajuste fino de LLMs quantizados.

Etapa 1: Configurar o projeto

Para iniciar uma nova sessão de ajuste fino usando o QLoRA, selecione o item Ajuste fino na seção Ferramentas no painel esquerdo do AI Toolkit.

  1. Comece por introduzir um Nome do Projeto exclusivo e um Local do Projeto. Uma nova pasta com o nome do projeto especificado será criada no local selecionado para armazenar os arquivos do projeto.

  2. Em seguida, selecione um modelo - por exemplo, Phi-3-mini-4k-instruct - do Catálogo de Modelos e, em seguida, selecione Configurar Projeto:

    Ajustar a configuração do projeto

  3. Em seguida, ser-lhe-á solicitado que defina as configurações do projeto de afinação. Certifique-se de que a caixa de seleção Afinar localmente esteja marcada (no futuro, a extensão VS Code permitirá transferir o ajuste fino para a nuvem):

    Ajuste as configurações

Configurações de inferência de modelo

Há duas configurações disponíveis na seção de inferência do modelo :

Cenário Descrição
nome do ambiente Conda O nome do ambiente conda a ser ativado e usado para o processo de afinação. Este nome deve ser exclusivo na sua instalação Conda.
Modelo de prompt de inferência Modelo de prompt a ser usado no momento da inferência. Certifique-se de que o resultado corresponde à versão afinada.

Configurações de dados

As seguintes configurações estão disponíveis na seção Data para configurar as informações do conjunto de dados:

Cenário Descrição
Nome do conjunto de dados O nome do conjunto de dados a ser usado para ajustar o modelo.
Divisão de treino O nome da divisão de treinamento para seu conjunto de dados.
Tipo de conjunto de dados O tipo de conjunto de dados a ser usado.
Colunas de texto Os nomes das colunas no conjunto de dados para preencher o prompt de treinamento.
Modelo de texto O template de prompt a ser usado para afinar o modelo. Isso usa tokens de substituição das colunas de texto .
Estratégia Corpus Indica se pretende juntar as amostras ou processá-las linha por linha.
Comprimento máximo da fonte O número máximo de tokens por amostra de treinamento.
Preencher até ao comprimento máximo Adicione um token PAD à amostra de treino até atingir o número máximo de tokens.

Ajuste as configurações

As seguintes configurações estão disponíveis na seção Ajuste fino para configurar ainda mais o processo de ajuste fino:

Configurações Tipo de dados Valor padrão Descrição
Tipo de Dado de Computação cadeia de caracteres bfloat16 O tipo de dados para pesos de modelo e pesos de adaptador. Para um modelo quantizado de 4 bits, este é também o tipo de dados usado para os módulos quantizados. Valores válidos: bfloat16, float16 ou float32.
Tipo Quantitativo cadeia de caracteres nf4 O tipo de dados de quantização a ser usado. Valores válidos: fp4 ou nf4.
Quant duplo Booleano Sim Se se deve usar quantização aninhada, onde as constantes de quantização da primeira quantização sejam quantizadas novamente.
Lora r Inteiro 64 A dimensão da atenção de Lora.
Lora alfa Flutuador 16 O parâmetro alfa para o escalonamento de Lora.
Abandono de Lora Flutuador 0.1 A probabilidade de abandono para as camadas de Lora.
Tamanho do conjunto de dados de avaliação Flutuador 1024 O tamanho do conjunto de dados de validação.
Sementes Inteiro 0 Uma semente aleatória para inicialização.
Semente de dados Inteiro 42 Uma semente aleatória a utilizar com amostradores de dados.
Tamanho do lote de treino por dispositivo Inteiro 1 O tamanho do lote por GPU para treinamento.
Por dispositivo, tamanho do lote de avaliação Inteiro 1 O tamanho do lote por GPU para avaliação.
Etapas de acumulação de gradiente Inteiro 4 O número de etapas de atualizações para acumular os gradientes antes de executar um passo para trás/atualização.
Ativar verificação de ponto de gradiente Booleano Sim Use pontos de verificação de gradiente. Recomenda-se para poupar memória.
Taxa de aprendizagem Flutuador 0.0002 A taxa de aprendizagem inicial para AdamW.
Passos máximos Inteiro -1 Se definido como um número positivo, o número total de etapas de treinamento a serem executadas. Isto substitui o parâmetro num_train_epochs. No caso de usar um conjunto de dados iterável finito, o treinamento pode parar antes de atingir o número definido de etapas quando todos os dados estiverem esgotados.

Etapa 2: Gerar projeto

Depois que todos os parâmetros estiverem definidos, clique em Gerar projeto. Isso executará as seguintes ações:

  • Inicie o download do modelo.
  • Instale todos os pré-requisitos e dependências.
  • Crie o espaço de trabalho VS Code.

Quando o modelo é transferido e o ambiente está pronto, pode-se iniciar o projeto a partir do AI Toolkit selecionando Janela de relançamento no espaço de trabalho na página Passo 3 - Criar projeto. Isso iniciará uma nova instância de VS Code, conectada ao seu ambiente.

Observação

Você pode ser solicitado a instalar extensões adicionais, como fluxo de prompt para VS Code. Para uma experiência de ajuste fino ideal, instale-os para prosseguir.

A janela relançada terá em seu espaço de trabalho as seguintes pastas:

Nome da pasta Descrição
conjunto de dados Esta pasta contém o conjunto de dados para o modelo de (dataset-classification.json - um arquivo de linhas JSON contendo frases e tons). Se você definir seu projeto para usar um arquivo local ou conjunto de dados Hugging Face, poderá ignorar essa pasta.
Afinamento Os arquivos de configuração do Olive para executar o trabalho de tuning fino. O Olive é uma ferramenta de otimização de modelo com reconhecimento de hardware fácil de usar que compõe técnicas líderes do setor em compactação, otimização e compilação de modelos. Dado um modelo e hardware alvo, a Olive compõe as melhores técnicas de otimização adequadas para produzir o(s) modelo(s) mais eficiente(is) para inferir na nuvem ou na periferia, tendo em conta um conjunto de restrições, como precisão e latência.
inferência Exemplos de código para inferência com um modelo ajustado.
Como mencionado abaixo Para ajuste fino e inferência usando o Serviço de Aplicativo de Contêiner do Azure (em breve). Esta pasta contém o Bicep e os arquivos de configuração para provisionar o Serviço de Aplicativo de Contêiner do Azure.
Configuração Arquivos usados para configurar o ambiente conda. Por exemplo, os requisitos do pip.

Etapa 3: Executar o trabalho de ajuste fino

Agora você pode ajustar o modelo usando:

# replace {conda-env-name} with the name of the environment you set
conda activate {conda-env-name}
python finetuning/invoke_olive.py 

Importante

O tempo necessário para ajustar dependerá do tipo de GPU, do número de GPUs, do número de etapas e do número de épocas. Isso pode ser demorado (por exemplo, pode levar várias horas).

Se você quiser apenas fazer um teste rápido, considere reduzir o número de etapas máximas em seu arquivo olive-config.json. O ponto de verificação é usado e, portanto, a próxima execução de ajuste fino continuará a partir do último ponto de verificação.

Os pontos de verificação e o modelo final serão salvos em models pasta do seu projeto.

Etapa 4: Integrar o modelo ajustado ao seu aplicativo

Em seguida, execute a inferência com o modelo ajustado através de chats em console, web browser ou prompt flow.

cd inference

# Console interface.
python console_chat.py

# Web browser interface allows to adjust a few parameters like max new token length, temperature and so on.
# User has to manually open the link (e.g. http://127.0.0.1:7860) in a browser after gradio initiates the connections.
python gradio_chat.py

Dica

As instruções também estão disponíveis na página README.md, que pode ser encontrada na pasta do projeto.