Charent
Charent
请升级你的python到3.10及以上版本。3.9及以下版本不支持参数类型标识`doc: list[str] `,只支持`doc: List[str]`,本项目几乎所有的参数类型都是3.10之后版本的写法。
我这边是可以的,整个SFT都是在16G显存的显卡上进行的,如果显存占用异常,需要检查: 1. 检查你的数据集的最大文本长度,看是不是有特别长的文本,输入文本和输出文本要加在一起算长度。 2. 在`main`函数中增加`torch.set_default_dtype(torch.bfloat16)`,默认使用`bf16`数据格式。代码中的默认参数是AMP混合精度,即模型参数及优化器状态使用FP32,梯度使用bf16,优化器状态是最占显存的。 3. 不使用`adamw`优化器,使用`adafactor`或者`Lion`优化器,这两个优化器的参数使用和`adamw`不一样,如`Lion`需要更低的学习率,详情请看官方文档。 4. `RuntimeError: No executable batch size found, reached zero.`这个错误请检查你的数据集,是不是有空数据,空字符串也算空数据,或者是太长的数据没有做截断。 5. 减少你的`batch_size`大小,想要获得更大的`batch_size`效果,请用梯度累积`gradient_accumulation`。
`RuntimeError: No executable batch size found, reached zero`这个错误请参考这两个issues:[issues/37](https://github.com/charent/ChatLM-mini-Chinese/issues/37)和[issues/40](https://github.com/charent/ChatLM-mini-Chinese/issues/40)
这个tag的代码对应的权重是开源的[Phi2-mini-Chinese/tree/v1.0](https://github.com/charent/Phi2-mini-Chinese/tree/v1.0),可以从readme中提到的huggingface仓库下载权重,注意tansformers版本,请用权重config.json中的版本。dev分支的权重还没做完,所以没开源。
有的,见[dpo_data_process.py](https://github.com/charent/ChatLM-mini-Chinese/blob/main/utils/dpo_data_process.py)和[raw_data_process.py](https://github.com/charent/ChatLM-mini-Chinese/blob/main/utils/raw_data_process.py)
试试用Windows训练,把硬盘当作内存用。另外,可以对数据集进行随机采样,没必要用全部的数据训练tokenizer。