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.
- 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.
- 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.
- 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
- 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.