- 博客(169)
- 收藏
- 关注
原创 medicalgpt项目微调准备
本文针对医疗领域LLM微调项目提出实习面试导向的优化方案。核心建议是避免单一LoRA/QLoRA微调,而应进行对比实验研究,重点包括:1)QLoRA/LoRA在不同模型规模(7B-70B)和量化精度下的对比;2)医疗场景特有的幻觉率、训练稳定性分析;3)rank/alpha等超参数影响研究。特别强调利用8×4090和2×H200硬件优势开展70B级实验,通过资源效率分析体现工程思维。项目设计应突出方法对比而非单纯模型微调,面试时可重点阐述医疗场景下的量化精度与性能trade-off等深度发现。
2026-01-23 21:29:14
414
原创 梯度计算 反向传播会不会缓存loss的求导公式
PyTorch的自动微分机制解析 摘要:PyTorch采用动态计算图和算子级自动微分机制,而非缓存完整的符号求导公式。其核心原理是:在forward阶段构建计算图并保存中间结果,backward阶段则根据算子自带的梯度规则执行链式求导。虽然每次迭代的数学公式相同,但PyTorch不会缓存偏导公式,而是动态复用算子级别的梯度计算规则。这种设计属于深度学习系统的基础层(Automatic Differentiation),虽然研究人数较少,但深入理解这一机制对调试训练过程、设计新损失函数具有重要意义,是区分普通
2026-01-23 17:08:04
479
原创 交叉熵损失原理和手动实现
本文详细介绍了PyTorch中交叉熵损失的三种计算方式:1)直接调用F.cross_entropy(推荐方式);2)拆解为log_softmax + nll_loss;3)完全手动实现(softmax+log+负对数)。通过代码示例展示了三种方法的等价性,并分析了各自的适用场景。其中,F.cross_entropy因其简洁高效成为工程首选,而拆解方式有助于深入理解交叉熵的底层计算逻辑。文章还解释了核心公式和关键参数,为分类任务中的损失计算提供了实用指导。
2026-01-23 11:35:30
509
原创 pytorch函数使用规律-不必再死记硬背
PyTorch的功能组织遵循清晰的三层结构:基础张量操作(torch.xxx)、带参数的神经网络类(nn.XXX)和无状态的神经网络函数(nn.functional.xxx)。核心区别在于:基础数学运算使用torch模块,神经网络组件优先考虑nn类(如nn.CrossEntropyLoss)用于可复用场景,而nn.functional函数(如F.cross_entropy)适合临时计算。选择依据是是否需要保存参数或状态,而非死记硬背。实际使用中可通过官方文档查询具体参数,理解模块分工后即可灵活运用。
2026-01-23 11:34:52
467
原创 手动实现softmax要点
文章摘要: 本文解释了softmax计算中减去最大值的重要性及其数学原理。当logits数值较大时,直接计算exp会导致溢出(inf),而减去最大值能确保数值稳定性(最大项exp结果为1,其余≤1)。数学上softmax(x)等价于softmax(x−c),因此减最大值是行业通用规范。此外,文章详细说明了PyTorch中keepdim=True的作用——通过保留被reduce维度为1来实现广播时的形状自动对齐,避免手动unsqueeze操作。整个过程分为三步:原始输入、沿最后一维取最大值(保持维度)、广播减
2026-01-23 11:33:46
250
原创 DeepseekMOE 专家处理逻辑
本文详细解析了DeepSeek MoE模型中专家网络的数据处理流程。模型通过门控网络为每个token选择前k个专家,并计算权重。在训练阶段,复制token特征后按专家索引分发计算,最后加权融合各专家输出;测试阶段采用高效的一次性处理。所有token还会经过共享专家网络增强特征表达。文章详细拆解了hidden_states在各模块间的流转过程,并总结了topk_idx、topk_weight等关键变量的作用,完整呈现了MoE模型从输入到输出的计算路径。
2026-01-22 16:48:36
566
原创 Minimind DPO微调总结
本文探讨了语言模型直接偏好优化(DPO)的效果。研究发现:1)28万条数据微调的SFT模型容易产生无意义回答,680万条数据则需要精细调参;2)DPO训练中,降低学习率(5e-7)、减小batch size(16)和beta值(0.5)能有效平衡事实准确性和回答质量。调整后的模型在技术解释、生活建议等场景表现良好,能提供结构化回答且保持基本事实。实验表明,保守的参数设置更有利于保留关键信息,同时优化回答结构。附录展示了调整后模型在问答、代码生成等任务中的实际效果。
2026-01-22 15:17:19
322
原创 大模型评测
摘要 本文针对200M参数小模型的预训练与监督微调(SFT)阶段,提出了一套可落地的量化评测体系,包含4类核心指标: 困惑度指标:通过验证集计算token-level负对数似然,评估语言建模能力 自动文本相似度:使用BLEU/ROUGE/BERTScore衡量生成内容与参考答案的匹配度 行为稳定性指标:监测重复率、生成长度、EOS使用等生成特性 任务准确率:设计选择题/简单QA等微型评测集 文章强调小模型应重点关注数据质量(去重、噪声控制、分布对齐)而非追求复杂指标,并提供了PyTorch实现困惑度计算的具
2026-01-22 14:57:25
593
原创 大模型评测
摘要 本文针对200M参数小模型的预训练与监督微调(SFT)阶段,提出了一套可落地的量化评测体系,包含4类核心指标: 困惑度指标:通过验证集计算token-level负对数似然,评估语言建模能力 自动文本相似度:使用BLEU/ROUGE/BERTScore衡量生成内容与参考答案的匹配度 行为稳定性指标:监测重复率、生成长度、EOS使用等生成特性 任务准确率:设计选择题/简单QA等微型评测集 文章强调小模型应重点关注数据质量(去重、噪声控制、分布对齐)而非追求复杂指标,并提供了PyTorch实现困惑度计算的具
2026-01-21 21:18:17
559
原创 SFT的“过拟合”和“欠拟合” minimind 微调
SFT 不是在拟合数据,而是在重塑策略分布。分布还“厚”entropy 高知识还在分布变“尖”entropy 低套模板、丢事实📌这不是好坏问题,是阶段问题。
2026-01-21 16:19:52
535
原创 minimind sft模型微调 基于sft_512.jsonl 680w条数据
模型能回答基本问题,具备一定的对话互动性。尽管基本事实和基本逻辑还比较缺乏。模型参数量在200M左右。
2026-01-21 11:34:24
385
原创 大模型后训练部分 强化学习学习路径
摘要: 针对大模型后训练(PPO/DPO)的畏难心理,本文提出工程化学习路径: 1️⃣ 心理脱敏:明确后训练核心是“可控梯度更新”,非强化学习理论; 2️⃣ 聚焦DPO:掌握数据格式、loss设计、β参数作用等5个关键点,1周速成; 3️⃣ 实践验证:通过调参对比SFT/DPO效果,记录失败模式; 4️⃣ 面试导向:整理方法对比表(PPO/DPO/GRPO)和应答模板,强调工程取舍而非公式推导。 核心结论:实习要求的是“能跑能解释”,非数学证明,建议优先DPO+最小化学习范围。 (字数:149字)
2026-01-20 21:31:24
602
原创 2026年1月20日
本文总结了当前学习进展与计划,主要包括大模型训练实践与强化学习两个方向。计划阅读happy_llm第六章文档,使用贝壳开源BelleGroup数据集对Qwen-2.5-1.5B模型进行SFT微调;同时学习李宏毅深度强化课程CRITIC部分,运行minimind的SFT和PPO/DPO实验。还将观看B站PPO教学视频,并继续happy_llm第七章智能体相关内容的学习。
2026-01-20 21:06:46
32
原创 深度学习的核心求梯度就是多维函数求导数
深度学习中的梯度计算本质上是多维函数求导,其核心原理可通过简单例子直观理解。对于单参数策略优化问题,梯度上升会逐步调整参数使期望回报最大化;而在二次函数示例中,梯度下降通过沿负梯度方向迭代更新参数,最终收敛至最小值点。实际应用中,梯度计算虽随网络层数增加而理论复杂度上升,但现代框架已将其封装为自动化过程。梯度优化算法会在接近极值点时因学习率设置出现小幅震荡或停滞,因此需预设合理的停止条件来控制训练过程。这些概念可通过生活化类比(如下山路径选择)帮助初学者建立直观认知。
2026-01-20 15:24:47
519
原创 强化学习核心路线总结
在策略优化中:它是直接的优化目标,公式就是核心工具。在价值函数方法中:目标是找到能最大化长期价值的动作,而不是直接对策略求导。在模型基方法中:目标是学习环境模型,再用模型来规划最优行为,期望回报是通过模型推演得到的。所以,强化学习并不是“都围绕这一个公式”,而是围绕“如何让智能体在环境中获得最大累计回报”这个核心问题,发展出了多种不同的技术路径。如果你想更清晰地看到这些流派的区别,我可以帮你整理一份强化学习主流算法分类与核心思路对照表,让你一眼看清它们的关系。需要吗?好的,结合你。
2026-01-19 22:17:22
537
原创 小模型和小数据集GRPO的开源项目
摘要 Reason-RFT 是一个开源项目,由 tanhuajie 开发,托管在 GitHub 上。该项目可能涉及推理或相关技术领域,但具体功能需进一步查看其代码库和文档。项目地址为:https://github.com/tanhuajie/Reason-RFT。
2026-01-19 21:55:26
26
原创 小模型和小数据集GRPO的开源项目
摘要 Reason-RFT 是一个开源项目,由 tanhuajie 开发,托管在 GitHub 上。该项目可能涉及推理或相关技术领域,但具体功能需进一步查看其代码库和文档。项目地址为:https://github.com/tanhuajie/Reason-RFT。
2026-01-19 15:52:04
21
原创 李宏毅 强化学习概述课程笔记
我做了一个动作,如果结果比我原本对这个状态的预期好,就提高这个动作概率;如果更差,就降低。而 Version 4 用的“好或差”的度量就是:以你现在的背景(已完成预训练 + SFT,还在系统学 RL):✅ 你完全走在「大模型研究生 / 工程实习生」的正确主线上❌ 千万别掉进“传统 RL 深水区”
2026-01-19 13:59:43
1082
原创 minimind SFT失败原因排查和解决办法
摘要: 针对145M参数的MoE模型训练问题,建议优先调整SFT参数而非重新预训练。当前模型"胡言乱语"的主要原因是SFT阶段学习率过低(1e-6)和数据量过大(6.8M条),导致指令跟随失败。应立即采取以下措施: 精简SFT数据:从6.8M条中随机抽取10-20万条高质量对话 提高学习率:将SFT学习率调整为2e-5 控制训练轮次:仅训练1-2个epoch防止过拟合 确保推理格式:严格匹配训练时的prompt模板 若调整后模型仍输出乱码,才考虑用1.41M条数据重做预训练(耗时约4-6
2026-01-18 22:31:36
665
原创 minimind MOE 模型在happy_llm 问问猴子数据集上训练的 scaling law分析
摘要:本文基于Chinchilla Scaling Law分析了MoE模型训练中的参数与数据比例问题。通过计算得出,当前配置(14.8B tokens/75M激活参数)存在严重的数据冗余和模型容量不足问题,数据量超出理论最优值10倍。文章指出这种配置会导致训练效率低下,建议优先扩大模型规模而非增加数据量,并提供了三种改进方案:1)将模型参数提升至740M;2)提前停止训练;3)转向其他研究目标。最后强调在compute-optimal状态下,训练算力与模型参数的平方成正比,当前配置浪费了约10倍算力。
2026-01-16 16:05:14
608
原创 minimind训练总结
本文摘要:报告了两种数据集(1.6GB/32GB)在不同训练时长(33分钟/11.5小时)下的145M参数模型预训练情况,提供了具体的训练命令参数。发现模型存在重复输出问题,通过调整max_new_tokens参数至340可缓解但未完全解决,模型仍存在机械式回答现象。完整记录了训练配置与问题分析过程。
2026-01-16 13:20:31
32
原创 Minimind-MOE 模型参数量计算
本文分析了MiniMind MoE模型的架构并计算了参数量。该模型配置包含8层隐藏层、6400词表大小和640隐藏维度,采用混合专家(MoE)架构,包含4个路由专家和1个共享专家。计算结果显示:嵌入层参数4.1M,注意力层参数8.2M,MoE层参数132.7M,总参数量约145M。激活参数量约65.4M,适合在8张4090 GPU上训练。模型配置包括注意力头数、键值头数等关键参数,并提供了完整的Python配置类实现,支持MoE相关特性的灵活调整。
2026-01-15 20:35:59
969
原创 为什么大模型预训练通常倾向于训练1 Epoch
追求数据多样性,通常1 Epoch(或稍微多一点的高质量数据重采样)。数据不够,容量未满,通常需要多 Epoch来收敛。如果你对Scaling Law(扩展定律)感兴趣,我可以为你详细解释Chinchilla 公式,或者帮你分析一下 MiniMind 这个项目的代码结构,看看它是如何处理数据加载(DataLoader)以支持这 1 个 Epoch 的。你需要哪方面的帮助?
2026-01-15 15:40:19
539
原创 大模型后训练强化学习理论基础应该看李宏毅强化学习还是看斯坦福CS234
摘要:针对1个月内求职导向的大模型后训练学习,建议采用"李宏毅打底+CS234拔高"的混合策略。李宏毅课程(4小时)适合快速掌握PPO核心原理,CS234(3小时)的DPO作者讲座是面试加分项,再辅以李宏毅2024课程(1小时)了解RLHF实战应用。这种组合既能快速理解原理写出代码,又能掌握前沿技术应对面试,避免陷入完整课程耗时过长的困境。重点推荐CS234 Lecture 9由DPO作者讲解的课程视频,可直接回答面试常见问题。
2026-01-15 13:51:37
830
原创 2026年1月14日学习计划
本文主要讨论BPE算法优化和GPT-2分词实现。作者计划本周完成BPE算法优化(包括更新算法和多线程训练),收尾happy_llm项目,并开始minimind学习。重点分析了GPT-2的BPE分词规则,发现其会在单词前保留空格,这可能是为了保持上下文边界。在优化方面,指出合并best_pair的过程可以并行处理,但确定全局最高频best_pair仍需单线程完成。代码示例展示了如何使用正则表达式实现GPT-2风格的分词,将文本拆分为包含前导空格的单词序列。
2026-01-14 21:37:41
393
原创 CS336作业一仓库使用指南
CS336 作业1要求使用uv管理Python环境和运行测试。uv是一个现代快速的包管理器,自动管理依赖环境,无需手动创建虚拟环境。测试文件位于tests目录,包含对分词器、模型、优化器等组件的测试。学生需先实现cs336_basics中的功能,然后在adapters.py中连接实现与测试框架。测试策略建议采用增量方式,逐步实现基础组件后测试更复杂功能。项目依赖由pyproject.toml管理,uv会自动处理安装。运行测试使用uv run pytest命令,可针对特定文件或函数进行测试。
2026-01-12 17:21:08
728
原创 大模型学习阶段总结和下一阶段展望
本周(1.5-1.11)主要学习了LLaMA2大模型的实现,完成了ModelConfig、RMSNorm、ROPE、Attention等核心模块的代码编写。通过手敲代码和与大模型对话的方式,深入理解了旋转位置编码、矩阵运算等技术细节。不足之处在于未完整实现BPE分词器的训练(因内存不足改为使用预训练模型),对分词器原理掌握不够深入,且未进行完整模型训练(考虑计算资源消耗)。整体学习效果良好,基本打通了模型实现的工程链路。
2026-01-11 17:02:58
312
原创 LayerNorm -> RMSNorm 和 BatchNorm归一化方法解析
BatchNorm的核心机制是:针对每个特征维度d,在batch维度上独立计算均值和方差(共D组统计量),而非对整个batch所有元素计算单一统计量。具体表现为:对于输入矩阵的每一列(特征维度),沿行方向(batch维度)计算该列的μ和σ²。这与LayerNorm形成正交对比:BatchNorm是"同一神经元看不同样本",LayerNorm是"同一样本看不同神经元"。BatchNorm隐含假设各特征在batch中分布相似,因此在数据异质性大或batch较小时可能失效。
2026-01-09 15:30:39
754
原创 pytorch 矩阵乘法和实际存储形状的差异
PyTorch线性层维度设计解析 在Transformer注意力机制中,PyTorch的nn.Linear维度设计遵循特定逻辑: nn.Linear(in,out)内部存储(out,in)的权重矩阵,执行x@W.T运算 这种设计适配批量数据布局(bs,seq_len,feat_dim),保持前两维度不变 反向定义会导致维度不匹配,破坏注意力机制需要的形状 关键点: 工程实现优化批量计算,牺牲权重存储顺序换取计算效率 只需关注nn.Linear(A,B)将输入最后一维从A变为B的功能需求 维度"反转
2026-01-09 15:22:37
860
原创 同一prompt下 doubao qwen gpt kimi的模型训练时长预测不同表现
根据算力对比,使用3张A800 80GB训练相同语言模型约需260小时。原配置8块RTX 4090(24GB)总算力5284 TFLOPS,训练46小时;A800单卡算力312 TFLOPS,3卡总算力936 TFLOPS。通过总算力需求243064 TFLOPS·h计算得出,A800训练时间比4090配置长约5.6倍。该估算基于FP16算力线性缩放,未考虑通信开销等实际因素。
2026-01-08 18:49:23
723
原创 大模型嵌入层embedding和向量到词表映射output层权重共享
摘要:大模型参数量计算差异的核心原因是重复计算了词嵌入层和输出层权重,而实际上这两层采用权重共享机制。权重共享的理论依据是嵌入层和输出层具有对偶性,工程上可减少参数量、防止过拟合并提升训练效率。梯度分析表明两层的更新方向一致,不会冲突。修正方法是只计算一次词嵌入层权重(82575360 + 4718592),而非两次(多算4718592)。这一设计体现了LLM参数计算的理论严谨性和工程优化。
2026-01-08 17:11:48
751
原创 Llama2 transformer结构整体解析 (二)
本文深入解析了LLaMA2模型中训练与推理的核心逻辑差异,重点澄清了交叉熵损失计算和输出容器设计的原理。关键点包括: 训练模式通过全序列预测计算交叉熵损失(非简单向量差),推理模式仅预测最后一个token; 损失计算本质是模型预测概率分布与真实标签分布的交叉熵,需经过softmax转换; 输出容器采用结构化设计,统一封装logits和loss,兼容Hugging Face生态; 位置预测逻辑应为i位置预测i+1位置token,训练时并行计算,推理时串行生成。 文章通过具体维度示例和计算步骤拆解,清晰展示了模
2026-01-08 12:17:30
750
原创 大模型训练过程中 SILU 和 GELU 的选择
LLaMA2选择SILU而非GELU作为激活函数,主要基于工程效率、硬件适配和模型效果的平衡。SILU(Swish-1)计算更简单(仅需sigmoid+乘法),硬件优化更好,显存占用更低,在大模型规模下与GELU效果相当。虽然两者在[-5,5]核心区间的均方误差略高(约0.015),但绝对差异仍可忽略。Meta选择SILU延续了LLaMA1的技术栈,降低了工程适配成本,体现了工业级大模型"效率优先"的设计理念。GELU更适用于小模型和理论研究,而SILU则是大规模Decoder架构的工程
2026-01-08 10:48:03
958
原创 Llama2 transformer结构整体解析
这篇文章深入解析了LLaMA2风格Transformer模型的工程实现细节,重点讲解了PyTorch构建大模型时的关键操作: 权重初始化机制: 使用self.apply(self._init_weights)递归初始化所有子模块 针对特定参数(如w3/wo权重)进行精细化初始化 解释了初始化标准差公式的设计原理 工程化辅助属性: register_buffer注册非训练参数(如RoPE位置编码) _no_split_modules用于模型并行/梯度检查点优化 输出容器类CausalLMOutputWithP
2026-01-07 22:04:59
930
原创 关于深度学习的重要库 transformer
Hugging Face的transformers库已成为AI领域的基础设施,它将Transformer理论转化为开箱即用的工程实现。2018年发布至今,该库经历了从单一模型支持到多框架、多模态的演进,统一了BERT、GPT等模型的调用接口,降低了工程门槛。其成功源于三大优势:统一碎片化模型实现、简化工程化流程、构建完整生态闭环。虽然学习材料丰富,但专家级内容(如源码解析)相对稀缺,官方文档作为核心资源常被忽视。该库如同AI界的"Linux内核",让全球开发者能基于统一平台快速创新。
2026-01-07 21:12:55
703
原创 llama2 MLP 门控FFN
LLaMA2的MLP层采用双路径门控设计,其核心流程为:输入x分两路分别进行w1+SILU和w3线性变换,两路结果逐元素相乘后再通过w2还原维度。相比传统Transformer的ReLU-FFN结构,LLaMA2 MLP具有三个关键创新:1)使用SILU激活函数替代ReLU;2)采用无偏置设计减少参数量;3)通过隐藏层维度缩减(4倍→2.67倍)提升计算效率。这种门控MLP结构能自适应控制信息流动,在保留模型表达能力的同时显著降低计算成本,已成为当前大语言模型的主流设计,被LLaMA3、Mistral等后续
2026-01-07 15:55:20
1060
原创 Attention 具体实现
文章摘要:本文对比了两种注意力机制实现方式——原生实现与FlashAttention。核心公式均为缩放点积注意力,包含QK^T计算、缩放、因果掩码、Softmax和加权求和五个步骤。原生实现通过逐行代码对应数学公式,便于理解原理;而FlashAttention利用PyTorch优化接口,在保持数学等价性的同时显著提升计算效率。关键差异在于:原生实现需显式计算L×L注意力矩阵并手动添加掩码,而FlashAttention通过分块计算和自动因果掩码实现内存优化。两者都确保模型仅关注前文信息,并通过缩放因子和Dr
2026-01-07 11:56:19
710
原创 ROPE代码实现
本文详细拆解了RoPE(旋转位置嵌入)的核心实现代码,通过逐行对应数学公式,揭示其工程优化技巧。首先回顾RoPE的核心公式:$\theta_{m,i} = m \cdot \frac{1}{10000^{\frac{2i}{d_{\text{head}}}}}$,其中$m$是位置,$i$是二维分组索引。代码通过四个关键步骤实现: 预计算基础频率:生成每个二维分组的$\frac{1}{10000^{\frac{2i}{d_{\text{head}}}}}$,避免重复计算; 生成位置序列:创建所有需要计算的位置
2026-01-07 10:40:25
1162
原创 位置编码和旋转位置编码
本文详细推导了旋转位置编码(RoPE)在二维空间中的核心原理。首先介绍了二维旋转矩阵的基本性质,包括转置等于逆矩阵和角度相加特性。然后将旋转矩阵应用于Transformer的自注意力机制,定义位置m和n的查询向量q和键向量k的旋转变换。通过数学推导证明,旋转后的注意力分数仅依赖于token间的相对位置差Δ=n-m,而与绝对位置无关。这一性质使RoPE能有效捕捉序列中的相对位置信息,为后续高维推广奠定基础。推导过程清晰展示了RoPE如何通过旋转操作实现位置感知的注意力计算。
2026-01-06 16:56:46
2172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅