O sujeito recentemente tentou usar o LoRA para ajustar o ChatGLM em seus próprios dados. Embora existam muitos códigos relacionados ao LoRA no GitHub, o sujeito ainda encontrou muitos problemas durante o processo de implementação. Agora vamos resolver os problemas encontrados para sua referência O código relacionado também será organizado no GitHub.
1. Erro: esperava que todos os tensores estivessem no mesmo dispositivo, mas encontrou pelo menos dois dispositivos, cuda:1 e cuda:0!
Este problema será encontrado ao usar o treinamento multicartão de velocidade profunda. O motivo é que, devido a uma atualização do ChatGLM, os parâmetros do modelo antigo baixado offline e a nova versão carregada pelo AutoModel entrarão em conflito.
Você pode usar o arquivo config.json no modelo para identificar se o ChatGLM baixado para o local é uma versão antiga ou uma nova versão.
O vocab_size da versão antiga do ChatGLM é 150528:
{
"_name_or_path": "THUDM/chatglm-6b",
"architectures": [
"ChatGLMModel"
],
"auto_map": {
"AutoConfig": "configuration_chatglm.ChatGLMConfig",
"AutoModel": "modeling_chatglm.ChatGLMForConditionalGeneration",
"AutoModelForSeq2SeqLM": "modeling_chatglm.ChatGLMForConditionalGeneration"
},
"bos_token_id": 150004,
"eos_token_id": 150005,
"pad_token_id": 20003,
"hidden_size": 4096,
&