25M参数大模型CPU从零训练:完整技术路线与踩坑指南
直接说结论这个项目值得做而且很适合当作你彻底搞懂“大模型是怎么炼成的”这条完整链路的第一站。25M参数也就是约2500万参数的LLM听起来不大却是一个五脏俱全的自回归语言模型有自己的词表、自己的嵌入层、自己的Transformer解码器、自己的训练语料和训练循环。更关键的是整个训练在一台只有8核CPU、16G内存的普通电脑上就能跑完不需要GPU不需要云端账号也不需要先下载一个几十GB的大模型再来微调。先把预期管理好25M参数不是拿来跟那些动辄百亿千亿参数的生产级模型比智商的。它学不会复杂推理也写不出长篇连贯文章。但它的价值恰恰在于“小”——因为小所以你能看透它因为CPU能训所以你不用排队等显卡因为从头开始所以分词、数据、模型、训练、评估每一环都摊在你面前任何一个环节出问题你都必须自己解决。这跟“拿现成模型跑个demo”是完全不同的学习体验。1. 项目拆解在CPU上从零训练LLM的思路我之所以把目标定在25M这个量级核心诉求只有一个在个人电脑上、以天为单位、能看到一个从零长出来的语言模型开口说话。如果目标是70亿参数那讨论的话题就是集群调度和CUDA优化跟“从零理解”没什么关系。而25M这个规模刚好卡在“足够表达语言规律”和“CPU能扛得住训练”之间的甜点区。1.1 25M参数到底是个什么量级先建立体感。25M参数的模型权重用单精度浮点保存文件大约100MB出头。拆开来看词表嵌入矩阵大约占600万参数7个Transformer块加起来约1240万参数输出投影层又占600万。这个体量决定了它的训练代价是可被普通CPU接受的每训练一个token前向加反向的浮点运算量大约在1.5亿次左右普通8核CPU每秒钟可以处理几百个token。这个量级意味着什么意味着你可以在一两天内看到模型从输出一堆乱码到吐出语法通顺的短句意味着你不需要为了显存不够而焦虑也意味着即使某一步配置错了、需要重训代价也就是睡一觉的工夫。1.2 为什么是“从零训练”而不是“微调”很多人一听到练模型第一反应是“找个开源模型微调”。微调当然有它的价值但它回避了太多核心问题你不需要设计词表、不需要处理语料、不需要面对训练不收敛、不需要理解学习率调度的意义。从零训练完全是另一回事你等于要把整条炼油管线自己搭一遍。这个过程里你踩的每一个坑最后都会变成对“Transformer为什么这样设计”“AdamW各个参数在干什么”“数据质量为什么那么重要”的真正理解。我自己带过不少人上手体会最深的一点是完整从零训完一个25M模型比读十篇结构讲解都有用。因为讲解告诉你的是结论而从零训练逼着你亲手把结论推导一遍。1.3 项目边界适合谁、前置条件是什么如果你满足下面这些条件这个项目非常适合你会一点Python知道神经网络里反向传播的大致原理不要求能手推公式手头有一台普通电脑想搞清楚大模型底层到底发生了什么。如果你还完全没接触过深度学习建议先花一天补一下“神经网络是怎么学习”的基础概念再动手。这个项目不需要昂贵的显卡不需要你精通分布式训练它把规模压到个人电脑能完成的范围让你用最低的硬件门槛获得一条完整、可复现的训练经验。跑通以后你再去看那些大模型的论文和技术博客会发现它们讨论的问题你已经在最小尺度上亲手摸过一遍了。2. 模型架构设计25M参数是怎么一处处凑出来的架构上没有半点花活。我用的是现代自回归语言模型最标准的形态Token嵌入加上位置嵌入后面接7个Transformer解码块再接最终LayerNorm和输出投影。每一个块内部是“注意力子层加MLP子层”采用残差连接注意力之前先做LayerNorm也就是常说的Pre-Norm写法训练比Post-Norm稳定得多。注意力是带因果掩码的每个位置只能看到自己和之前的位置这样模型生成时才不会“偷看未来”。这套架构不需要任何自定义算子主流的自动求导框架都能直接实现反向传播交给框架自动完成。选择标准形态而不是加各种“花活”是因为在25M这个规模上问题一定出在数据、学习率、训练步数这些基础环节而不是架构创新。2.1 一套配置直接给到你这就是我最终跑通的配置你可以先照抄跑通以后再慢慢改超参数取值一句话理由词表大小16384词表太大则嵌入矩阵膨胀太小则一个token承担的语义过重上下文长度256CPU上注意力开销随长度平方增长256是性价比很高的点嵌入维度384中等宽度兼顾表达能力和计算量注意力头数6每头维度64经典设置Transformer层数7深度优先于宽度的折中选择前馈网络隐藏维度1536惯例是嵌入维度的4倍是否共享嵌入/输出否不共享正好凑到25M附近2.2 参数账本每笔参数都算得清清楚楚很多人对“25M”没有概念我把每一笔账都算给你看。这里说的参数都是需要被优化器更新、需要存进checkpoint的实际权重。组成计算过程参数量Token嵌入16384 × 3846,291,456位置嵌入256 × 38498,304每个Block注意力4 × 384 × 384589,824每个BlockMLP384×1536 1536×3841,179,648每个BlockLayerNorm2 × 3847687个Block合计(5898241179648768) × 712,391,680最终LayerNorm384 × 2768输出投影16384 × 3846,291,456总计—25,073,664看到没有最后加总就是25,073,664个参数四舍五入正好25M。这里最容易被人忽略的是两层词嵌入和输出投影各占600多万。这两个矩阵的规模完全被词表大小和嵌入维度锁死这也是为什么“词表大小”是训练前最需要想清楚的决策之一。我特意没有让词嵌入和输出投影共享权重否则参数会掉到1850万左右。共享能省内存但也意味着“知道一个词长什么样”和“预测下一个词的概率分布”用同一份向量表达对于这么小的模型让它们分开学更稳妥。2.3 几个关键取舍背后的原因我一开始试过别的组合比如4层、嵌入维度512那种“宽而浅”的结构参数同样在25M上下。但实测下来深层小宽在这种小语料任务上表现更好。理由也直观每一层就是一个信息加工步骤层数多一点模型能在“词法、句法、局部语义”之间建立更绵长的依赖链条宽度到一定程度以后边际收益就非常有限了。当然也不是越深越好超过某个深度以后梯度信号会变弱CPU训练时间也拉长7层是我在这台机器上试出来的平衡点。另一个值得解释的是上下文长度。注意力机制的计算量随序列长度的平方增长256和512在CPU上是三四倍的训练时间差距。对一个小模型来说256个token足够学到短句结构和简单的词语搭配规律而且生成时逐token滚动256的窗口在叙事类文本里已经能让句子基本站得住。如果你的语料特别强调长程依赖可以后期再往上调但第一次跑我强烈建议先锁死256。3. 数据与Tokenizer决定训练上限的第一步数据是模型的地基。这句话谁都听过但当你真的从零开始做你才会理解它有多具体词表怎么训、语料怎么清洗、一个token代表多长、一个样本切多长这些决策全部发生在写任何一行模型代码之前而且每一个决策都会直接写进模型的“体质”。3.1 语料选择与清洗这些坑我全踩过我当时用的是公开的短篇故事类文本风格统一、句子完整、语法相对干净总量在几千万到一亿字这个区间。千万别一上来就抓一个几十GB的“全网文本”丢进去CPU训不完不说里面混着的乱码、网址、重复段落会让模型学到一堆毒习惯。清洗阶段我的固定动作是这几步先去掉HTML标签和不认识的乱码字符再按行做哈希去重把完全重复的段落删掉然后把空白规范化全角英文数字转成半角最后按长度过滤太短的碎片和超长的无标点段落都不要。有一点要特别提醒中文的标点包括逗号、句号、引号一定要保留。我自己第一次做清洗的时候手一滑把标点全删了结果训出来的模型对着“从前有只小狐狸”接了半天一个标点都不会打句子完全是词语堆砌。词法只是骨架标点是语法的肌肉割掉了模型很难自己长回来。3.2 从零训练BPE词表的具体步骤有了干净语料下一步就是训练自己的词表。我用的是经典的BPE算法目标词表16384个token。思路是在“字”的基础上反复把出现频率最高的相邻字符对合并成一个新token一直合并到词表达到目标大小。以中文为主的语料里这个算法会自动长出很多“词级”的token比如“我们”“但是”这类高频组合会各自成为一个token。实操顺序是这样的先做预分词规则很简单按空白和标点把文本切成片段然后初始化基础词表把所有出现过的字收进去接着跑BPE合并最后在词表固定位置加入几个特殊token比如 表示未知、|endoftext|表示文档结束。这里有一个新手很容易踩的坑词表训练之前必须先做文本归一化否则同一个词会因为全角半角、繁简不一致而被拆成好几个token白白浪费词表额度。我的习惯是训练完马上做一遍“编码到解码”的回环测试随机抽几段原文编码再解码能还原得一字不差才说明分词管线是通的。3.3 数据打包与高效读取语料清洗好、词表训好以后我建议一次性把整个语料编码成token id数组存下来不要留着原始文本在训练循环里现编码。16384的词表token id最大不超过65535正好可以用uint16存储一亿个token大约200MB内存映射打开以后训练时根本不用把整个文件读进内存。每个文档结束的位置插入|endoftext|作为文档边界。训练时每次随机取一批起始位置从token数组里连续切出256个token作为输入同一段右移一个位置作为标签。也就是说模型要做的事情就是根据前256个token预测第257个再根据第2到第257个预测第258个一路滑动下去。随机采样看着简单实际效果不错如果想要更严格可以把语料切成等长块、打乱顺序再逐个取两种我都试过在这个规模上差异不大。4. 训练循环核心实现CPU友好的完整流程模型定义好了数据准备好了接下来就是核心的训练循环。这个环节我的建议是只写前向计算把反向传播交给自动求导框架。你的全部精力应该放在损失函数、优化器配置、batch大小、学习率这几个真正决定收敛质量的东西上。4.1 前向、损失、反向核心代码逻辑代码层面我用框架无关的伪代码来说明核心逻辑翻译成你手边的自动求导框架API非常直接# 前向输入x形状为(B,T)输出logits形状为(B,T,V) def forward(x): B, T x.shape h token_embed(x) pos_embed[:T] # 词嵌入 位置嵌入 for block in blocks: h h block.attn(block.norm1(h)) # Pre-Norm 注意力 残差 h h block.mlp(block.norm2(h)) # Pre-Norm MLP 残差 logits lm_head(final_norm(h)) # (B,T,V) return logits # 标签y把输入右移一位 loss cross_entropy(logits.view(-1, V), y.view(-1))这里最容易被新手搞错的是标签的构造。给定x是“从前有只小狐狸”那么y就是“前有只小狐狸”也就是x去掉第一个token、末尾补一个目标token。实现上通常直接让 y x[:, 1:]配合输入 x[:, :-1]两边形状对齐即可。损失用的是分类交叉熵把整个batch里所有位置的所有token都当作样本算平均损失。初始时loss大约等于词表大小的自然对数也就是ln(16384)约等于9.7。看到loss从这个起点往下走说明模型真的在学习。4.2 优化器与学习率稳定收敛的配置组合优化器我推荐AdamW这是自回归语言模型训练的事实标准。它相当于Adam加上解耦的权重衰减权重衰减直接作用在参数更新上而不是梯度里对防止小模型在有限数据上过拟合很有帮助。我的起始配置是beta10.9beta20.95epsilon1e-8权重衰减系数0.1。学习率采用“先预热、后余弦衰减”的经典调度前500到1000步学习率从0线性升到6e-4左右这一步是为了让模型在训练早期不要因为过大的更新步长而把参数推飞之后按余弦曲线慢慢降到峰值的十分之一左右。还有一个我每次都开的保险梯度裁剪。把整组梯度的L2范数限制在1.0以内如果某一步出现了意外的梯度爆炸裁剪会把这次更新拉回正常范围。训练自回归模型时loss偶尔会毫无征兆地跳一个尖峰有了梯度裁剪多数尖峰过一阵就会自己消下去。4.3 内存与速度梯度累积、线程数、数据预处理的实操纯CPU训练内存和速度是两座山。内存方面25M模型本身权重只有100MB左右但AdamW要额外保存两份动量加上梯度和中间激活一个batch算下来几百MB到1GB都是正常的。16G内存的机器绰绰有余8G内存就建议把batch调小。batch调小了怎么办用梯度累积。比如你想等效batch_size32但单batch只能塞得下16那就每16个样本算完反向传播之后不清梯度攒两次再统一更新参数。这相当于用时间换空间收敛效果和一次喂32个样本非常接近。训练循环里对应这样一段逻辑if (step 1) % accum_steps 0: clip_grad_norm(model, 1.0) # 梯度裁剪 optimizer.step() # 更新参数 optimizer.zero_grad() # 清空梯度 scheduler.step() # 更新学习率速度方面我在普通8核笔记本CPU上的实测大概是每秒钟500到900个token。注意这不是生成速度而是“训练吞吐”也就是每秒钟处理的训练样本token数。要把速度稳住有几个决定性习惯第一设置线程数等于物理核心数不要让它自动放飞第二语料必须预先编码好不要让模型训练的时候还忙着做分词第三训练循环里尽量用批量矩阵运算别在Python层写一个token一个token的显式循环第四训练的时候关掉那些占CPU的后台进程这一点看着蠢实际影响巨大。4.4 训练时间预估在普通CPU上到底要跑多久把上面的数字汇总成一张表你就能对“CPU训LLM”的时间成本有直观感受。假设你的机器吞吐在500 token/s左右训练数据量预计时长训练步数等效batch32×256模型大概状态1000万token约5到6小时约1200步能输出像词的东西语法稀碎3000万token约16到18小时约3700步短句开始通顺标点基本能用1亿token约55小时约12000步语法明显稳定简单接龙可用注意这只是数量级估算不是benchmark。我的建议是第一次跑别一上来就怼1亿token先用一两千万token把整条管线完整走一遍确认loss在健康下降、生成结果肉眼可见地变好再挂机跑整夜上量。这样万一中间出了什么问题损失的只是一顿饭的时间而不是一个周末。5. 踩坑实录训练中的常见问题与排查从零训练最大的乐趣之一就是会遇到各种“书上没写”的问题。下面这些故障我基本都亲手踩过也帮别人排查过直接整理成速查表你遇到的时候对照着来就行。5.1 六个高频故障速查表现象可能原因处理办法loss一直在9.7附近纹丝不动学习率太小 / 数据没有shuffle / 分词管线坏了全编成同一个id先做编码-解码回环测试lr提到6e-4到1e-3确认每个batch的样本不是固定顺序loss早期暴降但生成是乱码模型在背训练集的字面搭配 / 还没训够 / 上下文太短别只盯着loss每500步打印一段生成加大数据量等训练时间到位再看loss突然变成NaN学习率太高 / 数值溢出 / 语料里有超长数字或异常符号开梯度裁剪max_norm1lr降到3e-4清洗阶段把离群字符替换掉内存不足batch太大 / 序列太长 / 数据一次性读入内存batch减半并用梯度累积补回来seq降到128用mmap读token数组生成只会反复吐同一个词采样温度太低 / 模型容量不足 / 训练数据里重复段落太多temperature提到0.8到1.0配合top_p0.9换更干净的语料确认数据去重做过速度远低于预期线程数没设置 / 数据在训练循环里现编码 / 后台进程抢占CPU设线程数等于物理核语料提前全量编码关掉吃CPU的后台任务5.2 “损失在降但生成是乱码”的真相这是几乎所有人都会遇到的一幕loss曲线非常漂亮一路下探但是模型生成的东西跟失忆了一样前言不搭后语。原因其实不神秘。小模型的loss下降很大一部分来自对高频n-gram的统计记忆它可能已经记住了不少常见搭配但还没有建立起真正的句法约束。再加上上下文只有256个token模型生成时能参考的信息非常有限稍长一点的输出就会跑偏。解决思路是第一坚持训练够时间词法记忆积累够多之后句法会慢慢浮现第二用生成质量而不是loss作为观测指标第三如果你发现长时间loss下降都很平缓但生成依旧稀碎就要回头怀疑数据——是不是清洗时把标点删了是不是语料本身风格太杂。我见过好几次“损失不降”和“生成乱码”的终极原因都出在数据清洗这一层而不是模型代码。5.3 几个值得固化下来的操作习惯排查问题之余这几个小习惯能帮你省下大量返工时间。第一每500步保存一次checkpoint里面同时存模型权重、优化器状态、学习率调度器状态、随机数种子和当前步数这样哪怕训练中断也能从最近一次存档无缝续跑。第二固定的种子贯穿数据采样和模型初始化保证两次实验之间有可比性。第三从第一行代码开始就保留一段“生成验证”的小函数训练期间每隔几百步打印几条模型生成的文本这是判断训练健康度最快的手段。第四所有实验配置写进一个配置文件跟checkpoint放在一起防止一个月后回头看checkpoint时想不起来当时用的词表大小、学习率和数据量。6. 评估与扩展跑完训练之后的路训练跑完不是终点你得能证明这个小模型真的有“语言能力”并且知道它下一步能往哪走。6.1 怎么判断这个小模型真有“语言能力”最常用的指标是困惑度也就是对“留出来的、模型没见过的”数据计算平均惊讶程度公式上等于交叉熵损失的指数。25M模型在干净短篇故事类语料的测试集上困惑度落到20到50之间算是正常水平如果低于20说明模型已经相当适应这类文本的写法了。不过困惑度只能说明“模型有多擅长预测下一个token”不能告诉你模型会不会“思考”。要感受语言能力最好的方式是直接生成设置temperature0.8、top_p0.9用“从前”“今天”“有一天”这类开头让它续写看它是否用得对代词、对得起标点、能维持几句相同话题。你还可以做简单的完形填空给它一个“今天天气很好我和朋友去____。”的句子让模型算各个候选词的概率看它是否把概率压在语义合理的词上。这些都是25M级别模型负担得起的测试。6.2 从25M往上走扩展路线与数据量法则训练流程跑通以后往上扩展只是个量变的过程。业界常用的经验法则是训练token数大约等于模型参数量的20倍时算力利用最划算。按这个法则25M参数的理想训练量是5亿token在普通CPU上大概要连续跑十几天对个人项目来说不太现实。更务实的做法是把它当教学闭环用一两亿token把模型训到“肉眼可用”然后心里清楚它离“参数物尽其用”还有多远。想继续往上走路线一般是60M、100M、350M这样的台阶每一级都需要更长上下文、更干净的数据、更快的数据加载最终某一天你会意识到自己需要一块GPU。到那时候你已经完全清楚GPU上的每一份算力花在了哪里。这个项目本身也可以做不少有趣的延伸比如把固定位置嵌入换成旋转位置编码让模型对更长的序列更友好训完基座之后再找一批问答对做微调让它学会遵循指令甚至可以把上下文从256改成128观察那个熟悉的loss曲线如何变化。每改一个变量都是对前面所有认知的一次重新加固。6.3 一点个人体会我至今还记得第一次在笔记本CPU上把25M模型完整训完看到它顺畅地续写出一个有头有尾的小短句时的那种踏实感。那不是一个多么聪明的模型但它是我亲手“养”出来的词表是我训练的语料是我清洗的loss是我一点点调稳的每一个失败实验都变成了我对这套系统更准确的心智模型。如果你也打算上手我的建议从来都是先用小数据量把全流程跑通建立从“改代码”到“看loss”再到“看生成文本”的反馈回路然后再铺开数据量。这条路不需要GPU需要的是耐心和一点点调试的兴致。跑通之后你再回去看那些大模型的论文和博客会发现它们讨论的问题你已经在最小尺度上亲手摸过一遍了。

相关新闻

多线程编程的真实代价:从上下文切换到锁竞争

多线程编程的真实代价:从上下文切换到锁竞争

1. 真贵在何处:多线程不是白给的午餐上个月我接了个任务,某跨平台系统的消息处理模块,单线程跑得倒是规矩,就是延迟偶尔波动,老板让我提高吞吐。我当时的第一反应也简单:上多线程,八条线程并行处…

2026/10/12 8:54:58 阅读更多 →
GESP C++二级“画画”题详解:二维数组模拟与边界处理

GESP C++二级“画画”题详解:二维数组模拟与边界处理

GESP 2026年3月认证的C二级,第三部分编程题第二题叫“画画”。我拿到这道题的时候第一反应是:这不就是给二维数组填字符嘛。但等到自己真上手写,或者是在考场上盯着题目的时候,还是有不少人会丢分——不是不会写,而是细…

2026/10/11 4:35:16 阅读更多 →
基于Spring Boot的电子图书购物网站毕业设计全攻略

基于Spring Boot的电子图书购物网站毕业设计全攻略

1. 为什么电子图书购物网站是毕业设计的“稳妥之选”每年到了毕业设计选题的时候,总有一批同学在几个方向上反复纠结:想做人工智能方向但担心数学基础跟不上,想做算法岗的项目又怕工作量太大收不了尾,最后兜兜转转还是回到企业级应…

2026/10/11 4:35:16 阅读更多 →

最新新闻

PolarDB只读节点故障排查实战:从复制链路中断到根因修复

PolarDB只读节点故障排查实战:从复制链路中断到根因修复

开年第一个工作日,我还在工位上对着日历感慨假期过得太快,手机上的告警群就炸了。线上业务反馈,PolarDB MySQL版的只读节点连不上了,应用侧所有读流量全部超时报错。我那一瞬间脑子是蒙的:配置没动过、版本没升过、前几…

2026/10/12 8:55:17 阅读更多 →
Diff算法深度解析:从文本到虚拟DOM的底层原理

Diff算法深度解析:从文本到虚拟DOM的底层原理

git diff 是我每天用得最多的命令之一。不管是代码审查、找回归、还是看别人提交里到底改了什么,本质上都在做同一件事:把两串内容并排摆在一起,告诉你“哪里变了”。但你真的想过这个“哪里变了”背后是怎么算出来的吗?前几年面 …

2026/10/12 8:55:17 阅读更多 →
冒险岛079服务端源码架设指南:从建库到进游戏

冒险岛079服务端源码架设指南:从建库到进游戏

简介:《冒险岛079服务端一线海源码更新版》是一份适配079版本的服务端源码包,面向希望搭建、调试或深度定制游戏服务器的开发者和爱好者。更新版针对性能、稳定性、安全、兼容性与模块化做了优化,并补充错误处理与数据库访问机制,…

2026/10/12 8:55:17 阅读更多 →
Django酒店客房管理系统设计与实现:从数据库建模到业务流程

Django酒店客房管理系统设计与实现:从数据库建模到业务流程

1. 项目背景与核心需求拆解酒店宾馆客房管理系统这类项目,其实是我见过最多的管理类系统选题之一。无论是课程设计、毕业设计,还是中小型酒店为了摆脱Excel手工排房做的第一套信息化系统,八成都是这个方向。用了Django之后你会发现&#xff0…

2026/10/12 8:55:17 阅读更多 →
Kimi K3 OpenAI兼容接入:协议桥接与流式适配实战指南

Kimi K3 OpenAI兼容接入:协议桥接与流式适配实战指南

1. 为什么“Kimi K3接入”突然成了高频需求?——从一个真实调试现场说起上周帮某高校实验室做AI教学平台升级,对方提出一个看似简单但卡了三天的需求:“能不能让我们的学生作业批改系统,像调用ChatGPT API一样,直接把提…

2026/10/12 8:54:15 阅读更多 →
0.13秒出图超扩散模型20倍!超大规模GAN图像生成实战复盘

0.13秒出图超扩散模型20倍!超大规模GAN图像生成实战复盘

我把最近两个月的主力图像生成工作流,从扩散模型切回了一个老熟人:GAN。原因很简单,标题里那组数据太扎眼了——0.13秒出图,比Diffusion快20倍以上,还支持1600万像素输出。这在以前是想都不敢想的组合。我实测下来&…

2026/10/12 8:54:15 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →