04-从零训练语言模型小模型跑通全流程再说大的
从零训练语言模型:小模型跑通全流程再说大的很多人上来就想训7B、13B模型,结果环境配不好、OOM、loss不收敛,到处踩坑。我的建议是:先用小模型跑通整个训练流程,确认每一步都理解了、没问题了,再放大。这篇从零开始,手写一个完整的语言模型训练代码。不依赖HuggingFace Trainer,不用任何封装,每一步都看得见摸得着。模型:一个极简的语言模型先写一个最小的语言模型:Embedding + 4层Transformer + LM Head。这里不展开Transformer的实现细节(下篇专门讲),先用PyTorch内置的nn.TransformerEncoder。importtorchimporttorch.nnasnnimportmathclassSmallLM(nn.Module):"""一个小型因果语言模型"""def__init__(self,vocab_size:int=32000,d_model:int=512,n_heads:int=8,n_layers:int=4,max_seq_len:int=2048,dropout:float=0.1,):super().__init__()self.d_model=d_model# Token embedding + 位置编码self.token_embedding=nn.Embedding(vocab_size,d_model)self.pos_embedding=nn.Embedding(max_seq_len,d_model)self.dropout=nn.Dropout(dropout)# Transformer编码器encoder_layer=nn.TransformerEncoderLayer(d_model=d_model,nhead=n_heads,dim_feedforward=d_model*4,dropout=dropout,activation="gelu",batch_first=True,# 输入格式 (batch, seq, dim)norm_first=True,# Pre-LN,大模型标配)self.encoder=nn.TransformerEncoder(encoder_layer,num_layers=n_layers,norm=nn.LayerNorm(d_model),# 最后加一个LayerNorm)# 语言模型头:映射回词表空间self.lm_head=nn.Linear(d_model,vocab_size,bias=False)# 权重共享:embedding和lm_head用同一套权重self.lm_head.weight=self.token_embedding.weight# 因果掩码:下三角矩阵,防止看到未来的tokenself.register_buffer("causal_mask",torch.tril(torch.ones(max_seq_len,max_seq_len)).bool())# 初始化权重self.apply(self._init_weights)def_init_weights(self,module:nn.Module):"""GPT风格的权重初始化"""ifisinstance(module,nn.Linear):torch.nn.init.normal_(module.weight,mean=0.0,std=0.02)ifmodule.biasisnotNone:torch.nn.init.zeros_(module.bias)elifisinstance(module,nn.Embedding):torch.nn.init.normal_(module.weight,mean=0.0,std=0.02)defforward(self,input_ids:torch.Tensor,labels:torch.Tensor|None=None,)-dict:B,T=input_ids.shape# Embeddingpositions=torch.arange(T,device=input_ids.device).unsqueeze(0)# (1, T)x=self.token_embedding(input_ids)+self.pos_embedding(positions)x=self.dropout(x)# Transformer + 因果掩码

相关新闻

Rust开源语法检查器Harper:本地优先的隐私友好替代方案

Rust开源语法检查器Harper:本地优先的隐私友好替代方案

在撰写技术文档、邮件或代码注释时,语法和拼写错误不仅影响专业性,还可能引发误解。虽然 Grammarly 等工具功能强大,但其云端处理模式让许多注重数据隐私的开发者望而却步。今天,我们将深入探讨一个由 Rust 语言编写的开源解决方案…

2026/8/2 13:58:56 阅读更多 →
树莓派驱动9.7英寸墨水屏:从硬件连接到信息看板实战

树莓派驱动9.7英寸墨水屏:从硬件连接到信息看板实战

1. 项目概述:当墨水屏遇上树莓派 如果你手头有一块树莓派,并且对低功耗、常显、护眼的显示方案感兴趣,那么“9.7inch e-Paper HAT”这个项目绝对值得你深入了解。这不仅仅是一块简单的屏幕,它是一个完整的硬件与软件解决方案&…

2026/8/2 13:57:55 阅读更多 →
Python图形界面(GUI)Tkinter笔记(二十九):OptionMenu下拉式列表控件方法

Python图形界面(GUI)Tkinter笔记(二十九):OptionMenu下拉式列表控件方法

在Tkinter库中,OptionMenu是提供下拉选择功能的界面组件,支持用户从预设选项集合中选取单一数值。 一、OptionMenu下拉式列表控件的核心应用场景: 1. 单选交互:提供预定义选项列表,供用户单选(如语言、主题设置)。 2. 数据绑定与响应:通过 StringVar 自动同步选中值…

2026/8/2 13:57:55 阅读更多 →

最新新闻

从GPU集群到太空算力:AI算力基础设施的演进与混合架构实践

从GPU集群到太空算力:AI算力基础设施的演进与混合架构实践

1. 项目概述:当“钢铁侠”的算力遇上“AI新贵” 最近科技圈有个消息传得沸沸扬扬,说马斯克把他手里那批数量惊人的22万张GPU,一股脑儿全卖给了AI公司Anthropic,用来给他们的Claude模型“喂饭”。更有意思的是,据说双方…

2026/8/2 14:54:28 阅读更多 →
无断链三维轨迹重构与战场情报溯源分析系统研究

无断链三维轨迹重构与战场情报溯源分析系统研究

无断链三维轨迹重构与战场情报溯源分析系统研究第一部分 核心技术章节1. 产品综述无断链三维轨迹重构与战场情报溯源分析系统,由华东师范大学镜像视界浙江普陀时空大数据应用联合研究院联合镜像视界(浙江)科技有限公司协同研发,其…

2026/8/2 14:54:28 阅读更多 →
基于BeagleY-AI与ChatGPT的边缘AI视觉描述系统实践

基于BeagleY-AI与ChatGPT的边缘AI视觉描述系统实践

1. 项目概述:当BeagleY-AI遇上ChatGPT,会擦出什么火花? 最近在玩BeagleY-AI这块板子,它搭载了TI的AM67A AI视觉处理器,算力不错,接口也丰富,很适合做边缘AI的原型验证。但玩着玩着,我…

2026/8/2 14:54:28 阅读更多 →
Lua游戏开发中的轻量级ECS架构:从原理到实战实现

Lua游戏开发中的轻量级ECS架构:从原理到实战实现

1. 项目概述:为什么我们需要一个轻量级的Lua ECS?如果你正在用Lua开发游戏,无论是独立游戏、手游还是某些特定领域的脚本逻辑,当项目规模稍微大一点,你可能会遇到一个经典的难题:如何优雅地管理游戏对象和它…

2026/8/2 14:54:28 阅读更多 →
全维空间情报:动态目标三维特征提取与意图推演平台 技术白皮书

全维空间情报:动态目标三维特征提取与意图推演平台 技术白皮书

全维空间情报:动态目标三维特征提取与意图推演平台 技术白皮书第一部分 核心技术章节1. 产品综述全维空间情报:动态目标三维特征提取与意图推演平台,由华东师范大学镜像视界浙江普陀时空大数据应用联合研究院联合镜像视界(浙江&am…

2026/8/2 14:54:28 阅读更多 →
目标检测数据标注实战:labelImg工具详解与YOLO格式标注技巧

目标检测数据标注实战:labelImg工具详解与YOLO格式标注技巧

1. 项目概述:从“看”到“懂”,目标检测的第一步做计算机视觉,尤其是目标检测,第一步往往不是写代码,而是“喂数据”。模型再强大,算法再精妙,没有高质量、标准化的标注数据,一切都是…

2026/8/2 14:53:27 阅读更多 →

日新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/2 0:00:38 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/2 0:00:38 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/2 0:00:38 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/2 6:34:16 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/2 2:47:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/2 0:23:22 阅读更多 →