首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度探索 DeepSeek 微调:LoRA 与全参数微调实战指南

深度探索 DeepSeek 微调:LoRA 与全参数微调实战指南

原创
作者头像
Swift社区
发布于 2025-02-07 07:33:49
发布于 2025-02-07 07:33:49
6.5K0225
代码可运行
举报
文章被收录于专栏:AI 大数据AI 大数据
运行总次数:225
代码可运行

摘要

DeepSeek 作为强大的大模型,提供了优质的基础能力,但在某些特定任务上,直接使用预训练模型可能无法满足需求。本篇文章将介绍 LoRA(Low-Rank Adaptation)、全参数微调 等微调策略,并提供详细的代码示例,帮助开发者高效定制 DeepSeek 以适应特定任务。

为什么要微调 DeepSeek?

虽然 DeepSeek 具备强大的通用能力,但在特定任务(如医学、法律、金融等领域),直接使用可能会导致:

  • 模型泛化能力不足:无法精准理解专业术语或行业特定语言风格。
  • 推理性能欠佳:无法高效完成某些需要深度推理的任务。
  • 资源浪费:直接使用完整大模型进行训练需要极高计算资源。

因此,采用高效微调策略(如 LoRA、全参数微调)可以在减少计算资源消耗的同时,实现高效定制化优化

常见微调策略

  1. LoRA(低秩适配)
  • 适用于 计算资源有限 的场景。
  • 只对部分权重进行低秩矩阵更新,减少显存占用
  • 训练速度快,适合小样本微调。
  1. 全参数微调(Full Fine-tuning)
  • 适用于 计算资源充足,任务复杂 的场景。
  • 对模型所有参数进行更新,适用于大规模数据训练
  • 训练成本高,但微调效果最佳。

LoRA 微调 DeepSeek

LoRA(Low-Rank Adaptation)是一种高效的参数高效微调方法。其核心思想是在预训练权重的基础上添加可训练的低秩适配层,从而减少计算开销。

环境准备

安装依赖
代码语言:bash
AI代码解释
复制
pip install torch transformers peft accelerate
加载 DeepSeek 模型
代码语言:python
代码运行次数:135
运行
AI代码解释
复制
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "deepseek-ai/deepseek-mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

LoRA 配置

代码语言:python
代码运行次数:24
运行
AI代码解释
复制
from peft import LoraConfig, get_peft_model

# 配置 LoRA 训练参数
lora_config = LoraConfig(
    r=8,  # 低秩矩阵的秩
    lora_alpha=32,  # LoRA 缩放因子
    lora_dropout=0.1,  # dropout 率
    bias="none",
    target_modules=["q_proj", "v_proj"],  # 仅对部分层进行微调
)

# 应用 LoRA
model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

训练 LoRA**

代码语言:python
代码运行次数:26
运行
AI代码解释
复制
from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir="./lora_model",
    per_device_train_batch_size=4,
    num_train_epochs=3,
    save_steps=100,
    logging_dir="./logs",
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=my_train_dataset,  # 替换为你的数据集
)
trainer.train()

全参数微调 DeepSeek

全参数微调适用于 数据量大任务复杂 的场景,需要对模型所有参数进行更新,计算资源消耗较高。

环境准备

代码语言:bash
AI代码解释
复制
pip install deepspeed transformers torch

加载 DeepSeek 模型

代码语言:python
代码运行次数:9
运行
AI代码解释
复制
from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "deepseek-ai/deepseek-mistral-7b"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

配置训练参数

代码语言:python
代码运行次数:5
运行
AI代码解释
复制
from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./full_finetune",
    per_device_train_batch_size=2,
    num_train_epochs=3,
    save_strategy="epoch",
    report_to="tensorboard",
    logging_dir="./logs",
    deepspeed="./ds_config.json"  # DeepSpeed 加速
)

训练模型

代码语言:python
代码运行次数:4
运行
AI代码解释
复制
from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=my_train_dataset,  # 替换为你的数据集
)
trainer.train()

LoRA vs. 全参数微调

方式

计算资源

适用场景

LoRA

轻量级微调,适合小数据集

全参数微调

需要强大计算资源,适合大规模训练

QA 环节

Q1: LoRA 训练后如何推理?

代码语言:python
代码运行次数:16
运行
AI代码解释
复制
from peft import PeftModel

# 加载微调后的模型
fine_tuned_model = PeftModel.from_pretrained(model, "./lora_model")
fine_tuned_model.eval()

input_text = "DeepSeek 在 NLP 领域的应用有哪些?"
inputs = tokenizer(input_text, return_tensors="pt")

output = fine_tuned_model.generate(**inputs)
print(tokenizer.decode(output[0], skip_special_tokens=True))

Q2: 如何加速全参数微调?

可以结合 DeepSpeed 或 FSDP(Fully Sharded Data Parallel) 进行优化:

代码语言:json
AI代码解释
复制
{
  "zero_optimization": {
    "stage": 2,
    "offload_optimizer": "cpu",
    "offload_param": "none"
  }
}

并在 TrainingArguments 中启用:

代码语言:python
代码运行次数:6
运行
AI代码解释
复制
training_args = TrainingArguments(deepspeed="./ds_config.json")

总结

  • LoRA 适用于计算资源有限的场景,通过低秩适配微调模型关键层,减少训练开销。
  • 全参数微调适用于大规模训练任务,但计算资源消耗大,适合计算能力强的环境。
  • 结合 DeepSpeed、FSDP 可优化全参数微调的训练效率

未来展望

  • 探索 PEFT(Parameter-Efficient Fine-Tuning)优化方案
  • 结合 RLHF(人类反馈强化学习)优化微调效果
  • 探索更高效的模型量化(如 QLoRA)以降低部署成本

参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深度探索 DeepSeek 微调:LoRA 与全参数微调实战指南
DeepSeek 作为强大的大模型,提供了优质的基础能力,但在某些特定任务上,直接使用预训练模型可能无法满足需求。本篇文章将介绍 LoRA(Low-Rank Adaptation)、全参数微调 等微调策略,并提供详细的代码示例,帮助开发者高效定制 DeepSeek 以适应特定任务。
网罗开发
2025/02/18
9920
深度探索 DeepSeek 微调:LoRA 与全参数微调实战指南
[大模型]MiniCPM-2B-chat Lora && Full 微调
MiniCPM 是面壁智能与清华大学自然语言处理实验室共同开源的系列端侧大模型,主体语言模型 MiniCPM-2B 仅有 24亿(2.4B)的非词嵌入参数量。
云未归来
2025/07/21
2070
[大模型]MiniCPM-2B-chat Lora && Full 微调
大模型实战:使用 LoRA(低阶适应)微调 LLM
[1] 详细内容请参阅 MarkAI Blog [2] 更多资料及工程项目请关注 MarkAI Github [3] 通关感知算法面试请Star 2024年千道算法面试题综述
码科智能
2023/12/19
6.8K2
大模型实战:使用 LoRA(低阶适应)微调 LLM
大模型微调新手全流程友好指南
关于大模型微调的文章已经写过有两篇:大模型微调与RAG检索增强有何区别?从基础原理到案例分析全面详解和一文带你了解大模型微调的前世今生,基础概率和理论原理内容基本上都涵盖全面,因此本篇文件不做过多的原理解释说明,主要聚焦于大模型微调的实战和各个代码功能模块细节的讲解。
fanstuck
2025/04/30
1.6K7
大模型微调新手全流程友好指南
【LLM训练系列04】手把手教你Qlora微调
IGNORE_TOKEN_ID 是一个常量,通常用于在训练过程中忽略某些特定的标签或输入。它的作用是告诉模型在计算损失时不考虑这些特定的标签或输入。
致Great
2024/12/21
3180
【LLM训练系列04】手把手教你Qlora微调
[大模型]TransNormerLLM-7B Lora 微调
本节我们简要介绍如何基于 transformers、peft 等框架,对 TransNormerLLM-1B「备注:TransNormerLLM-358M/1B/7B的」 模型进行 Lora 微调。Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出Lora。
云未归来
2025/07/17
2570
零基础入门:DeepSeek微调的评测教程来了!
三天前,看到了我们 Datawhale 公众号上发了文章《零基础入门:DeepSeek 微调教程来了!》反响很好,其中的内容写的非常接地气,适合学习者进行学习体验。
Datawhale
2025/02/28
5040
零基础入门:DeepSeek微调的评测教程来了!
白话科普 | 看完即可上手DeepSeek训练,构建专属大模型,LoRA技术让你轻松训练行业大模型
微调(Fine-tuning)是AI领域的“秘密武器”,它让普通人也能轻松打造专属的大语言模型。本文深入解析微调的核心原理,结合实际代码案例,手把手教你如何用LoRA(Low-Rank Adaptation)高效微调大模型。从数据准备到参数配置,再到模型训练与评估,每一步都详细拆解。无论你是技术小白还是资深开发者,都能从中找到启发。
AI研思录
2025/02/20
1.3K0
白话科普 | 看完即可上手DeepSeek训练,构建专属大模型,LoRA技术让你轻松训练行业大模型
基于腾讯云HAI + DeepSeek 开发企业知识库
自从年后大家都开始关注deepseek,我们公司年后特别忙,上面的老板及其他部门都提出了需求。 之前各个部门对AI模型都不了解,经过网上铺天盖地的新闻后,大家都知道AI比较厉害,所以都提出来部门的想法看如何把deepseek引入到部门中,原因大家想必都知道,就是提高大家的工作效率,节省人力。
七条猫
2025/03/08
4222
基于腾讯云HAI + DeepSeek 开发企业知识库
[大模型]Atom-7B-chat 全量微调
首先我们要准备训练模型的代码,这里我们使用的 modelscope 上的 Atom-7B-chat 模型,大家自行下载即可。
云未归来
2025/07/17
1050
[大模型]CharacterGLM-6B-Chat Lora微调
本文简要介绍如何基于transformers、peft等框架,对CharacterGLM-6B-chat模型进行Lora微调。Lora原理可参考博客:知乎|深入浅出Lora 本文代码未使用分布式框架,微调 ChatGLM3-6B-Chat 模型至少需要 21G 及以上的显存,且需要修改脚本文件中的模型路径和数据集路径。
云未归来
2025/07/20
880
[大模型]Qwen-7B-chat 全量微调
首先我们要准训练模型的代码,这里我们使用的 modelscope 上的 Qwen-7B-chat 模型,大家自行下载即可。
云未归来
2025/07/17
1120
[大模型]DeepSeek-7B-chat Lora 微调
本节我们简要介绍如何基于 transformers、peft 等框架,对 DeepSeek-7B-chat 模型进行 Lora 微调。Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出Lora。
云未归来
2025/07/17
1900
使用LORA微调RoBERTa
模型微调是指在一个已经训练好的模型的基础上,针对特定任务或者特定数据集进行再次训练以提高性能的过程。微调可以在使其适应特定任务时产生显着的结果。
deephub
2024/02/21
5940
使用LORA微调RoBERTa
使用QLoRA对Llama 2进行微调的详细笔记
使用QLoRA对Llama 2进行微调是我们常用的一个方法,但是在微调时会遇到各种各样的问题,所以在本文中,将尝试以详细注释的方式给出一些常见问题的答案。这些问题是特定于代码的,大多数注释都是针对所涉及的开源库以及所使用的方法和类的问题。
deephub
2023/09/22
6.5K0
使用QLoRA对Llama 2进行微调的详细笔记
解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~
上一章介绍了如何基于APE+SELF自动化构建指令微调样本。这一章咱就把微调跑起来,主要介绍以Lora为首的低参数微调原理,环境配置,微调代码,以及大模型训练中显存和耗时优化的相关技术细节
风雨中的小七
2023/04/29
10.7K1
解密Prompt系列6. lora指令微调扣细节-请冷静,1个小时真不够~
[大模型]Baichuan2-7B-chat lora 微调
本节我们简要介绍如何基于 transformers、peft 等框架,对 Baichuan2-7B-chat模型进行 Lora 微调。Lora 是一种高效微调方法,深入了解其原理可参见博客:知乎|深入浅出Lora。
云未归来
2025/07/17
1050
[大模型]Baichuan2-7B-chat lora 微调
零基础入门:DeepSeek微调教程来了!
在此处可以看到很明显大模型进行微调后口吻已经发生了更改。据笔者使用下来的记录表示,微调后的大模型思考时间更加短暂。
Datawhale
2025/02/25
1.7K0
零基础入门:DeepSeek微调教程来了!
使用Huggingface创建大语言模型RLHF训练流程的完整教程
ChatGPT已经成为家喻户晓的名字,而大语言模型在ChatGPT刺激下也得到了快速发展,这使得我们可以基于这些技术来改进我们的业务。
deephub
2023/12/05
2.2K0
使用Huggingface创建大语言模型RLHF训练流程的完整教程
【机器学习】QLoRA:基于PEFT亲手量化微调Qwen2大模型
之前陆续写了Qwen1.5、Qwen2.0、GLM-4等国产开源大模型的原理、训练及推理相关的文章,每一篇都拿到了热榜第一,但其中训练部分均基于Llama-factory框架,对于工程师而言,最喜欢的就是刨根问底,使用中间层的训练框架,还是少一些“安全感”。今天我们抛开中间框架,深入底层,一步一步带大家微调一个大模型。
LDG_AGI
2024/08/13
2.1K0
【机器学习】QLoRA:基于PEFT亲手量化微调Qwen2大模型
推荐阅读
相关推荐
深度探索 DeepSeek 微调:LoRA 与全参数微调实战指南
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[架构及运维] 腾讯云技术交流站
云架构设计 云运维最佳实践
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验