微调
在深度学习和自然语言处理(NLP)领域,大规模语言模型如BERT、GPT-3等通过在大量数据上进行预训练获得了强大的语言理解和生成能力。这些预训练模型通常需要进行微调(Fine-tuning),以便在特定的下游任务上表现更好。微调可以采取不同的形式,包括full、LoRA和Q-LoRA。
- Full微调(Full Fine-tuning)
Full微调是最传统的微调方法,指的是在特定任务上对整个预训练模型的所有参数进行更新。这种方法简单直接,可以使模型完全适应新任务,但它有两个缺点:一是参数量大,更新所有参数需要大量的计算资源;二是容易过拟合,特别是当下游任务数据量不足时。 - LoRA(Low-Rank Adaptation)
LoRA是一种新颖的微调方法,它通过将模型中的权重矩阵分解为低秩矩阵来减少需要更新的参数数量。基本思想是在预训练模型的基础上引入额外的小型矩阵,并且只更新这些小型矩阵。这些小型矩阵与原始权重矩阵进行某种形式的交互(例如加法或者变换),从而微调模型的行为。LoRA的好处在于,它可以大幅减少微调时需要更新的参数数量,从而降低计算成本并减小过拟合的风险。 - Q-LoRA
Q-LoRA是在LoRA的基础上进一步发展的技术。它旨在通过量化技术进一步减少模型参数。量化通常涉及将模型的权重和激活函数的精度降低,例如从32位浮点数减少到8位整数。这样不仅可以减少模型的存储空间,也可以加快计算速度。Q-LoRA通过在LoRA的基础上应用量化,结合了低秩逼近和量化的优势,进一步提高了模型微调的效率。
这三种方法各有优势和用途,选择哪一种方法取决于具体任务的需求、可用的计算资源以及对模型大小和速度的约束。在实际应用中,研究者和工程师需要根据具体情况做出选择。
经过 LoRA 微调后的模型无法与量化模型合并参数,因为会损失过多的精度
指令跟随是一种让语言模型根据给定的提示来执行特定任务的能力。例如,指令可以是继续聊天,对这段文本进行总结,或者是提供一份销售某个小部件公司的名单。指令跟随模型可以执行任何你给定的指令,只要它们是合理和安全的。
指令跟随是语言模型的一种重要应用,可以让用户更方便地利用语言模型的强大功能。指令跟随模型的训练方法有很多,例如使用人工编写的指令跟随数据集,使用人类反馈的强化学习,或者使用自我指令创建等技术。
DeepSpeed是一个由微软开发的开源深度学习优化库,旨在提高大规模模型训练的效率和可扩展性。它通过多种技术手段来加速训练,包括模型并行化、梯度累积、动态精度缩放、本地模式混合精度等。DeepSpeed还提供了一些辅助工具,如分布式训练管理、内存优化和模型压缩等,以帮助开发者更好地管理和优化大规模深度学习训练任务。此外,deepspeed基于pytorch构建,只需要简单修改即可迁移。DeepSpeed已经在许多大规模深度学习项目中得到了应用,包括语言模型、图像分类、目标检测等等。
Swift 框架
- 支持的SFT方法: lora, qlora, longlora, qalora, 全参数微调, 部分参数微调.
- 支持的特性: 模型量化, DDP, 模型并行, gradient checkpointing, 支持推送ModelScope Hub, 自定义数据集, 多模态和Agent SFT, 多轮对话, DPO, 自我认知微调, ...
- 支持的模型: [详细信息]
- 多模态:
- qwen-vl 系列、qwen-audio 系列、yi-vl 系列、cogagent 系列、internlm-xcomposer2 系列
- 通用:
- 金融:
- tongyi-finance 系列:
- 代码:
- codefuse 系列、deepseek-coder 系列:、codegeex2 系列、phi 系列
- 数学:
- internlm2-math 系列、deepseek-math 系列
- 多模态:
- 支持的数据集: [详细信息]