什么是大模型的微调
大模型的微调(Fine-tuning),通常是指在已经预训练好的大型语言模型(Large Language Models,简称 LLMs)基础上,使用特定的数据集进行进一步的训练,以使模型适应特定的任务或领域。这个过程可以让模型学习到特定领域的知识,优化其在特定 NLP 任务中的表现,比如情感分析、实体识别、文本分类、对话生成等
- 预训练模型:在微调之前,大模型通常已经经过大量的无监督预训练,这使得模型掌握了语言的基本统计特征和知识,具备了预测下一个词的能力
- 任务特定的数据集:微调时,会使用与特定任务相关的标注数据对模型进行训练。这些数据提供了模型需要学习的特定领域的信息
- 权重调整:微调过程中,模型的权重会根据特定任务的数据进行调整。这可以是全量参数更新(Full Fine-tuning),也可以是参数高效微调(Parameter-Efficient Fine-Tuning,PEFT),后者只更新模型中的一部分参数
PEFT(Parameter-Efficient Fine-Tuning)
与传统的微调方法相比,PEFT 有效地降低了计算和内存需求,因为它只对模型参数的一小部分进行微调,同时冻结大部分预训练网络。这种策略减轻了大语言模型灾难性的遗忘,并显著降低了计算和存储成本
PEFT 的主要方法见 Adapters 和 Soft prompts
框架综述
- huggingface/peft:huggingface 开源的参数高效微调(Parameter-Efficient Fine-Tuning)基础工具
- modelscope/ms-swift:modelscope 开源的轻量级微调框架,以中文大模型为主,支持各类微调方法。可以通过执行脚本进行微调,也可以在代码环境中一键微调,自带微调数据集和验证数据集,可以一键微调+模型验证
- hiyouga/LLaMA-Factory:一个全栈微调工具,支持海量模型+各种主流微调方法。它支持运行脚本微调、基于 Web 端微调,并自带基础训练数据集。除微调外,还支持增量预训练和全量微调
- NVIDIA/Megatron-LM:NVIDIA 开发的大模型训练框架,支持大规模的预训练和微调。适用于需要极高性能和规模的大模型训练和微调