本文对 Llama Factory、Unsloth 和 Hugging Face 在微调大型语言模型方面的全面性能分析!
大型语言模型(LLMs)的领域已经发生了巨大变化,微调已成为将这些模型部署到特定应用中的关键步骤。虽然预训练通过在大量文本语料库上使用自监督学习构建模型的基础知识,但监督式微调(SFT)则使用标记数据将这些预训练模型适应特定任务。
将预训练视为给模型提供关于世界的通用知识,而微调则像是教它一个特定职业。这个过程的专业化至关重要,因为它:
现代 SFT 方法利用了几个关键技术,每个技术都基于突破性的研究:
2. Llama Factory
3.Unsloth
为了进行公平的比较,我们进行了广泛的测试,使用以下方法:
🏭 Llama Factory:2 块 NVIDIA A100 80GB GPU
🚀 Unsloth:1 块 NVIDIA A100 80GB GPU
🤗 Hugging Face:1 块 NVIDIA A100 80GB GPU
💬 大约94,000次对话
📝 总计 3500 万个 token
基础模型:🦙 Llama 3.1 8B Instruct
LoRA 配置:
🎯 排名:42
🎮 Alpha:72
💧 Dropout:0.1
不同超参数:
📏 最大序列长度:256,512,1024,2048
📦 批处理大小:4,8,16,32,64
🔄 迭代次数:15
所有曲线的上升趋势都表明序列长度对训练时间的影响非常显著。这主要是因为注意力机制的二次复杂度(n²)——当序列长度加倍时,计算成本会翻四倍。这解释了为什么当我们从 256 个令牌增加到 2048 个令牌时,训练时间的增加会更加陡峭。🔄
Llama Factory 双 GPU 演示:
⚡ 比 Unsloth 快 33%
🔥 比 Hugging Face 快 54%
💪 更好的扩展性,支持更大的批量大小
Unsloth 在内存效率方面表现出特别令人印象深刻的性能:
💪 可保持至批大小32的稳定性,序列长度可达2048
🚀 仅在批大小64时出现内存不足,序列长度1024+
⭐ 比 HF 表现更优,HF 在批大小 32、序列长度 1024 时更早出现内存不足