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.
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.
Em seguida, selecione um modelo - por exemplo, Phi-3-mini-4k-instruct - do Catálogo de Modelos e, em seguida, selecione Configurar Projeto:
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):
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.