一、显存相关问题

  1. 如果想要在某个模型基础上做全参数微调,究竟需要多少显存?

    如果想要在某个模型基础上做全参数微调,究竟需要多少显存?一般nB的模型,最低需要16 -20nG的显存。以vicuna -7B为例,官方样例配置为4A10040G,测试能占满显存。训练时可用FSDP、梯度累积、梯度检查点等方式来降低显存占用。
    
模型版本 模型权重 (FP16) 梯度显存 优化器状态显存 激活值显存(估) 总显存需求
7B 13GB 13GB 52GB ~13GB ~91GB
13B 24GB 24GB 96GB ~24GB ~168GB
33B 60GB 60GB 240GB ~60GB ~420GB
65B 120GB 120GB 480GB ~120GB ~840GB
  1. 微调模型需要多大显存?

不同模型版本所需显存如下:

显卡显存 推荐可微调模型 (4-bit 量化 + LoRA) 备注
8GB 7B 模型 需严格控制 batch size 和序列长度
12GB 7B / 13B 模型(13B 需极限优化) 13B 模型要依赖梯度检查点等技术
24GB 13B / 33B 模型(33B 推荐) 33B 模型在 4-bit 量化下可流畅微调
48GB+ 33B / 65B 模型(65B 需量化 + 优化) 65B 模型建议 80GB 显存以上更稳定

二、SFT相关问题

图片

  1. 为什么SFT之后感觉LLM傻了?

    指令微调是为了增强(或解锁)大语言模型的能力,使其能展现出泛化到未见过任务的卓越能力,即使在多语言场景下也有不错表现。高质量对话数据只占模型原有知识的极小部分,训练时会让模型优先 “迎合” 指令格式,反而压制了通用知识的调用能力。分布偏移与过拟合SFT 让模型从 “预训练的通用文本分布” 切换到 “指令 - 回答分布”,若数据质量差或学习率过高,会导致模型遗忘基础推理能力,表现变“傻”。

  2. SFT指令微调数据如何构建?

    要选择多个有代表性的任务;每个任务实例数量不宜过多,防止过拟合;应平衡不同任务的数据量占比,并限制整个数据集的容量,通常几干或几万,避免大样本量数据集影响整体分布。

  3. 进行SFT操作的时候,基座模型选用Chat还是Base?

    资源有限时,在Chat模型基础上训练;资源充足时,在Base模型上训练。资源包括数据和显卡,若数据小于10k,建议用Chat模型微调;数据达100k,建议在Base模型上微调。

  4. 领域模型微调指令&数据输入格式要求?

    在Chat模型上进行SFT时,一定要遵循Chat模型原有的系统指令&数据输入格式,建议不采用全量参数训练,否则模型原始能力会遗忘较多。

  5. 大模型LLM进行SFT操作的时候在学习什么?

    预训练是在大量无监督数据上得到基础模型,SFT在有监督的数据集上进一步优化模型,将SFT训练后的模型作为RLHF的起点。

  6. 预训练和SFT操作有什么不同?

    举例来说,预训练会把“描述计算机主板的功能”这句话连接起来,用前面的词预测后面的词,问句中的损失也会被计算。而SFT操作则构建特定训练语料,输入为BOS计算机主板是计算机中的主要电路板。它是系统的支撑EOS",标签对应,在计算损失时只算答句的损失。

二、领域模型相关问题

图片

  1. 领域模型Continue PreTrain数据选取??

    技术标准文档或领域相关数据是关键,因为领域相关的网站和资讯的重要性或知识密度不如书籍和技术标准。

  2. 领域数据训练后,通用能力往往会有所下降,如何缓解模型遗忘通用能力?

    动机是仅用领域数据集训练易出现灾难性遗忘,解决方法是在领域训练中加入通用数据集。当领域数据量不多时,领域数据与通用数据的比例在1:5到1:10之间较合适。

  3. 领域模型Continue PreTrain,如何让模型在预训练过程中就学习到更多的知识?

    可以同步加入SFT数据,即 MIP(Multi - Task Instruction PreTraining),让模型在预训练时就学习到更多知

  4. 领域模型词表扩增是不是有必要的?

    增加词表可解决解码效率问题,对模型效果提升可能不大。

  5. 领域模型微调领域评测集构建?

    建议有两份评测集,一份选择题形式自动评测,用于初筛;一份开放形式人工评测,用于精筛,且任务形式更贴近真实场景。

三、模型训练与优化相关问题

图片

  1. 如何训练自己的大模型?

    以做sota的中文GPT大模型为例,分两步:基于中文文本数据在LLaMA-65B上二次预训练;加CoT和instruction数据,用FT+LoRA SFT。一般分为两个阶段训练,

  • 第一阶段扩充领域词表,在海量领域文档数据上二次预训练LLaMA模型;
  • 第二阶段构造指令微调数据集,在第一阶段的预训练模型基础上做指令精调。也可用低成本方案,即用LoRA训练。
  1. 训练中文大模型有啥经验?

    扩充中文词表能提升模型对中文的理解能力; 数据质量越高越好,且数据集质量提升可改善模型效果; 加中文的数据语言分布比不加好; 数据规模越大且质量越高,效果越好。此外,后续RLHF也很重要。

  2. 指令微调的好处?

  • 能对齐人类意图,使模型能理解自然语言对话;经过微调的定制版模型在不同应用 中提升明显,如准确度、错误率等方面;
  • 可直接在大模型上微调,不用重头训练自己的AI模型。
  1. 预训练和微调哪个阶段注入知识的?

    预训练阶段注入知识,微调是在特定任务训练,使预训练模型的通用知识与特定任务要求结合,提升模型在特定任务上的表现。

  2. 想让模型学习某个领域或行业的知识,是应该预训练还是应该微调?

    可采用预训练和微调相结合的方式,先用篇章数据预训练获取广泛知识,再用问答对数据微调学习特定领域知识。若样本集小,且与预训练模型分布差别不大,只进行微调也能注入知识。

  3. 多轮对话任务如何微调模型?

图片

 以ChatGLM-6B为例,其把上一轮对话扔进下一轮的input里,但存在爆显问题。解决方法包括对历史对话做文本摘要、生成embedding、传递用户意图和槽位等。
  1. 微调后的模型出现能力劣化,灾难性遗忘是怎么回事?

    灾难性遗忘即学习新知识后遗忘之前内容。微调ChatGLM-6B模型时,如引入特定任务数据集微调后,可能导致原始任务能力下降。这可能是微调训练参数调整不当导致的,微调初始学习率不要设置太高,可避免此问题。

21.样本量规模增大,训练出现OOM错?

问题描述: 模型训练的样本数量从10万,增大300万,训练任务直接报OOM了。

解决方案: 对数据并行处理,具体实现参考海量数据高效训练,核心思想自定义数据集,本次的主要目标是使向量化耗时随着处理进程的增加线性下降,训练时数据的内存占用只和数据分段大小有关,可以根据数据特点,灵活配置化。核心功能分为以下几点:

  • 均分完整数据集到所有进程(总的GPU卡数)
  • 每个epoch训练时整体数据分片shufle一次,在每个进程同一时间只加载单个分段大小数据集
  • 重新训练时可以直接加载向量化后的数据。
  1. 大模型LLM 进行SFT 如何对样本进行优化?

    对输入历史对话数据进行左截断,保留最新对话记录;去掉样本中明显语气词和不合适内容;扩充用户特征标签。

  2. 模型参数迭代实验?

    验证历史对话轮次是否越长越好。训练两个模型,控制变量max/_source/_length、max/_target/_length,从Loss、Bleu指标、离线人工评估等角度对比分析。结论是历史对话长度1024比512长度好,后续训练可扩大到1024长度。

  3. 微调大模型的一些建议?

模型结构

  • 模型结构+训练目标:Causal Decoder+LM。有很好的zero-sho和few-shot能力,涌现效应
  • layer normalization: 使用Pre RMS Norm
  • 激活函数:使用GeGLU或SwiGLU
  • embedding层后不添加layer normalization,否则会影响LLM的性能
  • 位置编码:使用ROPE或ALiBi。ROPE应用更广泛
  • 去除偏置项:去除dense层和layer norm的偏置项,有助于提升稳定性训练配置

训练配置

  • batch: 选用很大的batch size;动态地增加batch size的策略,GPT3逐渐从32K增加到3.2M tokens.
  • 学习率调度: 先warmup再衰减。学习率先线性增长,再余弦衰减到最大值的10%。最大值一般在5e-5到1e-4之间。
  • 梯度裁剪: 通常将梯度裁剪为1.0。
  • 权重衰减: 采用AdamW优化器,权重衰减系数设置为0.1Adamw相当于Adam加了一个L2正则项
  • 混合精度训练: 采用bfloat16,而不是foat16来训练。·

训练崩溃挽救

 选择一个好的断点,跳过训练崩溃的数据段,进行断点重训。选择一个好的断点的标准:损失标度lossscale>0,梯度的L2范数<一定值&&波动小
  1. 微调大模型时,如果batchsize设置太小会出现什么问题?

图片

 更新方向的方差会很高,导致梯度更新主要是噪声,个别更新可能不太有用,但总体上会推动模型朝着正确方向前进。

26.微调大模型时,如果batchsize设置太大会出现什么问题?

 从训练数据抽样的两组数据会非常相似,增加batch size几乎不会改善性能,反而因需处理更多数据,总体训练时间没改善,还增加了总体的FLOPS。且当batch size达到临界值时,模型性能会随batch size增加而降低。

27.微调大模型时,batch size如何设置问题?

存在一个关于数据并行程度的临界点,找到这个临界点可平衡训练效率和模型最终效果。OpenAI发现最优步长与噪声尺度等有关,学习率调整良好是前提。

28.微调大模型时,优化器如何?

 除了Adam和AdamW,其他优化器如Sophia也值得研究,它使用梯度曲率而非方差进行归一化,可能提高训练效率和模型性能。

29.哪些因素会影响内存使用?

内存使用受模型大小、批量大小、LoRA参数数量以及数据集特性等因素影响,如使用较短的训练序列可节省内存。

30.进行领域大模型预训练应用哪些数据集比较好?

开源大模型预训练常加入书籍、论文等高质量、领域相关性强、知识覆盖率大的数据,领域相关的网站内容、新闻内容也很重要。

31.用于大模型微调的数据集如何构建?

  • 选取干净且具代表性的训练数据;
  • 构建多样化的prompt提高模型鲁棒性;
  • 多任务训练时平衡各任务的数据量。

32.大模型训练loss突刺原因和解决办法?

  • loss突刺是什么:指大模型预训练过程中loss突然暴涨,可能导致模型长时间无法恢复或无法再收敛。
  • 为什么会出现loss突刺:与Adam优化器有关,其更新参数的变化趋势、梯度更新幅度、e大小、batch大小等因素密切相关。训练中可能出现浅层梯度变化和模型深层参数状态形成连锁反应,导致模型进入非稳态。
  • 如何解决:可更换batch样本;减小learningrate;减小e大小或直接设为0;也可采用智谱华章的Embedding Layer Gradient Shrink (EGS)方法,即把浅层梯度直接乘以缩放系数a来减小浅层梯度更新值。

–End–

变化趋势、梯度更新幅度、e大小、batch大小等因素密切相关。训练中可能出现浅层梯度变化和模型深层参数状态形成连锁反应,导致模型进入非稳态。

  • 如何解决:可更换batch样本;减小learningrate;减小e大小或直接设为0;也可采用智谱华章的Embedding Layer Gradient Shrink (EGS)方法,即把浅层梯度直接乘以缩放系数a来减小浅层梯度更新值。

假如你从2026年开始学大模型,按这个步骤走准能稳步进阶。

接下来告诉你一条最快的邪修路线,

3个月即可成为模型大师,薪资直接起飞。
img

阶段1:大模型基础

img

阶段2:RAG应用开发工程

img

阶段3:大模型Agent应用架构

img

阶段4:大模型微调与私有化部署

img

配套文档资源+全套AI 大模型 学习资料,朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】👇👇
在这里插入图片描述
img

img

img

img
img

配套文档资源+全套AI 大模型 学习资料,朋友们如果需要可以微信扫描下方二维码免费领取【保证100%免费】👇👇

在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐