原来训大模型,就像开一家小餐馆!
你是不是一直觉得训练大语言模型是 OpenAI、百度这种大厂才能干的事要几万张显卡要花几个亿普通人想都不敢想错了我用自己开发机上的 8 张 H20 显卡花了点时间从零开始训了个 7B 的大模型全过程都给你扒得明明白白没有那么多黑话用做饭的例子给你讲清楚看完你就知道原来训大模型普通人也能玩原来训大模型就像开一家小餐馆很多人一听 “从零训大模型” 就头大觉得全是看不懂的技术其实拆解开来跟你开个小餐馆做饭一模一样挑选食材语料收集—— 你要先找新鲜优质的食材也就是训练用的文本数据食材不好再厉害的厨师也做不出好吃的菜切菜Tokenizer 处理—— 把大的食材切成小块方便下锅也就是把长文本切成模型能看懂的小 token炒菜预训练—— 把切好的菜放进锅里炒让模型从海量数据里学会语言的规律这一步是最花时间的调味指令微调 SFT—— 菜炒得差不多了加点盐、酱油调个味让模型学会听你的指令你问它问题它能好好回答试菜对齐强化学习—— 喊朋友来试菜根据反馈再调整味道让模型的回答更符合人的喜好上菜部署上线—— 菜做好了端给客人吃也就是把模型部署到线上给别人用是不是一下子就懂了原来这么复杂的大模型训练拆解开就是这么日常的步骤7 年时间Transformer 到底改了多少我们现在训大模型用的基础架构还是 2017 年那篇《Attention Is All You Need》里的 Transformer就像手机的基础还是智能手机但 7 年时间我们给它加了无数的升级从老款的 “基础款”变成了现在的 “顶配版”原来的老 Transformer就像最早的 iPhone8能用但很多地方不够顺手位置编码只能支持 512 的长度就像手机只能存 500 个联系人多了就存不下注意力机制是全头独立的推理的时候占很多空间就像手机后台开几个应用就卡激活函数用的 ReLU就像手机的处理器功耗高性能还一般现在的现代 LLM就像最新的 iPhone16加了一堆升级RoPE 旋转位置编码原来的地址只能写 512 字现在能无损扩展到 128K 甚至 1M长文档随便处理GQA 分组查询注意力把 KV 缓存压缩了 4-8 倍解码速度直接提了 30%就像手机的后台机制优化了开再多应用也不卡MoE 混合专家原来一个厨师要做所有菜现在变成了一堆厨师每个厨师只做自己擅长的同样的火力能做更多菜模型容量直接拉满SwiGLU 激活函数换了个更好的 “处理器”性能提了一大截功耗还降了RMSNorm 归一化把洗菜的步骤简化了计算量少了 30%炒菜更快了这些升级加起来才有了我们现在能用的又快又强的大模型这次我训的 7B 模型用的就是这些最新的升级跟 LLaMA、Qwen 这些主流模型是一样的架构第一步找对 “食材”比什么都重要很多人一开始就盯着显卡觉得卡越多越好其实不对训模型最核心的是 “食材”—— 也就是语料。食材不好你用再贵的锅再厉害的厨师也做不出好吃的菜。我这次用的语料是魔塔上公开的高质量预训练语料一共 400 多万行还有 11 万条的指令微调数据都是清洗过的高质量数据没有乱七八糟的垃圾内容。食材找好了接下来就是切菜 —— 训练 Tokenizer。你总不能把一整颗白菜直接丢锅里炒吧得切成小块模型才能处理。Tokenizer 就是干这个的把文本切成一个个小的 token就像把菜切成小块方便下锅。现在主流的切菜方法是 Byte-level BPE这个方法好在哪不管你是中文、英文、还是 emoji它都能切不会有切不了的菜也就是不会有 UNK 未知字符这也是为什么现在的大模型能支持这么多语言还能处理各种奇怪的字符。我自己训了一个专属的 Tokenizer词表大小 64000专门适配我用的语料比用通用的 Tokenizer 切得更顺手就像自己家的刀用惯了切菜更快。选对 “锅”训练效率直接翻几倍食材切好了接下来要选锅不同的锅适合做不同的菜训模型的框架也是一样Megatron-LM大锅这个锅特别大支持各种并行策略百亿、千亿级别的大模型都能炒吞吐量高训练稳就是用起来有点复杂适合大规模预训练DeepSpeed中锅这个锅大小刚好易用性很好社区也活跃最适合做 SFT 微调也就是我们炒菜之后的调味步骤FSDP小锅PyTorch 原生的用起来特别简单适合小模型自己玩中小规模的训练足够用我这次要训 7B 的预训练模型所以选了 Megatron 这个大锅它能把 8 张卡的性能拉满训练起来又快又稳不会炒到一半糊了。8 卡机训 7B 模型全过程实录食材、刀、锅都准备好了终于可以开炒了第一步先把食材预处理一下把我们的 json 语料转换成 Megatron 能认的二进制格式就像把切好的菜装成锅能直接用的配菜不用再额外处理了。然后就是调火候这一步很重要火大了菜会糊火小了菜炒不熟学习率就是火力我设的 3e-4峰值火力然后慢慢降下来最后到 3e-5Batch size就是一次炒多少菜全局的 batch 是 256每个卡一次炒 1 个慢慢加训练步数一共炒 10 万步把所有的食材都炒一遍然后启动训练8 张 H20 卡一起干活这个时候我就只要盯着监控就好了就像厨师盯着锅里的火候看看 loss 有没有在降GPU 利用率够不够别炒着炒着火灭了或者火太大把菜炒糊了。等预训练炒完了就该调味了 —— 也就是 SFT 指令微调。这个时候的模型其实已经学会语言的规律了但是它不会听话你问它问题它可能瞎扯就像菜炒好了没放盐没味道。SFT 就是给菜加调料用 11 万条指令数据再训一遍让模型学会你问它问题它要怎么回答这一步就快多了2 个 epoch 就搞定了调完味模型就变成能跟你聊天的助手了最后把模型转成 HuggingFace 能认的格式就能直接加载用了测试了一下效果跟预期的一样能生成文本能回答问题完全能用写在最后原来现在训大模型真的没有我们想的那么难了。不用大厂的几万张卡不用几个亿的投入普通人有 8 张显卡有点时间就能从零训一个 7B 的大模型你甚至可以训一个专属的模型比如专门处理你工作的文档或者写你喜欢的小说完全定制化。AI 的门槛正在以我们想象不到的速度降低原来只有大厂能玩的东西现在普通人也能自己动手玩了。你有没有想过自己训一个专属的小模型你想拿它来做什么是整理你的工作笔记还是写专属的小说评论区聊聊你的想法呀
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2639176.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!