Guia de Fine-tuning com XTuner na Plataforma Hengyuan Cloud para Modelos de Linguagem

Este guia demonstra como utilizar a plataforma Hengyuan Cloud para fine-tuning de modelos de linguagem com XTuner, aproveitando recursos de GPU na nuvem. O processo envolve preparação do ambiente, configuração do modelo e treinamento usando um conjunto de dados de exemplo.

  1. Configuração do Ambiente XTuner

Primeiro, crie um diretório para o projeto e instale o XTuner a partir do código-fonte:

# Crie um diretório de trabalho e entre nele
mkdir projeto_finetune && cd projeto_finetune

# Clone a versão específica do repositório XTuner
git clone -b v0.1.17 https://github.com/InternLM/xtuner

# Acesse o diretório do código-fonte
cd xtuner

# Instale o XTuner em modo de desenvolvimento com todas as dependências
pip install -e '.[all]'

A instalação pode demorar alguns minutos. É recomendável usar uma versão do Python entre 3.8 e 3.10 para evitar incompatibilidades.

  1. Preparação dos Dados e Configuração

Utilize o conjunto de dados de exemplo fornecido pela documentação oficial, disponível em abachaa/Medication_QA_MedInfo2019. Após o upload para o ambietne de nuvem, verifique as configurações disponíveis:

# Liste os arquivos de configuração pré-definidos
xtuner list-cfg

Para o modelo internlm2-chat-1.8b, copie a configuração correspondente para o diretório de dados:

# Acesse o diretório dos dados
cd /caminho/para/dados_medicos

# Copie o arquivo de configuração específico
xtuner copy-cfg internlm2_chat_1_8b_qlora_alpaca_e3 .

Edite o arquivo de confiugração copiado para apontar para os caminhos corretos do modelo e do dataset. Substitua as referências de caminhos e ajuste as funções de mapeamento de dados conforme necessário. Por exemplo:

# Altere o caminho do modelo base
pretrained_model_path = "/caminho/para/internlm2-chat-1_8b"

# Atualize o caminho do dataset de treino
training_data_path = "/caminho/para/dataset/treino.jsonl"

Remova funções de mapeamento desnecessárias e mantenha apenas as relevantes para o template de prompt.

  1. Execução do Fine-tuning

Inicie o treinamento do modelo usando XTuner. Se ocorrerem problemas de memória na GPU, desative o DeepSpeed:

# Execute o treinamento sem DeepSpeed para economizar memória
xtuner train config_finetune_internlm2.py

Após o treinamento, os checkpoints serão salvos em um diretório de trabalho. Converta o checkpoint para o formato Hugging Face:

# Crie um diretório para o modelo adaptado
mkdir modelo_hf

# Defina variáveis de ambiente para compatibilidade
export MKL_SERVICE_FORCE_INTEL=1
export MKL_THREADING_LAYER=GNU

# Converta o checkpoint para o formato Hugging Face
xtuner convert pth_to_hf ./config_finetune_internlm2.py ./work_dirs/config_finetune_internlm2/iter_200.pth ./modelo_hf

Em seguida, mescle o adapter com o modelo base:

# Mescle o adapter Hugging Face com o modelo original
xtuner convert merge ./internlm2-chat-1_8b ./modelo_hf ./modelo_final --max-shard-size 2GB
  1. Teste do Modelo Fine-tuned

Realize um teste de interação com o modelo ajustado para verificar o efeito do fine-tuning:

# Inicie uma sessão de chat com o modelo final
xtuner chat ./modelo_final --prompt-template internlm2_chat

Compare as respostas do modelo antes e após o fine-tuning usando o mesmo prompt. O modelo fine-tuned tende a gerar respostas mais concisas e aderentes ao estilo do dataset de treinamento, melhorando a adesão a instruções específicas.

Tags: XTuner InternLM2 Fine-tuning GPU Cloud Computing

Publicado em 6-26 21:06