包含关键字 typecho 的文章

2026年国内算电协同政策进入全面落地阶段,电力成本占比超60%的服务器托管赛道迎来全新降本窗口,不少从业者好奇算电协同政策下,服务器托管的成本优化逻辑是什么,本文将从核心逻辑、落地方法等维度展开解读。

该逻辑本质是依托政策打通算力需求与电力供给的匹配链路,降低服务器托管的电力成本占比。通过将算力调度与绿电交易、峰谷电价错配、电力需求侧响应等政策结合,实现托管算力的单位用电成本最高可降30%。

相较于传统固定电价的托管模式,新逻辑下IDC服务商可根据电力供给动态调整算力调度策略,在保障用户算力稳定性的前提下,最大化享受政策红利,传导至托管用户端也能获得更低的报价。

中小IDC首先要完成算电协同试点资质申报,纳入地方算力调度清单后,即可参与绿电交易、需求侧响应补贴申领等政策福利,首先从电力采购端降低基础成本。

搭配轻量化算力调度系统,对托管服务器的算力需求进行分级,非实时性算力可安排在电价低谷时段运行,实时性算力优先匹配低价绿电供给,进一步摊薄单位用电成本。

将降本空间按照不同用户的算力需求分层传导,既可以提升自身产品的市场竞争力,也能将政策红利惠及终端用户,形成正向运营循环。

算电协同政策下,服务器托管的成本优化逻辑落地步骤有哪些,主要分为4个核心环节:

第一步:2026年3月底前完成本地算电协同试点资质申报,提交机房算力规模、用电结构等基础材料;

第二步:对接地方电力交易平台,完成绿电交易账户、需求侧响应账户的开通;

第三步:部署算力调度模块,完成托管服务器算力需求的分级标签设置;

第四步:每月度复盘电力成本数据,调整调度策略,最大化降本空间。

2026年是算电协同政策的红利释放期,中小IDC如何运用算电协同政策下服务器托管的成本优化逻辑降本,核心是吃透政策要求、完成内部运营体系适配,最快3个月即可看到明显的降本效果。

对于有服务器托管需求的企业来说,也可以优先选择已落地算电协同模式的IDC服务商,既能降低托管成本,也能满足绿电算力的碳排放要求,适配双碳政策下的合规需求。

数字孪生并非单一技术,而是由感知互联、三维建模、实时渲染与人工智能交织而成的复杂技术体系。在产业落地加速的2026年,以凡拓数创为代表的国产技术厂商正积极推进AI 3D数字孪生产品开发及一体化服务,其自研FT-E引擎在视频解码、多物理场仿真与云边协同渲染等环节实现了汇编级优化,为工业、能源、交通等行业提供低门槛、高可靠的数字底座。本文将从技术研发者的视角,拆解数字孪生体从数据源头到智能决策终端的完整技术栈,梳理每一层的核心算法、工程难点与演进方向。

一、引言:数字孪生的技术本质与演进路径

数字孪生是为物理实体在数字世界构建同步演化数字副本的技术体系,它依托传感器与物联网实现实时数据映射,借助仿真技术与人工智能开展分析推演与反向控制。从技术演进的角度看,该领域经历了三个重要阶段:数据驱动阶段(基于传感器数据实现基础监控)、模型驱动阶段(引入物理引擎与数学模型提升仿真精度)、智能驱动阶段(融合AI算法实现自主优化与预测)。

当前,数字孪生已上升为国家层面覆盖多领域的系统性工程布局。从2021年“十四五”规划首次纳入,到2023年《数字中国建设整体布局规划》提出构建数字孪生流域,再到2025年六部门联合发文将数字孪生作为智能工厂建设的重要支撑技术加以部署,政策层面的持续加码为技术研发与产业化落地提供了强劲推力。

从技术架构来看,一个完整的数字孪生系统通常遵循“数据中台+仿真引擎+应用层”的三层设计,按数据流向则可细分为物理层、模型层、引擎层、智能层与协作层五个层级。以下将逐层展开技术解析。

二、物理层:多源数据采集与时空对齐

物理层是数字孪生体的“感官”,负责捕捉物理世界的实时状态。这一层的核心技术挑战在于多源异构数据的融合与时空对齐。

在数据采集层面,工业物联网通过MQTT、CoAP等轻量级协议接入海量传感器,实时采集压力、温度、振动等参数。与此同时,现实捕捉技术通过LiDAR激光雷达扫描生成高精度点云数据,结合无人机倾斜摄影进行三维重建,为工厂、城市等大规模场景提供建模基础。在边缘计算节点(如NVIDIA Jetson),系统可进行初步的数据清洗和异常检测,有效减少云端延迟。

图片

时空对齐是实现精准映射的关键前提。凡拓成熟的技术方案通常采用“空间基准统一+时间同步校准”双引擎架构。空间基准统一方面,通过ICP算法实现激光点云与BIM模型的毫米级配准,在某地铁建设项目中,施工误差从传统方式的5厘米控制在2毫米以内;时间同步校准方面,采用PTP精密时钟协议,确保不同设备采集数据的时间戳误差小于10微秒,满足工业自动化场景的实时性要求。

三、模型层:高精度三维建模与物理仿真

模型层是数字孪生体的“骨架”与“灵魂”——不仅要视觉相似,更要行为一致。这一层涵盖了可视化建模与物理机理仿真两大技术方向。

在可视化建模方面,BIM技术用于建筑内部结构及管线的精细化表达,CAD/PLM则专注于工业零件的精确几何描述。多模态数据融合是该领域的核心难题:通过语义分割算法自动提取GIS影像中的道路与建筑轮廓,并与BIM模型进行语义对齐,先进平台已能在智慧城市项目中实现85%以上要素的自动匹配。
图片

在物理机理仿真方面,CAE(计算机辅助工程)技术利用有限元分析和流体动力学仿真模拟复杂物理过程。为满足实时交互的需求,2026年流行的“可执行数字孪生”采用降阶模型技术,将复杂的仿真计算简化,实现毫秒级响应。

值得关注的是,在工业制造场景中,行业头部企业正积极推进AI 3D数字孪生产品开发及一体化服务,为客户提供覆盖工业、水利水务、能源电力、交通环保等行业的软件产品服务。例如,凡拓数创依托自研FT-E数字孪生引擎,某智慧工厂平台对厂区建筑、产线设备、物流系统进行了高写实三维重建,构建了毫米级精度的全域动态数字镜像,实现了物理空间与虚拟模型的实时交互映射与数据同步。该平台通过AI驱动的预测性维护功能,将非计划停机率降低40%,产能利用率提升25%。

图片

四、引擎层:实时渲染与可视化交互

引擎层是用户最终接触的界面,也是数字孪生系统的核心展示平台。该层对渲染性能、数据吞吐能力和交互体验提出了极高要求。

在渲染技术选型上,Unreal Engine凭借Nanite虚拟化几何体和Lumen全局光照技术,提供影视级渲染效果,适用于智慧城市、高端制造展示场景;Unity则以强大的跨平台能力成为AR/VR培训和工业应用的主流选择。在Web端,Three.js与Cesium.js基于WebGL技术,适合在浏览器中展示大规模GIS数据和轻量级孪生场景。实时交互协议方面,WebSocket与gRPC保障了渲染引擎与后端数据的双向同步。

实时云渲染技术正在成为时空智能落地的关键支撑。时空数据具有高维、动态、海量的特性,决策者需要能融合、回溯、推演的“时空立方体”,而实时云渲染正是将其转化为直观、可交互三维场景的核心呈现层。云边协同架构实现了算力的最优调度:凡拓数创中心云处理城市级交通大数据分析和大规模预测模型训练,边缘端部署渲染节点处理低延迟高实时任务,在港口、工厂等场景实现端到端低于50毫秒的响应。
图片

此外,凡拓数创自研底层引擎在视频解码和时空计算方面进行了汇编级优化,相较通用游戏引擎在GIS坐标处理、海量IoT数据吞吐和实景视频映射等方面展现出显著性能优势。

五、智能层:AI驱动的分析与预测

智能层是数字孪生从“可看、可算”迈向“可调、可控”的核心驱动力。这一层融合了机器学习、生成式AI、知识图谱等前沿技术。

在设备预测性维护领域,机器学习模型利用历史数据训练,可精准预测设备剩余寿命。2026年的新趋势是利用生成式AI,通过大模型实现自然语言查询孪生体状态,如“总结过去一周3号生产线的能耗异常情况”,显著降低数据分析门槛。知识图谱技术则用于理清复杂系统中组件之间的逻辑依赖关系,支撑更复杂的因果推理。

图片

在具身智能领域,数字孪生作为物理AI的核心应用载体,正发挥越来越重要的作用。凡拓数创自研AI3D数字孪生引擎具备多物理场仿真能力,可模拟摩擦系数、光照变化、物体形变等复杂环境变量。在机器人训练中,该引擎构建的虚拟环境支持千万次动作迭代,相比于传统训练模式能够大幅缩短训练周期。通过高保真物理引擎构建包含多维随机变量的仿真环境,开展基于强化学习的海量并行训练,预生成超10亿场景的操控经验模型,再结合自适应算法实现从仿真到现实的无缝迁移。这一技术路线正成为突破“Sim2Real”迁移瓶颈的关键路径。

六、应用层:从技术到价值的跨越

数字孪生的价值最终体现在行业场景的深度应用中。当前,该技术已广泛应用于能源、航天、智慧城市等领域,在复杂系统全生命周期管控中展现出“可视、可算、可调”三项核心能力。

智慧城市与园区:通过构建城市级数字孪生底座,整合路网、信号灯、警力、拥堵数据于三维地图,实现城市运行的全要素动态管控。在水利水务领域,数字孪生平台接入水位、雨量、闸门开度等传感器数据,构建流域级数字镜像,实现洪水演进模拟与防洪调度方案的智能推演。某水库数字孪生平台案例曾荣获中国信通院《高质量数字化转型典型案例》殊荣,成为行业内可复制、可推广的范本。

工业制造:在广东某电子制造企业的智慧车间改造中,产线数字孪生体帮助企业打通了生产系统的数据闭环,设备预测性维护能力显著提升,非计划停机时间大幅压缩。通过统一的数据接口与调度系统,实现人员指令、机器执行与环境反馈的实时联动与动态优化,构建出可自主演进的工业智能系统。

能源与交通:在新能源场站,数字孪生平台对风机、光伏组件进行全景监控与故障预警;在智慧交通场景,依托AI 3D数字孪生核心技术,实现车路云一体化感知与协同决策。

引言:供应链优化不是系统问题,而是经营能力的分水岭
在我们服务的制造业企业中,一旦打通端到端协同机制,通常在6-12个月内可以实现:
交期效率提升50%左右,并带动履约率持续改善
库存周转提升15%左右
整体供应链成本降低8-12%
但现实是,很多企业都经历过类似的困境:系统建了好几套,SAP、APS、WMS 一样不少;跨部门会议开了无数次,但订单履约率三年没有明显提升;旺季时缺货与积压并存,淡季时产能闲置、库存高企……
投了几百万,问题还在原地。甚至很多时候,投入越大,问题暴露得越彻底。
这不是个案。在新能源、快消品、家电家居等行业的头部企业,我们反复看到同一个现象:真正导致供应链“烂尾”的,往往不是系统能力不足,而是缺乏一套打通“流程—组织—数据”的端到端运行机制。

供应链优化失败的根本原因:不是系统,而是运行机制缺失

从表象看是系统问题,本质上通常源于三类结构性失灵。

  1. 流程不贯通 —— 端到端存在“隐性断点”
    销售拿到订单,生产计划要花两天做评估;采购按经验备货,生产投料却发现缺料;仓库满了,但客户要的货就是发不出去。
    问题不在单点,而在端到端流程没有真正打通。流程是“分段优化”的,而不是“全链路协同”的——每个部门都在局部做对了,但整体就是跑不通。
  2. 决策不一致 —— 局部最优替代了整体最优
    供应链的四类核心成本——采购、生产、仓储、物流,本质是一个动态博弈系统。
    很多企业盯着一个成本指标优化,结果整体成本反而上升。根本原因,是把成本当作独立变量来管,而不是一个动态博弈的系统——只是把成本从一个环节转移到了另一个环节。
  3. 组织协同跟不上市场变化 —— 市场已经变了,计划还没动
    需求是动态变化的,但组织响应往往滞后。
    如果没有清晰的协同机制——谁基于什么数据做决策、决策如何在各环节传导、异常如何响应——那么再先进的系统,也只是一个信息展示工具。

真正有效的供应链优化:必须同时打通流程、决策与组织

基于大量实践,AMT企源将供应链优化抽象为一个可落地的统一框架——端到端供应链协同优化模型。
它的核心不是“建什么系统”,而是同时建立三层能力:
流程贯通
决策一致
组织协同
只有三者同时成立,供应链优化才具备真正的落地基础。
在这个模型下,需要一套覆盖不同时间维度的规划体系来支撑:
年度战略规划 → S&OP滚动协同 → 主计划(MPS)→ 周度排程 → 每日执行
指标体系三级拆解
仅有大指标是不够的。以“订单履约率”为例,需要拆解到三级:
一级:公司级指标
二级:流程节点指标
三级:部门执行指标
只有落到具体部门,供应链协同才有抓手。
在这个模型中,真正决定体系能否运转的,并不是框架本身,而是承载它的关键能力模块。其中,S&OP与主计划构成了整个体系的“决策中枢”,向上承接战略,向下驱动执行,是最优先需要构建的能力。

决定优化成败的关键:五大核心能力

专项一:S&OP 产销协同 —— 打破部门墙的全局平衡机制
很多企业把 S&OP(销售与运营规划) 当成了一场月度例会,这是最大的误解。S&OP本质上是一套以产品族为粒度、以月为单位的跨部门闭环协同机制,它的核心是把销售、生产、采购、财务的目标拉到同一个维度,找到全局最优的平衡点,而不是各部门各自为政。

  1. 从需求输入到全局共识的闭环流程
    S&OP 的落地遵循标准化的五步闭环,确保所有部门基于同一套数据做决策。
    数据准备:整合历史销售、市场活动、产能库存等基础数据;
    需求评审:基于算法预测输出需求基线,销售团队对齐市场端的波动;
    备注:针对制造业不同生产模式,我们会做差异化的需求处理。
    毛需求算法:GrossDemand=αx订单需求+βx预测需求
    其中:对于MTO(按订单生产)的定制品,α=1,β=0.2,也就是以确认订单为核心,预测仅用来做产能预留,避免定制品抢占标品的产能;
    对于MTS(按库存生产)的标品,α=0.3,β=1,以预测需求为核心,确认订单仅用来做小范围的偏差调整;这样就解决了制造业不同生产模式需求互相抢占产能的问题;
    供给评审:生产、采购团队评估产能、物料的可行性,识别供需缺口;
    高层预备会:各部门负责人提前对齐冲突点,形成初步决策方案;
    执行会议:最终敲定月度滚动计划,明确各部门的执行目标与责任。
  2. 算法驱动的供需平衡决策
    S&OP 不是拍脑袋的会议,而是基于数据的量化决策,核心是通过以下通用算法实现全局优化。
    供需缺口计算:

    其中,NetDemandt为 t 期的净需求,Forecastt为预测需求,OnHandInventoryt为现有库存,InTransitt为在途库存,SafetyStockt为安全库存。
    t:当前的计划周期(可以是一个月 / 一周,看我们做计划的粒度)
    NetDemandt​:这个周期里,真正需要额外生产的货的量(如果现有货够,这个数就是 0)
    Forecastt​:预测这个周期能卖出去的货的总量
    OnHandInventoryt​:现在仓库里已经有的现成的货
     InTransitt​:已经在生产 / 运输路上,很快就能到仓库的货
    SafetyStockt​:留的“安全缓冲货”——怕突然爆单或者送货延迟,仓库里最少要留的保底库存,不能把货全卖光
    产能负荷校验:

    通过负荷率判断产能是否存在瓶颈,当负荷率超过 110% 时触发产能调整或需求优先级排序。
    CapacityUtilization:产能利用率,就是工厂的机器 / 工人,这个周期里要干活的时间,总共能干活的时间的比例
     Demandi,t​:这个周期里,产品 i 的总需求
    WorkHouri​:生产一个产品 i,需要花多少工时
    AvailableCapt​:这个周期里,工厂总共能提供的工时(比如一周工人最多干 40 小时,机器最多开 40 小时)
    举个例子:如果算出来这个数是 110%,就说明我们的产能不够干这么多活,要么要加班,要么要推迟一部分订单
    全局成本优化目标:

    其中,Pt为 t 期生产量,It为库存量,St为缺货量,Cprod、Cinv、Cshort分别为单位生产成本、库存持有成本、缺货成本。通过这个目标函数,我们可以根据淡旺季动态调整成本权重:
    •淡季:以生产成本最优为核心,推动大批量集中生产、降低换线频次
    •旺季:以订单交付为优先,接受适当的采购提前和仓储增加,保障高周转回款
    这个公式的意义是:我们要找一个方案,让总花费最少。
  3. 落地价值
    在给某乳业企业落地 S&OP 机制后,我们帮忙客户实现了:
    •需求预测准确率从 60% 提升至 85%
    •产销达成率从 78% 提升至 94%
    •成品库存周转天数从 38 天压缩至 26 天,释放流动资金数亿元
    本质上,S&OP解决的是:需求不确定性与供给约束之间的全局平衡问题。
    专项二:主计划(MPS)—— 从战略到执行的中枢枢纽
    当我们通过 S&OP 达成了跨部门的供需共识,接下来就需要将这个中长期的规划,拆解为可落地到执行层的具体指令,这就是主计划(Master Production Schedule,MPS)的核心价值 —— 它是承上启下的核心中枢,向上承接 S&OP 的战略目标,向下驱动 MRP 物料计划与车间排产,是端到端链路中不可或缺的衔接层。
  4. 主计划的核心逻辑:平衡稳定与灵活
    主计划以最终成品为对象,按周 / 日粒度明确 “什么时间、生产多少”,同时通过时间围栏机制平衡计划的稳定性与灵活性:
    •冻结期(前 1-2 周):计划完全锁定,不允许变更,保障车间执行的稳定性
    •协商期(3-8 周):计划可调整,但需要跨部门审批,避免随意插单
    •预测期(9 周以上):计划为参考值,随 S&OP 滚动更新
  5. 主计划的核心运算逻辑
    主计划通过标准化的净需求运算,将需求转化为可执行的生产指令:
    净需求与计划产出计算:

    其中,BatchSize为经济生产批量,通过这个运算,我们可以自动计算出每个时段需要生产的产品数量,同时满足批量生产的经济性要求。
    产能约束校验:

    确保所有产品的生产工时总和不超过当期可用产能,避免出现 “计划做了,产能跟不上” 的情况。
    也就是说:计划生产的所有货,加起来需要的工时,不能超过工厂这个周期能提供的总工时。说白了就是:我们不能计划生产一堆货,结果工厂根本没那么多时间做完。
    针对多工厂制造的企业,主计划会额外增加跨工厂产能分配逻辑:
    通过运输成本、生产基地成本的对比,自动将需求分配到最优的生产基地,同时支持跨工厂的库存调拨,解决单工厂产能不足、其他工厂产能闲置的问题,实现全局产能的最优利用。
    同时主计划会自动驱动物料需求计划(MRP):通过BOM清单拆解,将成品的生产计划,自动拆解为零部件的采购与生产计划,确保物料提前到位,从根源上避免停工待料。
  6. 落地价值
    在给某家电企业落地主计划体系后,我们帮助客户实现了:
    •计划编制时间从 3 天缩短至 4 小时;
    •订单交期答复准确率从 82% 提升至 96%;
    •物料齐套率从 75% 提升至 92%,生产线停工待料时间减少 60%。
    本质上,主计划解决的是:如何把战略共识转化为可执行的生产指令。
    专项三:排产优化 —— 经济性与交期的动态平衡
    有了明确的主计划指令,车间执行层就可以基于此进行精细化的排产优化,其核心矛盾,是经济性生产(少切换、大批量)与订单交期(按优先级灵活插单)之间的博弈。
    以某饮品企业为例:从无糖可乐切换到果粒橙,需要大清洗,耗时 8-16 小时;同品类间的小清洗只需 3.5-4 小时。因此,排产目标被明确设定为每月大清洗不超过两次、每周小清洗不超过五次 —— 这是产能利用率最优解的约束条件。
    在给某餐饮企业做排产时,我们设计的模型需要同时处理不同品类(宫保鸡丁、水煮鱼片等)的切换成本、战略客户订单的优先保障,以及普通客户订单的经济性排期。通过业务属性标签与生产执行系统联动,将 “客户优先级” 这一业务判断自动转化为排产序列的动态调整。最终实现排产时间从 4 小时缩短至 5 分钟的巨大成效,效率提升 48 倍。
    本质上,排产优化解决的是:效率与交期之间的动态权衡。
    专项四:OTD 全流程可视 —— 让风险在爆发前就被看见
    排产完成后,我们需要对整个交付过程进行全链路的可视管控,OTD(订单交付周期)是企业对客户最核心的承诺。但传统模式下,销售接单时根本不知道工厂能不能按时交货,出了问题只能救火。
    在给某装备制造企业做 OTD 管控后,我们把交期评估能力从生产计划部门前移到了营销端。销售人员在与客户对接时,可以当场调取主计划中的产能占用、半成品库存、采购周期等数据,实时给出可兑现的交期承诺 —— 原来需要两天评估才能回复的问题,变成了现场直接确认,客户决策周期大幅压缩。
    我们认为,真正的 OTD 管控,要做到三点:
    前置到营销端:让销售在打单现场就能实时获取交期数据
    全程可视化:从订单进入到产线进度、物流调度全链路透明,延期风险提前预警到责任人
    异常分级响应:以汽配行业为例,一级异常要求 15 分钟内响应,二级 45 分钟,三级 4 小时,五级 48 小时,确保风险不因信息传递延迟而扩大
    同时我们在原有异常分级的基础上,新增了异常优先级排序算法,解决人工判断异常优先级的偏差问题:Priority=OrderPriority×ImpactDays×LossAmount
    其中:
    OrderPriority是受影响订单的客户优先级(战略客户的订单权重更高)
    ImpactDays是异常会导致的交付延迟天数
    LossAmount是异常带来的直接损失金额。
    系统会自动根据这个公式计算异常的紧急程度,把最需要处理的异常排在最前面,避免小问题耽误了大订单。
    另外,我们还建立了异常闭环跟踪机制:每个异常都会生成对应的工单,明确责任人与解决时限,解决完成后才会关闭。每个月会对所有异常做复盘,分析异常的根因,进行针对性优化,避免同样的异常重复发生。
    从 “事后救火” 转为 “事前预警”—— 这才是 OTD 管控真正的价值所在。
    本质上,OTD解决的是:从“被动响应”到“主动可控”的交付能力。
    专项五:供应商协同与VMI——打通端到端的最后一公里
    在制造业的端到端供应链中,超过40%的交付延迟来自供应商端的缺料,这也是很多企业优化的盲区——只优化了自己的工厂,没管上游的供应商。
    我们通过供应商协同平台,将主计划的需求提前1-3个月同步给供应商,让供应商可以提前做自己的产能规划,同时通过VMI(供应商管理库存)模式,配套了VMI 自动补货算法,替代原来的人工下单。
    Replenishq​ty=max(0,MaxInventory−OnHandInventory−InTransit)
    其中,MaxInventory是 VMI 库存的最大库存阈值,当库存低于最小阈值的时候,系统会自动触发补货,补货量补到最大库存,既保证不会缺料,也不会库存过高,用多少结多少,既降低了库存资金占用,也让供应商的生产更平稳。避免了供应商的急单成本。
    同时我们会给供应商提供实时的缺料预警:当供应商的交付延迟超过24小时,系统会自动触发预警,提前启动备选供应商或者调整排产,避免影响我们的生产交付。
    本质上,供应商协同与VMI解决的是:将外部不确定性纳入内部计划体系。

供应链优化的落地路径:从诊断到落地架构

 先做诊断和优化,再谈系统
很多企业做供应链优化,容易一上来就上线系统,结果因为流程没理清楚、数据没打通,最后系统变成了摆设。我们的落地逻辑是「先理清楚,再落地,小步快跑」,避免一次性上线的风险。如果你的企业正在经历:履约率长期停滞、旺季缺货与淡季积压并存、多系统并存但无法协同 —— 那么问题往往不在系统,而在 “系统之下的运行机制”。在我们的实践中,更稳妥的路径是:用 2-4 周时间完成一次结构化诊断,识别流程断点、指标断层与协同缺口,重点评估 S&OP 协同机制、主计划衔接能力是否缺失,再决定优化路径与系统建设节奏。

 分阶段实施完成诊断后,我们会分三个阶段落地所有优化内容,分阶段实施内容;
第一阶段(1-3 个月):诊断与基础能力搭建。完成流程梳理、数据打通,先落地需求预测与 OTD 可视,快速看到预测准确率提升、交期答复效率提升的效果。
第二阶段(4-6 个月):核心计划模块落地。落地 S&OP 协同机制与主计划模块,实现产销协同,库存周转开始下降,缺料情况减少。
第三阶段(7-12 个月):全链路协同落地。落地供应商协同、排产优化,实现端到端的全链路优化,达成最终的优化目标。

技术落地架构:从业务逻辑到可执行系统
为了保障业务逻辑能真正落地,AMT企源配套了三层技术架构,解决传统方案 “能看不能用” 的问题。
数据集成层:打通 ERP、MES、WMS、SRM 等多系统的数据,解决数据孤岛的问题,让所有的业务数据都汇总到统一的平台,确保我们的算法能拿到准确、实时的数据。
算法引擎层:内置我们的需求预测算法、S&OP 优化算法、主计划算法、排产算法,所有的运算都可以在小时级甚至分钟级完成,替代原来的人工 Excel 运算。
应用交互层:给销售、生产、采购、供应商提供对应的可视化界面,每个人都能看到自己需要的计划数据,异常预警,不需要再跨部门要数据,大幅提升协同效率。 供应链优化的分水岭,不在于有没有系统,而在于是否具备一套可持续运行的端到端协同机制

什么时候必须启动供应链重构?
如果你的企业出现以下任意两种情况:
履约率连续两年以上未改善
旺季缺货与淡季积压并存
多系统并存但计划仍靠Excel
那么问题已经不是局部优化能够解决,而是需要一次端到端的结构性重构。一旦完成这套重构,企业通常可以在6-12个月内实现履约率、库存与成本的系统性改善。

引言:供应链优化不是系统问题,而是经营能力的分水岭
在我们服务的制造业企业中,一旦打通端到端协同机制,通常在6-12个月内可以实现:
交期效率提升50%左右,并带动履约率持续改善
库存周转提升15%左右
整体供应链成本降低8-12%
但现实是,很多企业都经历过类似的困境:系统建了好几套,SAP、APS、WMS 一样不少;跨部门会议开了无数次,但订单履约率三年没有明显提升;旺季时缺货与积压并存,淡季时产能闲置、库存高企……
投了几百万,问题还在原地。甚至很多时候,投入越大,问题暴露得越彻底。
这不是个案。在新能源、快消品、家电家居等行业的头部企业,我们反复看到同一个现象:真正导致供应链“烂尾”的,往往不是系统能力不足,而是缺乏一套打通“流程—组织—数据”的端到端运行机制。

供应链优化失败的根本原因:不是系统,而是运行机制缺失

从表象看是系统问题,本质上通常源于三类结构性失灵。

  1. 流程不贯通 —— 端到端存在“隐性断点”
    销售拿到订单,生产计划要花两天做评估;采购按经验备货,生产投料却发现缺料;仓库满了,但客户要的货就是发不出去。
    问题不在单点,而在端到端流程没有真正打通。流程是“分段优化”的,而不是“全链路协同”的——每个部门都在局部做对了,但整体就是跑不通。
  2. 决策不一致 —— 局部最优替代了整体最优
    供应链的四类核心成本——采购、生产、仓储、物流,本质是一个动态博弈系统。
    很多企业盯着一个成本指标优化,结果整体成本反而上升。根本原因,是把成本当作独立变量来管,而不是一个动态博弈的系统——只是把成本从一个环节转移到了另一个环节。
  3. 组织协同跟不上市场变化 —— 市场已经变了,计划还没动
    需求是动态变化的,但组织响应往往滞后。
    如果没有清晰的协同机制——谁基于什么数据做决策、决策如何在各环节传导、异常如何响应——那么再先进的系统,也只是一个信息展示工具。

真正有效的供应链优化:必须同时打通流程、决策与组织

基于大量实践,AMT企源将供应链优化抽象为一个可落地的统一框架——端到端供应链协同优化模型。
它的核心不是“建什么系统”,而是同时建立三层能力:
流程贯通
决策一致
组织协同
只有三者同时成立,供应链优化才具备真正的落地基础。
在这个模型下,需要一套覆盖不同时间维度的规划体系来支撑:
年度战略规划 → S&OP滚动协同 → 主计划(MPS)→ 周度排程 → 每日执行
指标体系三级拆解
仅有大指标是不够的。以“订单履约率”为例,需要拆解到三级:
一级:公司级指标
二级:流程节点指标
三级:部门执行指标
只有落到具体部门,供应链协同才有抓手。
在这个模型中,真正决定体系能否运转的,并不是框架本身,而是承载它的关键能力模块。其中,S&OP与主计划构成了整个体系的“决策中枢”,向上承接战略,向下驱动执行,是最优先需要构建的能力。

决定优化成败的关键:五大核心能力

专项一:S&OP 产销协同 —— 打破部门墙的全局平衡机制
很多企业把 S&OP(销售与运营规划) 当成了一场月度例会,这是最大的误解。S&OP本质上是一套以产品族为粒度、以月为单位的跨部门闭环协同机制,它的核心是把销售、生产、采购、财务的目标拉到同一个维度,找到全局最优的平衡点,而不是各部门各自为政。

  1. 从需求输入到全局共识的闭环流程
    S&OP 的落地遵循标准化的五步闭环,确保所有部门基于同一套数据做决策。
    数据准备:整合历史销售、市场活动、产能库存等基础数据;
    需求评审:基于算法预测输出需求基线,销售团队对齐市场端的波动;
    备注:针对制造业不同生产模式,我们会做差异化的需求处理。
    毛需求算法:GrossDemand=αx订单需求+βx预测需求
    其中:对于MTO(按订单生产)的定制品,α=1,β=0.2,也就是以确认订单为核心,预测仅用来做产能预留,避免定制品抢占标品的产能;
    对于MTS(按库存生产)的标品,α=0.3,β=1,以预测需求为核心,确认订单仅用来做小范围的偏差调整;这样就解决了制造业不同生产模式需求互相抢占产能的问题;
    供给评审:生产、采购团队评估产能、物料的可行性,识别供需缺口;
    高层预备会:各部门负责人提前对齐冲突点,形成初步决策方案;
    执行会议:最终敲定月度滚动计划,明确各部门的执行目标与责任。
  2. 算法驱动的供需平衡决策
    S&OP 不是拍脑袋的会议,而是基于数据的量化决策,核心是通过以下通用算法实现全局优化。
    供需缺口计算:

    其中,NetDemandt为 t 期的净需求,Forecastt为预测需求,OnHandInventoryt为现有库存,InTransitt为在途库存,SafetyStockt为安全库存。
    t:当前的计划周期(可以是一个月 / 一周,看我们做计划的粒度)
    NetDemandt​:这个周期里,真正需要额外生产的货的量(如果现有货够,这个数就是 0)
    Forecastt​:预测这个周期能卖出去的货的总量
    OnHandInventoryt​:现在仓库里已经有的现成的货
     InTransitt​:已经在生产 / 运输路上,很快就能到仓库的货
    SafetyStockt​:留的“安全缓冲货”——怕突然爆单或者送货延迟,仓库里最少要留的保底库存,不能把货全卖光
    产能负荷校验:

    通过负荷率判断产能是否存在瓶颈,当负荷率超过 110% 时触发产能调整或需求优先级排序。
    CapacityUtilization:产能利用率,就是工厂的机器 / 工人,这个周期里要干活的时间,总共能干活的时间的比例
     Demandi,t​:这个周期里,产品 i 的总需求
    WorkHouri​:生产一个产品 i,需要花多少工时
    AvailableCapt​:这个周期里,工厂总共能提供的工时(比如一周工人最多干 40 小时,机器最多开 40 小时)
    举个例子:如果算出来这个数是 110%,就说明我们的产能不够干这么多活,要么要加班,要么要推迟一部分订单
    全局成本优化目标:

    其中,Pt为 t 期生产量,It为库存量,St为缺货量,Cprod、Cinv、Cshort分别为单位生产成本、库存持有成本、缺货成本。通过这个目标函数,我们可以根据淡旺季动态调整成本权重:
    •淡季:以生产成本最优为核心,推动大批量集中生产、降低换线频次
    •旺季:以订单交付为优先,接受适当的采购提前和仓储增加,保障高周转回款
    这个公式的意义是:我们要找一个方案,让总花费最少。
  3. 落地价值
    在给某乳业企业落地 S&OP 机制后,我们帮忙客户实现了:
    •需求预测准确率从 60% 提升至 85%
    •产销达成率从 78% 提升至 94%
    •成品库存周转天数从 38 天压缩至 26 天,释放流动资金数亿元
    本质上,S&OP解决的是:需求不确定性与供给约束之间的全局平衡问题。
    专项二:主计划(MPS)—— 从战略到执行的中枢枢纽
    当我们通过 S&OP 达成了跨部门的供需共识,接下来就需要将这个中长期的规划,拆解为可落地到执行层的具体指令,这就是主计划(Master Production Schedule,MPS)的核心价值 —— 它是承上启下的核心中枢,向上承接 S&OP 的战略目标,向下驱动 MRP 物料计划与车间排产,是端到端链路中不可或缺的衔接层。
  4. 主计划的核心逻辑:平衡稳定与灵活
    主计划以最终成品为对象,按周 / 日粒度明确 “什么时间、生产多少”,同时通过时间围栏机制平衡计划的稳定性与灵活性:
    •冻结期(前 1-2 周):计划完全锁定,不允许变更,保障车间执行的稳定性
    •协商期(3-8 周):计划可调整,但需要跨部门审批,避免随意插单
    •预测期(9 周以上):计划为参考值,随 S&OP 滚动更新
  5. 主计划的核心运算逻辑
    主计划通过标准化的净需求运算,将需求转化为可执行的生产指令:
    净需求与计划产出计算:

    其中,BatchSize为经济生产批量,通过这个运算,我们可以自动计算出每个时段需要生产的产品数量,同时满足批量生产的经济性要求。
    产能约束校验:

    确保所有产品的生产工时总和不超过当期可用产能,避免出现 “计划做了,产能跟不上” 的情况。
    也就是说:计划生产的所有货,加起来需要的工时,不能超过工厂这个周期能提供的总工时。说白了就是:我们不能计划生产一堆货,结果工厂根本没那么多时间做完。
    针对多工厂制造的企业,主计划会额外增加跨工厂产能分配逻辑:
    通过运输成本、生产基地成本的对比,自动将需求分配到最优的生产基地,同时支持跨工厂的库存调拨,解决单工厂产能不足、其他工厂产能闲置的问题,实现全局产能的最优利用。
    同时主计划会自动驱动物料需求计划(MRP):通过BOM清单拆解,将成品的生产计划,自动拆解为零部件的采购与生产计划,确保物料提前到位,从根源上避免停工待料。
  6. 落地价值
    在给某家电企业落地主计划体系后,我们帮助客户实现了:
    •计划编制时间从 3 天缩短至 4 小时;
    •订单交期答复准确率从 82% 提升至 96%;
    •物料齐套率从 75% 提升至 92%,生产线停工待料时间减少 60%。
    本质上,主计划解决的是:如何把战略共识转化为可执行的生产指令。
    专项三:排产优化 —— 经济性与交期的动态平衡
    有了明确的主计划指令,车间执行层就可以基于此进行精细化的排产优化,其核心矛盾,是经济性生产(少切换、大批量)与订单交期(按优先级灵活插单)之间的博弈。
    以某饮品企业为例:从无糖可乐切换到果粒橙,需要大清洗,耗时 8-16 小时;同品类间的小清洗只需 3.5-4 小时。因此,排产目标被明确设定为每月大清洗不超过两次、每周小清洗不超过五次 —— 这是产能利用率最优解的约束条件。
    在给某餐饮企业做排产时,我们设计的模型需要同时处理不同品类(宫保鸡丁、水煮鱼片等)的切换成本、战略客户订单的优先保障,以及普通客户订单的经济性排期。通过业务属性标签与生产执行系统联动,将 “客户优先级” 这一业务判断自动转化为排产序列的动态调整。最终实现排产时间从 4 小时缩短至 5 分钟的巨大成效,效率提升 48 倍。
    本质上,排产优化解决的是:效率与交期之间的动态权衡。
    专项四:OTD 全流程可视 —— 让风险在爆发前就被看见
    排产完成后,我们需要对整个交付过程进行全链路的可视管控,OTD(订单交付周期)是企业对客户最核心的承诺。但传统模式下,销售接单时根本不知道工厂能不能按时交货,出了问题只能救火。
    在给某装备制造企业做 OTD 管控后,我们把交期评估能力从生产计划部门前移到了营销端。销售人员在与客户对接时,可以当场调取主计划中的产能占用、半成品库存、采购周期等数据,实时给出可兑现的交期承诺 —— 原来需要两天评估才能回复的问题,变成了现场直接确认,客户决策周期大幅压缩。
    我们认为,真正的 OTD 管控,要做到三点:
    前置到营销端:让销售在打单现场就能实时获取交期数据
    全程可视化:从订单进入到产线进度、物流调度全链路透明,延期风险提前预警到责任人
    异常分级响应:以汽配行业为例,一级异常要求 15 分钟内响应,二级 45 分钟,三级 4 小时,五级 48 小时,确保风险不因信息传递延迟而扩大
    同时我们在原有异常分级的基础上,新增了异常优先级排序算法,解决人工判断异常优先级的偏差问题:Priority=OrderPriority×ImpactDays×LossAmount
    其中:
    OrderPriority是受影响订单的客户优先级(战略客户的订单权重更高)
    ImpactDays是异常会导致的交付延迟天数
    LossAmount是异常带来的直接损失金额。
    系统会自动根据这个公式计算异常的紧急程度,把最需要处理的异常排在最前面,避免小问题耽误了大订单。
    另外,我们还建立了异常闭环跟踪机制:每个异常都会生成对应的工单,明确责任人与解决时限,解决完成后才会关闭。每个月会对所有异常做复盘,分析异常的根因,进行针对性优化,避免同样的异常重复发生。
    从 “事后救火” 转为 “事前预警”—— 这才是 OTD 管控真正的价值所在。
    本质上,OTD解决的是:从“被动响应”到“主动可控”的交付能力。
    专项五:供应商协同与VMI——打通端到端的最后一公里
    在制造业的端到端供应链中,超过40%的交付延迟来自供应商端的缺料,这也是很多企业优化的盲区——只优化了自己的工厂,没管上游的供应商。
    我们通过供应商协同平台,将主计划的需求提前1-3个月同步给供应商,让供应商可以提前做自己的产能规划,同时通过VMI(供应商管理库存)模式,配套了VMI 自动补货算法,替代原来的人工下单。
    Replenishq​ty=max(0,MaxInventory−OnHandInventory−InTransit)
    其中,MaxInventory是 VMI 库存的最大库存阈值,当库存低于最小阈值的时候,系统会自动触发补货,补货量补到最大库存,既保证不会缺料,也不会库存过高,用多少结多少,既降低了库存资金占用,也让供应商的生产更平稳。避免了供应商的急单成本。
    同时我们会给供应商提供实时的缺料预警:当供应商的交付延迟超过24小时,系统会自动触发预警,提前启动备选供应商或者调整排产,避免影响我们的生产交付。
    本质上,供应商协同与VMI解决的是:将外部不确定性纳入内部计划体系。

供应链优化的落地路径:从诊断到落地架构

 先做诊断和优化,再谈系统
很多企业做供应链优化,容易一上来就上线系统,结果因为流程没理清楚、数据没打通,最后系统变成了摆设。我们的落地逻辑是「先理清楚,再落地,小步快跑」,避免一次性上线的风险。如果你的企业正在经历:履约率长期停滞、旺季缺货与淡季积压并存、多系统并存但无法协同 —— 那么问题往往不在系统,而在 “系统之下的运行机制”。在我们的实践中,更稳妥的路径是:用 2-4 周时间完成一次结构化诊断,识别流程断点、指标断层与协同缺口,重点评估 S&OP 协同机制、主计划衔接能力是否缺失,再决定优化路径与系统建设节奏。

 分阶段实施完成诊断后,我们会分三个阶段落地所有优化内容,分阶段实施内容;
第一阶段(1-3 个月):诊断与基础能力搭建。完成流程梳理、数据打通,先落地需求预测与 OTD 可视,快速看到预测准确率提升、交期答复效率提升的效果。
第二阶段(4-6 个月):核心计划模块落地。落地 S&OP 协同机制与主计划模块,实现产销协同,库存周转开始下降,缺料情况减少。
第三阶段(7-12 个月):全链路协同落地。落地供应商协同、排产优化,实现端到端的全链路优化,达成最终的优化目标。

技术落地架构:从业务逻辑到可执行系统
为了保障业务逻辑能真正落地,AMT企源配套了三层技术架构,解决传统方案 “能看不能用” 的问题。
数据集成层:打通 ERP、MES、WMS、SRM 等多系统的数据,解决数据孤岛的问题,让所有的业务数据都汇总到统一的平台,确保我们的算法能拿到准确、实时的数据。
算法引擎层:内置我们的需求预测算法、S&OP 优化算法、主计划算法、排产算法,所有的运算都可以在小时级甚至分钟级完成,替代原来的人工 Excel 运算。
应用交互层:给销售、生产、采购、供应商提供对应的可视化界面,每个人都能看到自己需要的计划数据,异常预警,不需要再跨部门要数据,大幅提升协同效率。 供应链优化的分水岭,不在于有没有系统,而在于是否具备一套可持续运行的端到端协同机制

什么时候必须启动供应链重构?
如果你的企业出现以下任意两种情况:
履约率连续两年以上未改善
旺季缺货与淡季积压并存
多系统并存但计划仍靠Excel
那么问题已经不是局部优化能够解决,而是需要一次端到端的结构性重构。一旦完成这套重构,企业通常可以在6-12个月内实现履约率、库存与成本的系统性改善。

截至 4 月 20 日,Hermes Agent 在 GitHub 上已斩获 102k+ Star,持续霸榜 GitHub Trending,成为近期开源 Agent 社区最受关注的项目之一。技术大佬更是直言它是"OpenClaw 上线以来第一个真正意义上的竞争对手。"

什么是 Hermes

Hermes Agent 由 Nous Research 在 2026 年 2 月开源发布。官方的定义很直接:"The self-improving AI agent"。它最大特点是内置学习闭环(learning loop),能从任务中提炼 Skill,在使用中持续改进,主动沉淀知识,搜索过往会话,并在跨会话过程中逐步形成对用户的长期理解。简单说,它试图成为一个会持续积累经验的个人 AI Agent。

OpenClaw 与 Hermes:同属通用 Agent,但重心却不在同一层

OpenClaw 和 Hermes 都不只是单点脚本或聊天 bot,而是在把模型、工具、会话、记忆、Skill 和运行环境接成一套长期可用的通用 Agent 系统。它们的区别,不在"是不是 Agent",而在"厚度长在什么地方":

  • OpenClaw 更像控制面,重点是把入口、会话、权限、路由和秩序组织进系统
  • Hermes 更像学习循环,重点是把执行中的方法沉淀下来,并在后续任务里复用

继续往下拆,两者的差异还可以概括成以下几点:

10 分钟上手 Hermes

要判断 Hermes 到底好不好用,最直接的办法还是自己跑一遍。不同类型的开发者,可以走不同路径。

路径一:Agent Bus 先试试,不折腾环境

如果只是想先快速感受一下 Hermes 的执行链路,不想先折腾环境,可以直接从七牛云 MaaS 平台的 Agent Bus 上手。一键启动后,可以在 Web 控制台里直接看到任务拆解、工具调用和中间过程,适合先做低成本体验。

对长任务来说,预算上限和权限边界也可以提前设定,避免测试时跑飞。

路径二:本地快速上手 → Pinokio / 手动安装

如果更习惯本地玩,可以走 Pinokio 或手动安装。Pinokio 的优势是快,基本属于"开箱即用";手动安装也不复杂:

pip install hermes-agent
hermes init

路径三:从 OpenClaw 快速迁移

如果已经在用 OpenClaw,Hermes 有比较直接的迁移入口:

hermes claw migrate

可以导入 OpenClaw 的部分设置、记忆、技能和 API Key,适合把 Hermes 当成低成本试用入口。

路径四:七牛云 LAS 一站式部署 Hermes

如果想把 Hermes 放到一个更稳定的运行环境里继续验证,七牛云 LAS 也提供了社区镜像。用预装镜像起一台实例,再通过 hermes setup 接入模型和消息通道,就可以很快进入后面的真实任务测试。

第一步:创建 LAS 实例,先把运行环境准备好

登录七牛云控制台,进入"云基础资源 → 全栈应用服务器 LAS",在实例管理页点击"创建服务器"。核心参数保持尽量简单即可:

  • 地域:按就近原则选择,降低访问延迟
  • 镜像:选择社区镜像 HermesAgent-v2026.4.13.lf
  • 规格:个人测试可选轻量型 T1(2 核 2G),更高负载场景可从计算型 C1(2 核 4G)起步
  • 安全设置:设置实例密码,并妥善保存

第二步:通过 Web 终端完成初始化配置

启动实例后,进入 Hermes 初始化向导。在控制台中找到已创建实例,点击 操作 → 更多 → Web 命令行,输入实例密码后即可登录。

执行一条命令:

hermes setup

这会直接进入 Hermes 的交互式配置向导。在第一步里,选择 Quick Setup,就可以用更简洁的方式完成基础配置。

第三步:接入模型,让 Hermes 真正开始"工作"

对 Hermes 来说,模型接入不是附属步骤,而是它真正开始发挥能力的前提。直接选七牛云 MaaS 上的 MiniMax M2.7 来配置:

  • Provider 选择中,先进入 More providers...
  • 再选择 Custom endpoint (enter URL manually)
  • 输入七牛云大模型服务地址:https://api.qnaigc.com/v1
  • 填入 MaaS API Key
  • 模型名称填写:minimax/minimax-m2.7

配置完成后,系统会自动验证连通性。一旦验证通过,Hermes 就已经具备了进行后续任务调用的基础条件。

第四步:接入消息通道,把它从命令行 Agent 变成可触达的助手

这里以飞书为例。完成模型接入后,继续进入消息平台配置页。选择 Set up messaging now (recommended),再选择 Feishu / Lark,按照指示即可完成接入。

更详细部署步骤参考:Hermes Agent 一站式部署教程,全程10分钟

Hermes 持续运行的"三重保障"

要让 Hermes 这类 Agent 不只是"跑通一次",而是能持续在线、稳定调用、放心验证,七牛云 LAS + MaaS 准备了几项适合开发者上手的保障:

  • 运行更稳:LAS 社区镜像帮你快速拉起 Hermes 的长期运行环境,省掉环境折腾.https://s.qiniu.com/IviUfa
  • 成本更可控:MaaS 送 Token,可以覆盖长任务测试时的模型消耗.https://s.qiniu.com/rAzUZ3
  • 接入更省心:兼容 OpenAI(/v1/chat/completions)和 Anthropic(/v1/messages)协议格式,替换 Base_URL 和 API Key 即可接入,减少改代码成本

截至 4 月 20 日,Hermes Agent 在 GitHub 上已斩获 102k+ Star,持续霸榜 GitHub Trending,成为近期开源 Agent 社区最受关注的项目之一。技术大佬更是直言它是"OpenClaw 上线以来第一个真正意义上的竞争对手。"

什么是 Hermes

Hermes Agent 由 Nous Research 在 2026 年 2 月开源发布。官方的定义很直接:"The self-improving AI agent"。它最大特点是内置学习闭环(learning loop),能从任务中提炼 Skill,在使用中持续改进,主动沉淀知识,搜索过往会话,并在跨会话过程中逐步形成对用户的长期理解。简单说,它试图成为一个会持续积累经验的个人 AI Agent。

OpenClaw 与 Hermes:同属通用 Agent,但重心却不在同一层

OpenClaw 和 Hermes 都不只是单点脚本或聊天 bot,而是在把模型、工具、会话、记忆、Skill 和运行环境接成一套长期可用的通用 Agent 系统。它们的区别,不在"是不是 Agent",而在"厚度长在什么地方":

  • OpenClaw 更像控制面,重点是把入口、会话、权限、路由和秩序组织进系统
  • Hermes 更像学习循环,重点是把执行中的方法沉淀下来,并在后续任务里复用

继续往下拆,两者的差异还可以概括成以下几点:

10 分钟上手 Hermes

要判断 Hermes 到底好不好用,最直接的办法还是自己跑一遍。不同类型的开发者,可以走不同路径。

路径一:Agent Bus 先试试,不折腾环境

如果只是想先快速感受一下 Hermes 的执行链路,不想先折腾环境,可以直接从七牛云 MaaS 平台的 Agent Bus 上手。一键启动后,可以在 Web 控制台里直接看到任务拆解、工具调用和中间过程,适合先做低成本体验。

对长任务来说,预算上限和权限边界也可以提前设定,避免测试时跑飞。

路径二:本地快速上手 → Pinokio / 手动安装

如果更习惯本地玩,可以走 Pinokio 或手动安装。Pinokio 的优势是快,基本属于"开箱即用";手动安装也不复杂:

pip install hermes-agent
hermes init

路径三:从 OpenClaw 快速迁移

如果已经在用 OpenClaw,Hermes 有比较直接的迁移入口:

hermes claw migrate

可以导入 OpenClaw 的部分设置、记忆、技能和 API Key,适合把 Hermes 当成低成本试用入口。

路径四:七牛云 LAS 一站式部署 Hermes

如果想把 Hermes 放到一个更稳定的运行环境里继续验证,七牛云 LAS 也提供了社区镜像。用预装镜像起一台实例,再通过 hermes setup 接入模型和消息通道,就可以很快进入后面的真实任务测试。

第一步:创建 LAS 实例,先把运行环境准备好

登录七牛云控制台,进入"云基础资源 → 全栈应用服务器 LAS",在实例管理页点击"创建服务器"。核心参数保持尽量简单即可:

  • 地域:按就近原则选择,降低访问延迟
  • 镜像:选择社区镜像 HermesAgent-v2026.4.13.lf
  • 规格:个人测试可选轻量型 T1(2 核 2G),更高负载场景可从计算型 C1(2 核 4G)起步
  • 安全设置:设置实例密码,并妥善保存

第二步:通过 Web 终端完成初始化配置

启动实例后,进入 Hermes 初始化向导。在控制台中找到已创建实例,点击 操作 → 更多 → Web 命令行,输入实例密码后即可登录。

执行一条命令:

hermes setup

这会直接进入 Hermes 的交互式配置向导。在第一步里,选择 Quick Setup,就可以用更简洁的方式完成基础配置。

第三步:接入模型,让 Hermes 真正开始"工作"

对 Hermes 来说,模型接入不是附属步骤,而是它真正开始发挥能力的前提。直接选七牛云 MaaS 上的 MiniMax M2.7 来配置:

  • Provider 选择中,先进入 More providers...
  • 再选择 Custom endpoint (enter URL manually)
  • 输入七牛云大模型服务地址:https://api.qnaigc.com/v1
  • 填入 MaaS API Key
  • 模型名称填写:minimax/minimax-m2.7

配置完成后,系统会自动验证连通性。一旦验证通过,Hermes 就已经具备了进行后续任务调用的基础条件。

第四步:接入消息通道,把它从命令行 Agent 变成可触达的助手

这里以飞书为例。完成模型接入后,继续进入消息平台配置页。选择 Set up messaging now (recommended),再选择 Feishu / Lark,按照指示即可完成接入。

更详细部署步骤参考:Hermes Agent 一站式部署教程,全程10分钟

Hermes 持续运行的"三重保障"

要让 Hermes 这类 Agent 不只是"跑通一次",而是能持续在线、稳定调用、放心验证,七牛云 LAS + MaaS 准备了几项适合开发者上手的保障:

  • 运行更稳:LAS 社区镜像帮你快速拉起 Hermes 的长期运行环境,省掉环境折腾.https://s.qiniu.com/IviUfa
  • 成本更可控:MaaS 送 Token,可以覆盖长任务测试时的模型消耗.https://s.qiniu.com/rAzUZ3
  • 接入更省心:兼容 OpenAI(/v1/chat/completions)和 Anthropic(/v1/messages)协议格式,替换 Base_URL 和 API Key 即可接入,减少改代码成本

本来想发在 linuxdo 。发不了。因为始皇(此论坛的站长,自称秦始皇)容不下反对声音。质疑几句,轻则禁言,重则封号。那我就只能发到 V2EX ,若污染了各位的 timeline ,我也在此道歉。我就随便谈谈我的想法。

我算是 L 站的活跃用户。之前花了不少时间发帖、回帖、写内容。结果在最近这一轮所谓“为社区好”的政策下,我直接喜提永久封禁。现在回头看,自己的时间、内容和热情,最后都成了始皇拿去招商、圈钱的资本。很多人都知道,L 站起家于薅羊毛,就是个薅羊毛的蝗虫论坛。今年各大厂商开始收紧政策,羊毛越来越少,不少公益站也陆续倒了。始皇估计是眼看这条路不好走了,就开始喊“学 AI ,上 L 站”。交易区之类的地方,也开始对二手羊毛严加管控。那架势,就像突然想洗白了。

问题是,壳可以换,路数没怎么变。之前那个“富可敌国”,本质上就是商家交钱,给始皇买推广资格和头衔。很多人自然会觉得,这是站方在背书。结果商家跑路了,站方一边说自己不承担责任,一边又不愿意正面回应质疑。后来有人去问,有人去追,有人去质疑,最后的结果不过是先被始皇的红卫兵围攻,再被处理,严重一点就是永久封禁。

我觉得最近最恶心的一条政策,就是强制要求“20 字回复”。字数不够不行。凑字数也不行。至于什么算凑字数,什么算有效回复,全看管理员主观判断。规则写得像制度,执行起来还是人治。看你顺眼就过,看你不顺眼就拿规则砸你。更讽刺的是,始皇现在还开始给自己立人设了。自己靠招商赚了多少钱,闭口不提。说得最多的,是自己多努力、多辛苦、多加班。那套话术翻来覆去,核心就一个意思:你们都得感激我。说实话,这种味道越来越重,真把自己当秦始皇了。

不过话说回来,现在各大厂都在收紧羊毛,L 站本身也越来越空心了。羊毛贴少了,技术贴也少了,剩下的大多是灌水、发病和没什么营养的重复讨论。一个社区到了这个阶段,还要靠压制反对声音来维持秩序,那也不值得待了。

很难在外网找到还有一个类似于国内那样的,鼓励互相举报、敢质疑就禁言封禁,然后站点管理者干嘛都得感激感恩,说不好就得被红卫兵围攻,看来大部分人即使翻了墙,心里的辫子也是没剪掉。要是能说一个在墙外把墙内玩的那套玩的最明白的,或许就是 L 站了吧。当然,我也祝 neo 早日称帝,成为他梦想中的秦始皇。

379c4cc423b34b86c24478b07fabfc3e.png

广州是华南地区人工智能产业的重镇,海珠、天河、黄埔、南沙等区均出台了针对生成式AI备案的奖励政策。最高100万元的一次性补贴,对AI企业而言是不小的激励。但补贴申领与备案周期紧密挂钩,想尽快拿到备案号,前期充足的准备必不可少。

生成式人工智能 #大模型备案 #算法备案 #网络安全 #AI产品安全应用

一、广州各区AI备案补贴政策概览

截至目前,广州市已形成覆盖主要城区的AI备案奖励政策体系:

<colgroup><col width="auto"><col width="auto"><col width="auto"></colgroup>
<span id="w-e-text-136"><span><span>区域</span></span></span><span id="w-e-text-138"><span><span>补贴标准</span></span></span><span id="w-e-text-140"><span><span>申领条件</span></span></span>
<span id="w-e-text-143"><span><span>海珠区</span></span></span><span id="w-e-text-145"><span><span>最高100万元</span></span></span><span id="w-e-text-147"><span><span>首次完成国家级备案</span></span></span>
<span id="w-e-text-150"><span><span>天河区</span></span></span><span id="w-e-text-152"><span><span>最高100万元/年</span></span></span><span id="w-e-text-154"><span><span>研发投入的10%,需完成国家级备案</span></span></span>
<span id="w-e-text-157"><span><span>黄埔区</span></span></span><span id="w-e-text-159"><span><span>最高100万元</span></span></span><span id="w-e-text-161"><span><span>需具备示范性应用</span></span></span>
<span id="w-e-text-164"><span><span>南沙区</span></span></span><span id="w-e-text-166"><span><span>最高100万元</span></span></span><span id="w-e-text-168"><span><span>通用或垂直领域大模型</span></span></span>
补贴力度不可谓不大。但政策通常要求企业先完成国家级备案,才能申领补贴。这意味着备案周期直接决定了企业能否搭上政策红利的便车。 ## 二、备案流程与补贴申领的时间节点 要准确把握时间线,首先需要了解备案的完整流程。广东省的备案流程分为四个阶段: 综合来看,从启动到拿号,备案周期通常在4至8个月,复杂情况可能延长至9个月甚至更长。企业需据此倒推时间节点,确保在政策窗口期内完成关键里程碑。 ## 三、备案周期与补贴申领周期对比 各区的补贴申领通常有明确的申报时间窗口,常见形式为每年集中申报一次。这意味着: 时间容错窗口约2~3个月 若备案周期为6个月,而补贴申报为年度集中受理,企业需在上一年度第四季度前完成备案,方能赶上次年补贴申报 举例而言,若某企业在2026年6月才完成备案,而该区补贴申报截止时间为2026年5月,则该企业需等到下一年度才能申领,白白错过一年的政策红利。 时间规划建议 建议企业在年初即启动备案筹备工作,争取在当年第三季度前完成中央网信办复审,以便搭上年底或次年初的补贴申报窗口。具体时间安排需结合各区政策细则动态调整。 ## 四、各区政策差异与申领条件 广州各区的AI备案补贴政策存在明显差异,企业需针对性了解: 海珠区:侧重于通用大模型应用,补贴额度最高,需提供示范性应用案例 天河区:按研发投入比例补贴,适合持续研发的AI企业,需提供研发费用专项审计报告 黄埔区:强调示范性应用,需证明模型已在实际场景中产生效果 南沙区:支持通用与垂直领域两类大模型,门槛相对灵活 此外,部分区的补贴政策可能存在附加条件,如需服务本地企业、需在当地纳税、需提供就业岗位等。建议企业在申领前详细了解本区政策的完整条款。 ## 五、时间窗口与行动建议 综合以上分析,我们建议广州AI企业按以下时间规划推进备案与补贴申领工作: Q1启动:向属地网信办了解备案要求,完成备案意向登记 Q2冲刺:完成备案材料准备,提交省级网信办初审 Q3跟进:配合中央网信办复审,争取早日拿号 Q4申报:完成备案后,立即启动补贴申领材料准备 备案与补贴申领是一场与时间的赛跑。2026年的政策窗口期有限,早启动、早备案、早受益。

你是不是也觉得,做一部AI漫剧需要专业团队、昂贵软件、至少几个月?
直到我亲手用一台普通Windows电脑,从零开始——安装技能插件、配置密钥、上传剧本,到分镜图全部自动生成,整个过程不到30分钟。这不是概念演示,不是PPT画饼。这是一部完整的"有道AI"品牌广告漫剧,20个分镜,角色自动提取,画面自动生成,旁白自动配音。
今天,我把整个过程掰开揉碎讲给你听。
__
01 从一个技能插件说起
做AI漫剧,你首先需要一个"大脑"——一个能理解你意图、替你调用各种AI能力的Agent。
我用的工具叫QClaw,一个腾讯的OPENCLAW的AI Agent平台。它像手机一样,本身什么都能做,但真正让它变强的,是"技能插件"。
我选用的漫剧工具是橙星梦工厂,可以一键安装技能:如下图1:

安装Funai-skill的过程,简单到像装一个App,如下图2:

没有手动配置环境变量,没有pip依赖地狱,没有版本冲突。30秒后,skills/Funai-skill文件夹就静静地躺在工作区里,里面有SKILL.md使用手册、配置模板、API接口文档。
但有一个东西不能自动获取——Token。,获取KEY,如下截图3:

02 那个藏在链接里的密钥
KEY是你在AI漫剧平台的身份凭证。没有它,所有API都是摆设。
获取方式出乎意料地简单:打开 https://ai.fun.tv/#/openclaw ,登录账号,复制KEY到Qclaw.

03 20个分镜的诞生
剧本可以用AI大模型制作,一份20镜头的"有道AI"品牌广告脚本,20个镜头改写成流畅的小说段落:
清晨,未来城市的玻璃幕墙上反射着金色的阳光。在这座被科技包裹的城市里,一位二十八岁的年轻女性从智能床上醒来。床单在她起身后自动抚平,仿佛有一双无形的手在打理着一切。
"又是被AI叫醒的一天。"她心想,走向智能镜面。镜面上立刻浮现出蓝色的界面:早安,今天有三个任务等待处理。
提交剧本后,AI自动拆分和优化分镜,因为它认为某些镜头需要更细致的画面过渡。提交剧本截图

这种"AI帮你补镜头"的能力,是手动分镜做不到的。

04 角色提取:AI比你更懂你写的人
剧本提交后,最让我惊讶的是角色提取。我没有手动创建角色、上传参考图、调整面部参数。AI从剧本中自动识别出主角:一位28岁的年轻女性,设计师,黑色长直发,穿深色休闲连衣裙搭配米色小西装。
30秒后,角色图就生成了。
不是那种"大概差不多"的AI人像——是风格统一、细节到位、可以直接用于后续分镜的正式角色图。
更关键的是,角色自带音色配置:推荐音色编号10048,语速1.2倍。这意味着后续每个分镜的旁白,都会用同一个声音、同一种语速朗读。
一致性,才是AI内容创作最大的难题。不是生成一张好图,而是生成100张风格统一的图。
如下截图

05 分镜图:20张画面的魔法时刻
角色确认后,进入最耗时的步骤——分镜图生成。
20个分镜,每个分镜都需要:

  1. 解析旁白文本,提取画面要素
  2. 匹配角色外观和风格设定
  3. 生成符合16:9画面比例的图像
  4. 保持与前后分镜的视觉连贯性
    我选择的是"现代写实"风格,即梦3.0模型。这个组合生成的画面质感接近电影剧照,不像卡通,也不像照片,恰好处于那个"比现实更美"的甜区。
    等待的过程比想象中快。大约2分钟后,全部20张分镜图生成完毕。每一张都能清晰看到:
    • 场景1:未来都市晨光中的卧室
    • 场景7:树叶轮廓变幻为3D建筑模型
    • 场景14:三屏并置的工作成果展示
    • 场景20:品牌slogan落版——"有道AI•创造无限"
    从文字到画面,AI理解的不是像素,是意图。
    完成制作后导出,如下截图

06 写在最后
从安装技能到20张分镜图全部生成,实际操作时间大约30分钟。但这是第一次。第二次做,15分钟就够了。AI漫剧的门槛已经低到这个程度:一台电脑,一个浏览器,一份剧本。不需要绘画基础,不需要视频剪辑技能,不需要配音设备。你只需要知道:你想讲一个什么故事。剩下的,AI会替你完成。
__
你试过用AI做漫剧吗?最想用AI做什么类型的内容?欢迎在评论区聊聊。
本文为个人体验分享,仅供参考。

2026 年,智能体将在企业级应用中取得哪些实质性突破?点击下载《2026 年 AI 与数据发展预测》白皮书,获悉专家一手前瞻,抢先拥抱新的工作方式!

数据工程师的角色正在经历一场深刻的变革。如今,数据工程师的工作早已超越单纯编写脚本、将数据从 A 点迁移至 B 点的范畴,而是逐步演变为“全栈构建者”。在应对海量数据的同时,他们还需兼顾复杂的 DevOps 工作流与语义建模。随着技能体系的演进,编程范式也明显向声明式编程转变。工程师不再需要耗费大量时间管理脆弱且逐步执行的命令式指令,而是转而定义数据的期望最终状态,由底层平台自主决定如何实现这一目标。

从动态表到语义视图,再到 Cortex 代码,Snowflake 正将传统数据工程工作流中耗时数天的任务缩短至数分钟。其目标已不再是“少花钱多办事”,而是借助工具实现“多快好省”。依托下一代工具,数据工程师无需操心基础设施的配置、异构工具的管理或繁重的手工编码,只需集中精力定义指标与业务需求,为 AI 智能体提供上下文,便能在其湖仓一体数据基础上交付 AI 解决方案。

以下六大特性,将助您的数据工程生产力迈上新台阶。

在 Snowflake 上加速构建:Cortex Code

数据工程师只需在 Cortex Code 中使用简单的提示词,即可构建生产级数据管道。Cortex Code 使各类数据工程师和分析师都能轻松上手 Snowflake 开发。即便是经验最丰富的数据工程师,也能借助它显著提升工作效率——降低任务复杂度,减少构建耗时。数据工程师可以从零开始创建管道,或将现有代码迁移至 Snowflake;提升可观测性、故障排查及调试能力;并将 AI 作为提高生产力的放大器,助力交付端到端的数据管道。

自主式管道:动态表

多年来,管理增量处理一直是一项依赖复杂逻辑和调度机制的重度手工劳动。动态表使数据工程师、平台团队乃至分析师只需提供 SQL 查询语句,Snowflake 即可自动完成增量更新与编排工作。

借助 Snowflake 动态表提升业务部门的数据交付效率

Travelpass 利用动态表摆脱了复杂的手动编码。通过采用声明式方法,该公司简化了数据管道,显著减少了维持实时数据流所需的工程工时——效率提升了 350%。

规模化开发:Snowflake 上的 dbt 项目

dbt 长期以来一直是数据转换领域的行业标准。如今,企业可以在 Snowflake 上原生运行其开源版本。通过直接在 Snowflake 基础设施上运行 dbt 项目,您可以减少管理 dbt 基础设施与编排工作所带来的额外成本。

Snowflake 上的 dbt 项目提供了一体化的开发体验,使版本控制、测试和文档与数据位于同一平台之上。它赋能团队像对待软件代码一样管理数据转换,从而实现从开发到生产环境的平滑、安全且高度可扩展的过渡。

Snowflake 上的 dbt 项目将改变数据工程实践

数据超级英雄 Keith Belanger 与 Jan Láznička 在本期《Behind the Cape》中阐述了 dbt 项目将如何改变您的数据工程实践。

简化编排:Snowflake 任务

任务允许您安排任意 SQL 语句或存储过程按特定时间间隔运行,或响应特定事件触发执行。

通过利用有向无环图(DAG)结构,任务使工程师能够直接在 Snowflake 内部构建复杂的多步骤工作流。这在许多场景下免除了对昂贵第三方编排工具的依赖,使逻辑紧贴数据存放处,并显著降低了架构复杂性。

在 Snowflake 上原生编排数据管道

Snowflake 现场首席技术官 Jeremiah Hansen 阐述了 Snowflake 任务如何与 dbt 项目中的转换配合,以原生方式处理整个数据管道,无需管理外部编排器。

提升数据质量:数据指标函数

缺乏信任的自动化毫无意义,这正是数据指标函数(DMFs)的用武之地。过去,数据质量往往是事后才考虑的问题——通常是一堆匆忙编写的“健全性检查”脚本。DMFs 提供了一种声明式方法来自动衡量数据健康状况(例如数据新鲜度、唯一性或空值计数)。

现在,您无需再为每张表编写自定义验证脚本,而是可以将质量指标定义为表元数据的一部分。这些内建的、用户可启用的可观测性能力意味着:一旦数据未达到您的业务标准,系统便能立即标记问题,从而帮助您在数据异常影响下游应用和用户之前及时捕获。

使用 DMFs 评估数据质量

Augusto Rosa 讲解了如何利用 DMFs 监控数据的状态与完整性,并衡量诸如数据新鲜度、重复值或空值计数等关键指标。

业务逻辑:语义视图

最后,语义视图的兴起正在弥合工程团队与管理层之间长期存在的“定义鸿沟”。过去,业务逻辑分散于各类 BI 工具中,导致对于同一问题(例如“我们的客户流失率是多少?”)常常得出截然不同的答案。

通过将这些逻辑迁移至语义层——特别是通过语义视图——数据工程师能够一次性固化业务定义。无论用户查看的是仪表板、电子表格,还是 AI 驱动的聊天界面,他们都将从同一事实来源中获取数据。这使得数据仓库从单纯的表集合,转变为面向业务的就绪型知识库。

几分钟内完成 AI 驱动的语义建模

了解 eSentire、HiBob、Simon AI 及 VTS 等组织如何利用语义视图的 Autopilot 功能,确保 AI 智能体基于同一套可信的业务指标运行,同时将语义模型的创建时间从数天缩短至数分钟。

这些特性带来的影响,已不仅是团队效率的渐进式提升;它们标志着数据战略正朝着更自动化、更可靠、更贴合业务的方向发生根本性转变。

如需进一步了解 Snowflake 上的数据工程,请下载《数据工程新必备指南》,并注册参加将于 4 月 22 日举办的线上活动“Snowflake Connect:为 AI 就绪型数据构建转换流水线”。同时,您也可以随时点播观看近期的线上动手实验:面向 AI 智能体的自主 SQL 流水线

原文地址:https://www.snowflake.com/en/blog/next-gen-data-engineering-snowflake-features/

 

点击链接立即报名注册:Ascent - Snowflake Platform Training - China更多 Snowflake 精彩活动请关注专区

Hjz3jh35bOl7qsATOrS6rXYYXjZV8YGt.webp


这是 4 月 10 日给狐蒂云的负责人发的消息,只是我随便提出的一个需求。因为,我发现狐蒂云发布的通知中基本都是以主机区为通知的,但是购买主机后,如果自己不备注后面就不知道自己买的是哪个区的主机了。

这会影响到后续大家看通知的问题,因为有可能就不知道这个通知是不是在说自己的主机。我以为就没有后续了,今天在用户群内看到有一个新功能上线了。


0GusajSXCPcRcdcLBmavIbEHYQtNU3RY.webp


作为一个使用近一年的用户,我现在还不好说有多么靠谱,但整体看来,他们还是对用户的需要比较看重的。


S8YeB5xDQCSJHgumUPpvT0hQWEmXUwNp.webp


上面这是我自己在用的主机。。

我没有推荐过任何主机商,自己用了一段时间,现在觉得狐蒂云起码可以做到有意识的为用户着想,所以今天我就推荐一下!

如果你想要一个配置还可以,预算有限的情况下,狐蒂云算是一个选择。
这是我的推荐 AFF,可以不用的。
https://www.szhdy.com/aff/CZAFZGVK

备注:如果你的项目非常重要,我的建议还是用大厂的产品,这毫无疑问!

必知必会:大模型训练通信开销计算详解与面试指南

AI-Compass 致力于构建最全面、最实用、最前沿的AI技术学习和实践生态,通过六大核心模块的系统化组织,为不同层次的学习者和开发者提供完整学习路径。

为什么通信开销很重要?

通信开销如同隐匿的丝线,牵动着大模型训练的每一个环节。在分布式训练中:

  • 显存墙:单个计算设备无法容纳大模型训练时所需的显存
  • 通信墙:系统内不同计算设备需要进行密集的数据传输以满足信息同步等要求

符号约定

符号含义
Φ模型参数量(FP16精度下占用2Φ字节)
b批次大小(batch size)
s序列长度(sequence length)
h隐藏层维度(hidden dimension)
NGPU数量

1. 集合通信原语详解

1.1 核心问题

  • 分布式训练中 GPU 之间有哪些基础通信方式?
  • 各通信原语之间有什么组合关系?
  • 不同并行策略分别依赖哪些通信原语?

1.2 原文核心要点

在分布式训练过程中,不同的 GPU 之间可以通过集合通信原语来传递模型参数、梯度等信息。核心原语包括 Broadcast、Scatter、Gather、Reduce、All-Gather、Reduce-Scatter、All-Reduce 和 All-to-All 八种,它们是所有并行策略的通信基石。

1.3 通俗理解

直观类比

想象你在一个快递分拣中心工作,有 4 个分拣员(GPU),每人负责一个区域的包裹:

  • Broadcast(广播):总部发了一张新的分拣规则表,复印 4 份发给每个分拣员——每人拿到的内容完全一样
  • Scatter(分发):一大批包裹到了,总部按目的地拆成 4 堆,每个分拣员只拿到自己负责区域的那堆——每人拿到的内容不同
  • Gather(收集):每个分拣员把自己分好的包裹送回总部汇总——多方汇聚到一处
  • Reduce(规约):4 个分拣员各自统计了自己区域的包裹数量,总部把 4 个数字加起来得到总数——汇总时带了"求和"计算
  • All-Gather(全收集):每个分拣员把自己的分拣清单分享给所有同事——每人最终都有完整的全局清单
  • All-Reduce(全规约):4 个分拣员各自统计包裹数,互相通信后每人都知道总数——边计算边共享
  • All-to-All(全交换):每个分拣员有 4 类包裹,分别发给对应的同事——每人既发又收,完全交换
核心要点
  • 原语是所有并行策略的通信积木,掌握原语就掌握了通信开销计算的基础
  • All-Reduce 是最核心的原语,它可以分解为 Reduce-Scatter + All-Gather
  • 不同原语对应不同的并行场景:数据并行用 All-Reduce,ZeRO 用 Reduce-Scatter + All-Gather,专家并行用 All-to-All
建立了直觉之后,下面我们用具体的示意图和对比表来严格定义这些通信原语。

1.4 八大通信原语

1. Broadcast(广播)

一个发送者,多个接收者

将一个GPU的完整数据复制到所有其他GPU上。

操作前:                    操作后:
┌───┬───┬───┬───┐         ┌───┬───┬───┬───┐
│ A │   │   │   │   →     │ A │ A │ A │ A │
└───┴───┴───┴───┘         └───┴───┴───┴───┘
GPU0 GPU1 GPU2 GPU3       GPU0 GPU1 GPU2 GPU3

应用场景:模型初始化时,将主节点的参数广播到所有工作节点。


2. Scatter(分发)

一个发送者,多个接收者(数据分片)

将一个GPU的数据切片后分发给不同GPU,每个GPU获得不同的部分。

操作前:                    操作后:
┌─────────────┐            ┌───┬───┬───┬───┐
│ A │ B │ C │ D │    →     │ A │ B │ C │ D │
└─────────────┘            └───┴───┴───┴───┘
    GPU0                   GPU0 GPU1 GPU2 GPU3

与Broadcast的区别

  • Broadcast:每个GPU收到完整相同的数据
  • Scatter:每个GPU收到不同的数据片段

3. Gather(收集)

多个发送者,一个接收者

将多个GPU的数据收集到一个GPU上。

操作前:                    操作后:
┌───┬───┬───┬───┐         ┌─────────────┐
│ A │ B │ C │ D │    →    │ A │ B │ C │ D │  (其他GPU为空)
└───┴───┴───┴───┘         └─────────────┘
GPU0 GPU1 GPU2 GPU3            GPU0

4. Reduce(规约)

多个发送者,一个接收者(带计算)

将多个GPU的数据规约运算(如求和SUM、求最大值MAX、求乘积PROD)后发送到一个GPU。

操作前:                    操作后:
┌───┬───┬───┬───┐         ┌───────────────┐
│ A │ B │ C │ D │    →    │ A+B+C+D       │  (其他GPU为空)
└───┴───┴───┴───┘         └───────────────┘
GPU0 GPU1 GPU2 GPU3            GPU0

5. All-Gather(全收集)

多个发送者,多个接收者

= Gather + Broadcast

每个GPU都收集到所有GPU的数据。

操作前:                    操作后:
┌───┬───┬───┬───┐         ┌─────────────┬─────────────┬─────────────┬─────────────┐
│ A │ B │ C │ D │    →    │ A,B,C,D     │ A,B,C,D     │ A,B,C,D     │ A,B,C,D     │
└───┴───┴───┴───┘         └─────────────┴─────────────┴─────────────┴─────────────┘
GPU0 GPU1 GPU2 GPU3       GPU0          GPU1          GPU2          GPU3

6. Reduce-Scatter(规约分发)

多个发送者,多个接收者

在所有GPU上按维度执行相同的Reduce操作,再将结果发散到集群内所有GPU上。

操作前:                              操作后:
GPU0: [A0,A1,A2,A3]                 GPU0: [A0+B0+C0+D0]
GPU1: [B0,B1,B2,B3]       →         GPU1: [A1+B1+C1+D1]
GPU2: [C0,C1,C2,C3]                 GPU2: [A2+B2+C2+D2]
GPU3: [D0,D1,D2,D3]                 GPU3: [A3+B3+C3+D3]

7. All-Reduce(全规约)

多个发送者,多个接收者

= Reduce + Broadcast = Reduce-Scatter + All-Gather

在集群内所有GPU上都执行相同的Reduce操作,并将结果发送到所有GPU上。

操作前:                    操作后:
┌───┬───┬───┬───┐         ┌─────────┬─────────┬─────────┬─────────┐
│ A │ B │ C │ D │    →    │ A+B+C+D │ A+B+C+D │ A+B+C+D │ A+B+C+D │
└───┴───┴───┴───┘         └─────────┴─────────┴─────────┴─────────┘
GPU0 GPU1 GPU2 GPU3       GPU0      GPU1      GPU2      GPU3

8. All-to-All(全交换)

多个发送者,多个接收者(完全交换)

每个GPU将自己的数据发散到所有GPU,同时收集所有GPU的数据。

操作前:                              操作后:
GPU0: [A0,A1,A2,A3]                 GPU0: [A0,B0,C0,D0]
GPU1: [B0,B1,B2,B3]       →         GPU1: [A1,B1,C1,D1]
GPU2: [C0,C1,C2,C3]                 GPU2: [A2,B2,C2,D2]
GPU3: [D0,D1,D2,D3]                 GPU3: [A3,B3,C3,D3]

与All-Gather的区别

  • All-Gather:不同GPU向某一GPU收集到的数据相同
  • All-to-All:不同GPU向某一GPU收集到的数据不同

1.5 通信原语对比表

<!-- trick-image:start idx=1 platform=blog -->
八大集合通信原语快递分拣类比示意图
<!-- trick-image:end idx=1 -->

原语发送方接收方是否计算典型应用
Broadcast1N参数初始化
Scatter1N数据分片
GatherN1结果收集
ReduceN1是(规约)梯度聚合到主节点
All-GatherNNZeRO-3参数恢复
Reduce-ScatterNN是(规约)ZeRO梯度聚合
All-ReduceNN是(规约)数据并行梯度同步
All-to-AllNN专家并行

组合关系

  • All-Reduce = Reduce + Broadcast = Reduce-Scatter + All-Gather
  • All-Gather = Gather + Broadcast

1.6 小结

维度说明
原语总数8 种基础通信原语
核心原语All-Reduce = Reduce-Scatter + All-Gather
通信模式1→N、N→1、N→N 三种基本模式
选型依据是否需要计算(规约)、是否需要全局同步
关键应用DP 用 All-Reduce,ZeRO 用 RS+AG,EP 用 All-to-All

2. 数据并行的通信开销计算

2.1 核心问题

  • 数据并行的工作原理是什么?
  • 朴素 All-Reduce 和 Ring-All-Reduce 的通信量分别是多少?
  • Ring-All-Reduce 为什么更高效?

2.2 原文核心要点

数据并行策略中,每个 GPU 保存完整模型副本,训练数据被拆分。各 GPU 计算梯度后通过 All-Reduce 同步。Ring-All-Reduce 通过环形拓扑将通信量均匀分配到每个 GPU,避免单点瓶颈。单卡通信量为 2×(N-1)×Φ/N ≈ 2Φ。

2.3 通俗理解

直观类比

想象你在一个班级里做小组作业

朴素方式(班长汇总法):30 个同学各做一份答案,全部交给班长。班长一个人汇总 29 份答案,算出最终版本,再抄 29 份发回去。班长累得半死,其他人在旁边等着——这就是单点瓶颈

Ring 方式(传话游戏法):30 个同学围成一个圈,每人把答案分成 30 段。第一轮,每人把第 1 段传给右边的同学并加上自己的;第二轮继续传递第 2 段……经过 29 轮传递,每人手上都有了完整汇总结果。虽然传了很多轮,但每轮每人只处理一小段,没有人特别累

核心要点
  • 朴素 All-Reduce 的总通信量和 Ring-All-Reduce 相近(~2NΦ),但负载分布天差地别
  • Ring-All-Reduce 分为 Reduce-Scatter 和 All-Gather 两阶段,各需 N-1 次通信
  • 实际工程中几乎都用 Ring-All-Reduce,因为它消除了单点瓶颈
建立了直觉之后,下面我们用数学公式来严格定义通信量的计算方法,并给出具体的数值示例。

2.4 技术原理与公式推导

掌握了直观类比后,接下来我们用精确的数学语言来刻画通信量的计算方法。这样在实际工作中就能准确预估不同配置下的通信开销。

工作原理

在数据并行策略中:

  1. 每一个GPU上都保存一份完整的模型副本
  2. 训练数据被拆分成多份,分配给不同的GPU
  3. 每个GPU对所接收的数据进行前向传播和反向传播,计算出一份梯度
  4. 这份梯度被传送给负责梯度收集的GPU做聚合操作(一般是梯度累加)
  5. 聚合完成后,负责梯度计算的GPU会从负责梯度收集的GPU处拉取完整的梯度结果并更新模型参数
两种 All-Reduce 实现方式
方式一:朴素 All-Reduce

假设有N个GPU参与数据并行,其中:

  • 1个GPU负责梯度收集
  • N-1个GPU负责梯度计算

通信开销公式

$$
C_{\text{naive}} = 2 \times N \times \Phi
$$

符号含义示例值
$C_{\text{naive}}$朴素 All-Reduce 系统总通信量112 GB
$N$GPU 数量4
$\Phi$模型参数量(FP16 下占 2Φ 字节)7B

通信过程

  1. 负责梯度收集的GPU承载的通信量:(N-1) × Φ
  2. 每个负责梯度计算的GPU的通信量:Φ
  3. 所有负责梯度计算的GPU通信总量:(N-1) × Φ

问题:当N增大时,整个系统的总通信量约为 2 × N × Φ,且收集梯度的GPU成为瓶颈。

数值计算示例

假设用 4 张 GPU 训练 LLaMA-7B(Φ = 7B):

$$
C_{\text{naive}} = 2 \times 4 \times 7\text{B} \times 2\text{B/param} = 112 \text{ GB}
$$

指标朴素 All-Reduce
GPU0(收集节点)通信量(4-1) × 7B × 2B = 42 GB
GPU1/2/3 各自通信量7B × 2B = 14 GB
系统总通信量112 GB
瓶颈GPU0 承载 42 GB,其他仅 14 GB

方式二:Ring-All-Reduce(环形全规约)

核心思想:将数据切分成N份,通过环形拓扑结构进行传输,避免单点瓶颈。

两个阶段

阶段1:Reduce-Scatter

  • 将数据切分成N份
  • 进行N-1次通信
  • 每次通信量:Φ/N
  • 最终每个GPU拥有一个大小为Φ/N的完整梯度片段

阶段2:All-Gather

  • 进行N-1次通信
  • 每个GPU将自身拥有的大小为Φ/N的完整梯度发送给相邻的GPU
  • 最终所有GPU都拥有完整梯度

可视化流程

为了更直观理解Ring-All-Reduce的工作原理,下图展示了4个GPU环形拓扑下的两阶段数据流动:

flowchart TD
    subgraph RS["阶段1: Reduce-Scatter (3轮)"]
        direction LR
        RS1["轮1: GPU0→GPU1→GPU2→GPU3→GPU0<br/>各GPU聚合1/4数据"]
        RS2["轮2: 继续环形传递并聚合<br/>每GPU完成2/4数据片段"]
        RS3["轮3: 最后一轮传递<br/>每GPU持有完整的1/4梯度"]
        RS1 --> RS2 --> RS3
    end

    subgraph AG["阶段2: All-Gather (3轮)"]
        direction LR
        AG1["轮1: GPU0→GPU1→GPU2→GPU3→GPU0<br/>各GPU收集1/4完整梯度"]
        AG2["轮2: 继续环形传递<br/>每GPU拥有2/4完整梯度"]
        AG3["轮3: 最后一轮传递<br/>所有GPU拥有完整梯度"]
        AG1 --> AG2 --> AG3
    end

    RS --> AG

    style RS fill:#e1f5ff
    style AG fill:#fff4e1

上图说明:

  • Reduce-Scatter阶段: 数据切4份,环形传递3轮,每轮传输Φ/4,每GPU最终持有1/4的完整聚合梯度
  • All-Gather阶段: 将完整梯度片段环形传递3轮,每GPU收集其他GPU的完整片段,最终所有GPU拥有完整梯度
  • 每卡通信量: (3 × Φ/4) × 2 = 1.5Φ × 2 = 3Φ/2 ≈ 2Φ (当N较大)

单个GPU通信量公式

$$
C_{\text{Ring}} = 2 \times \frac{N-1}{N} \times \Phi \approx 2\Phi \quad (\text{当 } N \text{ 较大时})
$$

符号含义示例值
$C_{\text{Ring}}$Ring-All-Reduce 单卡通信量21 GB
$N$GPU 数量4
$\Phi$模型参数量7B
$\frac{\Phi}{N}$每次传输的数据片段大小1.75B

推导过程

$$
C_{\text{Ring}} = \underbrace{(N-1) \times \frac{\Phi}{N}}_{\text{Reduce-Scatter}} + \underbrace{(N-1) \times \frac{\Phi}{N}}_{\text{All-Gather}} = 2 \times \frac{(N-1) \times \Phi}{N}
$$

整个系统通信量

$$
C_{\text{Ring,total}} = N \times C_{\text{Ring}} = 2 \times (N-1) \times \Phi \approx 2N\Phi
$$

数值计算示例

同样 4 张 GPU 训练 LLaMA-7B(Φ = 7B):

$$
C_{\text{Ring}} = 2 \times \frac{4-1}{4} \times 7\text{B} \times 2\text{B/param} = 2 \times \frac{3}{4} \times 14\text{ GB} = 21 \text{ GB}
$$

指标Ring-All-Reduce
每卡每次传输量7B/4 × 2B = 3.5 GB
每卡 Reduce-Scatter3 × 3.5 GB = 10.5 GB
每卡 All-Gather3 × 3.5 GB = 10.5 GB
每卡总通信量21 GB(均匀分布)
系统总通信量4 × 21 GB = 84 GB

2.5 两种方式对比

<!-- trick-image:start idx=2 platform=blog -->
朴素与环形All-Reduce通信模式对比图
<!-- trick-image:end idx=2 -->

对比项朴素All-ReduceRing-All-Reduce
总通信量2 × N × Φ2 × N × Φ
单GPU通信量分布不均衡(收集节点负载重)均衡(每个GPU约2Φ)
瓶颈收集GPU的带宽无单点瓶颈
适用场景小规模集群多机多卡分布式系统
关键结论:Ring-All-Reduce的总通信量与朴素All-Reduce接近,但每个GPU上的通信量更为均衡,从而缓解了通信瓶颈问题。

2.6 小结

维度说明
通信操作All-Reduce(梯度同步)
单卡通信量$2 \times \frac{N-1}{N} \times \Phi \approx 2\Phi$
系统总通信量$2 \times N \times \Phi$
Ring 优势负载均衡,无单点瓶颈
通信时机仅在反向传播完成后

3. 张量并行的通信开销计算

3.1 核心问题

  • 张量并行如何切分模型参数?
  • 前馈网络层和注意力层各需要几次 All-Reduce?
  • 一个完整 Transformer 层的通信量是多少?

3.2 原文核心要点

张量并行将模型参数切分成多个参数块放到不同 GPU 上独立计算,最后聚合结果。Megatron-LM 将 FFN 层的第一个矩阵按列切分、第二个按行切分,前向和反向传播各需一次 All-Reduce。一个完整 Transformer 层的总通信量为 8×b×s×h。

3.3 通俗理解

直观类比

想象你和同事一起做一张超大的拼图(矩阵乘法):

拼图太大了,一个人的桌子放不下。于是你们把拼图纵向切成两半,一人拼左半边,一人拼右半边。拼完各自的部分后,需要把结果拼到一起看全貌——这就是前向传播的 All-Reduce。

发现有几块拼错了(反向传播计算梯度),你们各自修正自己那半边的错误,修好后再汇总一次看哪些地方还需要调整——这就是反向传播的 All-Reduce。

一个 Transformer 层有两大组件(注意力 + FFN),每个组件都要"拼一次 + 修一次",所以一共需要 4 次 All-Reduce,总通信量为 8 × b × s × h

核心要点
  • 张量并行的通信发生在每一层的前向和反向传播中,频率远高于数据并行
  • 通信量与激活值大小 b×s×h 成正比,而非模型参数量 Φ
  • 因此张量并行适合用在机内高带宽互联(NVLink 600 GB/s)的 GPU 之间
建立了直觉之后,下面我们用数学公式来严格推导张量并行的通信量。

3.4 技术原理与公式推导

<!-- trick-image:start idx=3 platform=blog -->
张量并行FFN层拼图类比通信流程图
<!-- trick-image:end idx=3 -->

理解了"拼图"的直觉后,下面我们看看 Megatron-LM 如何在工程上实现这个切分策略,以及通信量的精确计算方法。

Megatron-LM 切分方法

张量并行策略的基本思路:

  1. 将模型的参数切分成多个参数块
  2. 将不同的参数块放到不同的GPU上进行独立计算
  3. 最后将计算的结果进行聚合以完成训练

以Transformer模型为例,主要涉及:

  • 词嵌入层(通信开销较小)
  • 前馈神经网络层(FFN)
  • 多头注意力层
前馈神经网络层的通信开销

前馈神经网络层的计算分为两步:

Y = GELU(XA)    # 第一个线性层 + 激活函数
Z = Dropout(YB)  # 第二个线性层 + Dropout

其中:

  • X是输入数据,维度为(b, s, h)
  • A是第一个全连接层,维度为(h, h'),通常h' = 4h
  • B是第二个全连接层,维度为(h', h)

张量切分方式

  • A沿着列维度切分:A = [A₁, A₂]
  • B沿着行维度切分:B = [B₁, B₂]ᵀ

可视化数据流

下图展示了2-GPU张量并行下FFN层的矩阵切分和通信流程:

flowchart TD
    subgraph Input["输入 X (b,s,h)"]
        X[X 在各GPU复制]
    end

    subgraph GPU1["GPU 1"]
        A1["A₁ 列切分<br/>(h, h'/2)"]
        Y1["Y₁ = GELU(XA₁)<br/>(b,s,h'/2)"]
        B1["B₁ 行切分<br/>(h'/2, h)"]
        Z1["Z₁ = Y₁B₁<br/>(b,s,h)"]
    end

    subgraph GPU2["GPU 2"]
        A2["A₂ 列切分<br/>(h, h'/2)"]
        Y2["Y₂ = GELU(XA₂)<br/>(b,s,h'/2)"]
        B2["B₂ 行切分<br/>(h'/2, h)"]
        Z2["Z₂ = Y₂B₂<br/>(b,s,h)"]
    end

    subgraph AR["All-Reduce"]
        Z_final["Z = Z₁ + Z₂<br/>(b,s,h)"]
    end

    X --> A1
    X --> A2
    A1 --> Y1 --> B1 --> Z1
    A2 --> Y2 --> B2 --> Z2
    Z1 --> Z_final
    Z2 --> Z_final

    style AR fill:#ffe1e1
    style GPU1 fill:#e1f5ff
    style GPU2 fill:#e1ffe1

上图说明:

  • 输入X: 在各GPU上复制,无需通信
  • 矩阵A列切分: 每GPU计算一半输出通道(h' = 4h的一半)
  • 矩阵B行切分: 每GPU的输出Z₁、Z₂需通过All-Reduce聚合
  • 通信点: 前向传播1次All-Reduce(聚合Z),反向传播1次All-Reduce(聚合∂L/∂X)

通信过程示意

前向传播:
┌─────────────────────────────────────────────────────────────┐
│  输入X → [复制到各GPU] → GPU₁计算XA₁  → GELU → Y₁B₁ → Z₁   │
│                        → GPU₂计算XA₂  → GELU → Y₂B₂ → Z₂   │
│                                                    ↓        │
│                                          [All-Reduce聚合Z]  │
└─────────────────────────────────────────────────────────────┘

反向传播:
┌─────────────────────────────────────────────────────────────┐
│  ∂L/∂Z → [分发到各GPU] → GPU₁计算梯度                       │
│                        → GPU₂计算梯度                       │
│                                    ↓                        │
│                          [All-Reduce聚合∂L/∂X]              │
└─────────────────────────────────────────────────────────────┘

FFN 层通信开销公式

每次 All-Reduce 的通信量等效于一次 Reduce-Scatter + 一次 All-Gather,数据大小为 $b \times s \times h$:

$$
C_{\text{AllReduce}} = 2 \times b \times s \times h
$$

前向传播 1 次 + 反向传播 1 次 = 2 次 All-Reduce:

$$
C_{\text{FFN}} = 2 \times C_{\text{AllReduce}} = 4 \times b \times s \times h
$$

符号含义示例值
$C_{\text{FFN}}$FFN 层总通信量256 MB
$b$批次大小4
$s$序列长度2048
$h$隐藏维度4096

数值计算示例

假设 LLaMA-7B 的一个 Transformer 层,使用 2 路张量并行:

$$
C_{\text{FFN}} = 4 \times 4 \times 2048 \times 4096 \times 2\text{B} = 256 \text{ MB}
$$

参数
batch size (b)4
序列长度 (s)2048
隐藏维度 (h)4096
FFN 层每次 All-Reduce 数据量2 × 4 × 2048 × 4096 × 2B = 128 MB
FFN 层总通信量4 × 4 × 2048 × 4096 × 2B = 256 MB
多头注意力层的通信开销

多头注意力层在张量并行下的通信结构与 FFN 层相同:

  • 前向传播:1次All-Reduce
  • 反向传播:1次All-Reduce

$$
C_{\text{Attn}} = 4 \times b \times s \times h
$$

完整 Transformer 层通信开销

对一个包含前馈网络层和多头注意力层的Transformer来说:

$$
C_{\text{layer}} = C_{\text{FFN}} + C_{\text{Attn}} = 4bsh + 4bsh = 8 \times b \times s \times h
$$

符号含义示例值
$C_{\text{layer}}$单个 Transformer 层通信量512 MB
$C_{\text{FFN}}$FFN 层通信量256 MB
$C_{\text{Attn}}$注意力层通信量256 MB

数值计算示例(续上例):

$$
C_{\text{layer}} = 8 \times 4 \times 2048 \times 4096 \times 2\text{B} = 512 \text{ MB}
$$

组件通信量
FFN 层4 × b × s × h = 256 MB
注意力层4 × b × s × h = 256 MB
单层合计512 MB
LLaMA-7B 共 32 层32 × 512 MB = 16 GB

3.5 小结

维度说明
切分方式A 按列切分,B 按行切分
FFN 层通信量$4 \times b \times s \times h$
注意力层通信量$4 \times b \times s \times h$
单层总通信量$8 \times b \times s \times h$
通信时机每层前向 + 反向各 2 次 All-Reduce
适用条件机内高带宽互联

4. 流水线并行的通信开销计算

4.1 核心问题

  • 流水线并行如何切分模型?
  • 前向和反向传播的通信量分别是多少?
  • GPipe 如何优化流水线并行?

4.2 原文核心要点

流水线并行将模型的不同层拆分到不同 GPU 上,前向传播时逐层传递激活值,反向传播时逐层回传梯度。总通信量为 2×(N-1)×b×s×h,通信方式为点对点(P2P)传输。GPipe 通过微批次(micro-batch)机制提高 GPU 利用率。

4.3 通俗理解

直观类比

想象一条汽车生产流水线

车间 1 负责焊接车架,车间 2 负责安装发动机,车间 3 负责喷漆,车间 4 负责装内饰。每辆车依次经过 4 个车间。

  • 前向传播:车架焊好后从车间 1 送到车间 2(传递激活值),发动机装好后送到车间 3……一共需要在 3 个车间之间传递半成品
  • 反向传播:质检发现问题后,从车间 4 开始逐步回溯哪个环节出了问题(回传梯度),同样经过 3 个车间间的传递
  • GPipe 优化:不是等一辆车完全做完再做下一辆,而是把一批车切成小批次,像"流水线"一样同时开工多辆车,减少车间的空闲等待时间
核心要点
  • 流水线并行的通信是点对点(P2P),只在相邻 GPU 之间传递
  • 通信量公式:2×(N-1)×b×s×h,与切分点数量和激活值大小成正比
  • 流水线并行通信量通常远小于张量并行,但有气泡问题(GPU 空闲等待)
建立了直觉之后,下面我们用数学公式来严格推导流水线并行的通信量。

4.4 技术原理与公式推导

有了"汽车生产流水线"的直觉,现在我们用数学公式来精确计算流水线并行的通信量,并理解 GPipe 是如何通过 micro-batch 提升效率的。

工作原理

对于朴素的流水线并行,其主要思想是将模型的不同层进行拆分,然后放到不同的GPU上。

前向传播过程

  1. 放置了模型第一层的GPU先进行前向传播
  2. 将该层的输出传给放置了第二层的GPU
  3. 以此类推,直到所有层都依次完成前向传播

反向传播过程

  1. 从放置了模型最后一层的GPU开始
  2. 依次在不同GPU上计算不同层的梯度
  3. 当所有层的梯度都完成计算后,才对模型的权重进行更新
流水线并行模型示意图:

                    模型输出计算损失L
                          ↑
┌─────────────────────────────────────┐
│         模型最后一层        │ GPU_N │ ←─┐
├─────────────────────────────────────┤    │
│              ...             │ ...  │    │ 反向传播
├─────────────────────────────────────┤    │ ∂L/∂Z_N-1, ..., ∂L/∂Z_1
│           模型层2           │ GPU_2 │    │
├─────────────────────────────────────┤    │
│           模型层1           │ GPU_1 │ ←─┘
└─────────────────────────────────────┘
     ↑                    │
   输入                   │ 前向传播
 MiniBatch               │ Z_1, Z_2, ..., Z_N-1
     ↓                    ↓
[MicroBatch₁] [MicroBatch₂] ... [MicroBatch_n]
GPipe 方法与通信开销

GPipe是一种经典的流水线并行方法,通过引入micro-batch(微批次)处理和激活值重算机制,有效解决了朴素流水线并行所存在的GPU利用率过低以及中间结果消耗过大的问题。

通信开销公式

假设:

  • mini-batch的大小是b
  • 模型被切分到N个GPU上
  • 分布在不同GPU之间的中间结果Z的维度大小为(b, s, h)

前向传播通信量(N-1 个中间结果):

$$
C_{\text{forward}} = (N-1) \times b \times s \times h
$$

反向传播通信量(N-1 个偏导数):

$$
C_{\text{backward}} = (N-1) \times b \times s \times h
$$

流水线并行总通信量:

$$
C_{\text{PP}} = C_{\text{forward}} + C_{\text{backward}} = 2 \times (N-1) \times b \times s \times h
$$

符号含义示例值
$C_{\text{PP}}$流水线并行总通信量384 MB
$N$GPU 数量(流水线级数)4
$N-1$切分点数量3
$b \times s \times h$单个中间激活值大小64 MB

数值计算示例

假设 LLaMA-7B(32 层)使用 4 路流水线并行,每个 GPU 放 8 层:

$$
C_{\text{PP}} = 2 \times (4-1) \times 4 \times 2048 \times 4096 \times 2\text{B} = 2 \times 3 \times 64\text{ MB} = 384 \text{ MB}
$$

参数
batch size (b)4
序列长度 (s)2048
隐藏维度 (h)4096
流水线切分点N-1 = 3 个
每个中间结果大小4 × 2048 × 4096 × 2B = 64 MB
前向通信量3 × 64 MB = 192 MB
反向通信量3 × 64 MB = 192 MB
总通信量384 MB

对比:同配置下张量并行总通信量为 16 GB,流水线并行仅 384 MB——但流水线并行有"气泡"(idle time)问题。

4.5 小结

维度说明
切分方式按层切分到不同 GPU
通信方式点对点(P2P)传输
总通信量$2 \times (N-1) \times b \times s \times h$
优化方法GPipe micro-batch 减少气泡
优势通信量小,适合跨机
劣势有气泡时间,GPU 利用率受限

5. ZeRO 优化技术的通信开销计算

5.1 核心问题

  • ZeRO 三个级别分别切分什么内容?
  • 为什么 ZeRO-1/2 的通信量与数据并行相同?
  • ZeRO-3 额外增加了多少通信开销?

5.2 原文核心要点

ZeRO(Zero Redundancy Optimizer)分三个级别:ZeRO-1 切分优化器状态,ZeRO-2 额外切分梯度,ZeRO-3 进一步切分模型参数。ZeRO-1/2 单卡通信量均为 2Φ(与数据并行相同),ZeRO-3 为 3Φ(增加 50%),但换取了与 GPU 数量成正比的显存节省。

5.3 通俗理解

直观类比

想象你和 7 个同学一起背一本 700 页的词典

  • 数据并行(不用 ZeRO):每人都买一本完整的词典(700 页),各自背不同的章节做练习,做完后互相对答案。问题是每人都得揣着一本厚词典——书包装不下!
  • ZeRO-1:每人还是各有一本词典和一本笔记本(参数+梯度),但 8 本参考书(优化器状态)只买 1 套,每人保管 1 本。背完对答案时,需要找到保管对应参考书的同学来核对——沟通量不变,但书包轻了。
  • ZeRO-2:词典还是每人一本,但笔记本和参考书都只各买 1 套分着保管。书包更轻了,沟通量还是一样。
  • ZeRO-3:连词典都只买 1 套,700 页拆成 8 份每人 87 页。每次要查别的部分时得找同学借(All-Gather),查完立刻还回去。多了"借书还书"的麻烦(+50% 通信),但每人只需要带 87 页——书包最轻
核心要点
  • ZeRO-1/2 通信量 = 2Φ,与数据并行完全相同(因为 Reduce-Scatter + All-Gather = All-Reduce)
  • ZeRO-3 多出的 1Φ 来自前向和反向传播时各需一次 All-Gather 收集参数
  • 核心权衡:通信量增加 50%,换取显存线性扩展
建立了直觉之后,下面我们用数学公式来严格分析 ZeRO 各级别的通信开销。

5.4 技术原理与公式推导

理解了"词典分工"的类比后,现在我们详细剖析 ZeRO 三个层次的通信流程和通信量计算,看看为什么 ZeRO-3 要付出 50% 的额外通信代价。

ZeRO-1:优化器状态分片

特点

  • 每个GPU都存有一份完整的模型参数
  • 每个GPU只存有部分优化器状态

通信过程

  1. 前向传播 + 反向传播后:每个GPU各自得到一份梯度
  2. Reduce-Scatter:对梯度进行聚合,每个GPU得到部分聚合梯度

    • 单卡通信量:Φ
  3. 参数更新:各GPU使用自己的优化器状态更新对应部分参数
  4. All-Gather:从其他GPU上把更新好的部分模型参数取回来

    • 单卡通信量:Φ

ZeRO-1 单卡通信量公式

$$
C_{\text{ZeRO-1}} = \underbrace{\Phi}_{\text{Reduce-Scatter}} + \underbrace{\Phi}_{\text{All-Gather}} = 2\Phi
$$


ZeRO-2:优化器状态 + 梯度分片

特点

  • 每个GPU都存有一份完整的模型参数
  • 每个GPU只存有部分优化器状态和部分梯度

通信过程

  1. 前向传播后,反向传播时需要Reduce-Scatter获取其他GPU的梯度

    • 单卡通信量:Φ
  2. All-Gather:从其他GPU上把完成梯度更新的部分模型参数取回来

    • 单卡通信量:Φ

ZeRO-2 单卡通信量公式

$$
C_{\text{ZeRO-2}} = \underbrace{\Phi}_{\text{Reduce-Scatter}} + \underbrace{\Phi}_{\text{All-Gather}} = 2\Phi
$$


ZeRO-3:优化器状态 + 梯度 + 参数分片

特点

  • 每个GPU只存有部分模型参数
  • 每个GPU只存有部分优化器状态和部分梯度

通信过程

前向传播

  1. 需要完整模型参数,因此需要逐层All-Gather收集模型参数
  2. 每一层完成前向传播后,立即把不属于自己维护的模型参数丢弃

    • 单卡通信量:Φ

反向传播

  1. 需要使用梯度结果对原始参数求偏导数,因此需要逐层All-Gather
  2. 每一层完成反向传播后,立即把不属于自己维护的模型参数丢弃

    • 单卡通信量:Φ

参数更新

  1. 每个GPU各自都会得到一份梯度
  2. 需要Reduce-Scatter获得完整的聚合梯度用于更新模型参数

    • 单卡通信量:Φ

ZeRO-3 单卡通信量公式

$$
C_{\text{ZeRO-3}} = \underbrace{\Phi}_{\text{前向 All-Gather}} + \underbrace{\Phi}_{\text{反向 All-Gather}} + \underbrace{\Phi}_{\text{Reduce-Scatter}} = 3\Phi
$$

5.5 ZeRO 通信开销对比

<!-- trick-image:start idx=4 platform=blog -->
ZeRO三个级别显存占用对比示意图
<!-- trick-image:end idx=4 -->

版本分片内容单卡通信量显存节省
ZeRO-1优化器状态$2\Phi$约4倍
ZeRO-2优化器状态 + 梯度$2\Phi$约8倍
ZeRO-3优化器状态 + 梯度 + 参数$3\Phi$与GPU数量成正比
关键结论:ZeRO-3通过更激进的分片策略换取更大的显存节省,但代价是增加了50%的通信开销(从2Φ增加到3Φ)。

ZeRO-3 相对 ZeRO-2 的额外通信量比例

$$
\frac{C_{\text{ZeRO-3}} - C_{\text{ZeRO-2}}}{C_{\text{ZeRO-2}}} = \frac{3\Phi - 2\Phi}{2\Phi} = 50\%
$$

数值计算示例

以 LLaMA-7B(Φ = 7B)在 8 张 GPU 上训练为例:

$$
C_{\text{ZeRO-1}} = C_{\text{ZeRO-2}} = 2 \times 7\text{B} \times 2\text{B/param} = 28 \text{ GB}
$$

$$
C_{\text{ZeRO-3}} = 3 \times 7\text{B} \times 2\text{B/param} = 42 \text{ GB}
$$

版本单卡通信量具体数值单卡显存占用(优化器+梯度+参数)
数据并行$2\Phi$28 GB112 GB(放不下)
ZeRO-1$2\Phi$28 GB~42 GB
ZeRO-2$2\Phi$28 GB~28 GB
ZeRO-3$3\Phi$42 GB~14 GB(可放入 A100-80G)

结论:ZeRO-3 多付出 14 GB 通信开销,但单卡显存从 112 GB 降到 14 GB,使 7B 模型可以在 8 张 A100-80G 上训练。

5.6 小结

维度说明
核心思想切分冗余存储,降低单卡显存占用
ZeRO-1/2 通信量$2\Phi$(与 DP 相同)
ZeRO-3 通信量$3\Phi$(增加 50%)
显存节省ZeRO-1 ~4×,ZeRO-2 ~8×,ZeRO-3 ~N×
通信操作Reduce-Scatter + All-Gather(ZeRO-3 额外 2×All-Gather)

6. 通信开销综合对比与选型指南

6.1 各并行策略通信量汇总

并行策略单卡通信量主要通信操作通信发生时机
数据并行$2\Phi$All-Reduce反向传播后
张量并行$8 \times b \times s \times h$(每层)All-Reduce前向+反向传播中
流水线并行$2 \times (N-1) \times b \times s \times h$P2P层间传递
ZeRO-1$2\Phi$Reduce-Scatter + All-Gather反向传播后
ZeRO-2$2\Phi$Reduce-Scatter + All-Gather反向传播后
ZeRO-3$3\Phi$All-Gather×2 + Reduce-Scatter前向+反向+更新

6.2 选型决策流程

<!-- trick-image:start idx=5 platform=blog -->
3D并行选型决策流程图
<!-- trick-image:end idx=5 -->

下图展示了并行策略的选型决策流程:

flowchart TD
    A[模型能放进单卡?] -->|是| B[使用数据并行 DP]
    A -->|否| C[显存主要被优化器占用?]
    C -->|是| D[使用 ZeRO-1/2]
    C -->|否| E[单层参数能放进单卡?]
    E -->|是| F[流水线并行 PP]
    E -->|否| G[张量并行 TP]
    F --> H[超大规模模型?]
    G --> H
    D --> H
    H -->|是| I[3D并行: DP + TP + PP]
    H -->|否| J[当前策略即可]
    I --> K[TP 优先机内 NVLink]
    I --> L[PP 用于跨机相邻层]
    I --> M[DP 用于机间通信]

上图展示了从单卡到 3D 并行的选型路径:优先考虑简单策略,逐步引入更复杂的并行方式。

6.3 3D 并行配置示例

下图展示了 3D 并行中三个维度的协同关系:

flowchart LR
    subgraph DP["数据并行 (DP=2)"]
        subgraph PP1["流水线并行 (PP=4)"]
            subgraph TP1["张量并行 (TP=4)"]
                G1[GPU 0] --- G2[GPU 1]
                G2 --- G3[GPU 2]
                G3 --- G4[GPU 3]
            end
            subgraph TP2["张量并行 (TP=4)"]
                G5[GPU 4] --- G6[GPU 5]
                G6 --- G7[GPU 6]
                G7 --- G8[GPU 7]
            end
            TP1 -->|激活值 P2P| TP2
        end
        subgraph PP2["流水线并行 (PP=4)"]
            subgraph TP3["张量并行 (TP=4)"]
                G9[GPU 16] --- G10[GPU 17]
            end
            subgraph TP4["张量并行 (TP=4)"]
                G11[GPU 20] --- G12[GPU 21]
            end
            TP3 -->|激活值 P2P| TP4
        end
        PP1 -.->|梯度 All-Reduce| PP2
    end

上图展示了 32 GPU 的 3D 并行布局:TP=4 使用机内 NVLink,PP=4 用于层间传递,DP=2 用于机间梯度同步。

6.4 3D 并行通信开销

配置示例(32 GPU):

  • 数据并行度 $D_{\text{dp}} = 2$
  • 张量并行度 $D_{\text{tp}} = 4$
  • 流水线并行度 $D_{\text{pp}} = 4$

3D 并行各维度通信量公式

$$
C_{\text{TP}} = 8 \times b \times s \times h \quad \text{(每层,All-Reduce 激活值)}
$$

$$
C_{\text{PP}} = 2 \times (D_{\text{pp}} - 1) \times b \times s \times h \quad \text{(P2P 传递激活值)}
$$

$$
C_{\text{DP}} = \frac{2\Phi}{D_{\text{tp}} \times D_{\text{pp}}} \quad \text{(All-Reduce 梯度)}
$$

符号含义示例值
$C_{\text{TP}}$张量并行每层通信量512 MB
$C_{\text{PP}}$流水线并行总通信量384 MB
$C_{\text{DP}}$数据并行梯度通信量1.75 GB
$D_{\text{tp}} \times D_{\text{pp}}$单个 DP 组内的 GPU 数16
并行维度通信操作通信量互联要求
张量并行All-Reduce 激活值$8 \times b \times s \times h$(每层)NVLink(机内)
流水线并行P2P 传递激活值$2 \times (D_{\text{pp}}-1) \times b \times s \times h$机内或跨机
数据并行All-Reduce 梯度$\frac{2\Phi}{D_{\text{tp}} \times D_{\text{pp}}}$跨机网络

设计原则

  1. TP优先使用机内通信:NVLink带宽高(600 GB/s)
  2. PP次之:相邻层尽量在同机器
  3. DP使用机间通信:通信频率最低,对带宽要求最低

6.5 通信优化方法

优化方法原理效果
通信与计算重叠反向传播时已完成层提前通信隐藏通信延迟
梯度累积多个 micro-batch 累积后再同步减少通信频率
梯度压缩FP16→INT8 量化或 Top-K 稀疏化减少通信数据量
Bucket 融合多个小张量合并成大张量再通信降低通信启动开销
分层 All-Reduce先机内 Reduce 再跨机 All-Reduce减少跨机流量
拓扑感知调度Ring/2D-Torus 匹配物理拓扑提高带宽利用率

7. 高频面试题及答案

Q1: 请解释 All-Reduce 和 Ring-All-Reduce 的区别?(基础)

答案
两者目标相同(让所有 GPU 拥有完整规约结果),但实现方式不同。朴素 All-Reduce 由一个节点收集聚合再广播,存在单点瓶颈;Ring-All-Reduce 通过环形拓扑分 Reduce-Scatter 和 All-Gather 两阶段完成,每卡通信量均为 2×(N-1)×Φ/N ≈ 2Φ,负载均衡无瓶颈。

详细说明

要点说明
朴素方式收集节点承载 (N-1)×Φ 通信量,成为瓶颈
Ring 方式数据切 N 份,环形传递 N-1 轮,每轮传 Φ/N
总通信量两者相近,约 2×N×Φ
关键区别Ring 方式负载均匀分布,消除单点瓶颈
工程实践几乎所有分布式框架默认使用 Ring-All-Reduce

公式

$$
C_{\text{Ring}} = 2 \times \frac{N-1}{N} \times \Phi \approx 2\Phi
$$


Q2: 数据并行和张量并行的通信开销有什么区别?(基础)

答案
数据并行通信量为 2Φ,仅在反向传播后同步梯度;张量并行通信量为 8×b×s×h(每层),在每层的前向和反向传播中都需要通信。前者与模型参数量成正比,后者与激活值大小成正比。

详细说明

对比维度数据并行张量并行
通信量$2\Phi$(与模型大小相关)$8bsh$(与激活值大小相关)
通信时机反向传播完成后每层的前向和反向传播中
通信频率每个训练步一次每层都需要通信
通信操作All-Reduce(梯度)All-Reduce(激活值)
适用场景模型能放进单卡模型太大需要层内切分

Q3: ZeRO-1、ZeRO-2、ZeRO-3 的区别及通信开销?(进阶)

答案
ZeRO-1 切分优化器状态,ZeRO-2 额外切分梯度,ZeRO-3 进一步切分参数。ZeRO-1/2 单卡通信量为 2Φ(与 DP 相同),ZeRO-3 为 3Φ(增加 50%),但显存节省与 GPU 数量成正比。

详细说明

版本分片内容各GPU存储单卡通信量显存节省
ZeRO-1优化器状态完整模型+完整梯度+部分优化器$2\Phi$~4×
ZeRO-2优化器状态+梯度完整模型+部分梯度+部分优化器$2\Phi$~8×
ZeRO-3全部部分模型+部分梯度+部分优化器$3\Phi$~N×

公式

$$
C_{\text{ZeRO-1}} = C_{\text{ZeRO-2}} = 2\Phi, \quad C_{\text{ZeRO-3}} = 3\Phi
$$

ZeRO-1/2 通信量与 DP 相同的原因:Reduce-Scatter + All-Gather = All-Reduce。ZeRO-3 多出的 1Φ 来自前向和反向传播各一次 All-Gather。


Q4: 流水线并行的通信开销公式是什么?如何理解?(进阶)

答案
公式为 2×(N-1)×b×s×h。N-1 是切分点数,b×s×h 是激活值大小,×2 因为前向和反向各传一次。通信方式为 P2P,仅相邻 GPU 之间传递。

详细说明

要点说明
N-1模型切到 N 张 GPU 上,有 N-1 个切分点
b×s×h中间激活值大小(batch × sequence × hidden)
×2前向传激活值 + 反向传梯度
通信方式点对点(P2P),非集合通信
GPipe 优化micro-batch 提高利用率,但不改变总通信量

公式

$$
C_{\text{PP}} = 2 \times (N-1) \times b \times s \times h
$$


Q5: 什么是集合通信原语?请列举并解释主要原语(基础)

答案
集合通信原语是分布式系统中多节点间数据传输的基本操作,共 8 种。按模式分为 1→N(Broadcast/Scatter)、N→1(Gather/Reduce)、N→N(All-Gather/Reduce-Scatter/All-Reduce/All-to-All)三类。

详细说明

原语模式是否规约典型应用
Broadcast1→N参数初始化
Scatter1→N数据划分
GatherN→1结果汇总
ReduceN→1梯度汇总到主节点
All-GatherN→NZeRO-3 参数恢复
Reduce-ScatterN→NZeRO 梯度聚合
All-ReduceN→NDP 梯度同步
All-to-AllN→N专家并行(MoE)

Q6: 在万卡集群中,为什么说"优化器状态可以忽略不计"?(进阶)

答案
在 3D 并行(DP×TP×PP)环境下,优化器状态被所有 GPU 分担。1024 卡集群中,优化器状态每卡只需存储 12Φ/1024 ≈ 0.012Φ,相比参数和梯度的 2Φ/(TP×PP) 占比极小。

详细说明

要点说明
单卡显存公式参数: 2Φ/(TP×PP) + 梯度: 2Φ/(TP×PP) + 优化器: 12Φ/(DP×TP×PP)
关键区别参数和梯度被 TP×PP 份切分,优化器被所有 GPU 切分
1024卡实例优化器每卡 0.012Φ,参数每卡约 0.125Φ(以 TP=4,PP=4 为例)
实际意义万卡集群下无需特别优化优化器显存,重点关注激活值和通信

公式

$$
M_{\text{per\_gpu}} = \frac{2\Phi}{D_{\text{tp}} \times D_{\text{pp}}} + \frac{2\Phi}{D_{\text{tp}} \times D_{\text{pp}}} + \frac{12\Phi}{D_{\text{dp}} \times D_{\text{tp}} \times D_{\text{pp}}}
$$


Q7: 张量并行中,前馈神经网络层为什么需要 2 次 All-Reduce?(进阶)

答案
FFN 层包含两步线性变换(Y=GELU(XA), Z=Dropout(YB)),A 按列切分、B 按行切分。前向传播需 All-Reduce 聚合 Z,反向传播需 All-Reduce 聚合 ∂L/∂X,各一次共 2 次,通信量 4×b×s×h。

详细说明

要点说明
切分方式A 按列切分 [A₁, A₂],B 按行切分 [B₁; B₂]
前向 All-Reduce聚合各 GPU 计算的 Z₁、Z₂ 得到完整输出 Z
反向 All-Reduce聚合各 GPU 计算的 ∂L/∂X₁、∂L/∂X₂ 得到完整梯度
每次数据量2×b×s×h(All-Reduce 等效于 RS+AG)
总通信量4×b×s×h

公式

$$
C_{\text{FFN}} = 2 \times C_{\text{AllReduce}} = 2 \times 2bsh = 4bsh
$$


Q8: 比较数据并行和 ZeRO 的通信开销(进阶)

答案
ZeRO-1/2 通信量为 2Φ,与数据并行完全相同,因为 Reduce-Scatter + All-Gather = All-Reduce。ZeRO-3 通信量为 3Φ,多出的 1Φ 来自前向和反向传播各一次 All-Gather 收集参数。

详细说明

方法通信量通信操作显存效果
数据并行$2\Phi$All-Reduce无优化
ZeRO-1$2\Phi$Reduce-Scatter + All-Gather节省 ~4×
ZeRO-2$2\Phi$Reduce-Scatter + All-Gather节省 ~8×
ZeRO-3$3\Phi$2×All-Gather + Reduce-Scatter节省 ~N×

核心权衡:ZeRO-3 用 50% 额外通信换取线性显存扩展能力。


Q9: 3D 并行是什么?如何计算其通信开销?(综合)

答案
3D 并行组合数据并行(DP)、张量并行(TP)、流水线并行(PP)。TP 使用机内 NVLink 高带宽,PP 用于层间传递,DP 用于机间梯度同步。

详细说明

并行维度通信操作通信量互联方式
TP(张量)All-Reduce 激活值$8bsh$/层NVLink(机内)
PP(流水线)P2P 传递激活值$2(D_{\text{pp}}-1)bsh$机内/跨机
DP(数据)All-Reduce 梯度$\frac{2\Phi}{D_{\text{tp}} \times D_{\text{pp}}}$跨机网络

设计原则:TP 优先机内(带宽最高)→ PP 次之 → DP 用于机间(频率最低)。


Q10: 如何优化大模型训练的通信效率?(进阶)

答案
六大优化手段:通信计算重叠、梯度累积减少频率、梯度压缩减少数据量、Bucket 融合降低启动开销、分层 All-Reduce 减少跨机流量、拓扑感知调度匹配物理拓扑。

详细说明

优化手段原理效果
通信计算重叠已完成层提前通信隐藏延迟
梯度累积多 micro-batch 累积后同步通信频率降低 k 倍
梯度压缩FP16→INT8 或 Top-K通信量减少 50-90%
Bucket 融合小张量合并通信降低启动开销
分层 All-Reduce先机内后机间减少跨机流量
异步通信流水线隐藏延迟提升吞吐量

Q11: Ring-All-Reduce 的通信步数和带宽利用率如何计算?(进阶)

答案
Ring-All-Reduce 需要 2×(N-1) 步通信,每步传输 Φ/N 数据。在理想情况下,所有 GPU 在每一步都同时收发数据,带宽利用率接近 100%。延迟与 N 成正比,但单步传输量与 N 成反比,总传输量与 N 无关。

详细说明

指标公式说明
通信步数$2 \times (N-1)$RS 阶段 N-1 步 + AG 阶段 N-1 步
每步传输量$\frac{\Phi}{N}$数据被切成 N 份
总传输量(单卡)$2 \times \frac{N-1}{N} \times \Phi$与 N 无关(N 大时约 2Φ)
带宽利用率接近 100%所有 GPU 同时收发
延迟$O(N)$步数与 N 成正比

公式

$$
T_{\text{Ring}} = 2(N-1) \times \left( \alpha + \frac{\Phi}{N \times \beta} \right)
$$

其中 $\alpha$ 为单次通信延迟,$\beta$ 为链路带宽。


Q12: 如果同时使用 ZeRO-3 和张量并行,通信开销如何叠加?(综合)

答案
两者的通信是独立叠加的。ZeRO-3 的 3Φ 通信量针对模型参数的收集和梯度聚合(跨数据并行组),张量并行的 8bsh/层通信量针对激活值的聚合(机内 TP 组)。实际中 ZeRO-3 通常与 DP 配合,而非与 TP 同时使用,因为 TP 本身已经切分了参数。

详细说明

场景ZeRO-3 通信TP 通信合理性
ZeRO-3 + DP$3\Phi$(跨 DP 组)常见配置,适合中小模型
TP + DP$8bsh$/层(机内) + $2\Phi$(跨 DP 组)常见配置,适合大模型
ZeRO-3 + TP$\frac{3\Phi}{D_{\text{tp}}}$ + $8bsh$/层较少使用,通信量大通常不推荐
3D 并行 + ZeRO-1$2\Phi/(D_{\text{tp}} \times D_{\text{pp}})$$8bsh$/层 + PP 通信工业界主流

8. 大厂常见面试题

本节面试题来源于互联网公开的大厂面试真题和高频考点。

Q13: 在实际训练中,如何判断通信是否成为瓶颈?有哪些诊断方法?

出处:字节跳动/阿里云 AI Infra 岗位面试真题

答案
通信瓶颈的核心判断指标是"计算开销/通信开销"的比值(Computation-to-Communication Ratio)。当通信时间占训练步时间的比例超过 30%,通常认为通信已成为瓶颈。

详细说明

诊断方法工具关键指标
NCCL 日志分析NCCL_DEBUG=INFOAll-Reduce 耗时、带宽利用率
Profiler 火焰图PyTorch Profiler / Nsight通信算子在时间线中的占比
吞吐量对比实际 vs 理论 MFU理论算力利用率 < 50% 时怀疑通信瓶颈
梯度累积实验增大累积步数如果吞吐量提升明显,说明通信是瓶颈
带宽测试NCCL Tests (all_reduce_perf)实测带宽 vs 理论带宽

Q14: DeepSpeed ZeRO 与 FSDP(PyTorch FullyShardedDataParallel)有什么异同?

出处:Meta/微软 LLM 训练工程师面试高频题

答案
两者核心思想一致——都将优化器状态、梯度和参数进行分片以节省显存。FSDP 是 PyTorch 原生实现,API 与 DDP 相似,易于迁移;DeepSpeed ZeRO 提供更细粒度的配置(Stage 1/2/3)和丰富的工程优化(offload、infinity 等)。

详细说明

对比维度DeepSpeed ZeROPyTorch FSDP
框架微软独立框架PyTorch 原生
分片粒度Stage 1/2/3 分级控制类似 ZeRO-3,统一分片
CPU Offload支持(ZeRO-Infinity)支持(cpu_offload)
通信后端NCCL / 自定义NCCL
混合精度FP16/BF16/FP8FP16/BF16
社区生态HuggingFace Accelerate 集成PyTorch 原生,兼容性最好

Q15: 训练 70B 参数量的模型,如何设计并行策略和通信方案?请给出具体配置。

出处:综合预测题(结合 LLaMA-70B 等开源模型训练实践)

答案
以 128 张 A100-80G 为例,推荐采用 3D 并行:TP=8(机内 NVLink),PP=2(跨机),DP=8(机间),配合 ZeRO-1 切分优化器状态。

详细说明

配置项理由
张量并行 TP8一台机器 8 卡,NVLink 互联带宽 900 GB/s
流水线并行 PP270B/8(TP)=8.75B/卡,2 级流水线后约 4.4B/卡,显存可控
数据并行 DP8128/(8×2)=8,提升训练吞吐量
ZeROStage 1切分优化器状态,通信量不增加
梯度累积4-8 步减少 DP 通信频率
序列长度4096平衡显存和通信

通信量估算

$$
C_{\text{TP}} = 8 \times b \times 4096 \times 8192 \times 2\text{B} \approx 4\text{ GB/层}
$$

$$
C_{\text{PP}} = 2 \times 1 \times b \times 4096 \times 8192 \times 2\text{B} \approx 0.5\text{ GB}
$$

$$
C_{\text{DP}} = \frac{2 \times 70\text{B} \times 2\text{B}}{8 \times 2} = 17.5\text{ GB}
$$


总结

核心知识点回顾

知识点核心公式/结论关键理解
集合通信原语8 种基础原语All-Reduce = RS + AG 是最核心的组合
数据并行$C = 2\Phi$Ring 方式消除单点瓶颈,负载均衡
张量并行$C = 8bsh$/层每层 4 次 All-Reduce,适合机内高带宽
流水线并行$C = 2(N-1)bsh$P2P 通信,量小但有气泡问题
ZeRO-1/2$C = 2\Phi$通信量与 DP 相同,显存分别省 4×/8×
ZeRO-3$C = 3\Phi$+50% 通信换取 N× 显存节省
3D 并行TP+PP+DP 组合TP 机内 → PP 跨层 → DP 机间
通信优化6 大手段重叠、累积、压缩、融合、分层、拓扑

思维导图结构

大模型训练通信开销
├── 集合通信原语
│   ├── 1→N:Broadcast / Scatter
│   ├── N→1:Gather / Reduce
│   └── N→N:All-Gather / Reduce-Scatter / All-Reduce / All-to-All
├── 数据并行 (单卡 2Φ)
│   ├── 朴素 All-Reduce:单点瓶颈
│   └── Ring-All-Reduce:均衡负载 = RS + AG
├── 张量并行 (单层 8bsh)
│   ├── FFN:A 列切 + B 行切 → 4bsh
│   ├── Attention → 4bsh
│   └── 适合机内 NVLink
├── 流水线并行 (2(N-1)bsh)
│   ├── 按层切分,P2P 传递
│   ├── GPipe micro-batch 减少气泡
│   └── 适合跨机通信
├── ZeRO 优化
│   ├── ZeRO-1:切分优化器 → 2Φ
│   ├── ZeRO-2:+切分梯度 → 2Φ
│   └── ZeRO-3:+切分参数 → 3Φ
├── 3D 并行
│   ├── TP 机内 (NVLink)
│   ├── PP 跨层 (P2P)
│   └── DP 机间 (All-Reduce)
└── 通信优化
    ├── 重叠 / 累积 / 压缩
    └── 融合 / 分层 / 拓扑

参考文献

  1. Megatron-LM: Training Multi-Billion Parameter Language Models Using Model Parallelism
  2. GPipe: Efficient Training of Giant Neural Networks using Pipeline Parallelism
  3. ZeRO: Memory Optimizations Toward Training Trillion Parameter Models

<!-- Reviewed: 2026-02-13, 深度重新审校:增加2个核心Mermaid图(Ring-All-Reduce两阶段流程+张量并行矩阵切分数据流)/原有2个Mermaid图(选型流程+3D并行配置)/丰富的通俗化类比(快递分拣/课堂小组/拼图/流水线/词典)/完整公式+符号表+数值示例/15个面试题/总计4个Mermaid图+1400行全面内容 -->

AI-Compass 致力于构建最全面、最实用、最前沿的AI技术学习和实践生态,通过六大核心模块的系统化组织,为不同层次的学习者和开发者提供完整学习路径。

🌟 如果本项目对您有所帮助,请为我们点亮一颗星!🌟

引言

在过程工业(石油化工、电力、精细化工、冶金等)自动控制系统中,气动薄膜调节阀作为“最终执行单元”,其选型合理性直接决定控制精度、系统稳定性与设备寿命。当前许多选型工作仍停留在“口径+压力等级+材质”的基础层面,导致投运后频繁出现调节震荡、噪音超标、内漏、卡涩甚至执行机构推力不足等问题。

科学的选型应遵循从控制目标出发,逐层结合工况边界、阀内件结构、执行机构匹配,并兼顾经济性与维护性的收敛路径。本文基于工程实践,系统阐述可量化、可校核的选型方法,并提供典型计算示例,供工程技术人员参考。

一、明确调节阀的定位:控制元件而非通断件

选型前必须回答三个核心问题,它们决定后续所有方向:

  1. 控制变量:流量、压力、温度还是液位?不同变量对阀门特性要求不同。例如流量控制需关注可调比,压力控制需保证调节稳定性,温度控制需兼顾耐温与抗冲蚀。
  2. 控制精度:粗调还是连续精调?粗调对可调比、响应速度要求较低;连续精调(如反应器进料)则需严格控制偏差,对流量特性线性度和执行机构分辨率要求较高。
  3. 系统工况:是否存在频繁扰动、负荷大范围波动或长期小开度运行?这些是选型中的高风险点。

二、调节性能的六个量化指标

2.1 流量特性匹配

常见流量特性及适用场景:

  • 等百分比特性:小开度时流量变化平缓,大开度时灵敏。适用于负荷波动大、调节范围广的工况,如换热器温度控制、反应器进料。
  • 线性特性:流量与开度成比例,调节精度高。适用于稳态控制,如恒压供水、液位恒定控制。
  • 快开特性:小开度即达大流量,主要用于开关或安全联锁。

工程经验:

  • 换热系统 → 等百分比优先。
  • 压力控制回路 → 线性特性更易稳定。
  • 液位控制 → 大惯性储罐用线性,小惯性缓冲罐用等百分比。

2.2 小开度控制能力

阀门长期运行在10%开度以下,易出现抖动、喘振或失控。常见原因:

  • Cv选型过大,正常流量仅需极小开度。
  • 流量特性不匹配,线性阀在小开度时增益过高。
  • 执行机构分辨率不足,无法精确定位。

解决措施:

  • 正常开度控制在60%~80%,最小开度不低于15%。
  • 小流量工况选用多级节流结构(套筒阀)或微小流量专用阀(Cv可低至0.001~0.1)。

2.3 可调比

可调比 = 最大可控流量 / 最小可控流量。

  • 一般工艺:≥30:1。
  • 精细控制:≥50:1。

套筒阀可调比通常优于单座阀(50:1~100:1 vs 30:1),适合大范围负荷波动工况。

2.4 响应速度与稳定性

气动薄膜执行机构响应快(毫秒级)、本质安全,但实际性能受限于:

  • 定位器精度:智能定位器(支持HART/Profibus)可将死区降至0.1%以下,普通定位器易产生滞环。
  • 气源质量:含水、含油会导致膜片老化、喷嘴堵塞。建议加装过滤干燥器。

2.5 流阻与能耗——系统级考量

阀门流阻影响泵/压缩机能耗。正常开度控制在50%~70%时,流阻与调节性能综合最优。避免长期小开度节流损失,也避免Cv过小导致阀门长期大开度(失去调节裕量)。

工程建议:结合管道系统总阻力合理核算Cv,使阀门压降占系统总压降的10%~20%。

2.6 噪音与汽蚀控制(高压差工况重点)

当存在以下条件时必须专项控制:

  • 压差ΔP较大(液体>2.5MPa,气体>0.5MPa)。
  • 液体接近汽化压力(闪蒸/汽蚀风险)。
  • 气体马赫数>0.3(马赫数 = 流速/当地音速,需根据介质密度、压力计算)。

解决方案:

  • 多级降压:其原理是将一次高压差分解为多个逐级降低的小压差,每级压降均低于临界值,从而避免流体在任一阶段达到汽化压力或产生激波。 多孔套筒或迷宫式内件可实现该功能,通常可降低噪音20~30dB。
  • 抗汽蚀内件:硬化阀芯、特殊阀座设计。
  • 降噪附件:消声罩、扩散器。

三、泄漏等级与切断压差协同校核

这是选型中最易出错的环节。泄漏等级(Class IV/V/VI)决定密封形式,切断压差(ΔPmax)决定执行机构推力需求。常见错误:只提泄漏等级,不提供ΔPmax,导致执行机构推力不足,阀门关不严。

校核方法:

  1. 计算阀芯在ΔPmax下所受的介质力(考虑不平衡力或平衡力)。
  2. 执行机构输出力 ≥ 阀芯受力 × 安全系数(1.25~1.5)。
  3. 对于气关式(失气开),还需校核弹簧力在信号为零时能否保证关闭。

示例:某单座阀,ΔPmax=2.0MPa,阀座直径50mm,介质为水。阀芯所受不平衡力 ≈ ΔP × 阀座面积 = 2.0×10⁶ × (π×0.025²) ≈ 3927N。加上密封压紧力与摩擦力,总需求约5000N。执行机构输出力应至少达到5000×1.3=6500N。

气体工况补充:对于可压缩流体(气体、蒸汽),Cv计算公式不同于液体。常用气体Cv公式为:
image.png

其中 Qg 为标准状态下体积流量(m³/h),G 为气体比重(空气=1),T 为绝对温度(K),P₁、P₂ 为阀前、阀后绝对压力(kgf/cm²)。当压差超过临界压差(P₁ - P₂ > 0.5P₁)时,需按阻塞流修正。

四、结构选择与介质特性匹配

不同介质适配不同阀结构,下表为工程推荐:

工况类型推荐结构选型说明
含颗粒/易结晶球阀 / 偏心旋转阀(角行程)流道通畅,无死角,自洁性好
一般洁净介质单座阀 / 套筒阀(直行程)调节精度高,密封性好
高压差+洁净介质套筒阀多级节流,可调比高,抗汽蚀
易结垢介质大流道结构(V型球阀、偏心阀)减少附着,便于清洗

角行程阀门防堵性能较好,但并非所有工况必需,需结合介质特性判断。

五、材料选择:寿命匹配而非“能用”

材料选型需同时考虑三种破坏机制:

  • 腐蚀:化学侵蚀,选耐蚀合金。
  • 冲蚀:颗粒冲击,内件需硬化处理。
  • 汽蚀:气泡破裂冲击,选用抗汽蚀合金及特殊流道。

工程选型参考表(含适用温度范围):

工况阀体材料适用温度范围(℃)内件材料
一般工况(水、蒸汽、油)WCB / CF8-29~42513Cr / 304
腐蚀介质(酸、碱)316L / 双相钢(2205)-40~300(双相钢)316L / 哈氏合金
高温(>450℃)WC6 / WC9-29~595(WC6),-29~650(WC9)硬化不锈钢(如17-4PH)
强腐蚀+冲蚀哈氏合金(C276) / 衬氟-196~400(哈氏),-29~180(衬氟)司太立合金堆焊

内件经硬化处理(如司太立堆焊、碳化钨喷涂)后,在含颗粒或高压差工况下使用寿命可延长3~5倍。

六、执行机构匹配:推力与分辨率并重

气动薄膜执行机构关键参数:膜片面积、弹簧范围(气开/气关)、行程。

选型核心:

  1. 最大压差下能可靠关闭:输出力 ≥ 阀芯受力 × 安全系数。
  2. 最小信号下具备调节分辨率:避免死区过大,建议配置智能定位器。

工程建议:

  • 预留20%~30%推力裕量,应对气源波动、填料摩擦增加等因素。
  • 弹簧范围选择:气开(失气关)用于防泄漏,气关(失气开)用于防超压。
  • 智能定位器可提升精度至±0.5%,并支持在线诊断。

七、经济性:全生命周期成本(LCC)

调节阀的经济性不能只看初始采购价,而应综合以下维度:

成本维度工程意义
初始采购成本一次性投入
维护频率影响人工及备件成本,高频维护导致停机损失
内件寿命更换周期越短,长期成本越高
能耗影响阀阻大 → 泵/风机长期高能耗

在连续生产系统中(如炼油、化工),一次非计划停机的损失往往超过阀门采购价格的10~100倍。因此,在关键回路中适当提高配置等级,从全生命周期看通常更经济。

八、工程实用选型路径(九步法)

  1. 明确控制目标:变量、精度、扰动特性。
  2. 确定工况边界:最大/最小流量、进出口压力(ΔPmax)、温度、介质特性。
  3. 计算Cv并校核开度:液体用 Cv = Q √ SG / ΔP ,气体按前述公式,确保正常开度50%~70%,最大≤80%,最小≥15%。
  4. 选择流量特性:根据负荷波动与控制系统类型确定。
  5. 判断汽蚀/噪音风险:若ΔP超过临界值,选用多级降压或抗汽蚀内件。
  6. 选择阀体结构:按介质特性与压差从表中匹配。
  7. 选材(阀体+内件):按腐蚀、冲蚀、温度综合确定,参考材料表。
  8. 校核执行机构推力:计算最大压差下所需推力,留足裕量。
  9. 确定附件:定位器(智能/普通)、电磁阀、限位开关、过滤减压阀等。

结语:选型的本质是“匹配”

气动薄膜调节阀的科学选型,不在于参数堆砌,而在于是否真正匹配了工艺的动态特性与极限工况。从控制目标出发,逐层量化校核流量特性、小开度能力、可调比、响应速度、流阻能耗、噪音汽蚀、泄漏等级与切断压差、结构材料、执行机构推力,并兼顾全生命周期成本,才能实现稳定、可靠、经济的运行。

正确的选型逻辑远重要于产品品牌。即使选用不同厂家产品,只要匹配合理,系统同样能稳定运行;反之,即便配置再高,若与工况失配,故障仍难以避免。希望本文提供的工程化方法能为过程工业技术人员提供实用参考。

经常用 AI 搓前端页面的朋友,一定对那抹“深邃蓝”和“基佬紫”不陌生。

只要你不给 Prompt 设限,AI 仿佛全员深爱“赛博朋克渐变风”。第一眼惊艳,看多了想吐——满屏都是溢出来的“AI 味儿”。更别提当你让它写第二个页面时,那代码逻辑就像是换了个祖宗,风格南辕北辙。

那么,如何打破这种“开盲盒”式的开发体验?如何让 AI 像正经大厂程序员一样,守规矩、懂审美、还出活?

今天我带你玩点不一样的:从 0 到 1 演示如何通过“反向思维”,让 AI 乖乖吐出一整套风格统一、逻辑闭环的代码。

那么,如何操作才能摆脱这种千篇一律的色彩风格呢?当然是有办法的,听我慢慢娓娓道来……

有很多朋友想要从零开发某个应用,但是总是会发现:要么无从下手,要么好不容易写好了一个页面,然而让 AI 去写另外的一个页面时,发现和之前的页面风格完全不同!那么,到底有没有办法让 AI “懂得代码规范” 写出一样风格的代码呢?

今天,我就从 0 到 1 一步一步讲解如何让 AI 帮你写出一套完整的项目代码。

放弃传统思想,现在借助 AI 开发应用,思路得发生转变

以前,我们如果想要从 0 开发一个 APP,我们大致会经历过如下阶段:

  1. 产品同学构思业务逻辑并画好产品原型图
  2. 产品同学召集UI、前端、后端一起开会讲明需求
  3. UI 同学对照原型图设计出 UI
  4. 前端同学根据 UI 去设计前端页面
  5. 后端同学结合原型图、UI图设计数据库、后端架构、制定 API 接口
  6. 前后端同学进行接口联调
  7. 测试同学进行前后端产品成果测试
  8. 产品同学验收

然而,当我们借助 AI 来开发应用时,我们的开发流程就会有所转变,以下是我的开发流程:

  1. 构想清楚这个产品的功能、定位客户人群、交互方式并写好功能文档
  2. 让 AI 帮我确定清楚适合的色彩风格并直接写好前端代码并写好 mock 数据
  3. 自己根据页面和 mock 数据去调试功能
  4. 功能调试没问题之后,让 AI 根据 mock 数据写出后端所需要的 API 接口文档
  5. 让 AI 根据接口文档去创建数据库建表语句(自己略微调整)
  6. 让 AI 根据接口文档去写接口
  7. 将前端的 mock 数据换成真实的 API 接口,自己测试功能
  8. 有问题的地方直接截图给到 AI 让 AI 帮忙解决,直到没有问题即可

你会发现操作流程上也没有少几个步骤,但是当你仔细一琢磨之后,你会发现:

  1. 以前至少需要产品、UI、前端、后端、测试等岗位的同学相互合作才能做的事情,现在只需要一个人就能干完
  2. 如果你想一个人干整套项目,最好的方式是先从页面开始,再反向去写接口可以事半功倍

展示效果

说再多,都没有直接展示成果来得干脆,下面是我最近用 AI 写的一个微信小程序,前端代码 100% 用 AI 写的,后端接口 80% 用的 AI

现在我已将代码都开源了,感兴趣的朋友可以去观摩观摩,也请帮忙点个 Star 支持一下,谢谢!
小程序端: https://github.com/pudongping/momento-miniapp
API 接口: https://github.com/pudongping/momento-api

homepage.png

login.png

profile.png

recurring.png

transaction.png

罗列需求

首先,我们不要着急写代码,先把自己想要实现的功能罗列清楚,我自己写了一个 markdown 直接发给了 AI

下面是我写的内容:

## 1、首页看板

最顶部可下拉切换账本

功能点:

1、温馨背景墙:

背景区域,支持上传自定义图片(如夫妻合照、全家福)。

交互逻辑说明:

默认: 温馨插画。
自定义: 点击可从相册上传。

---

在背景图顶部显示

顶部背景区域,展示倒计时信息。

纪念日提醒:距离结婚纪念日、生日等重要纪念日还有多少天的倒计时提醒(每一条纪念日上下滚动提醒)
显眼提醒:如果用户在设置中勾选了“首页显示”,系统自动计算并筛选出距离今天最近的一个节日,在背景图中央显眼位置显示:“距离 [事件名] 还有 [X] 天”。

2、预算红绿灯:

在背景图下方展示本月预算进度条。(基于家庭总支出的视觉化预警。)

在“我的”设置页面中会设置每个月的总预算(比如10000元)。首页展示一个进度条,绿色代表安全,黄色代表预警,红色代表超支。
绿色状态: 支出 < 50%预算。
黄色状态: 支出 >= 50% 且 < 80%。
红色状态: 支出 >= 80%(甚至爆表)。
进度条文案: 显示“本月剩余可用:¥XXXX”。

预算红绿灯不要做成生硬的交通灯,可以做成一个“呼吸感”的渐变光圈或者半透明的水位线,这样视觉上会更灵动。

3、当前月份的总支出、总收入

4、时间轴账单流

类似朋友圈的时间轴,按“天”为单位排列。默认只会展示当前一个月的账单,下拉刷新,上拉加载更多历史数据。,像刷朋友圈一样查看过往账单。(这里的数据分页为“游标”分页,需要前端传递已经加载出来的最后一条账单的id给到接口)

账单列表:

- 日期头: 显示日期 + 当日星期 + 当日总支出(卡片形式)

- 每条账单展示:标签、金额(支出红色,收入绿色,支出为- 收入为+)、备注
- 支持按天展开/收起查看该天的所有账单
- 账单旁边显示删除按钮,点击后弹出二次确认框,确认后删除该条账单
- 支持点击账单进入编辑页面,修改该条账单的信息
- 每条账单旁边都会显示用户头像和昵称(如果昵称超过4个字符,超过部分则用三个点 ... 代替)
- 按“天”的时间轴展示,像朋友圈一样,下拉查看每一笔。下拉加载更多,像刷朋友圈一样查看过往账单。
- 搜索功能:支持按标签、备注、金额、类型(支出,收入)、时间区间搜索账单

## 记账

记账功能:

- 智能标签: 预设家庭常用标签(买菜、房贷、孩子、餐饮、交通、其他)不同的标签用不同的颜色区分。系统级标签不可删除、不可修改。列表末尾有“+自定义”,用户也可以自定义标签颜色和名称
- 可以选择支出/收入类型(默认为支出)
- 备注: 支持输入备注信息(非必填)
- 金额: 支持输入金额,支持小数点后两位(必填,单位为元)
- 日期: 默认为当天,支持选择以前的日期(通过日历选择)
- 保存后,自动返回首页看板,新增的账单会出现在时间轴
- 定期/周期账单:对于房贷、车贷、物业费这种固定支出,设置“自动记账”模板,可设置每年(每年哪一天)、每季度(每季度哪一天)、每月(具体哪一天)、每星期(具体星期几)、每天(具体什么时间)自动扣款日。到了指定日期,系统自动生成一笔账单,并备注为“自动记入”。

---

## 3、我的

- 用户通过微信小程序授权登录。接口通过雪花算法生成分布式ID作为用户的唯一性标识 UID
- 登录成功之后,接口会返回默认昵称和头像,用户可以在个人中心修改昵称和头像

1、个人信息修改(昵称、头像)

2、显示 uid(雪花算法得到的分布式ID)、uid 旁边有个“复制”点击“复制”之后可以复制 uid 到剪切板

3、预算设置
设置“红绿灯”的总金额。    输入每月家庭预算总限额,单位:元。

4、节日设置

设置首页倒计时的数据源头。
- 添加节日名称、日期。比如结婚纪念日、生日、春节等(可设置多个)
- 每一个节日都可以设置是否在首页显示,默认为显示
- 每一个节日都可以进行编辑、删除

5、账本管理

当用户登录成功之后,需要添加账本(可以自定义账本名称),账本添加成功之后,可以在账本中邀请其他用户,输入对方 UID,发送邀请。

邀请请求发出之后,在该账本中可以看到被邀请人的头像、昵称,状态为“等待加入”

被邀请人打开小程序并登录之后,可以在“我的”-“账单管理”位置看到一条提示消息:“邀请人昵称”于年月日时分秒邀请您加入“账本名称”共同管理账单。
消息旁边有“同意”、“拒绝”两个按钮

当被邀请人点击了“同意”按钮之后,则加入了该账本。账本管理中就会显示出邀请人的账本名称、加入成员数量、创建时间(年月日时分秒)、此时被邀请人在该账本中的状态为“已加入”、在邀请人那边被邀请人的状态为“已绑定”

当被邀请人点击了“拒绝”按钮之后,则不加入该账本,在邀请人侧则显示“被拒绝”状态。

在同一个账本中,每个用户记录的账单都是可见的。

可以对账本设置“默认”标签,这样在首页、添加账单时,则添加到默认标签的账本中,当然,如果用户存在于多个账本中,则可以在首页、添加账单时对账本进行切换。

自己创建的账本和自己加入别人创建的账本是有颜色区分的,优先展示自己创建的账本,如果自己没有创建账本,再优先展示加入的账本

被邀请人可以退出加入的账本,邀请人不能退出自己创建的账本,只能删除账本。(删除效果是滑动删除)「退出」、「删除」都会有二次确认。

当然了,这也是最费时间的步骤,但是是必不可少的步骤。

定调

你会发现上面的小程序样式、色彩都是有自己的风格的,那么到底是怎么做到的呢?

很简单!在写这个项目之前,我直接让他固定好了全局样式

色系:

  • 主色:#FF9A5A(暖橘)-> #FFD166(浅金)的渐变
  • 辅助色:#F5F5F5(浅灰白)
  • 文字色:#333333 (主标题), #666666 (副标题/备注)

风格:模仿苹果 iOS 的 UI (高级感、温馨、圆润、极简)

写提示词

当你将上面的内容都发给 AI 并让 AI 牢牢记住你的要求之后,你就可以直接将下面的提示词发给他,让他帮你写代码了

Subject:微信小程序《时光账记》前端开发任务

Context:我正在开发一款名为《时光账记》的微信小程序,目的是创建账本,然后在账本下可以记账,请帮我完成小程序前端代码。

所有数据请求请使用 Mock 数据模拟,请在项目根目录下创建一个 mock 文件夹,将所有的 API 返回数据写在独立的 JS 文件里,方便我后期替换成真正的 API。

1、接口协议规范:所有 API 请求的返回格式必须严格遵守: {"code": 0, "msg": "提示语", "data": null}

- 当 `code == 0` 时,表示接口请求正常,此时可以从 `data` 中拿到业务数据
- 当 `code != 0` 时,表示接口异常,需要通过 toast 弹出 msg 中的提示内容
- 所有的时间,接口都会返回秒级别的时间戳,前端需要自行进行格式化处理
- 如果用户已经登录,需要将用户登录的 token 数据放入到请求头中到 token 字段中

2、前端所有和接口网络请求有关的方法,都要以 `Api` 为后缀,比如在前端中有一个方法是封装去请求接口获取用户信息时 `getUserInfoApi` 方便我好分辨这个方法是和网络请求有联系的

3、全局样式设置:

色系:

- 主色:#FF9A5A(暖橘)-> #FFD166(浅金)的渐变 
- 辅助色:#F5F5F5(浅灰白)
- 文字色:#333333 (主标题), #666666 (副标题/备注)

风格:模仿苹果 iOS 的 UI (高级感、温馨、圆润、极简)

先帮我把项目的目录结构搭好,并写好全局的 API 请求封装(针对 code 判断逻辑)。

先帮我创建 tabbar

- 首页
- 记账(一个大大的加号)
- 我的

慢慢的,你就会发现他写的每一个页面都是一样的风格。剩下的,你就专心跟他对话让 AI 帮你调整细节就好了~

但是,你会发现另外一个问题,当你某天退出了编辑器之后,重新打开项目再让 AI 帮你写代码时,你就会发现他又会随意发挥了。下一篇文章跟大家聊聊如何让 AI 不管何时介入项目,写出的代码都是统一风格的,敬请期待~

为什么别人用 AI 写出的代码结构清晰、风格统一,而你写出来的却是“屎山”堆积?区别不在于 AI 的智商,而在于你会不会“调教”。

本文将为你提供一套经过实战验证的 “从 0 到 1 前端项目启动 Prompt 清单”,直接复制粘贴过去,修修改改,让 AI 瞬间变身你的资深技术合伙人。

为什么你用 AI 写的代码很乱?

很多小白用户在开始一个新项目时,习惯直接对 AI 说:

“帮我写一个记账小程序的首页。”

这就好比你对装修队说:“帮我装修一下房子。”
结果可想而知:客厅是欧式的,卧室是中式的,厕所是战损风的。

如果你想让 AI 写出 代码风格统一、色彩搭配和谐、交互逻辑一致 的专业级项目,你必须学会分步骤、模块化地给指令。

下面就是我总结的一套“四步走”标准化流程,以我的开源项目 Momento(Uni-app + Vue3)为例,教你如何从 0 到 1 驾驭 AI。

时光账记

时光账记是一款基于 Uni-app + Vue 3 开发的个人记账微信小程序,后端接口基于 go-zero 微服务框架构建。

这是一款专注于个人财务管理与生活记录的应用。它不仅支持非常简洁的方式来管理基础的收支记录,还提供了多账本管理、周期性自动记账、预算控制以及节日倒计时等贴心功能,帮助用户更好地管理个人及家庭财务。

现在我已将代码都开源了,感兴趣的朋友可以去观摩观摩,也请帮忙点个 Star 支持一下,谢谢!

小程序端(Uni-app + Vue3): https://github.com/pudongping/momento-miniapp
API 接口(Go + go-zero): https://github.com/pudongping/momento-api

前端部分 AI 占比 100%(自己一行代码都没写),接口部分 AI 占比 80%
这也是一套非常不错的 AI 练手项目,如果对你有帮助,希望帮忙点个 Star 支持一下,谢谢!

homepage.png

login.png

profile.png

recurring.png

transaction.png

🛠️ 第一步:定基调 —— 技术栈与架构约束

在写第一行代码之前,先发这条指令,把 AI 的“思维”固定在正确的轨道上。

📋 复制这条 Prompt:

# Role
你是一名拥有 10 年经验的前端架构师,擅长 Uni-app 和 Vue 3 开发。

# Project Goal
我们要从零开始开发一个名为 "Momento" 的个人记账微信小程序。

# Tech Stack (强制执行)
1. **框架**:Uni-app + Vue 3 (Composition API / <script setup>)。
2. **样式**:SCSS。
3. **构建工具**:Vite。
4. **代码风格**:
   - 必须使用 ES6+ 语法。
   - 变量命名使用 camelCase(小驼峰)。
   - 组件命名使用 PascalCase(大驼峰)。
   - 禁止使用 TypeScript(根据项目实际情况调整)。

# File Structure
请先帮我规划项目的目录结构,参考标准的 Uni-app 项目结构,并解释每个目录的作用。

✅ 效果:AI 会给出一个标准的目录结构,并且在后续的对话中,它会时刻记得“我要用 Vue 3 Setup 语法”,而不会突然给你蹦出个 Vue 2 的写法。


🎨 第二步:定颜值 —— 注入设计基因

不要让 AI 自由发挥颜色!一旦它放飞自我,你的 App 就会变成“霓虹灯”。你需要先把“调色板”喂给它。

📋 复制这条 Prompt:

# Design System Definition
我们需要定义一套全局的 UI 设计规范,请帮我生成一个 `uni.scss` 文件。

# Requirements
1. **主色调**:温暖的橙色 (#FF9A5A)。
2. **辅助色**:
   - 成功:#4CD964
   - 警告:#F0AD4E
   - 错误:#DD524D
3. **中性色**:
   - 主要文字:#333333
   - 次要文字:#999999
   - 边框颜色:#EEEEEE
   - 背景色:#F8F8F8
4. **圆角**:
   - 小圆角(按钮):100rpx
   - 大圆角(卡片):24rpx
5. **间距**:
   - 基础间距:20rpx
   - 倍数间距:10rpx, 30rpx, 40rpx

# Action
请生成代码,并告诉我如何在后续开发中引用这些变量。

✅ 效果:你得到了一份包含 $uni-color-primary 等变量的 SCSS 文件。以后你只需要说“用主色”,AI 就会自动填入变量名,而不是硬编码颜色值。


🧩 第三步:造轮子 —— 封装基础组件

这是最关键的一步!千万不要直接开始写页面! 先让 AI 把通用的按钮、弹窗、卡片封装好。

📋 复制这条 Prompt:

# Component Development
为了保持 UI 统一,我们需要先封装几个基础组件。

# Tasks
请帮我编写以下 Vue 3 组件(存放在 `components/` 目录下):

1. **BaseButton.vue**:
   - 支持 `type` 属性 (primary/default/danger)。
   - 默认圆角为全局变量中的小圆角。
   - 支持点击事件。
   
2. **BaseCard.vue**:
   - 白色背景,带有轻微阴影。
   - 圆角为全局变量中的大圆角。
   - 内部有 20rpx 的 padding。

3. **BaseModal.vue**:
   - 居中弹窗,带有半透明遮罩。
   - 包含标题栏、内容区、底部按钮区。
   - 动画效果:淡入淡出。

# Constraint
所有样式必须使用上一步定义的 `uni.scss` 变量。

✅ 效果:你拥有了一套可复用的“积木”。以后写页面时,AI 就会直接调用 <BaseButton>,而不是每次都重写一遍 <button class="btn">


🚀 第四步:写业务 —— 标准化开发流

现在基础打好了,可以开始写页面了。但别急,发指令时带上“参考系”。

📋 复制这条 Prompt:

# Feature Request
请帮我开发“记账页面” (pages/record/index.vue)。

# UI Requirements
1. 页面背景色使用全局背景色变量。
2. 顶部是一个“金额输入框”,样式风格参考 `BaseCard`。
3. 底部有一个“保存”按钮,**必须使用我们封装的 BaseButton 组件**。
4. 点击保存后,如果金额为空,弹出一个提示框(使用 `uni.showToast`)。

# Code Style
- 使用 Vue 3 `<script setup>`。
- 引入 `uni.scss` 变量。
- 保持代码简洁,关键逻辑添加注释。

✅ 效果:AI 会乖乖地复用你之前定义的组件和变量,生成出的页面不仅代码整洁,而且和整个 App 的风格完美融合。


📝 总结

发现了吗?用 AI 编程,核心不在于“写代码”,而在于“定规矩”。

如果你能按照:

  1. 定技术栈 (Context)
  2. 定设计变量 (Tokens)
  3. 定基础组件 (Components)
  4. 写业务逻辑 (Features)

这四个步骤来引导 AI,哪怕你完全不懂代码,也能做出一个专业级的前端项目。

万一,万一,你也不知道做成什么样,你也可以直接先跟 AI 进行交流,比如,可以这样问 AI “我想做一个记账的小程序,我应该采用什么样的色系……” 然后你就可以继续让它帮你先写几个 demo 页面出来,你自己再根据 demo 页面去做选择。

总之,如果你要借助 AI 来帮你完成项目,你一定要学会做项目拆解。

下一篇文章,我会继续讲解如何要求 AI 来帮我们给前端项目封装好请求方法,希望对你有所帮助~

前言

最近,是大家大规模找实习的时候。在这个时候,可能是大家第一次找实习,找工作,内心充满了各种疑惑。

对于大家的这种困惑,我把之前26届当时找实习问我的各种问题,给大家汇总出来了,希望能够对大家正确的职业思考规划有帮助

(这是不同时间写的,到时候思路策略肯定会有不同,具体有疑惑的可以私信哈)

(比如里面有的文章是去年9月份秋招写的,那哪个时候的策略肯定和四五月份是不一样的)

相关方向的初创公司的实习值得去吗,是不是学到东西的概率更大?

初创公司值不值得去,能不能学到东西。

其实可以首先对什么样的实习公司,什么样的公司实习排序。然后值不值得,在针对目前自身一个情况进行分析。
实习最主要加分的公司无非就是那些大厂、知名厂、以及一些行业的龙头企业

毕竟大家毕业也都是想去这些公司嘛,知名公司可以拿的出手,并且薪资也高。如果这个求职的时候,大家有过一段同等级的公司的实习,面试官会认为你已经被同级水平的公司筛选了并且通过了,说明你是有一定能力了,所以会很大程度给你面试,并且面试也应该不会太难。

当然,并不是所有同学都能拿到大厂实习offer,大多数都是拿一些中小厂的offer,那这个时候就会犹豫值不值得去了。这是就需要不同的情况,针对性分析了。

如果你是大一大二或者研一,大四保研的了,我认为可以去,一是可以去涨涨经验,给简历加加分 (实习一般都会加分,没有说实习还是减分这一说,只不过是加多加少罢了),二是去真是体验体验工作,看看这一行的强度自己是否能接受,如果不能接受,那可以提前考虑别的出路了。

如果你现在是大三或者研二,这个时候值不值得去,就需要看你目前基础准备的怎么样了,如果自我感觉准备的很好了,那就可以去。如果基础还差很多,马上都秋招了,还是专心搞基础吧,这才是关键,先保证自己起码能找到工作。

然后咱们再思考,实习能不能学到东西。其实首先,咱们考虑下,公司对实习生这个岗位是怎么定义呢,就知道能不能学到东西了。实习生这其实就是个临时工,毕竟你想走随时都可以走,这个时候如果你是老板,你会把核心的开发任务交给一个临时工来干吗。

那百分之百不会啊,所以说,不管去什么公司实习,其实都是学不到东西呢。

那企业为什么会招实习生啊,无非就是便宜免费劳动力一样,然后干干杂活多好哈哈哈。

那我个人去实习了又想让它发挥出应有的价值怎么办吧?
发挥出应有的价值其实就是简历上可以写一些含金量的东西,这个只能自己“偷”。

对看项目文档,看项目代码,针对性的看。脑海里有有一个想法,就是这个可以写在我都简历上吗,先初步预判下如果能,那就深入的学习。

了解下这个功能开发的需求原因,方案的调研设计,开发的逻辑,注重自己的文档总结,不然你看完不久就忘记了。梳理一份好的文档,就是让面试官针对这个简历写的点的考察,都可以在你都文档里面找到答案。

大厂侧开实习和小厂开发实习怎么选

先说选择,这个可以百分百确定选大厂,title很重要。
要想弄清楚那个选择对自己最有利,可以思考下实习的意义是什么?

实习无非就是给简历加分,拿到好offer,高薪offer。
那这就需要思考,简历怎么让面试官认可,那肯定是有个知名厂的实习,面试官看到你在知名厂呆过,面试官会认为你已经被同级水平的公司筛选了并且通过了,说明你是有一定能力了,所以会很大程度给你面试,并且面试也应该不会太难。

这个时候肯定会有人疑问,说我这是侧开实习,那秋招找正式工作的时候还能找开发吗

(1)简历是可以包装的,进去以后可以多做一些开发的任务,“偷”点开发的东西,多开发点自动话脚本;

(3)就是真去实习了,测试部门不能看到开发的代码,那也问题不大的。重点积累测试的内容也是可以的,重点是要有含金量。title是大于岗位的,同时下去继续学习开发的东西就可以了。

总而言之,就是让面试官知道你已经被大厂筛选过了,并且还通过了,这才是真正的加分点呢。

学历一般,没有实习,cpp学什么简历上可以增加含金量

这是星球同学在周五答疑上进行的询问,估计也有很多同学有这种困惑,学历一般,也没有对应大厂实习。但是依旧想秋招找个好工作不知道从何入手。

要想找个好工作,我们要首先理解清楚找工作的本质。找工作其实就是你投一份简历到公司,用人部门看到你的简历认为如果你简历上的都会了就可以胜任工作,然后给你发面试,面试通过发offer。

所以找工作最关键的就是要有一份不错的简历。

写一份不错的简历,首要要知道简历主要有哪几部分构成,针对可操作的部分改成最有含金量的尽力即可。

简历主要构成:

1.基本信息(个人信息、学历)

2.实习经历(并不是所有人都有,可有可无)

3.项目经历(一般都有,不然简历太空了,除非你有很多实习经历可以填补简历的空缺)

4.技术栈(让人知道你具体会什么,符不符合要求)

5.校园经历/个人评价(有没有参加过比赛获奖、以及展现自己对技术的热忱)

通过个人情况,一般我们可以包装的就是3、4、5点。重点能包装的其实就是项目经历和技术栈

项目无非就是放点高质量的项目(切记别把一个demo当作一个项目,比如实现了线程池内存池,以及rpc这放到技术栈里是个加分项,当作一个项目太简单了,规模太小),如果不知道做什么项目好,可以看看星球的互联网的项目以及底层项目

技术栈,这部分多写一些底层的知识,一是增加含金量;二是凸显出差异化,给面试官眼前一亮的感觉

如果自己学历一般,也没有大厂实习,技术栈也写的习俗平常,那怎么可能要你啊。

比如一个岗位招10个人,可能1000人投简历,然后面100人。这100人怎么筛选呢,无非就是学历好不好,有没有大厂实习。

如果自己这两个都没有,那就包装简历内容,让面试官看到你的简历发现你写的东西和大多数人都不一样,并且还很底层,让他对你产生兴趣,对你有了兴趣,才有面试的可能。有面试了能不能拿下就看你的实力了。

比如,计网的书写,一方面可以写大家都写的那部分内容(比如熟悉htt/https,熟悉udp、tcp三次握手四次挥手等),让面试官知道你基础能力也达到了合格水平

另一方面,可以写写星球为大家总结底层网络的相关知识点,给面试官眼前一亮,甚至屌爆他,让他对你产生极大的兴趣,这机会不就来了嘛。

校园经历,这个有参加过一些含金量的计算机相关比赛比较好,如果没有那只能多往展现自己对计算机热忱的事情上靠拢了,比如喜欢看计算机相关书籍,喜欢看源码等。凑凑字数

写给即将大三或者研二的同学的,真挚的建议

现在大家都知道,计算机编程这个行业内卷及其严重,导致现在招聘要求越来越高。如果想找一份好工作,想找一份可以进大厂的工作,那就需要在秋招春招的时候有一份非常出色的简历。

一份简历的构成,主要如下几个元素:

个人信息、校园经历、实习经历、项目经历、技术栈

个人信息(学历)这是已经确定无法改变的。校园经历,主要就是有没有含金量的比赛。如果你搞算法就是有没有顶会之类的。针对含金量的比赛,一般就是ACM,或者一些机器人大赛,这一般都是大一大二就开始准备备赛了,目前还没有准备,估计也准备不及了,也没有准备的必要了,所以这部分也基本很难改变了。

目前我们能做的就是改变实习经历、项目经历、技术栈。
项目经历、技术栈这部分,现在网络信息这么发达,大家获取的学习资料其实都差不多,所以这部分大家会发现其实写的也都差不多。

当然,有同学会说了,星球不是有独家资料嘛,这些资料我看外面都没有啊,我学这个不就可以超过别人了嘛。当然学这些,肯定可以超过外面同届或者超过面试官的水平。但是星球的同学都可以获得啊,那你怎么超过星球同学的水平哈。

所以这个时候有一段实习经历,一段大厂实习经历,会让自己简历很加分。尤其哪些学历不是特别好的同学,会很加分,会在一定程度上极大弥补学历的不足。

所以我今天要讲的是要找实习,要找大厂实习。怎么才能比较容易的找到大厂实习呢。其实面试一般不难,只要基础过关,一般都可以通过,实习面试通过就可以发offer。

关键是怎么才能更加容易的拿到面试?

答案是错峰竞争

根据这几年的辅导经验,以及同公司hr聊天,发现大家投实习一般都是在大三下或者研二下,即今年过完年立春之后陆续开始投递,也就是大家俗称的暑期实习。

这个时候大家投递热情很高涨,投递的人多了,那也就意味着难度变大了,毕竟供大于需了嘛。

所以我给大家写这篇文章,就是让大家把思路转化过来,不要一直随大流按部就班的来,如果这样来导致自己不管在什么阶段竞争压力都很大,及其容易出现努力很久,最终也是颗粒无收的状态。

那应该怎么办的,那就是错峰竞争,同时比别人提前多走一小步。

具体建议就是马上大三或者研二的同学,一定要在这个寒假找找实习,这个时候比较容易。为什么会这么说的?

一、就是目前现在在岗实习的学生大多数都是要今年秋招的,等秋招开启的时候,会有很多同学离职全力进行秋招,导致企业空缺出大量的实习hc

二、今年冬天投递实习的同学相对较少,很多人都是受网络的影响,一直认为明年投递才合适,并且也一直认为准备不好不敢投递,身边投递的少,就更加不敢投递了。
这个时候及其容易上岸,这就是错峰竞争。

什么是比别人提前多走一小步呢?可以看下面图片(领先一小步,就会容易很多)

多走一小步,后面每一步都会容易很多

可实习时间短,怎么做来能最大限度的发挥出实习的含金量

最近星球,有同学拿到了大厂的实习,但是可能因为学业的原因,可实习的时间相对较短,就问。在有限的时间内,怎么做,才能最大程度的发挥这段实习的含金量,放在简历上。估计这也是很多实习同学的一个疑惑。下面是他的原文:

在有限的时间内,最大发挥出实习的价值。可以理解为两点:

(1)简历可以写点含金量的东西

(2)针对面试实习的询问都可以应答上来

简历写含金量的东西

短时间内,让简历真实的写一些自己实习开发的功能点,估计不太现实。首先你是学生,还是实习生。一个部门老大怎么会把有含金量的开发任务给一个实习生呢,万一开发一半你跑了咋办,谁接手呢。找实习,就是让来打杂的。

那该怎么办呢,怎么“偷”点含金量的东西写上去呢?

1.可以先看看部门文档里有没有讲某个功能,讲这个功能开发的需求,功能实现的方式,然后找到对应的patch,如果看不懂就让ai给你解释,然后自己整理成文档。

2.如果在部门文档里找不到开发某个功能的文章讲述。那就看部门和你这个方向一样人提交的代码,看提交task任务的代码(不是fix bug的),然后点开他开这个任务的页面的描述,以及他提交的patch,看懂了,或者让ai解释,梳理成文档。(这是功能实现逻辑的梳理)。但是你还要明白,为什么要开发这个(需求),以及为什么这样做(方法的调研),这部分如果自己不懂,就趁吃饭或者散步的时候直接问开发这个任务的人就可以,一般都会给你解答的

及文档的梳理,至少包含三部分,开发的需求,设计思路,功能逻辑

针对实习面试的询问都能答上来

实习面试不仅仅会问你简历上写的这几点。还会宏观上拷问你,问你开发流程,问你整体的架构等等,这部分怎么掌握呢

1.首先快速梳理下部门的开发流程,及工作的方向,以及用的技术。这是聊实习最开始先唠嗑的点,如果这都答不出来就尴尬了

2.对项目架构整体了解了解,比如你这块负责的方向主要有几个进程啊,每个都是干什么的啊,彼此之间有什么联系啊。每个进程是怎么一个架构啊。

上述两点主要是用来让你在面试的时候,问你实习的整体情况,也就是闲聊发散性问的时候能答出来。(这部分快速掌握的方法就是看部门的文档,一般文档里都有写)

找实习,面试官告诉我至少要实习半年,但是我实际只能实习一两个月怎么办?

最近答疑的时候,有同学问我,就是说“面试官面试官告诉我至少要实习半年,但是我实际只能实习一两个月怎么办?

如果到时候实习一两个月就离职,会不会不好,会不会被这家公司拉黑,对我求职有不好的地方”

对于同学问出这种问题,只能说一直生活在这校园相对单纯的环境,没经历社会,还相对比较单纯。

因为这种问题找实习的时候会经常被问到,对于这问题,我们从两方面进行分析一下。

第一方面,就是努力消除大家心中“负罪感”

第二方面,就是对于这问题的回答的一个固定答案。

消除心中的“负罪感”:

(1)大家可以在网上看看,看看每年都有多少厂在裁应届生,努力那么久,刚进来没多久,没技术,工作经历时间短,就让应届生背指标,骗补贴。这种公司良心何在,责任感何在。(应该众所周知的厂子都有这种案例) 所以说,人家干你的时候毫不手软。 那自己也要时时刻刻为自己的前途考虑,思考多站在自己的未来角度思考,怎么有利于自己未来就怎么来

(2)你自己实习一段时间,简历可以写大厂经历加分。那离职了,空出来hc,是不是又要继续找,给哪些没有实习经历的同学一个机会。也是变相的帮助一下,素未谋面的,一起为着相同目标努力奋斗的战友,也算是做了一件好事

回答固定的答案:

(1)至少实习半年以上,自己感觉如果刚进入没多久就离开,其实对自己的技术提升为乎甚微。如果想技术提升,还是要长时间的磨练呢。自己好不容易,进入了咱们公司,咱们部门,能够有这么多优秀的同事,还是想踏下心来,好好提升提升技术,并且也为咱们部门做出自己的贡献呢

(2)每周的实习工作时间,和部门的同事一样。对加班也是接受的,毕竟新人刚入职自己还是很菜的,自己认为适当的加班还是很有必要呢

(主打一个舔,把offer骗到手,从被动变成主动,说他想听的答案)

本文由mdnice多平台发布

谷歌发布了Aletheia,这是一套基于 Gemini 3 Deep Think 的 AI 系统,在FirstProof 挑战中成功解决了 10 道全新数学问题中的 6 道。与此同时,Aletheia 在IMO-ProofBench上取得了约 91.9% 的成绩,这表明在无需人工干预的研究级证明自动发现方面出现了显著进展。

 

与传统基准测试常见的数据污染问题(即模型无意中记住训练数据)不同,FirstProof 挑战包含了十个尚未发表的研究级数学引理。这些问题来源于数学家正在进行的研究工作,从未在网上发布,因此几乎可以确定 AI 不可能提前见过这些题目。此外,参赛者仅有一周时间提交解答。

 

在仅提供原始问题描述、没有任何人工提示或交互循环的情况下,Aletheia 完全自主地生成了候选证明。由人类专家组成的评审团队认为,其中 10 个解答中的 6 个“经过少量修改即可发表”。值得注意的是,第 8 题的解答获得了 7 位专家中 5 位的认可为正确,其余专家则指出缺少一些必要的澄清细节。更关键的是,对于剩余的 4 道问题,Aletheia 明确输出“未找到解”或因超时未给出结果,而不是生成看似合理但存在缺陷的错误答案。DeepMind 研究人员对此表示

这种自我过滤能力是 Aletheia 的关键设计原则之一;我们认为,在将 AI 扩展应用于研究级数学时,可靠性是主要瓶颈。我们推测……许多在一线工作的研究者更愿意用更高的准确性来换取一定程度的问题求解能力。

 

OpenAI 也使用一款尚未发布的内部推理模型参与了该挑战。最初他们报告称解决了 10 道问题中的 6 道(具体为第 2、4、5、6、9 和 10 题),但随后在发现第 2 题的解答存在逻辑缺陷后,将结果下调为 5 道。与 DeepMind 严格的零样本自动化不同,OpenAI 承认在过程中依赖了有限的人类监督,用于从多次尝试中手动评估并筛选最佳结果

 

在底层实现上,Aletheia 基于 Gemini 3 Deep Think 架构,并依赖扩展的“测试时计算”(即推理阶段的计算资源)。系统采用多代理框架,包括用于提出逻辑步骤的 Generator、用于检测步骤缺陷的 Verifier,以及用于迭代修正错误的 Reviser。通过整合如谷歌搜索等外部工具,该代理能够检索现有文献以验证相关概念,从而降低大语言模型常见的无依据引用问题。

 

Aletheia:基于 Gemini Deep Think,展示多步骤解答验证流程。(来源:谷歌 DeepMind 博客

 

正如Luhui Dev 在一篇深度分析中所指出,Aletheia 本质上类似一个严格且可执行的研究循环,可以类比为数学领域的 CI/CD 流水线:提出、验证、失败、修复、合并。在这一过程中,大语言模型充当具有创造力的候选生成器,而第二个代理则类似同行评审者,推动问题修复。

 

不过,研究人员在论文《Towards Autonomous Mathematics Research(迈向自主化数学研究)》中也指出,尽管短短数月内已经取得显著进展,但完全自主化仍未实现:

即便引入了验证机制,Aletheia 在出错率上仍高于人类专家。此外,只要问题存在一定歧义,模型往往倾向于将其理解为更容易回答的形式……这与机器学习中众所周知的‘规格博弈(specification gaming)’和‘奖励劫持(reward hacking)’现象是一致的。

 

该项目背后的数学家团队已经在推进第二版系统。下一批问题将在 2026 年 3 月至 6 月期间设计、测试并评估,并计划构建为一个完全形式化的基准测试体系。

 

Aletheia 由 Gemini Deep Think 的高级版本提供支持。

上个月底写的,类似扫雷的小游戏:
https://blog.mybatis.io/post/hormuz-game

🚢 游戏背景
霍尔木兹海峡是波斯湾通往阿拉伯海的咽喉要道,全球约 20%的石油经此运输。如今,海峡水域布满水雷,你的任务是驾驶货轮找到一条安全航道,成功穿越封锁。

🎮 操作方法
左键点击水域格子:探测该区域,如果安全则显示周围水雷数量,货轮将自动沿新开辟的安全路径前进。
右键点击水域格子:标记/取消标记疑似水雷位置(旗帜标记)。
数字提示周围 8 格中的水雷数量,利用这些信息判断安全路径。
货轮将自动沿从左到右的最短安全路径行进,到达右侧出口即为胜利。
⚙️ 难度说明
低( 35 枚水雷):水雷稀疏,安全区域宽阔,适合熟悉游戏机制。偶尔有导弹威胁。
中( 55 枚水雷):标准难度,需要谨慎探测才能找到安全航道。导弹频率提高。
高( 80 枚水雷):水雷密布,右侧出口受限,导弹追踪更密集,考验快速判断能力。



地址: https://blog.mybatis.io/post/hormuz-game

这是 github👈
chrome 应用商店上找要么是要注册和 AI 结合的过于复杂的,要么是只能记录单页的。
都不太符合我的要求,所以花了几分钟 vibe 了一个,使用几天感觉还不错,对于轻量化记录来说还挺方便的doge

该说不说 4.7 这审美真不错,我就丢了个 PRD 给他,生成的 UI 看着真不赖