如何使用一个工具来微调Llama和其他LLM
![《LLM Fine-Tuning初学者指南》 四海 第1张-四海吧 Image by author](https://miro.medium.com/v2/resize:fit:640/format:webp/1*GLWNOUjJ-a863PMJ0FvDeA.jpeg)
对大型语言模型(LLMs)的兴趣日益增长,导致了许多旨在简化它们的训练过程的工具和封装器的涌现。
流行的选项包括LMSYS的FastChat(用于训练Vicuna)和Hugging Face的transformers/trl库(在我之前的文章中使用)。此外,每个大型LLM项目(如WizardLM)都倾向于有自己的训练脚本,受原始的Alpaca实现启发。
在本文中,我们将使用由OpenAccess AI Collective创建的Axolotl工具。我们将使用它在一个由1000个Python代码样本组成的evol-instruct数据集上对Code Llama 7b模型进行微调。
🤔 为什么选择Axolotl?
Axolotl的主要吸引力在于它提供了一站式解决方案,包括众多功能、模型架构和一个活跃的社区。以下是我对它的一些喜爱之处的快速列表:
- 配置:用于训练LLM的所有参数都整洁地存储在yaml配置文件中。这使得共享和复现模型变得方便。你可以在这里看到Llama 2的一个示例。
- 数据集灵活性:Axolotl允许指定多个数据集,这些数据集具有不同的提示格式,例如alpaca(
{"instruction": "...", "input": "...", "output": "..."}
)、sharegpt:chat({"conversations": [{"from": "...", "value": "..."}]}
)和原始补全({"text": "..."}
)。合并数据集是无缝的,统一提示格式的麻烦被消除了。 - 功能:Axolotl集成了最先进的技术,如FSDP、deepspeed、LoRA、QLoRA、ReLoRA、sample packing、GPTQ、FlashAttention、xformers和rope scaling。
- 实用工具:集成了许多用户友好的实用工具,包括添加或修改特殊标记或自定义wandb配置。
使用此工具训练的一些知名模型包括OpenAccess AI Collective的Manticore-13b和Eric Hartford的Samantha-1.11–70b。与其他封装器一样,它构建在transformers库之上,并使用了其中的许多功能。