Introduction to LLMs Fine-tuning

[May 29] Init doc

可用的 LLMs 微调框架

LLaMA-Factory

xtuner

unsloth

简单介绍一下

Llama_Factory 提供了最多的微调方法，有很多来自最新的学术论文，包括 LongLora 等等；最新的框架，包括 Unsloth。

Xtuner 则提供了较为丰富的文档，和很多优化技巧，但是微调技术比较单一，只有基础的 Lora 以及 QLora。

Unsloth 则提供不错的文档，但是同样只提供少量的微调方案。

如果你的需求很简单，例如用 24G 显存在一个普遍的模型如 Llama3 上微调一个长度很短的对话指令数据集（例如 alpaca）, 使用上面的任何一个库都可以。

一般步骤

制作数据集

数据集根据格式，基本上可以分为 alpaca 以及 sharegpt 两种类型。
而根据微调类型，可以分为 Supervised Fine-Tuning Dataset 和 Pretraining Dataset，前者用于指令微调对话用途，后者用于增量预训练。
关于制作数据集的方式，完全可以参考 LLaMA-Factory/data/README.md at main・hiyouga/LLaMA-Factory。

选择微调技术

最基本的微调方法是 Lora，如果想使用更少的显存可以用 QLora，Q 意味着 Quantized。
如果有很长的序列要求但是只有显存捉急，可以考虑 Unsloth + Flash Attention 2。
Llama_factory 提供了非常多的微调技术，可供挑选。

遵循框架的文档

微调的一些常用技术

RoPE Scaling

它支持了任意长度的微调，例如 Llama3 只在 8K 长度预训练，但是使用它可以任意长度微调。

FlashAttention

减少训练时间以及显存占用。

遇到问题的解决方案：

Google

repo 里的 issue