Skip to content

Latest commit

 

History

History
77 lines (59 loc) · 2.84 KB

README.md

File metadata and controls

77 lines (59 loc) · 2.84 KB

ChatGLM3-6B-base 微调示例

本目录提供 ChatGLM3-6B-base 模型的微调示例,目前,仅包含了Lora微调。

如果将模型下载到了本地,本文和代码中的 THUDM/chatglm3-6b-base 字段均应替换为相应地址以从本地加载模型。

运行示例需要 python>=3.10,除基础的 torch 依赖外,示例代码运行还需要依赖

pip install requirements.txt

多轮对话格式

base模型不具备对话能力,仅能够生成单轮回复。如果你希望使用多轮对话模型,使用Chat模型进行微调。

数据集要求

格式上,请使用alpaca数据集。

{"context": "hello", "target": "hi,I am ChatGLM3"}

其中,context是对话的上文,也就是模型的输入,target是对话的下文,也就是模型的输出。

微调模型

以下脚本提供了微调模型的参考方式。

./scripts/finetune_lora.sh  # 使用Lora微调

提示

  1. 微调代码在开始训练前,会先打印首条训练数据的预处理信息,显示为

    Sanity Check >>>>>>>>>>>>>
             '[gMASK]':  64790 ->   -100
                 'sop':  64792 ->   -100
          '<|system|>':  64794 ->   -100
                    '':  30910 ->   -100
                  '\n':     13 ->   -100
              'Answer':  20115 ->   -100
                 'the':    267 ->   -100
           'following':   1762 ->   -100
                      ...
                'know':    683 ->   -100
                 'the':    267 ->   -100
            'response':   3010 ->   -100
             'details':   3296 ->   -100
                   '.':  30930 ->   -100
       '<|assistant|>':  64796 ->   -100
                    '':  30910 ->  30910
                  '\n':     13 ->     13
                   'I':    307 ->    307
                'need':    720 ->    720
                  'to':    289 ->    289
                 'use':    792 ->    792
                      ...
                    '':      0 ->   -100
                    '':      0 ->   -100 (有若干个)
    <<<<<<<<<<<<< Sanity Check
    

    字样,每行依次表示一个 detokenized string, token_id 和 target_id。可在日志中查看这部分的 loss_mask 是否符合预期。若不符合,可能需要调整代码或数据。

  2. 参考显存用量

    • 按照官方脚本的默认参数运行,每一张显卡占用显存为 23GB
  3. 若尝试后发现显存不足,可以考虑

    • 尝试降低 DEV_BATCH_SIZE 并提升 GRAD_ACCUMULARION_STEPS
    • 尝试降低 MAX_SEQ_LEN,但是这可能会影响模型的性能

注意事项

  • 基座模型不具备对话能力,仅能够生成单轮回复。如果你希望使用多轮对话模型,使用Chat模型进行微调。
  • 请注意,运行本脚本,你还需要安装本目录下的 requirements.txt 中的所有内容。