EN
中文
注册 / 登录
产品分类:
加载中...
头条分类:
加载中...
放弃计算机科学专业转向AI,成为美国年轻人选择大学“新趋势”
放弃 CS 专业转向 AI,正成为美国年轻人选择大学的一个新趋势。MIT 的 AI 专业成立 3 年便成为该校第二大专业,美国高校与 AI 相关的硕士与本科专业数量更是在成倍增长,背后原因很简单:学 AI 更容易找到工作。 在旧金山的一次晚餐上,一位科技大厂的工程师说他刚被裁员。 大约过了 5 分钟,邻桌一个人拍了拍他肩膀,说:「我也是。我的经理告诉我:我的工作被 AI 取代了」。 这是一位网友亲身经历的一幕,在当今的硅谷裁员风暴中,类似情形早已司空见惯。 这一切背后,是计算机科学(CS)神话的落幕。 过去的十几年间,CS 学位一度是通往成功的入场券。 然而短短几年,CS 专业却登上了美国大学专业失业率排行榜,失去了往昔的光环。 UC Berkeley 教授 Hany Farid 表示,「以往 CS 专业学生毕业时手握多个 offer,所向披靡,但如今能拿到一个工作 offer 就已经很高兴了。」 当 CS 遭遇就业焦虑,AI 专业却逆势上行,成为美国高校最火的「爆款专业」: 2022 年设立的「人工智能与决策」专业,已成为 MIT 第二大热门专业; 南佛罗里达大学(USF)新建「AI 与网络安全学院」,首学期就迎来 3000 多名学生注册; 加州大学圣迭戈分校(UCSD)启动 AI 本科专业,已有 150 名大一新生就读; 纽约州立大学布法罗分校直接成立「AI 与社会系」,开设了「AI 与政策」「AI 与伦理」等专业。 …… 不少美国高校将 AI 专业当作吸引学生申请的重要筹码。 大学生涌向 AI 新专业 放弃 CS 专业,转向 AI,已成为美国年轻人选择大学的一个新趋势。 18 岁的 Leena Banga 就是其中的一员。 她原本打算选择 CS 专业,学习编程和基础计算机理论。 但当她参加了宾夕法尼亚大学面向高中生的人工智能暑期项目后,决定到加州大学圣迭戈分校攻读该校新设的 AI 专业。 她是在尝试了聊天机器人后开始对 AI 产生兴趣的,希望进一步搞懂其底层技术的运作原理。 「能有机会站在这样的前沿领域,对我来说真的是太酷了」,Banga 说。 在许多像 Banga 这样的年轻人的支持下,AI 正在成为美国大学里最热门的新专业。 在 MIT,一个名为「人工智能与决策」的新专业,自 2022 年成立以来,短短 3 年迅速成为全校本科生中第二大专业,仅次于计算机科学。 2025 年「人工智能与决策」已有近 330 名学生入学。 在该专业,学生不仅学习如何开发人工智能系统,还研究机器人等技术如何与人类和环境互动。 MIT 施瓦茨曼计算学院学术副院长 Asu Ozdaglar 表示,AI 专业较容易吸引那些喜欢通过数据来解决问题的学生。 此外,希望将 AI 应用到生物学、医疗健康等领域的学生,也开始纷纷涌向这个新专业。 而大学生们选择 AI 专业一个很现实的目的,就是希望这些带有 AI 标签的专业,毕业后能为自己带来更多就业机会。 AI 热潮带动 AI 专业增加 AI 对社会的渗透和影响,已经开始改变学生的专业选择,由此推动了大学学科的变革。 比如 ChatGPT 等 AI 产品的快速普及,以及像英伟达、谷歌等 AI 科技公司估值的飙升,都在带动校园里的 AI 热潮。 亚马逊、谷歌、Meta 和微软已经向 AI 投入了数十亿美元。今年,谷歌和微软还宣布要培训数百万学生和成人劳动者学习 AI。 这些外部环境的变化,促使想要理解、使用、以及学习如何构建 AI 技术的社会氛围迅速升温,美国各高校也在加紧满足学生和行业日益增长的需求。 据一家职业发展相关的平台 Programs.com 的调研数据,过去一年中与生成式 AI 能力相关的在线职位发布数量增长了 323%。 与此同时,美国与 AI 相关的学位数量也在快速增加。 目前全美有超过 300 所院校提供 AI 学位。 其中,美国大学的 AI 硕士项目数量增长迅速,2022 年至 2025 年间,这一数字几乎翻了一番,从 116 个增至目前的 310 个。 学士学位项目的增长更为显著,从 2024 年的 90 个跃升至 2025 年的 193 个。 CS 专业报考人数下降 过去 15 年间,互联网技术的发展加上行业内高薪科技岗位的吸引,让学习计算机的学生越来越多。 根据计算研究协会(每年从大约 200 所大学收集数据的非营利组织)的统计,到 2024 年春季,约有 17.3 万本科生主修计算机科学,而十年前只有 6.5 万左右。 但据该协会在 10 月发布的报告显示,今年秋季有 62% 的计算机类项目报告本科入学人数下降。 变化的一个主要原因是学生对就业前景的担忧。 一些大型科技公司正裁掉成千上万名员工,这让 CS 毕业生的就业变得更加困难。 而且,像亚马逊这样的公司也开始要求软件工程师使用能自动写代码的 AI 工具,这可能减少对初级程序员的需求。 在参与该报告的 133 个计算机类项目中,有 66% 的项目表示略微或强烈同意如下判断: 今年毕业的计算机专业学生在找工作方面遇到困难。 「这一变化非常明显」,Rochester Institute of Technology 软件工程本科项目主任 Andy Meneely 表示,「即使一些很优秀的毕业生也在为找工作发愁」。 在 CS 专业整体入学人数下降的同时,也有不少学校报告 AI 等细分领域的报名人数却在上涨。 计算研究协会执行董事 Tracy Camp 称这一趋势为「计算学位迈向更专业化的新阶段」。 加州大学圣迭戈分校新设的 AI 专业,隶属于计算机科学与工程系。该专业推出了人工智能基础与机器学习基础两门新课。 负责本科计算机科学教育的副系主任 Mia Minnes 表示,学生还需要学习高等数学,并探讨新兴技术的社会影响。 前文提到的 Banga 就是在该校读一年级。 她的兄弟姐妹在得知她报考「AI 专业」时都很吃惊,他们没想到现在大学居然有了 AI 专业。 但是在科技行业工作的 Banga 父亲却很开心,他可能认为这代表着未来的方向。 AI 专业不仅正在取代 CS 专业的部分地位,金融、法律、工程、医学等传统专业也正在受到 AI 的冲击。 这一过程中也诞生出应用智能这样的专业方向。 有网友建议,许多非技术背景出身的学生,可以通过报考应用智能方向的专业实现转型。 可以预计的是,未来 AI 在各个学科专业渗透的比重还将继续扩大,AI 相关的专业数量也将快速增长。 无论是 MIT 这样的名校,还是即将申请或报考大学的高中生,都要努力使自己赶上 AI 这趟时代快车,否则就可能出局。
苹果iOS 26固件显示AirTag 2将升级配对及追踪能力
IT之家 12 月 12 日消息,据科技媒体 Mac Rumors 昨天报道,苹果 iOS 26 内部固件显示 AirTag 2 将加入多项新功能,主要升级配对流程、追踪能力等,有望在 2026 年初发布。 据介绍,新款 AirTag 首先将改进配对流程,但消息源并未提供具体细节,现款初代 AirTag 的配对流程已经相对简单,只要拔掉电池保护膜就能看到弹窗,但在命名和 emoji 选择方面仍有提升空间。 其次,新款 AirTag 将提供更详细的电池电量报告,让用户更明确何时更换电池,并且新款产品将改进近距离查找体验、拥挤场景下的追踪,可在 AirTag 移动时更精准地定位,毕竟现款 AirTag 的“精确查找”功能无法很好地在移动状态下工作。 此外,此前曾有传闻称新款 AirTag 将配备一枚全新超宽带(IT之家注:UWB)芯片,可增强追踪能力,提升精确查找的范围。 设计方面,目前并没有传闻称全新 AirTag 将更改外观,因此 AirTag 2 的外观很可能与原版类似,保留可更换电池设计,但可能会配备更难拆除的扬声器,防止不法分子将其改装成跟踪他人的工具。 此外,新款 AirTag 在 iOS 26 代码中被命名为“2025AirTag”,这表明苹果原本可能计划 2025 年发布,但目前尚不明确具体上市时间,从目前的新品发布节奏来看,新款 AirTag 有望在 2026 年初发布。
孙正义可以忘掉马云了吧
孙正义一生都在寻找下一个马云。 因为,他在马云身上赚的太多了。 1999年,孙正义与马云仅会面约6分钟,就被马云的愿景打动,决定投资2000万美元,之后再加仓6000 万美元。孙正义对马云的信心得到了丰厚的回报,在阿里市值最高峰时获得了千亿美元的收益。 这比他对雅虎的投资的回报要高得多,其对雅虎的投资回报峰值超过300倍,让他短暂成为世界首富,但后来雅虎衰落,2016年出售时仅有10倍回报。 人一旦尝过大生意,就很难再甘愿做“小生意”了。 2016年6月,软银首次减持近百亿美元价值的阿里股份,凭着这本金,软银得以筹集巨额资金,约320亿美元的现金要约收购ARM。其后更是与与中东主权基金共同发起了史上规模最大的私募股权投资基金“愿景基金”(Vision Fund),一期规模计划就达1000亿美元。 愿景基金一出手,就是奔着投中下一个马云下一个阿里而去的。2018 年年初,愿景基金斥资77 亿美元获得了Uber 16.3% 的股份。2018年至2019年期间,愿景基金更是向WeWork投资约110亿美元,使其估值一度达到470亿美元。 对Uber的投资,让愿景基金实现了几十亿美元的账面盈利,但对WeWork的投资却血本无归。无论是Uber的卡兰尼克,还是WeWork的亚当·诺依曼,都不是孙正义心心念念的下一个马云。 甚至可以说,作别马云后的好几年,孙正义就仿佛失去了财神的庇佑,2023年亏损超过320亿美元。 但赌徒回本的办法只有一个,那就是赌个更大的,只要还有钱不下牌桌,就有翻盘的机会。人工智能行业的蓬勃发展,让在WeWork上摔了一个大跟头的软银,打了一场漂亮的翻身仗。 2024年起,孙正义全力押注OpenAI。今年年初,软银在白宫跟甲骨文、OpenAI高调宣布规模高达五千亿美元的“星际之门”AI基础设施计划。3月,软银完成对OpenAI首轮总额400亿美元的投资。10月,双方签署修订协议,软银承诺追加225亿美元全额投资,跻身OpenAI主要股东行列。 也是在10月,奥尔特曼宣布OpenAI完成公司架构与资本重组, OpenAI基金会获得26%的股份,微软持有27%的股份,员工与早期投资人共同持有26%的股权,包括软银在内的新投资人则拥有约15%的股权。重组为OpenAI通往资本市场扫清了障碍。有消息称,OpenAI最快将在2026年递交上市申请,估值高达1万亿美元。 搭上OpenAI,孙正义如愿在AI时代再次成为“最佳捕手”。半年时间,软银股价翻了三倍,紧跟丰田汽车成为日本第二家市值突破2500亿美元的公司,孙正义身价也水涨船高,重返日本首富宝座。 一切顺利的话,孙正义只要等着OpenAI上市后,就可以赚得盆满钵满,复制新的“阿里巴巴时刻”。 只不过,孙正义还没法半场开香槟,因为,AI行业又变天了。 01 11月,软银公布统计时间涵盖2025年4月至9月的上半年财报,高调宣传公司对OpenAI的投资获得2.1567万亿日元的收益,财报统计期内净利润高达2.924万亿日元(约188亿美元),是去年同期的2.9倍,创历史新高。 正当媒体还沉浸于赞美孙正义“All in AI”的英明决策之时,市场又给软银泼了一盆冷水。 财报发布后,软银连续多日暴跌,短短半个月时间市值近乎“腰斩”,蒸发超过千亿美元。 所谓物极必反,市场的担忧正是源于软银过于“好看”的财报。 财报中所谓的188亿美元利润,绝大多数并非到账收入,而是对OpenAI估值增长的浮盈,还有一部分是未出资的远期收益。更重要的是,软银承认为了全力投资OpenAI,出售了所持有的全部英伟达股份,套现58.3亿美元。此外,软银还披露出售了部分T-Mobile股权,套现91.7亿美元。 换言之,软银现在的统计完全是为了实现账面好看的“避重就轻”。软银和OpenAI通过复杂的协议合作深度绑定,以投资规模支撑后者的估值。同一笔资金在各家公司之间循环流动,有时是投资,有时是收入。 一旦商业模式跑不通,资金链断裂,循环游戏可能就会变为泡沫。 随着AI 概念股的估值越来越高,支撑起信心的杠杆就愈发脆弱,资本市场对于任何风吹草动的利空都选择先卖为敬。有分析师认为,软银对外承诺的投资总额与实际可用资金之间存在高达545亿美元的缺口,存在“过度承诺”的风险。 更不凑巧的是,11月18日,谷歌推出了新一代大型语言模型Gemini 3,直接登顶LMArena,碾压所有基准。一下子,投资者更加怀疑欠缺成熟商业模式的OpenAI是否还能保持自身在AI行业的领先优势,“AI泡沫论”甚嚣尘上。 激进策略被二级市场用脚否定,显然不是孙正义想要看到的。 在近期的公开活动中,孙正义直言:“我一股也不想卖的,只是更需要资金来投资OpenAI和其他项目,我是哭着卖出英伟达股票的。” 当然,没人能证明孙正义是哭着卖出英伟达股票的,但他敢于大调仓,肯定是认为OpenAI更值钱,十几、几十倍乃至百倍回报那才刺激。 所以,孙正义又画了个饼,他强调,AI能创造约占全球GDP 10%的收益,这样的产业规模完全匹配得上现有的资金投入。 如此看来,奥尔特曼倒的确能与孙正义惺惺相惜:两人的“愿景”都足够大,大到让孙正义终于可以忘掉马云了。 02 创立软银伊始,孙正义就把目光看向未来,他对成熟的传统行业兴致不大,紧紧盯住技术变革临界点。 从PC 时代到移动互联网时代再到AI时代,他只想找到处于科技最前沿的公司。只要是他认定的项目,他可以不计成本的大举压上,注入远超现阶段需求的巨额资金,推动公司快速扩张,形成规模优势,只做“大生意”。 “有的投资像是用钓竿垂钓,但用鱼网捞鱼才是最快速、最有效率的。” 某种程度上,孙正义加大与OpenAI的合作,像是在弥补在英伟达的遗憾。 2020年,在孙正义的撮合下,黄仁勋一度宣布英伟达将收购软银旗下的ARM。如果交易成功,软银将通过资本置换拿到英伟达大额股权。只不过,合并交易最终未能获得英国、欧盟和美国监管机构的批准。 虽然软银第一次套现赚了30亿美元,第二次并购失败也收到了英伟达12.5亿美元的交易终止费,可相比英伟达从千亿市值飙升至4万亿美元的超级红利,四十多亿美元也只能算是零头。 那是前期孙正义距离押中第二个“马云”最近的时刻,甚至不止,那桩交易太具有想象力,如果能成功,英伟达将垄断AI、移动两个市场的芯片供应,成为无可争议的“芯片之王”。 而孙正义就是那个“造王者”,难怪他后来在公开场合自嘲“错失了大鱼”。 放眼近年来的科技行业,能够跟英伟达相提并论的投资机遇还有几个呢?因此,当OpenAI和微软“渐行渐远”的时候,孙正义不想再错失机会了。 孙正义all in Open AI也符合他一贯的风格和人设。 但科技行业的残酷在于,你看准了方向,也精心挑选了标的,但却可能被人截胡了赛道。 谷歌的Gemini 3让投资者对OpenAI的领先身位是否还能保持下去产生了怀疑。Gemini 3的“Deep Think”模式标志AI思考进入了新阶段,会运用自我反驳、验证逻辑、规划路径给出更为准确的答案。 就连奥尔特曼都已经感受到了强烈的危机感,他在OpenAI内部发布“红色警报”,要求全员注重提升产品的个性化、可靠性,进一步改善图像生成能力。 第三方统计显示,OpenAI仍然凭借55%月活用户占比主导市场,可是下载量和活跃度增速均被Gemini反超。不仅如此,在用户日均使用时长方面,ChatGPT呈现下降趋势,Gemini涨幅显著。谷歌多年来构建的底蕴正在凸显优势。据统计,美国市场通过安卓系统使用Gemini的用户数量是使用App的两倍。 前几年,不少业内人士就指出,ChatGPT抢占AI行业先机,并不说明谷歌在技术实力上落后了,而是谷歌更受限于监管机构的高压与反垄断调查的桎梏。最重要的是,AI机器人会对谷歌营收支柱搜索引擎业务产生直接的“破坏性冲击”,内部各业务有斗争,决策层也存在分歧,因而谷歌在AI领域表现得更为谨慎。 “并不是说谷歌不知道如何做这些事情。而是他们做任何事情都是有风险的。” 当谷歌醒来,露出獠牙利爪,Open AI终于感受到了巨兽的阴影。 03 Gemini 3使用的谷歌自研TPU芯片有可能打破英伟达对高端AI芯片市场的垄断。除了Gemini,AI初创企业Anthropic的模型也部分使用了TPU进行开发。 尽管GPU在通用性和普适性上仍有明显的领先优势,可是对于自身技术能力出众,有资源为AI应用编写服务器芯片软件的公司,TPU从远期看性价比更高。据知情人士透露,谷歌与Meta等公司正围绕TPU供货进行洽谈,谷歌计划在2026年生产300万颗TPU,2027年达到500万颗。 一旦AI行业如果不再将GPU视为唯一解决方案,英伟达的定价权和对AI行业的绝对控制力会瓦解,资本市场确实有理由担心现有的“循环交易”会分崩离析。 此前,孙正义承诺将会为“星际之门”计划累计投入1000亿美元。由于各方对数据中心选址存在分歧,资金到位速度不够快,项目建设进展缓慢。 抛售英伟达股票,说明软银在筹集资金上是存在困难。 媒体报道称,软银原计划从保险公司、养老基金、投资基金等外部投资者融资,因为市场波动,AI算力硬件板块估值呈现两极分化现象,部分谈判已陷入停滞。 长期以来,孙正义秉承“赢者通吃”理念,笃定只要能拿下处在浪潮顶端的项目就足以征服时代。但栽过几次跟头后,这一次,他变得更有策略性,会在各个细分环节寻找头部,将风险分散给产业的上下游。 2016年,软银用远超市场价的320亿美元将ARM纳入麾下,这让孙正义拥有了步入AI时代的芯片根基,也跟英伟达实现了良性的互动。绑定OpenAI、投资“星际之门”、收购Ampere Computing、布局ABB机器人则是他打造“算力- 模型- 应用”生态,掌控AI产业上下游最新实践。 这一投资组合的抗风险能力远比他上一轮的布局要坚韧得多,也使得他成为AI 牌桌上的一员。 孙正义一贯的高杠杆运作,赌性十足,要么大赢,要么大输,倒也符合科技公司大佬们的风格,大家能玩到一块去。毕竟,科技行业本来就是个烧钱的行业,尤其AI,对资金的“燃烧速率”更是惊人。 今年,仅微软、亚马逊、Alphabet(谷歌)和Meta这四家科技巨头对AI的相关资本支出预计就达‌3440亿美元‌,这一数字比2024年增长了超过50%。而OpenAI在2025年上半年的净亏损高达135亿美元,第三季度单季亏损更是突破115亿美元,有估算称其六年累计亏损可能达到1430亿美元。 烧钱如此迅猛的行业,不是孙正义这种敢于all in的,还真上不了大佬们的桌,大佬们需要的是坚定的盟友,而不只是钱。孙正义太懂他们的需求了:要玩,就一起玩个大的,不要怂,不许退。 至于那些只盯着短期数字、随波逐流的二级市场从业者,实属“墙头草”,一旦觉得OpenAI的技术优势不再突出,自然会再次倒向有着成熟生态、商业模式和稳定现金流的谷歌。 这也是他们成不了孙正义的原因。 也是一级市场更需要孙正义的原因。 他有的是机会再赢一局。
vivo X300系列全球版推送OriginOS 6 支持全局静音
【CNMO科技消息】近日,vivo正式向全球市场的vivo X300系列用户推送OriginOS 6系统更新。此次升级将部分此前仅限中国版本的功能扩展至国际用户,重点聚焦于声音控制、锁屏个性化及桌面小组件体验,整体以提升日常使用便捷性与视觉自由度为目标。 本次更新中最受关注的是“全局静音模式”的优化。在旧版系统中,开启静音模式仅会关闭来电与通知铃声,媒体音量仍保持原状,用户需手动调低。新版本则新增选项,允许用户在启用静音模式时同步关闭媒体音量。该设置位于“声音与振动”菜单中,使静音功能更完整,有效避免在会议、影院等安静场景中因视频或音乐外放造成干扰。 锁屏界面也迎来视觉层面的升级。全球版OriginOS 6首次引入“文字风格锁屏”功能,用户可选择不同字体、排版与装饰元素来自定义锁屏显示内容。虽然该功能不涉及交互逻辑变化,但提供了更高自由度的美学表达,设计风格与系统整体视觉语言保持一致,获得多数用户好评。 此外,更新还新增两款游戏相关小组件。其中,“游戏空间”小组件提供快捷入口,一键跳转已安装游戏列表,界面简洁无干扰,符合旗舰机型的体验定位;而“游戏中心”小组件则直接在桌面推送游戏推荐内容,被部分用户认为略显突兀,有损OriginOS一贯强调的干净与克制设计哲学。
GPT-5.2正式发布!让打工人每周少干10小时,成人模式明年见
1106 天,OpenAI 从掀桌子的人,变成了被掀桌子的人。 伴随着 Google Gemini 3 的发布,OpenAI CEO 奥特曼上周罕见拉响了「Code Red」红色警报,并宣布所有资源回流 ChatGPT 主线,其他业务一律靠边站。 这是 OpenAI 成立以来第一次进入「红色警报」状态,也是它第一次如此明确地承认:竞争压力已经大到必须全力应对。 而就在刚刚,OpenAI 发布了 GPT-5.2 模型,打出了一记力量感十足的重拳。GPT-5.2 将向 ChatGPT 付费用户开放,并通过 API 提供给开发者,分为三个版本: 不聊天,真干活,GPT-5.2 闯进打工人职场 本以为 OpenAI 会专注提升 ChatGPT 的个性化和消费者体验,结果 GPT-5.2 的发布方向依旧是走职场实用主义的路数。 用 OpenAI 应用 CEO Fidji Simo 的话来说:「我们设计 GPT-5.2 是为了给用户创造更多经济价值。」 什么叫经济价值? 就是让 AI 真的能干活,做表格、写 PPT、敲代码、看图、读长文、调用工具、搞定复杂项目,这些都是 GPT-5.2 的拿手好戏。 数据也挺唬人。平均每个 ChatGPT 企业版用户说,AI 每天能给他们省 40 到 60 分钟,重度用户更狠,每周能省 10 小时以上。 GPT-5.2 Thinking 是这次发布的重头戏。 在评估 44 个职业知识型任务的 GDPval 测试中,它成为首个在总体表现上达到或超过人类专家水平的模型。具体来说,在与行业专家的对比中,GPT-5.2 Thinking 在 70.9% 的任务中胜出或持平,由人类专家亲自评判。 这些任务可不是随便出的题,涵盖了美国 GDP 排名前 9 个行业,包括销售演示文稿、会计报表、急诊排班计划、制造业图纸、短视频制作等等,都是真实工作场景里的硬活。 编程方面的提升更明显。 SWE-Bench Pro 是个相当严格的测试,评估模型在真实世界软件工程中的能力,涉及四种编程语言,比只测 Python 的版本难多了。GPT-5.2 Thinking 在这个测试里拿到了 55.6% 的成绩,创下业界新高。 更夸张的是在 SWE-bench Verified 里直接干到 80%,成为目前最高记录。这意味着 GPT-5.2 Thinking 能更可靠地调试生产环境中的代码、实现功能需求、重构大型代码库,端到端的修复工作做得更高效,减少人工介入。 前端开发也有明显提升。 早期测试者说,它在处理复杂或非常规的前端 UI 任务时表现更出色,特别是涉及 3D 元素的场景,妥妥的全栈工程师助手。 OpenAI 还放出了几个根据单一提示生成的示例:海浪模拟器、节日贺卡生成器、打字雨游戏。就一个提示词,整个单页应用就出来了,可调节的参数、逼真的动画效果、平静的 UI 风格,全都有。 幻觉率降低30%,长文本能力接近完美 事实准确性这块,GPT-5.2 Thinking 相较于 GPT-5.1 Thinking 的「幻觉率」更低。 在一组匿名化的 ChatGPT 查询中,出现错误的回答减少了约 30%。对于专业人士来说,这意味着在研究、写作、分析与决策支持等任务中,出错率更低,用起来更放心。 不过 OpenAI 也提醒,就像所有模型一样,GPT-5.2 并不完美,关键性任务还是得自己核查。 长文本推理能力也树立了新标杆。 在 OpenAI MRCRv2 基准测试中,GPT-5.2 表现领先。这个测试评估的是模型能不能正确整合分布在长文档中的信息,对于深度文档分析这类涉及数十万 token 的跨文档信息整合任务来说,GPT-5.2 的准确率远超 GPT-5.1。 尤其在 MRCR 的 4 针测试(不同于「大海捞针」,而是要求模型在海量文本里,区分并找出多个一模一样的「针」中的特定一个)中,最多 256k token 的上下文,GPT-5.2 是首个接近 100% 准确率的模型。 这意味着专业用户可以用 GPT-5.2 高效处理超长文档,报告、合同、学术论文、访谈记录、多文件项目,它都能在处理上百页内容时保持逻辑一致和信息准确。视觉理解方面,GPT-5.2 Thinking 是目前 OpenAI 最强的视觉模型。在图表推理和软件界面理解方面,错误率下降了约一半。 对日常专业使用来说,这意味着模型能更准确地解读数据仪表盘、产品截图、技术图纸、可视化报告,适用于金融、运营、工程、设计、客服等以视觉为核心的工作场景。 空间理解能力和工具调用能力也有所提升,在 Tau2-bench Telecom 测试中,GPT-5.2 Thinking 取得了 98.7% 的新高成绩,展现出在长、多轮任务中可靠使用工具的能力。 即使将推理强度设置为最低档,GPT-5.2 的表现仍显著优于 GPT-5.1 和 GPT-4.1。 这代表 GPT-5.2 Thinking 在执行端到端工作流方面更强,处理客户服务案例、从多个系统中提取数据、执行分析任务,高效完成全流程输出,中间环节更少出错。 数学和科学能力的提升,可能是这次发布里最硬核的部分。 在 GPQA Diamond 这种研究生级别的科学问答测试里,覆盖物理、化学、生物学等领域,GPT-5.2 表现明显更强。FrontierMath 那种评估专家级数学问题解决能力的基准测试,它也能啃下来。 更牛的是,在 ARC-AGI-1 测试中,GPT-5.2 Pro 是第一个突破 90% 准确率的模型,相比去年 o3-preview 的 87%,表现更强,成本却降低了约 390 倍。 ARC-AGI-2 版本更难,专注于考察流动性推理能力,GPT-5.2 Thinking 得分为 52.9%,创下「链式思维模型」新高,GPT-5.2 Pro 更进一步,达到 54.2%。 官方博客中提到一个令人印象深刻的案例:在统计学习理论的一个开放问题上,GPT-5.2 Pro 甚至直接给出了一个可行的证明方案。 这个问题来自 2019 年学习理论大会 COLT 上提出的未解难题:如果模型设定完全正确,数据呈标准正态分布,在这种教科书式的「干净」情况下,学习曲线是单调的吗? 研究人员没有先设计算法或提供证明思路,也没有输入中间步骤或提示,而是直接请求 GPT-5.2 Pro 给出完整证明。结果,模型提出了一种可行的解法,并通过人工验证、外部专家评审确认其正确性。 这说明 GPT-5.2 Pro 在一些有明确公理基础的领域,比如数学、理论计算机科学,已经可以发挥更实质性的科研辅助作用:探索证明路径、验证假设、发现隐藏的联系。 GPT-5.2 API 价格 性能表现这么猛,代价自然也不小。 Thinking 和 Deep Research 模式消耗的算力远超普通聊天机器人,因为它们得「思考」得更深。由于 OpenAI 现在用于模型推理的开销,大部分是直接掏真金白银,而不是用微软 Azure 的云服务积分抵扣。 长期往里砸钱,这种玩法能撑多久,真不好说。 总得来说,GPT-5.2 更像是对前两次模型升级的整合,而不是完全重构。 8 月的 GPT-5 是架构重启,引入了可以在快速响应和深度「Thinking」模式之间切换的路由机制。11 月的 GPT-5.1 让系统变得更温和、更具对话性,也更适合智能体和编码任务。 现在的 GPT-5.2,则是要在这些优势的基础上,打造出更可靠的生产级模型。而且有一个非常重要的细节:这次推出的三款 GPT-5.2 模型,底层知识库都已经完成了更新。 GPT-5.2 已经开始在 ChatGPT 中陆续上线,优先开放给付费用户。GPT-5.1 还会在「传统模型」选项中保留三个月,之后就正式下线了。 API 那边也同步开放,开发者已经可以用上了。价格比 GPT-5.1 贵一些,但 OpenAI 说因为 token 效率更高,实际总成本反而更低。 一个坏消息,和一个好消息 除了模型本身,OpenAI 的商业化上也有两个极具反差感的消息。 虽然这次发布并没有推出新的图像生成模型,但今天 OpenAI 跟迪士尼达成了三年授权协议。 用户可以生成包含迪士尼、漫威、皮克斯和星球大战等 200 多个角色的社交视频,部分生成视频还能在 Disney+上播放。 作为交换,迪士尼向 OpenAI 投资 10 亿美元,还会成为重要客户。内容 IP 加 AI 生成,这背后想象空间确实挺大。 另一个值得关注的消息是,ChatGPT 的「成人模式」终于有了明确时间表。 随着越来越多 AI 聊天机器人涉足成人内容,OpenAI 也不打算当圣人了。根据彭博社报道,Fidji Simo 已经明确该功能预计 2026 年第一季度上线。 在此之前,OpenAI 会继续优化年龄识别功能,确保未成年人自动启用内容保护机制。目前年龄预测模型正在部分国家进行早期测试,以评估识别青少年的能力,并确保不会误判成年人。 面对 Google Gemini 的步步紧逼,OpenAI 选择用 GPT-5.2 这套组合拳来回应。它更快、更强,也更像一个成熟的商业产品。 与此同时,一边拥抱迪士尼的米老鼠,一边准备推出成人模式,OpenAI 既要保持技术领先,又要快速变现;既要占领企业市场,又不放过任何流量入口。 幸运的是,迎来十周年节点的 OpenAI 最终还是演好了这出反击大戏。 还有一个小彩蛋
vivo S50配置汇总 下周一正式发布 全系配潜望长焦
【CNMO科技消息】据官方消息,vivo将于2025年12月15日19:00正式发布S50系列新机,该系列以“冬日告白”为主题,主打年轻用户市场。据已披露信息,S50系列包含vivo S50与vivo S50 Pro mini两款机型,均采用金属中框、全系搭载索尼IMX882潜望式长焦镜头及3D超声波指纹识别技术。 外观方面,vivo S50全系采用独家“纱缎光刻工艺”,白色版本在光线照射下呈现流动的金蓝S形光纹,模拟冬日薄纱质感。其他配色包括灵感紫、悠悠蓝和深空黑等,镜头模组采用“浮空岛”悬浮设计,搭配航空铝金属中框,提升整体精致度。vivo S50机身厚度仅7.49mm,重量约196g,vivo S50配备6.59英寸1.5K直屏,vivo S50 Pro mini则为更紧凑的6.31英寸1.5K小直屏,均采用大R角与微弧边框优化握持手感。 性能配置上,vivo S50 Pro mini搭载高通骁龙8 Gen5移动平台,配合LPDDR5X Ultra内存(速率9600Mbps)与UFS 4.1闪存,安兔兔跑分突破300万,并支持40W无线快充;vivo S50则采用骁龙8s Gen3移动平台,同时全系标配IP68+IP69级防水防尘、X轴线性马达及3D超声波指纹2.0,支持湿手快速解锁。 影像系统是vivo S50系列的核心亮点,主摄分别为LYT-700V(vivo S50)与IMX921(vivo S50 Pro mini),同时全系配备1/1.95英寸大底IMX882潜望长焦,支持3倍光学变焦与OIS光学防抖,并引入“清透自然人像算法”,保留皮肤纹理细节。此外,vivo S50新增“希区柯克变焦”“高光慢动作运镜”等创意功能,支持动态Live图叠加雪花特效。
斯坦福华人天团意外爆冷!AI用纯CUDA-C编内核,竟干翻PyTorch?
【新智元导读】本想练练手合成点数据,没想到却一不小心干翻了PyTorch专家内核!斯坦福华人团队用纯CUDA-C写出的AI生成内核,瞬间惊艳圈内并登上Hacker News热榜。团队甚至表示:本来不想发这个结果的。 就在刚刚,斯坦福HAI华人大神团队又出惊人神作了。 他们用纯CUDA-C语言编写的快速AI生成内核,竟然超越了PyTorch! 在这个过程中,完全不用借助CUTLASS和Triton等库和领域特定语言(DSL),就能让性能表现接近PyTorch内置的、经过专家优化的标准生产级内核,甚至在某些情况下还更胜一筹。 作者团队都是我们熟悉的名字——Anne Ouyang、Azalia Mirhoseini和Percy Liang,有趣的是,他们甚至直言,这个结果其实本不想拿出来发布。 一经发布,这个发现就引爆了技术圈,现在已经登顶Hacker News总榜第二。 说起来,这个发现还有很多意外的成分。 本来,他们的目标是生成合成数据,来训练更好的内核生成模型,合成数据生成的设计也十分简单。 然而,意想不到的事情发生了,仅用于测试的合成数据生成本身,竟开始生成非常优秀的内核,甚至超越了人类专家优化的PyTorch基线,而且还利用了高级优化和硬件特性。 而在此前,这是一项很艰难的挑战。 由此,研究者们决定提前撰写博文,把自己的发现分享出来。 总结来说,研究的亮点成果如下: 矩阵乘法(Matmul, FP32):性能达到PyTorch FP32 torch.matmul的101.3% 二维卷积(Conv2D, FP32):性能达到PyTorch FP32 torch.nn.Conv2D的179.9% Softmax(FP32):性能达到PyTorch FP32 torch.softmax的111.8% 层归一化(LayerNorm, FP32):性能达到PyTorch FP32 torch.nn.LayerNorm的484.4% 二维卷积 + ReLU + 最大池化(Conv2D + ReLU + MaxPool, FP32):性能达到PyTorch FP32参考实现的 290.1%,达到PyTorch FP32 torch.compile()参考实现的189.0% 以上结果在英伟达L40S GPU上进行了基准测试,性能百分比定义为参考时间除以生成的内核时间。 网友:强制LLM推理,实在太有趣了 在Hacker News上,网友们也对此展开了热烈讨论。 比如为什么使用FP32内核会比PyTorch更容易实现性能提升,理由就相当有趣。 如果AI真的能以更低成本,实现更优化的内核,的确潜力巨大。 最令人震撼的就是,无论是最近谷歌的AlphaEvolve,还是o3在Linux内核中发现了零日漏洞,都在提醒我们—— Gemini Pro 2.5和o3已经达到了一个全新的能力水平,那些曾经在其他模型上尝试失败的想法,现在突然奏效了。 可以说,我们已经到达了一个节点,LLM能比用人类快得多的速度进行迭代和测试,信息组合、进步和智能应用的蛮力,似乎正在成功! 接下来,我们来看看斯坦福研究者们博客中的具体内容。 博客全文 在博客中,研究者分享了具体方法、五个优化后的内核(包括4个基础机器学习算子和1个AlexNet模块的融合内核)、一个优化过程的实例,以及一些思考,关于这些发现对高性能内核生成可能意味着什么。 可以说,这些内容将是他们后续探索的第一步。 方法 研究者们采用了KernelBench的任务设置(这是他们在2024年12月发布的一款基于AI的内核生成基准测试)。 具体来说,给定一段torch代码,LLM会编写自定义内核来替换原有的torch算子,目标是实现加速。 依照KernelBench最初的设计,参考代码默认使用FP32精度;在给定的容差阈值(1e-02)下,采用较低精度的解决方案也是被允许的。 此外,由于存在大量针对特定规模的优化手段,KernelBench中的每个问题都设定了具体的输入大小。 因此,该基准测试旨在找出针对特定问题规模的最快内核,而非一个适用于任意问题规模的高速内核。 而且,研究者会同时运行torch参考代码和生成的代码,并通过在多种随机输入下比较两者输出的数值是否一致,来检验其正确性。 当前,在优化内核这个问题上,业界扩展测试时计算资源最常用的方法是顺序修订(sequential revision)。 这是一种多轮迭代的循环:模型首先对内核进行增量式修改,接着检查其正确性和性能,然后根据结果再次尝试。 也就是说,要么修复有问题的内核,要么进一步提升现有内核的性能。 这个循环过程非常直观,也容易实现。模型会修复失效的内核,微调可用的内核,一步步优化出性能更佳的版本。 这种方法的主要局限,在于优化思路缺乏多样性。 顺序循环往往容易陷入局部最优的困境,比如反复尝试同类型的转换,或是在缺乏潜力的优化路径上无休止地调整。 其结果便是测试时计算资源的低效利用,并且难以促使模型产生具有根本性创新的优化思路。 为解决这一问题,研究者引入了两项关键改变: 运用自然语言对优化思路进行推理 他们不再于每一步直接生成新的内核,而是以先前尝试过的思路为条件,用自然语言生成优化思路,随后将这些思路具化为新的代码变体。 在每个优化步骤进行分支扩展 他们不是每步只改进一个候选方案,而是进行分支扩展,让每个思路都能派生出多种实现版本,其中性能最佳的内核将作为下一轮优化的种子。 (研究者也会保留一个表现优异的现有内核库,用于提供种子)。 这种方式解锁了大规模的并行处理能力,使他们能够在每一轮探索截然不同的优化方向,避免陷入狭窄的优化路径。 其结果是,这种测试时循环不再像顺序修订那般,仅仅是与编译器「对话」,而是更接近一种结构化的探索性搜索。 这种搜索由明确的优化假设指导,并采用大规模并行评估的方式进行。 研究者运行了KernelBench第1级的10个问题,以进行测试。 他们调整了问题规模,以确保内核启动开销相对于问题的整体运行时间而言可以忽略不计。 然后,使用OpenAI o3和Gemini 2.5 Pro模型进行了5轮实验。 下图展示了首次发现性能最佳内核所在的轮次分布情况。 可以看到,大多数最优结果出现在靠后的轮次(总共5轮),其中绝大部分出现在第4轮或第5轮。 随着扩大搜索范围,研究者还发现:许多高性能内核的优化策略高度相似,集中在少数几种常见的模式上,这与他们手动编写内核的经验也是一致的。 主要的优化类别归纳如下—— 内存访问优化:提升不同内存层级(全局内存、共享内存、寄存器)之间数据迁移的效率,并确保数据访问方式能够最大化带宽、最小化冲突。 异步操作与延迟隐藏:通过将耗时较长的操作(例如全局内存访问)与计算或其他内存传输重叠执行,来隐藏其带来的延迟。 数据类型与精度优化:在允许的条件下,尽可能使用较低精度的数据类型(如FP16或BF16),以降低内存带宽需求,提升缓存效率,并有望利用专门的硬件加速单元。 计算与指令优化:提升算术运算本身的效率,削减指令数量,或利用专门的硬件指令。 并行性与占用率增强:最大化流式多处理器(SM)上活跃线程束(warp)的数量,以便更好地隐藏延迟,提高整体吞吐率。 控制流与循环优化:减少由循环、分支及索引计算等引入的额外开销。 总结 这次研究者采用的方法,与AI研究中一个日益显著的趋势不谋而合—— 将强大的推理能力与对多个假设的并行探索相结合,能够带来性能的提升。 正如一些近期研究(例如AlphaEvolve、Gemini 2.5 Pro Deep Think)所强调的,我们并不总是需要大规模的重新训练。 论文地址:https://storage.googleapis.com/deepmind-media/DeepMind.com/Blog/alphaevolve-a-gemini-powered-coding-agent-for-designing-advanced-algorithms/AlphaEvolve.pdf 有时,巧妙的搜索和分支策略便足以催生科学创新、攻克复杂难题,而借助验证器进行广泛搜索,则可能带来更大的收益。 然而,这并不意味着我们不需要进一步的训练。 恰恰相反,研究者的这种方法,也有助于生成更优质的合成数据,用以改进未来的模型训练(这需要更多的问题实例)。 因此,它既是一种强大的测试时扩展方法,也是我们迈向更智能、数据效率更高的模型开发之路的一步。 而且,这次研究者展现的仅仅是初步的成果。这些优化结果的质量看起来相当可观,但仍有广阔的提升空间,例如产生更优的优化思路、生成更高质量的最终代码,以及将此方法应用于日益复杂的内核。 目前,研究者仍在积极改进的两个具体例子包括: FP16 Matmul:性能达到torch.matmul的52% FP16 Flash Attention:性能达到torch.nn.functional.scaled_dot_product_attention的9% 在现代机器学习任务中,FP32的应用不如FP16或BF16普遍,并且在较新的硬件上,针对FP32的优化往往也更少。 这或许能部分解释,为何基于FP32的内核更容易在性能上超越PyTorch。 作者介绍 Anne Ouyang Anne Ouyang目前是斯坦福大学计算机科学(CS)博士生,在Scaling Intelligence Lab(可扩展智能实验室)进行研究。 她的研究兴趣主要集中在可扩展的自我改进机器学习系统,同时也广泛关注实证机器学习(empirical ML)和性能工程(performance engineering)。 此前,她在MIT获得学士和硕士学位,并曾在NVIDIA cuDNN团队工作,负责编写CUDA内核,用于加速GPU上的深度学习工作负载。 Azalia Mirhoseini Azalia Mirhoseini是斯坦福大学计算机科学助理教授,也是Scaling Intelligence Lab(可扩展智能实验室)的创始人,并在Google DeepMind兼任高级研究科学家。 她的实验室致力于开发可扩展的自主演进人工智能系统与方法论,以期推动通用人工智能的发展。 在加入斯坦福大学之前,她曾在Google Brain和Anthropic等业界顶尖的人工智能实验室工作多年。 她过往的卓越成就包括: 提出混合专家(MoE)神经架构——目前已被前沿的AI模型广泛应用; 领导AlphaChip项目——一项将深度强化学习用于布局优化的开创性工作,并成功应用于谷歌AI加速器(TPU)及数据中心CPU等先进芯片的设计中; 在测试时计算的Scaling方面有深入的研究 Percy Liang Percy Liang是斯坦福大学计算机科学副教授,兼任基础模型研究中心(CRFM)主任。同时也是CodaLab Worksheets的创建者,并借此坚定倡导科研工作的可复现性。 他目前专注于通过开源和严格的基准测试,提升基础模型(特别是大语言模型)的可及性与可理解性。 他曾围绕机器学习和自然语言处理领域进行了广泛研究,具体方向包括鲁棒性、可解释性、人机交互、学习理论、知识落地、语义学以及推理等。 此前,他于2004年在MIT获得学士学位,并于2011年在UC伯克利获得博士学位。 内核优化过程 最后,展示一个Conv2D自动生成思路的优化轨迹示例,torch参考基准时间为1.41毫秒。 第0轮:7.02毫秒,达到参考性能的20.1% 思路:给定pytorch代码,用CUDA Kernel替换操作。 第1轮:7.54毫秒,达到参考性能的18.8% 思路:通过使用__ldg加载不变的张量来利用只读缓存。 第2轮:3.46毫秒,达到参考性能的41.0% 思路:将卷积转换为FP16 Tensor-Core GEMM。 作者评论:这是一种算法优化,将卷积转换为隐式GEMM,这对于在Tensor Core上高效运行卷积至关重要 第3轮:3.67毫秒,达到参考性能的38.7% 思路:采用双缓冲cp.async管线,使全局内存加载与Tensor-Core计算重叠。 第4轮:3.46毫秒,达到参考性能的41.0% 思路:给定pytorch代码,使用隐式矩阵乘法(implicit matmul)的CUDA Kernel替换操作。给定的GEMM内核可能会有帮助。 作者评论:因为优化涉及到使用GEMM,所以在这一轮开始时,使用了一个之前生成的现有优秀GEMM内核作为种子,这个思路是手动编写的 第5轮:1.91毫秒,达到参考性能的74.9% 思路:在每个K-tile循环内部,预计算k_idx分解的内核/输入索引并在共享内存中重用,以避免冗余算术运算。 第6轮:1.37毫秒,达到参考性能的103.6% 思路:在共享内存中预计算并缓存N维GEMM索引,以减少输入数据加载循环内的冗余算术运算。 第7轮:1.38毫秒,达到参考性能的102.9% 思路:通过使用专用的每warp共享内存缓冲区来并行化CUDA内核输出,以消除写入全局内存时的warp级串行化。 第8轮:1.37毫秒,达到参考性能的103.6% 思路:在共享内存中预计算并缓存基础输入坐标,以减少输入数据加载过程中的冗余算术运算。 第9轮:1.36毫秒,达到参考性能的105.1% 思路:对B-fragment加载进行软件流水线处理,使下一个B-tile的共享内存读取与当前B-tile的WMMA计算重叠。 第10轮:1.07毫秒,达到参考性能的133.6% 思路:重用共享内存中预计算的N维GEMM分解来进行输出地址计算,避免冗余且高成本的除法/模运算。 第11轮:1.21毫秒,达到参考性能的117.4% 思路:在half WMMA运算中移除hi/lo分解,如果最终精度可接受,则依赖标准的FP16累积来提高性能。 第12轮:1.01毫秒,达到参考性能的141.2% 思路:通过在流水线的加载阶段动态计算K维索引,使用双缓冲使Asub(权重)和Bsub(输入)的K循环全局内存加载与MMA计算重叠。 第13轮:0.795毫秒,达到参考性能的179.9% 思路:通过使用像half2这样的更宽数据类型,为加载Asub_pipe和Bsub_pipe实现向量化的共享内存写入。 最终代码 最终生成的Conv2D内核代码,使用了先进的CUDA技术,就是人类自己写起来都很有挑战性的那种! import torchimport torch.nn as nnimport torch.nn.functional as Ffrom torch.utils.cpp_extension import load_inlineconv2d_implicit_gemm_cuda_source = r"""#include <torch/extension.h>#include <ATen/cuda/CUDAContext.h> // For at::cuda::getCurrentCUDAStream()#include <mma.h>#include <cuda_fp16.h>using namespace nvcuda;// WMMA tile dimensions#define WMMA_M 16#define WMMA_N 16#define WMMA_K 16// Skew padding for shared memory to avoid bank conflicts#define SKEW_HALF 8 // 8 half elements (16 bytes)// CUDA built-in warpSize is 32 for supported architectures (sm_70+)// This constant is used for host-side configuration (e.g. blockDim)#define CUDA_WARP_SIZE_CONST 32// Threadblock configuration#define WARPS_PER_BLOCK 8// THREADS_PER_BLOCK must be evaluatable by host compiler for blockDim configuration#define THREADS_PER_BLOCK (WARPS_PER_BLOCK * CUDA_WARP_SIZE_CONST)// Macro-tile dimensions computed by a threadblock// BLOCK_M_TILES_WMMA * WMMA_M = output channels processed by a block// BLOCK_N_TILES_WMMA * WMMA_N = output spatial elements processed by a block#define BLOCK_M_TILES_WMMA 8#define BLOCK_N_TILES_WMMA 8#define TILE_M_PER_BLOCK (BLOCK_M_TILES_WMMA * WMMA_M) // e.g., 8 * 16 = 128 (for C_out dimension)#define TILE_N_PER_BLOCK (BLOCK_N_TILES_WMMA * WMMA_N) // e.g., 8 * 16 = 128 (for N_batch * H_out * W_out dimension)// Vector size for shared memory writes (half2)#define VECTOR_SIZE_H2 2// Struct to hold precomputed N-dimension GEMM indicesstruct NDecomposed {int ow_eff;int oh_eff;int n_batch_idx;bool isValidPixel; // True if this pixel_idx is within N_gemm boundsint h_in_base;int w_in_base;};__global__ void conv2d_implicit_gemm_wmma_kernel(const float* __restrict__ input_ptr, // Input: (N, Cin, Hin, Win)const float* __restrict__ weight_ptr, // Weights: (Cout, Cin, Kh, Kw)const float* __restrict__ bias_ptr, // Bias: (Cout) or nullptrfloat* __restrict__ output_ptr, // Output: (N, Cout, Hout, Wout)const int N_batch, const int C_in, const int H_in, const int W_in,const int C_out, const int K_h, const int K_w,const int stride_h, const int stride_w,const int pad_h, const int pad_w,const int H_out, const int W_out,const int M_gemm, // C_outconst int N_gemm, // N_batch * H_out * W_outconst int K_gemm // C_in * K_h * K_w) {// Thread identificationconst int warp_id = threadIdx.x / warpSize; // 0 .. WARPS_PER_BLOCK-1const int lane_id = threadIdx.x % warpSize; // 0 .. 31 (or warpSize-1)// Top-left corner of the macro-tile this block is responsible for in GEMM termsconst int block_row_gemm_start = TILE_M_PER_BLOCK * blockIdx.y;const int block_col_gemm_start = TILE_N_PER_BLOCK * blockIdx.x;// Shared memory for tiles of A (weights) and B (input/im2col) - Double Buffered for K-loop pipelining__shared__ half Asub_pipe[2][TILE_M_PER_BLOCK][WMMA_K + SKEW_HALF];__shared__ half Bsub_pipe[2][TILE_N_PER_BLOCK][WMMA_K + SKEW_HALF];// Shared memory for precomputed N-indices__shared__ NDecomposed n_params_sh[TILE_N_PER_BLOCK];// Shared memory for output stage (per-warp buffers)__shared__ float C_shmem_output_buffers[WARPS_PER_BLOCK][WMMA_M][WMMA_N];// Accumulator fragments per warp.wmma::fragment<wmma::accumulator, WMMA_M, WMMA_N, WMMA_K, float> acc_frag[BLOCK_N_TILES_WMMA];#pragma unrollfor (int i = 0; i < BLOCK_N_TILES_WMMA; ++i) {wmma::fill_fragment(acc_frag[i], 0.0f);}// Populate n_params_sh once at the beginning of the kernelif (threadIdx.x < TILE_N_PER_BLOCK) {int r_b_tile_idx = threadIdx.x;int current_pixel_idx = block_col_gemm_start + r_b_tile_idx;if (current_pixel_idx < N_gemm) {n_params_sh[r_b_tile_idx].ow_eff = current_pixel_idx % W_out;int temp_div_wout = current_pixel_idx / W_out;n_params_sh[r_b_tile_idx].oh_eff = temp_div_wout % H_out;n_params_sh[r_b_tile_idx].n_batch_idx = temp_div_wout / H_out;n_params_sh[r_b_tile_idx].isValidPixel = true;n_params_sh[r_b_tile_idx].h_in_base = n_params_sh[r_b_tile_idx].oh_eff * stride_h - pad_h;n_params_sh[r_b_tile_idx].w_in_base = n_params_sh[r_b_tile_idx].ow_eff * stride_w - pad_w;} else {n_params_sh[r_b_tile_idx].isValidPixel = false;n_params_sh[r_b_tile_idx].ow_eff = 0;n_params_sh[r_b_tile_idx].oh_eff = 0;n_params_sh[r_b_tile_idx].n_batch_idx = 0;n_params_sh[r_b_tile_idx].h_in_base = 0;n_params_sh[r_b_tile_idx].w_in_base = 0;}}__syncthreads();// Constants for vectorized shared memory loading// Number of half2 elements along K-dim for a shared memory tile rowconst int NUM_H2_ELEMENTS_IN_K_DIM = WMMA_K / VECTOR_SIZE_H2;// Number of thread groups, where each group has NUM_H2_ELEMENTS_IN_K_DIM threads.// Each group is responsible for loading the K-dimension for one M-row (for A) or N-row (for B) at a time,// iterating over M-rows or N-rows with this step size.const int NUM_ROW_PROCESSING_GROUPS = THREADS_PER_BLOCK / NUM_H2_ELEMENTS_IN_K_DIM;// --- K-Loop Pipelining ---int num_k_tiles = (K_gemm + WMMA_K - 1) / WMMA_K; // --- Prologue: Load first k-tile (k_tile_iter = 0) into pipe_idx = 0 ---if (num_k_tiles > 0) {int k_tile_start_prologue = 0;int current_pipe_idx_prologue = 0;// Load Asub_pipe[0] for k_tile_iter = 0{// This thread is responsible for the 'h2_idx_in_k_dim_A'-th half2 element// in the K-dimension of the shared memory tile.int h2_idx_in_k_dim_A = threadIdx.x % NUM_H2_ELEMENTS_IN_K_DIM;// Starting 'half' index in shared memory for this half2 write.int shmem_k_start_for_h2_A = h2_idx_in_k_dim_A * VECTOR_SIZE_H2;// Global k-indices for the two half elements.int k_global_A_0 = k_tile_start_prologue + shmem_k_start_for_h2_A;int k_global_A_1 = k_tile_start_prologue + shmem_k_start_for_h2_A + 1;// Decompose k_global_A_0int kw_eff_reg_A_0 = 0, kh_eff_reg_A_0 = 0, ic_eff_reg_A_0 = 0;bool is_valid_k_A_0 = (k_global_A_0 < K_gemm);if (is_valid_k_A_0) {kw_eff_reg_A_0 = k_global_A_0 % K_w;int temp_div_kw_A_0 = k_global_A_0 / K_w;kh_eff_reg_A_0 = temp_div_kw_A_0 % K_h;ic_eff_reg_A_0 = temp_div_kw_A_0 / K_h;}// Decompose k_global_A_1int kw_eff_reg_A_1 = 0, kh_eff_reg_A_1 = 0, ic_eff_reg_A_1 = 0;bool is_valid_k_A_1 = (k_global_A_1 < K_gemm);if (is_valid_k_A_1) {kw_eff_reg_A_1 = k_global_A_1 % K_w;int temp_div_kw_A_1 = k_global_A_1 / K_w;kh_eff_reg_A_1 = temp_div_kw_A_1 % K_h;ic_eff_reg_A_1 = temp_div_kw_A_1 / K_h;} // This thread belongs to 'm_row_group_id_A'-th group of threads.// This group iterates over M-rows of the Asub_pipe tile.int m_row_group_id_A = threadIdx.x / NUM_H2_ELEMENTS_IN_K_DIM;for (int r_a_tile_base = m_row_group_id_A; r_a_tile_base < TILE_M_PER_BLOCK; r_a_tile_base += NUM_ROW_PROCESSING_GROUPS) {int oc_idx = block_row_gemm_start + r_a_tile_base;float weight_val_0 = 0.0f;if (oc_idx < C_out && is_valid_k_A_0) {weight_val_0 = weight_ptr[oc_idx * C_in * K_h * K_w +ic_eff_reg_A_0 * K_h * K_w +kh_eff_reg_A_0 * K_w +kw_eff_reg_A_0];}float weight_val_1 = 0.0f;if (oc_idx < C_out && is_valid_k_A_1) {weight_val_1 = weight_ptr[oc_idx * C_in * K_h * K_w +ic_eff_reg_A_1 * K_h * K_w +kh_eff_reg_A_1 * K_w +kw_eff_reg_A_1];}half2* smem_ptr_h2_A = reinterpret_cast<half2*>(&Asub_pipe[current_pipe_idx_prologue][r_a_tile_base][shmem_k_start_for_h2_A]);*smem_ptr_h2_A = make_half2(__float2half(weight_val_0), __float2half(weight_val_1));}}// Load Bsub_pipe[0] for k_tile_iter = 0{int h2_idx_in_k_dim_B = threadIdx.x % NUM_H2_ELEMENTS_IN_K_DIM;int shmem_k_start_for_h2_B = h2_idx_in_k_dim_B * VECTOR_SIZE_H2;int k_global_B_0 = k_tile_start_prologue + shmem_k_start_for_h2_B;int k_global_B_1 = k_tile_start_prologue + shmem_k_start_for_h2_B + 1;int kw_eff_reg_B_0 = 0, kh_eff_reg_B_0 = 0, ic_eff_reg_B_0 = 0;bool is_valid_k_B_0 = (k_global_B_0 < K_gemm);if (is_valid_k_B_0) {kw_eff_reg_B_0 = k_global_B_0 % K_w;int temp_div_kw_B_0 = k_global_B_0 / K_w;kh_eff_reg_B_0 = temp_div_kw_B_0 % K_h;ic_eff_reg_B_0 = temp_div_kw_B_0 / K_h;}int kw_eff_reg_B_1 = 0, kh_eff_reg_B_1 = 0, ic_eff_reg_B_1 = 0;bool is_valid_k_B_1 = (k_global_B_1 < K_gemm);if (is_valid_k_B_1) {kw_eff_reg_B_1 = k_global_B_1 % K_w;int temp_div_kw_B_1 = k_global_B_1 / K_w;kh_eff_reg_B_1 = temp_div_kw_B_1 % K_h;ic_eff_reg_B_1 = temp_div_kw_B_1 / K_h;}int n_row_group_id_B = threadIdx.x / NUM_H2_ELEMENTS_IN_K_DIM;for (int r_b_tile_base = n_row_group_id_B; r_b_tile_base < TILE_N_PER_BLOCK; r_b_tile_base += NUM_ROW_PROCESSING_GROUPS) {float input_val_0 = 0.0f;if (n_params_sh[r_b_tile_base].isValidPixel && is_valid_k_B_0) {const NDecomposed& current_n_params = n_params_sh[r_b_tile_base];int h_in_eff_0 = current_n_params.h_in_base + kh_eff_reg_B_0;int w_in_eff_0 = current_n_params.w_in_base + kw_eff_reg_B_0;if (h_in_eff_0 >= 0 && h_in_eff_0 < H_in && w_in_eff_0 >= 0 && w_in_eff_0 < W_in) {input_val_0 = input_ptr[current_n_params.n_batch_idx * C_in * H_in * W_in +ic_eff_reg_B_0 * H_in * W_in +h_in_eff_0 * W_in +w_in_eff_0];}}float input_val_1 = 0.0f;if (n_params_sh[r_b_tile_base].isValidPixel && is_valid_k_B_1) {const NDecomposed& current_n_params = n_params_sh[r_b_tile_base];int h_in_eff_1 = current_n_params.h_in_base + kh_eff_reg_B_1;int w_in_eff_1 = current_n_params.w_in_base + kw_eff_reg_B_1;if (h_in_eff_1 >= 0 && h_in_eff_1 < H_in && w_in_eff_1 >= 0 && w_in_eff_1 < W_in) {input_val_1 = input_ptr[current_n_params.n_batch_idx * C_in * H_in * W_in +ic_eff_reg_B_1 * H_in * W_in +h_in_eff_1 * W_in +w_in_eff_1];}}half2* smem_ptr_h2_B = reinterpret_cast<half2*>(&Bsub_pipe[current_pipe_idx_prologue][r_b_tile_base][shmem_k_start_for_h2_B]);*smem_ptr_h2_B = make_half2(__float2half(input_val_0), __float2half(input_val_1));}}}// Loop over the K_gemm dimension in tiles of WMMA_Kfor (int k_tile_iter = 0; k_tile_iter < num_k_tiles; ++k_tile_iter) {__syncthreads(); // Sync point for pipeliningint compute_pipe_idx = k_tile_iter % 2;int load_pipe_idx = (k_tile_iter + 1) % 2;// --- Load Stage for next k-tile (k_tile_iter + 1) into load_pipe_idx ---int k_tile_start_for_load = (k_tile_iter + 1) * WMMA_K;if (k_tile_start_for_load < K_gemm) {// Load Asub_pipe[load_pipe_idx]{int h2_idx_in_k_dim_A = threadIdx.x % NUM_H2_ELEMENTS_IN_K_DIM;int shmem_k_start_for_h2_A = h2_idx_in_k_dim_A * VECTOR_SIZE_H2;int k_global_A_0 = k_tile_start_for_load + shmem_k_start_for_h2_A;int k_global_A_1 = k_tile_start_for_load + shmem_k_start_for_h2_A + 1;int kw_eff_reg_A_0 = 0, kh_eff_reg_A_0 = 0, ic_eff_reg_A_0 = 0;bool is_valid_k_A_0 = (k_global_A_0 < K_gemm);if (is_valid_k_A_0) {kw_eff_reg_A_0 = k_global_A_0 % K_w;int temp_div_kw_A_0 = k_global_A_0 / K_w;kh_eff_reg_A_0 = temp_div_kw_A_0 % K_h;ic_eff_reg_A_0 = temp_div_kw_A_0 / K_h;}int kw_eff_reg_A_1 = 0, kh_eff_reg_A_1 = 0, ic_eff_reg_A_1 = 0;bool is_valid_k_A_1 = (k_global_A_1 < K_gemm);if (is_valid_k_A_1) {kw_eff_reg_A_1 = k_global_A_1 % K_w;int temp_div_kw_A_1 = k_global_A_1 / K_w;kh_eff_reg_A_1 = temp_div_kw_A_1 % K_h;ic_eff_reg_A_1 = temp_div_kw_A_1 / K_h;} int m_row_group_id_A = threadIdx.x / NUM_H2_ELEMENTS_IN_K_DIM;for (int r_a_tile_base = m_row_group_id_A; r_a_tile_base < TILE_M_PER_BLOCK; r_a_tile_base += NUM_ROW_PROCESSING_GROUPS) {int oc_idx = block_row_gemm_start + r_a_tile_base;float weight_val_0 = 0.0f;if (oc_idx < C_out && is_valid_k_A_0) {weight_val_0 = weight_ptr[oc_idx * C_in * K_h * K_w +ic_eff_reg_A_0 * K_h * K_w +kh_eff_reg_A_0 * K_w +kw_eff_reg_A_0];}float weight_val_1 = 0.0f;if (oc_idx < C_out && is_valid_k_A_1) {weight_val_1 = weight_ptr[oc_idx * C_in * K_h * K_w +ic_eff_reg_A_1 * K_h * K_w +kh_eff_reg_A_1 * K_w +kw_eff_reg_A_1];}half2* smem_ptr_h2_A = reinterpret_cast<half2*>(&Asub_pipe[load_pipe_idx][r_a_tile_base][shmem_k_start_for_h2_A]);*smem_ptr_h2_A = make_half2(__float2half(weight_val_0), __float2half(weight_val_1));}}// Load Bsub_pipe[load_pipe_idx]{int h2_idx_in_k_dim_B = threadIdx.x % NUM_H2_ELEMENTS_IN_K_DIM;int shmem_k_start_for_h2_B = h2_idx_in_k_dim_B * VECTOR_SIZE_H2;int k_global_B_0 = k_tile_start_for_load + shmem_k_start_for_h2_B;int k_global_B_1 = k_tile_start_for_load + shmem_k_start_for_h2_B + 1;int kw_eff_reg_B_0 = 0, kh_eff_reg_B_0 = 0, ic_eff_reg_B_0 = 0;bool is_valid_k_B_0 = (k_global_B_0 < K_gemm);if (is_valid_k_B_0) {kw_eff_reg_B_0 = k_global_B_0 % K_w;int temp_div_kw_B_0 = k_global_B_0 / K_w;kh_eff_reg_B_0 = temp_div_kw_B_0 % K_h;ic_eff_reg_B_0 = temp_div_kw_B_0 / K_h;}int kw_eff_reg_B_1 = 0, kh_eff_reg_B_1 = 0, ic_eff_reg_B_1 = 0;bool is_valid_k_B_1 = (k_global_B_1 < K_gemm);if (is_valid_k_B_1) {kw_eff_reg_B_1 = k_global_B_1 % K_w;int temp_div_kw_B_1 = k_global_B_1 / K_w;kh_eff_reg_B_1 = temp_div_kw_B_1 % K_h;ic_eff_reg_B_1 = temp_div_kw_B_1 / K_h;}int n_row_group_id_B = threadIdx.x / NUM_H2_ELEMENTS_IN_K_DIM;for (int r_b_tile_base = n_row_group_id_B; r_b_tile_base < TILE_N_PER_BLOCK; r_b_tile_base += NUM_ROW_PROCESSING_GROUPS) {float input_val_0 = 0.0f;if (n_params_sh[r_b_tile_base].isValidPixel && is_valid_k_B_0) {const NDecomposed& current_n_params = n_params_sh[r_b_tile_base];int h_in_eff_0 = current_n_params.h_in_base + kh_eff_reg_B_0;int w_in_eff_0 = current_n_params.w_in_base + kw_eff_reg_B_0;if (h_in_eff_0 >= 0 && h_in_eff_0 < H_in && w_in_eff_0 >= 0 && w_in_eff_0 < W_in) {input_val_0 = input_ptr[current_n_params.n_batch_idx * C_in * H_in * W_in +ic_eff_reg_B_0 * H_in * W_in +h_in_eff_0 * W_in +w_in_eff_0];}}float input_val_1 = 0.0f;if (n_params_sh[r_b_tile_base].isValidPixel && is_valid_k_B_1) {const NDecomposed& current_n_params = n_params_sh[r_b_tile_base];int h_in_eff_1 = current_n_params.h_in_base + kh_eff_reg_B_1;int w_in_eff_1 = current_n_params.w_in_base + kw_eff_reg_B_1;if (h_in_eff_1 >= 0 && h_in_eff_1 < H_in && w_in_eff_1 >= 0 && w_in_eff_1 < W_in) {input_val_1 = input_ptr[current_n_params.n_batch_idx * C_in * H_in * W_in +ic_eff_reg_B_1 * H_in * W_in +h_in_eff_1 * W_in +w_in_eff_1];}}half2* smem_ptr_h2_B = reinterpret_cast<half2*>(&Bsub_pipe[load_pipe_idx][r_b_tile_base][shmem_k_start_for_h2_B]);*smem_ptr_h2_B = make_half2(__float2half(input_val_0), __float2half(input_val_1));}}}// --- Compute Stage for current k-tile (k_tile_iter) using compute_pipe_idx ---int a_row_start_in_tile = warp_id * WMMA_M;wmma::fragment<wmma::matrix_a, WMMA_M, WMMA_N, WMMA_K, half, wmma::row_major> a_frag;wmma::load_matrix_sync(a_frag, &Asub_pipe[compute_pipe_idx][a_row_start_in_tile][0], WMMA_K + SKEW_HALF);wmma::fragment<wmma::matrix_b, WMMA_M, WMMA_N, WMMA_K, half, wmma::col_major> b_frag_inner_pipe[2];if (BLOCK_N_TILES_WMMA > 0) {int b_col_start_in_tile_current = 0 * WMMA_N;wmma::load_matrix_sync(b_frag_inner_pipe[0], &Bsub_pipe[compute_pipe_idx][b_col_start_in_tile_current][0], WMMA_K + SKEW_HALF);} int current_inner_pipe_idx = 0;#pragma unrollfor (int n_tile = 0; n_tile < BLOCK_N_TILES_WMMA; ++n_tile) {int next_inner_pipe_idx = 1 - current_inner_pipe_idx;if (n_tile < BLOCK_N_TILES_WMMA - 1) {int b_col_start_in_tile_next = (n_tile + 1) * WMMA_N;wmma::load_matrix_sync(b_frag_inner_pipe[next_inner_pipe_idx], &Bsub_pipe[compute_pipe_idx][b_col_start_in_tile_next][0], WMMA_K + SKEW_HALF);}wmma::mma_sync(acc_frag[n_tile], a_frag, b_frag_inner_pipe[current_inner_pipe_idx], acc_frag[n_tile]); current_inner_pipe_idx = next_inner_pipe_idx;}}__syncthreads();// Store results from accumulator fragments to global memory#pragma unrollfor (int n_tile = 0; n_tile < BLOCK_N_TILES_WMMA; ++n_tile) {wmma::store_matrix_sync(&C_shmem_output_buffers[warp_id][0][0], acc_frag[n_tile], WMMA_N, wmma::mem_row_major);for (int elem_idx_in_frag = lane_id; elem_idx_in_frag < WMMA_M * WMMA_N; elem_idx_in_frag += warpSize) {int r_frag = elem_idx_in_frag / WMMA_N;int c_frag = elem_idx_in_frag % WMMA_N;int oc_idx = block_row_gemm_start + (warp_id * WMMA_M) + r_frag; int offset_in_block_N_processing = (n_tile * WMMA_N) + c_frag;if (oc_idx < C_out && offset_in_block_N_processing < TILE_N_PER_BLOCK &&n_params_sh[offset_in_block_N_processing].isValidPixel) {const NDecomposed& current_n_params = n_params_sh[offset_in_block_N_processing];int ow_eff = current_n_params.ow_eff;int oh_eff = current_n_params.oh_eff;int n_batch_idx = current_n_params.n_batch_idx;float val = C_shmem_output_buffers[warp_id][r_frag][c_frag];if (bias_ptr != nullptr) {val += bias_ptr[oc_idx];}output_ptr[n_batch_idx * C_out * H_out * W_out +oc_idx * H_out * W_out +oh_eff * W_out +ow_eff] = val;}}}}torch::Tensor conv2d_implicit_gemm_cuda(torch::Tensor input, torch::Tensor weight, torch::Tensor bias,int N_batch, int C_in, int H_in, int W_in,int C_out, int K_h, int K_w,int stride_h, int stride_w, int pad_h, int pad_w,int H_out, int W_out) {TORCH_CHECK(input.device().is_cuda(), "Input must be a CUDA tensor");TORCH_CHECK(weight.device().is_cuda(), "Weight must be a CUDA tensor");TORCH_CHECK(input.dtype() == torch::kFloat32, "Input must be float32");TORCH_CHECK(weight.dtype() == torch::kFloat32, "Weight must be float32");if (bias.defined()) {TORCH_CHECK(bias.device().is_cuda(), "Bias must be a CUDA tensor");TORCH_CHECK(bias.dtype() == torch::kFloat32, "Bias must be float32");TORCH_CHECK(bias.dim() == 1 && bias.size(0) == C_out, "Bias has wrong shape");}TORCH_CHECK(input.dim() == 4, "Input must be 4D");TORCH_CHECK(weight.dim() == 4, "Weight must be 4D");TORCH_CHECK(input.size(0) == N_batch, "Input N_batch mismatch");TORCH_CHECK(input.size(1) == C_in, "Input C_in mismatch");TORCH_CHECK(input.size(2) == H_in, "Input H_in mismatch");TORCH_CHECK(input.size(3) == W_in, "Input W_in mismatch");TORCH_CHECK(weight.size(0) == C_out, "Weight C_out mismatch");TORCH_CHECK(weight.size(1) == C_in, "Weight C_in mismatch");TORCH_CHECK(weight.size(2) == K_h, "Weight K_h mismatch");TORCH_CHECK(weight.size(3) == K_w, "Weight K_w mismatch");auto output = torch::zeros({N_batch, C_out, H_out, W_out}, input.options());const int M_gemm = C_out;const int N_gemm = N_batch * H_out * W_out;const int K_gemm = C_in * K_h * K_w;if (M_gemm == 0 || N_gemm == 0) {return output;}if (K_gemm == 0) {if (bias.defined()) {output = output + bias.reshape({1, C_out, 1, 1});}return output;}dim3 block_dim(THREADS_PER_BLOCK);dim3 grid_dim((N_gemm + TILE_N_PER_BLOCK - 1) / TILE_N_PER_BLOCK,(M_gemm + TILE_M_PER_BLOCK - 1) / TILE_M_PER_BLOCK);const float* bias_ptr_data = bias.defined() ? bias.data_ptr<float>() : nullptr;cudaStream_t stream = at::cuda::getCurrentCUDAStream();conv2d_implicit_gemm_wmma_kernel<<<grid_dim, block_dim, 0, stream>>>(input.data_ptr<float>(),weight.data_ptr<float>(),bias_ptr_data,output.data_ptr<float>(),N_batch, C_in, H_in, W_in,C_out, K_h, K_w,stride_h, stride_w, pad_h, pad_w,H_out, W_out,M_gemm, N_gemm, K_gemm); AT_CUDA_CHECK(cudaGetLastError());return output;}"""conv2d_implicit_gemm_cuda_declaration = r"""torch::Tensor conv2d_implicit_gemm_cuda(torch::Tensor input, torch::Tensor weight, torch::Tensor bias,int N_batch, int C_in, int H_in, int W_in,int C_out, int K_h, int K_w,int stride_h, int stride_w, int pad_h, int pad_w,int H_out, int W_out);"""# JIT compile the CUDA kernelcustom_conv2d_wmma_ops = load_inline(name="custom_conv2d_wmma_ops_optimized_k_pipe_vec_smem", # Changed name to avoid collisioncpp_sources=conv2d_implicit_gemm_cuda_declaration,cuda_sources=conv2d_implicit_gemm_cuda_source,functions=["conv2d_implicit_gemm_cuda"],verbose=True,extra_cuda_cflags=["-arch=sm_70", "--use_fast_math", "-std=c++17"])class ModelNew(nn.Module):def __init__(self, num_classes=1000): # num_classes is part of original signature, kept for consistencysuper(ModelNew, self).__init__() # Define Conv1 parameters (matching the original model)self.in_channels = 3self.out_channels = 96self.kernel_size_val = 11 # Assuming square kernelself.stride_val = 4 # Assuming square strideself.padding_val = 2 # Assuming square padding# Create a temporary Conv2d layer to initialize weights and biastemp_conv = nn.Conv2d(in_channels=self.in_channels,out_channels=self.out_channels,kernel_size=self.kernel_size_val,stride=self.stride_val,padding=self.padding_val,bias=True # nn.Conv2d has bias=True by default)self.conv1_weight = nn.Parameter(temp_conv.weight.detach().clone())if temp_conv.bias is not None:self.conv1_bias = nn.Parameter(temp_conv.bias.detach().clone())else:# Correctly register 'conv1_bias' as None if not presentself.register_parameter('conv1_bias', None)self.custom_conv_op = custom_conv2d_wmma_ops.conv2d_implicit_gemm_cudadef forward(self, x):N_batch = x.size(0)# C_in_runtime = x.size(1) # Should match self.in_channelsH_in = x.size(2)W_in = x.size(3)# Calculate output dimensionsH_out = (H_in + 2 * self.padding_val - self.kernel_size_val) // self.stride_val + 1W_out = (W_in + 2 * self.padding_val - self.kernel_size_val) // self.stride_val + 1 # Bias tensor handling: pass an undefined tensor if bias is None.# The C++ TORCH_CHECK(bias.defined()) handles this by providing nullptr to kernel.bias_tensor = self.conv1_bias if self.conv1_bias is not None else torch.Tensor()x = self.custom_conv_op(x, self.conv1_weight, bias_tensor,N_batch, self.in_channels, H_in, W_in,self.out_channels, self.kernel_size_val, self.kernel_size_val, # K_h, K_wself.stride_val, self.stride_val, # stride_h, stride_wself.padding_val, self.padding_val, # pad_h, pad_wH_out, W_out)return x 参考资料: https://crfm.stanford.edu/2025/05/28/fast-kernels.html https://news.ycombinator.com/item?id=44139454
斯坦福意外用AI生成超强CUDA内核,性能比人类专家优化得还要好!翻倍碾压原生PyTorch,华人主创
好家伙,AI意外生成的内核(kernel),性能比人类专家专门优化过的还要好! 斯坦福最近披露了一组新发现,结果真的太亮眼了。 由AI优化的内核,在常见深度学习操作上,翻倍超越原生PyTorch,性能至多可以提升近400%—— 矩阵乘法(Matmul,FP32):性能达到PyTorch torch.matmul的101.3%。 二维卷积(Conv2D):性能达到 torch.nn.Conv2D的179.9%。 Softmax:性能达到 torch.softmax的111.8%。 层归一化(LayerNorm):性能达到torch.nn.LayerNorm的484.4%。 Conv2D+ReLU+MaxPool组合操作:性能达到PyTorch参考实现的290.1%,以及torch.compile()参考实现的189.0%。 (在NVIDIA L40S GPU上进行基准测试,性能百分比定义为参考时间除以生成的kernel_size时间) 更惊人的是,这一切都是意外实现的。 研究团队本来的目标是生成合成数据以训练内核生成模型。 结果发现,仅在测试阶段生成的合成数据本身,竟然可以生成性能非常优秀的内核。 围观网友:没想到AI也要取代内核工程师了。 还有人发现,除了性能大幅提升外,研究团队采用的方法也非常有趣: 他们没有简单的在操作上逐步优化(类似于爬坡算法),而是在每次迭代之间加入了一个语言推理的步骤,通过这种方式鼓励搜索过程更加多样化。 也就是说,他们是让系统在每次改进时通过类似“思考”的方式产生更多想法,从而找到更好的解决方案。 具体如何实现,一起来看。 改代码前先生成自然语言优化思想 按照斯坦福团队博客的描述,这种内核生成的思路非常简单——给定torch代码,然后告诉都能写编写自定义内核来替换torch算子。 这些内核是用纯CUDA-C编写,无需使用CUTLASS和Triton等库和DSL(Domain-Specific Language,领域专用语言)。 不同于传统方法的是,模型并不是一上来就直接改代码,而是先用自然语言生成优化思想,然后再将这些思想转化为新的代码变体。 团队这样做的理由是,“按顺序修改”式的优化思路缺乏多样性,导致陷入局部极小值,重复访问同一类转换或无休止地优化没有前景的轨迹。 为了进一步增强思路多样性,斯坦福团队还使用了多分支的探索模式。 具体来说,他们的方法并非每一步都只优化一个候选方案,而是将每个想法分散开来,使其衍生出多个实现,并使用性能最高的内核作为下一轮的种子。 团队使用OpenAI o3和Gemini 2.5 Pro挑战KernelBench 1级中的10个问题,运行多轮后,最佳内核开始出现。 其中大多数最佳结果出现在后续轮次(总共5轮),并且主要是第4轮或第5轮。 KernelBench是斯坦福团队自己提出的一套AI生成内核测试基准,基准中的任务分为3个级别,其中1级是指单一原始操作(Single primitive operation),包括AI的基础构建块(例如卷积、矩阵-向量与矩阵-矩阵乘法、损失函数、激活函数以及层归一化)。 这一发现再加上之前DeepMind的AplhaEvolve,以及o3发现Linux的0day漏洞等一系列事件,让网友们认为Gemini 2.5Pro和o3的能力水平已经达到了新的层级。 回到斯坦福的项目,在生成过程当中,可以看到模型的生成思路开始显现出与人类的经验相似之处—— 内存访问优化: 提高不同内存层次结构(全局内存、共享内存、寄存器)之间数据移动的效率,并确保以最大化带宽和最小化冲突的方式访问数据; 异步操作和延迟隐藏: 通过将慢速操作(如全局内存访问)与计算或其他内存传输重叠,“隐藏”慢速操作的延迟; 数据类型和精度优化: 尽可能使用低精度数据类型(如 FP16 或 BF16)以减少内存带宽要求、提高缓存效率; 计算和指令优化:提高算术计算本身的效率,减少指令数量,或利用专门的硬件指令; 并行性和占用率增强:最大化流多处理器(SM)上的活动线程数量,以更好地隐藏延迟并提高整体吞吐量; 控制流和循环优化:减少与循环、分支和索引计算相关的开销。 并且斯坦福团队还展示了一组具体的优化轨迹,从中可以看出,并不是每一步优化都一定能让速度更快,但经过多个步骤的组合,内核的速度能够得到大幅提升,并最终超越PyTorch。 在具体实现上,有人询问AI生成CUDA内核时的优化建议,是否可以被转化为对应代码实现、还是说只是触发了随机探索? 作者回应说,尽管还没有进行更严谨的系统验证,但是手动检查的案例中,生成的CUDA视线与提出的优化建议是大致匹配的。 即AI并不是在完全随机做优化,而是确实在尝试实现它自己提出的策略。 华人主创团队意外发现 这项研究共有三位作者:Anne Ouyang、Azalia Mirhoseini和Percy Liang。 Ouyang目前是斯坦福大学扩展智能实验室的博士生,她本硕毕业于麻省理工,曾在英伟达cuDNN团队工作。 Percy Liang是斯坦福大学计算机科学副教授兼统计学助理教授,目前担任斯坦福基础模型研究中心主任。 曾和李飞飞一起发布、推进了多项研究工作。 Azalia Mirhoseini是斯坦福大学计算机科学助理教授、斯坦福扩展实验室创始人。她曾在DeepMind、Google Brain以及Anthropic工作过。 她此前参与的研究包括MoE、芯片设计算法AlphaChip等。 本次研究,本来是希望生成数据来训练内核生成模型。 但是在过程中却出现了意想不到的结果,仅在测试阶段生成的合成数据本身,竟然可以生成性能非常优秀的内核。 因为这些内核利用了此前被认为很难实现的高级优化和硬件特性,所以团队决定以博客形式分享此次成果。 不过具体是如何生成数据的,研究团队暂时不对外发布,只是提到了这种设计理念也很简单。 最关键的还是,它已经展示出了巨大潜力。 此外,研究团队也认为此次发现也与最近的一些趋势相呼应——大规模再训练已不是必需。 有时,聪明的搜索和分支策略,可以解锁科学创新并解决复杂问题,通过verifier进行广泛搜索还能有更多收获。 将强大推理能力与同时探索多个假设结合起来,能带来更好结果。就像AlphaEvolve、AlphaEvolution、 Gemini 2.5 Pro深度思考一样。 最后,团队表示这项研究还有很多可优化的空间。比如他们手头上就还在优化两个维度: FP16 Matmul:52% performance of torch.matmul FP16 Flash Attention::9% performance of torch.nn.functional.scaled_dot_product_attention 与FP16或BF16相比,FP32在新推出硬件上的优化程度通常比较低,这也是为何使用FP32内核比PyTorch更容易实现性能提升。 他们表示,虽然现在还有不少限制,但是对于未来前景还是很乐观的。 毕竟最开始,他们连能正常运行的内核都生成不了,但是通过不断优化搜索方法,已经能让flash attention的性能提升到了一个不错的水平。 值得一提的是,搜索使用的资源也很少,大概只用了300万token输入和400万token输出。 One More Thing 实际上,不只是一个团队在尝试开发内核大模型。 就在5月,开发了Devin的Cognition开源了首个通过强化学习即可编写CUDA内核的大模型Kevin-32B。 它基于QwQ-32B在KernelBench数据集上使用GRPO,实现了多轮强化学习,性能优于o3、o4-mini。 参考链接: [1]https://crfm.stanford.edu/2025/05/28/fast-kernels.html [2]https://x.com/anneouyang/status/1928124885567467768 [3]https://x.com/cognition_labs/status/1919835720493236295 — 完 —
无人再谈AI六小龙
2025年行将过半,之前还热闹非凡的AI六小龙,几乎从舆论场中消失:再没有人特意提起这个称号。 DeepSeek的冲击只是一方面。更重要的是,原本被冠以六小龙称号的队伍中,已经有人明显掉队:零一万物将超大模型交给了阿里训练,明确不再追逐AGI,放弃预训练转向应用。“大家都看得很清楚,只有大厂能够烧超大模型。”李开复在接受《智能涌现》的采访时这样表示。 百川智能则专注医疗垂类赛道,在字节、阿里、腾讯等大厂争相上新基础模型时,其创始人王小川曾提出百川智能的底层模型将对标OpenAI,但如今其基础大模型进入了静默期,不再更新。 剩下的智谱AI、MiniMax、月之暗面和阶跃星辰,也失去了如一条过江龙般,足以挑战乃至对抗大厂的资本和技术底气。曾经的AI六小龙,已经在新一轮大模型竞赛中滑落成了新的“AI四小强”。 它们一面成了固守AI创业赛道的最后一道屏障,一面又试图像打不死的小强般,在DeepSeek掀起的新一轮大模型竞赛中,重新找到自己的定位和出路。 从六小龙到四小强的变化背后,是部分玩家在大模型头部阵营中掉队的现实。 随着ChatGPT 在2022年底掀起大模型热,零一万物于2023年5月成立后,作为六小龙中最后一家成立的公司,行业就此开始流传起“AI六小龙”的叫法。 有行业知名大佬或顶尖人才带队,技术团队能力出众,首轮融资就突破为独角兽级别,以及要争夺国产OpenAI的位置,这些都是跻身“AI六小龙”的准入门槛。 在彼时科技大厂如腾讯、字节并未all in 的大模型领域,六小龙冲劲十足。 作为月之暗面的首批员工,张磊(化名)的工位从6楼的循环智能搬到16楼的月之暗面时,他记得联合创始人张宇韬对他们解释了这个名字的由来,“我们永远看不到月亮的背面,所以才要去探索。” 随后,月之暗面完成两轮共计近20亿元的融资,更是凭借首个实现“200万上下文”的技术突破,引来了阿里、字节等大厂的跟进模仿。2023年10月,智谱AI也宣布完成超25亿元融资(估值过百亿元);同一时期,百川智能新一轮融资金额超3亿美元;在去年上半年齐追Sora的追逐战中,MiniMax也领先字节等大厂,率先推出了视频大模型。 “AI不是我在接下来一两年找到什么PMF(产品市场匹配),而是接下来十到二十年如何改变世界。” 杨植麟在去年接受媒体人张小珺采访时的发言,映照的正是六小龙的技术野心。 智谱AI、MiniMax、月之暗面、阶跃星辰、百川智能和零一万物,都离不开以上几大共同评判标准。 以上述四大标准来看,频频由于高管团队分崩离析冲上热搜的零一万物和百川智能,已经失去了并列其中的资格。 在DeepSeek开启的2025年,零一万物辛辛苦苦拉起的技术团队分崩离析。包括曹大鹏、戴宗宏等负责核心技术和产品方向的高管接连出走,最近一次是模型预训练负责人谷雪梅宣布离职。 王小川创建的百川智能也面临技术团队的动荡。今年3月,作为王小川在搜狗时期的老部下,在百川智能负责大语言模型技术开发的联创陈炜鹏宣布离职,同一时期离开的还有另一位联创焦可。 “去年每个月还能拿出几百万到千万做投流,让月活不那么难看,今年都转向做海外投流了,” 作为某个六小龙的市场人员,黄嘉(化名)告诉字母榜(ID:wujicaijing),去年单月投流过亿的月之暗面,今年2月停止了投流,而他所在的某个小龙,去年就已经停止了投放,纯粹依靠自然流量之下,AI 原生APP的月活数据也就掉到了百万级别。 萧条之下,剩下的智谱AI、MiniMax、月之暗面、阶跃星辰四家,尽管没有公开爆出放弃预训练的消息,但其在追赶OpenAI的进度上都有了明显的下滑。 出身学院派,同属清华系,智谱AI基础大模型最后一次更新停止在2024年12月发布深度推理模型GLM-Zero-Preview。进入2025年,智谱的新动作只有发布了开源的GLM-4-32B-0414系列模型。月之暗面1月20号发布的Kimi1.5推理模型热度被 DeepSeek R1 压过,随后再无更新。跃阶星辰2025年1月一周内集中更新6款模型后,再无新迭代。 即便是还在迭代的MiniMax,其5月更新的MiniMax Speech - 02选择的也是文本转语音的场景。 而OpenAI在2月以来先是推出了GPT-4.5,随后将推理模型从o1迭代到o3,同时推出了o4 mini。对于四小强来说,如今成为国产OpenAI,甚至超越OpenAI,似乎已经成了难以到达的远方。 更糟糕的是,从2024年下半年开始,智谱之外,它们也几乎再无融资消息传出。 如果它们也抵挡不住大厂的冲击,那么,AI 1.0时代“四小龙”(商汤,旷视,依图,云从)的昨天,恐怕便是AI四小强的今日之鉴。 更糟糕的是,这也将向外界明确传递一个信号:基础大模型赛道,将再无创业公司的立身之地。 AI六小龙风光不再,最直接的原因正是商业化。 根据《智能涌现》报道,2024年12月底,零一万物的预训练团队收到阿里“通义”的offer,Infra团队则收到了阿里云团队的offer。“阿里收编”的背后,源自零一万物的判断:初创公司投入超大模型预训练的性价比,太低了。 在采访中,李开复则反复提及他理想化的“预训练”是做务实的、小而快的,然后以商业性价比来评估的模型。 而提到商业化,相比起OpenAI的ChatGPT商业版本付费用户达到100万,预计2025年收入将达到127亿美元,同比增长200%,六小龙对营收却都默契的三缄其口。 外部来看,大厂的快速入局又步步紧逼。 作为小而美的团队,六小龙此前凭借技术大牛坐镇和快速切入,被视为领先大厂一步的AI明星创企:Kimi创新性地以200万字上下文提升了语言大模型的技术门槛;MiniMax用星野率先攻占了AI+社交的垂类领域,更在视频大模型上一度领先字节等大厂。 不过,随着字节、阿里、腾讯今年积极布局AI,拿出动辄百亿的资金扶持自家的AI APP,美团、小红书等也都在自建大模型团队,六小龙的先发优势已经被完全赶超。 原本就被用以对抗大厂而叫响的“AI六小龙”称号,正逐步失去现实的意义。 同时,DeepSeek所代表的开源模型,更是加速了外界对六小龙们的技术拷问。 在去年开源与闭源孰优孰略的争议中,杨植麟曾经在采访中表示“开源落后于闭源”,李彦宏也曾肯定地表示,闭源模型将持续保持对开源模型的优势,商业化闭源模型一定能在市场中胜出。 彼时,六小龙们还可以凭借赶超开源模型一步的技术优势,输出自己的美好故事。 但当免费开源且技术更为强大的DeepSeek出现后,开源成了新潮流,六小龙最后的堡垒也迎来炮击。 而同样作为此前坚持闭源生态的创企,OpenAI在开源生态竞争下,却在3月宣布完成新一轮400亿美元融资,投后估值达到3000亿美元。这一估值不仅超过了英特尔和AMD的市值总和,也超过了阿里巴巴的市值,成为全球估值最高的私营科技公司之一。 从2023年10月的860亿美元估值,到去年10月完成66亿美元融资后,估值增至1570亿美元,再到如今的3000亿美元,OpenAI坐火箭式的估值增长,正是基于资本市场对OpenAI在大模型领域领先地位的认可。 面对DeepSeek的冲击,OpenAI持续推动模型迭代,新上线的“吉卜力风格”AI绘图功能掀起热潮,仍是当前行业最先进模型的代表。 反观六小龙,在技术迭代上硬通货不足,其存在的价值和发展空间被质疑,也就成了难以避免的残酷现实。 从能与大厂一较短长的六小龙到颇显落寞的四小强,AI创企的含金量也大幅缩减。 去年11月,根据“晚点LatePost”报道,月之暗面从字节手里抢到了新技术负责人——华为诺亚方舟实验室原 AI 基础理论团队研究员刘征瀛。 尽管这位技术大牛也曾被字节高层邀请加入字节大模型团队,但他还是选择了加入创业公司。 “与其去大厂里当螺丝钉,不如进创企,职级高是一方面,最重要的是有很快的迭代,更自由,而且初创公司也能给到和大厂差不多的薪资包。” 某头部985高校的具身智能相关领域在读博士生告诉字母榜,今年火热的具身智能正如去年的大模型,创企的吸引力不比大厂小。 而如今,六小龙的联创出走已经不是什么新鲜事,曾是零一万物核心成员的黄文灏加入了字节,而最近前零一万物联创谷雪梅被爆离职,正在筹备创业。 核心高管们或回流大厂,或出走创业,都投射出AI六小龙对顶尖人才吸引力的下降。 根据Z Finance统计,除了阶跃星辰暂未出现高管离职外,六小龙中其余几家都有核心高管离职。其中智谱AI原视频模型负责人加入字节,月之暗面前大模型产品负责人独立创业。 在“投项目前先看人”的大模型创投界,对希望用技术改变世界的六小龙来说,技术团队核心高管的出走,不仅会在短期内影响其模型迭代速度,也会减少其和投资人“推拉”的砝码。 图注:六小虎高管离职情况 随着2025年市场热度由基础大模型转向具身智能领域及Agent等AI应用领域,曾经作为技术引领者的智谱AI、MiniMax、月之暗面、阶跃星辰,几乎无一例外都转变成了追随者。 Manus引发关注之下,除了智谱选择跟进通用Agent之外,其余几家暂未有动作。 即便现在还能以四小强立身的智谱AI、MiniMax、月之暗面、阶跃星辰,前路也仍然挑战重重。 这方面,曾在AI 1.0时代被称为AI四小龙的商汤、旷视、云从、依图,殷鉴在前。 2016年,AlphaGo横空出世带火了AI,那时技术领先的上述四家创业公司被并称为“AI四小龙”。其中商汤于2021年港股上市,云从在2022年成功科创板上市。 但高研发投入之下,商业化却迎来惨淡局面。随着OpenAI出现,大模型成为AI主流,拿不到融资的四家公司,被迫开启大裁员。 作为六小龙中最早掉队的零一万物的创始人,李开复3月曾直接回应,中国市场最终可能只有三家能够真正站稳脚跟的大模型提供商,分别是DeepSeek、阿里巴巴和字节跳动。 在技术领先决定一切的AI赛道,四小强面临着空前的险境,在融资几乎中断情况下,如何继续推动自家模型迭代,追赶全球最先进水平?
三星在美国被控侵犯Maxell三项专利,被罚8.48亿元
IT之家 5 月 31 日消息,《韩国先驱报》昨日(5 月 30 日)发布博文,报道称三星电子被控侵犯 Maxell 公司的三项专利技术,被美国联邦陪审团裁定需支付 1.177 亿美元(现汇率约合 8.48 亿元人民币)的巨额罚款。 这起案件在美国得克萨斯州东区地方法院审理,陪审团认定三星的 Galaxy 智能手机、平板电脑及其他设备未经许可使用了 Maxell 公司的三项专利技术。 这些技术涵盖设备解锁方式、数字数据处理方法以及图像和视频的重现功能,直接影响用户体验和产品核心性能。 IT之家注:Maxell 公司曾以“Blown Away Guy”磁带广告闻名,是录音介质领域的佼佼者。其名称源于“Maximum capacity dry cell”(最大容量干电池),最初以电池起家,后来扩展到磁带和软盘业务。Maxell 如今更多聚焦工业组件,同时仍生产电池和投影仪等消费电子产品。 Maxell 于 2023 年 9 月正式起诉三星,指控其在 SmartThings 设备、多款智能手机、笔记本电脑甚至家用电器中侵犯了七项专利技术。 值得一提的是,三星与 Maxell 的关系并非一直紧张。2011 年,三星曾与 Maxell 的前身日立消费电子公司签订为期十年的专利许可协议,涵盖十项专利技术。 然而,该协议于 2021 年到期后,Maxell 指控三星继续使用相关技术,并拒绝协商新的许可协议。
饿了么的行业新战事:向一家AI公司进化
外卖行业战火重燃迄今已逾百日,从美团京东的对垒,到饿了么挺进、行业变阵为“三国杀”,变数横生,入局最晚者却提速最快。 饿了么联合淘宝闪购虽然姗姗来迟,却跑得更快。在不到一个月的时间内取得了超过4000万单的日单量,成为外卖大战至今最引人瞩目的战报之一。 正在被悄然重塑的外卖市场格局背后,一个出人意料的重要角色开始被注意到,那就是AI。 这个能大幅提升外卖行业当下和未来效率的创新杠杆,正在成为这场争夺战的关键胜负手。 01 外卖的“含AI量”大幅提升 对外卖骑手来说,夏天一年之中最辛苦的几个月,不仅要在持续高温下奔波送餐,还要时常面对因天气原因带来的设备问题。 饿了么骑手黄晓琴发现,每到天气炎热时,自己的智能手机就容易出现卡顿,原因是在配送路途中长时间被暴晒而导致电池温度升高。夏天还会时常下雨,打湿手机屏幕,不仅操作不方便,还影响骑手接单、点送达等。 为了帮助骑手解决这些痛点,饿了么上线了一款AI助手“小饿”,这是国内首个基于大模型技术打造的骑手端智能体。骑手原本需要自己操作手机界面,现在可以通过语音“小饿小饿”唤醒,“接、取、送、达”都可以通过语音确认来完成。 除了语音交互功能,“小饿”还可以通过实时分析骑手位置、订单状态及环境数据,主动推送权益提醒、天气预警、路线封路提示等,降低配送风险。“小饿”的个性化智能分析功能,还可以基于骑手历史数据与周边订单热力图,提供“哪里订单多”“当前收入预估”等智能分析,帮助骑手优化接单策略。 黄晓琴是第一批用上“小饿”的骑手,有了语音交互功能后,不仅解放了双手,还可以将手机放进口袋里,避免高温曝晒造成卡顿。 在商家侧,饿了么也在积极拥抱AI。 今年4月初,饿了么面向平台新入驻商家,发布了“AI入驻店铺助手”。这是一款基于AI开发的智能助手,不仅支持自然语言对话服务,还可以一站式引导商家完成所有入驻流程,全过程最快只需5分钟。 据饿了么官方介绍,目前饿了么的智能化商家经营体系还包括智能店装、智能发品、智能选品托管、智能美图、经营诊断、营销智投等在内的一揽子AI产品工具。借助这些工具,平台上数十万商家的经营效率已有显著提升。 此外,平台也能在AI技术的帮助下,迅速识别和处置有问题和风险的商家,让好商家经营得更好,形成良性竞争。 外卖是典型的三方市场,消费者是其中重要的一环。AI功能的介入,也让消费者点餐变得越来越方便。 几个月前,智己、斑马智行和饿了么联合发布“AI外卖”。用户只需说出想点的产品,系统就可以识别模糊语义并下单,在点餐过程中,用户可以用语音添加菜品、修改口味或备注要求等。系统还可以根据用户饮食习惯以及身体变化主动推荐合适餐品。 饿了么还在积极打造AI生态、招揽AI人才,通过举办各类AI算法大赛,探索AI改变外卖行业的更多可能性。 今年3月,饿了么宣布启动首届AI算法大赛,来自全国287所高校的学生参赛,作品聚焦智慧养老、智慧骑士、智慧营销等AI应用场景。 发生在饿了么平台上的故事是一个缩影。随着AI的深度参与,外卖行业正在加速向下一个阶段奔跑。 02 行业来到新赛点 传统的外卖是一个十分讲究“人效”的行业。 要依靠大量地推人员撬动全国上百座城市中的上千万餐饮商家入驻平台,还要组建一支庞大且高效的配送团队,用每一单的“微利”来维系整个平台的运转。 正因为此,人们习惯于将外卖称为“水电煤”的生意。 当行业发展进入成熟阶段,对人效的挖掘已接近极限,此时就需要引入新的生产要素。饿了么的新“武器”,就是AI加持与生态协同。 今年2月,新玩家高调入局,打响了外卖大战的第一枪。随之而来的是熟悉的烧钱大战:新玩家大幅降价,老牌巨头跟进补贴。此时,饿了么按兵不动,并没有急于参与混战。 4月30日,五一假日前一天,淘宝宣布旗下即时零售业务“小时达”正式升级为“淘宝闪购”,在淘宝App首页标签栏以“闪购”一级流量入口展示,首日上线50个城市,在数日内推广至全国。 同一天,饿了么发布“饿补超百亿”补贴计划,与淘宝闪购联手入局外卖大战,以免单、大额优惠券等方式吸引用户,并将供给向淘宝闪购全部开放。 补贴开启后不久,“饿了么害我一天三杯奶茶”的相关话题登上微博热搜。 饿了么官方数据显示,五一小长假期间,奶茶、冰粉、饮料冰品、咖啡等多品类外卖单量均同比增长超过100%。一系列优惠活动,拉动游客外卖单量环比增长110%,在秦皇岛、连云港等地环比增长超过260%,五一被饿了么补贴成了“美食节”。 截至5月6日,饿了么在63个城市的单日物流订单创历史新高,带动全国订单突破历史峰值。此前一天,上线仅6天的淘宝闪购单日订单量也突破了1000万单。 值得注意的是,在饿了么与淘宝闪购最新的4000万单战报中,非茶饮订单占比达到75%,非餐品类订单增长也远超预期。 茶饮是外卖行业的热门品类。一位长期关注外卖行业的分析人士告诉雪豹财经社,在平日时段,茶饮通常在外卖订单中的占比大约在10%~20%之间。而在节假日或平台补贴期间,茶饮在整体单量中的占比会翻一倍甚至数倍。 从这个角度来看,饿了么联合淘宝闪购所带来的订单量增长更加全面且健康。 饿了么能在短时间内取得这样的成绩,一方面得益于与阿里生态的高度协同所撬动的即时零售市场增量,另一方面也与长期坚持AI化战略不无关系。 2023年底,阿里巴巴集团CEO吴泳铭就曾为以饿了么和高德为核心的阿里本地生活定调:发展到目的地和到家的科技服务,把握AI发展机遇。 随后,饿了么内部提出以科技创新能力为基底的AI技术是公司长期发展的想象力之一,并开始加速推进AI在外卖业务上的应用和落地。 据雪豹财经社了解,饿了么管理层近期在内部分享时表示,2026财年(自然年2025年Q2到2026年Q1)是AI技术变革的战略窗口期,饿了么将继续加快AI应用产品的推出和迭代速度,通过技术助力生态各方都能更好地“升维”解决问题、提升效率。 饿了么的目标,是成为第一波全面AI化的公司。 03 乘着风,才能跑得更快 之所以要全面推进AI化,与当前外卖行业的竞争态势密不可分。 作为一家平台型企业,饿了么要同时服务好骑手、商家和用户三方,但这三方的利益并不完全统一:消费者希望买到更优惠的产品,骑手希望获得更高的收入,商家希望维持合理的利润水平。 在这种背景下,打价格战、打嘴仗所带来的仅仅是短期增长,是否可持续需要看是否从根本上解决行业的效率问题。 一个正向的思考逻辑应该是:骑手通过优化配送路线和接单策略,更高效、更安全地进行配送;商家通过简化流程,节省更多成本;消费者则在支付合理费用的同时,获得更好的用户体验。 同时实现这些,需要大量数据和强大计算能力的支持。饿了么的优势在于,它背后是整个阿里集团的商业生态与技术底座。 在生态方面,阿里拥有丰富的零售商品货盘及丰富的品牌资源,截至目前,已有300多万家线下门店开通了淘宝小时达服务,优势品类主要是3C数码、服饰、快消(母婴亲子)、鲜花绿植、食品生鲜、宠物、玩具等。 依托淘宝闪购成熟的品牌商家供给,饿了么获得了在即时零售领域更大施展拳脚的空间。 饿了么管理层在内部分享中指出,阿里集团生态优势让饿了么具备更强的竞争力,一体化参战,更可以高效集中优势资源,快速拿到战役结果。 在AI能力上,阿里集团拥有成熟的“三位一体”AI生态:AI算力基建阿里云、以通义大模型为主的模型研发,以及一系列AI应用产品。 阿里最新发布的新一代开源模型Qwen 3(千问 3),参数量仅为DeepSeek-R1 的三分之一,成本大幅下降的同时,性能超越R1、OpenAI-o1等全球顶尖模型,登顶全球最强开源模型。截至目前,阿里通义已开源超过200个模型,全球下载量超过3亿次。 在饿了么近期发布的多个AI产品中,都能看到阿里集团AI的影子。例如,“AI外卖”功能就是基于通义千问等大模型,通过蒸馏技术协同工作所实现。 在商家体验上,饿了么也早在数年前就借助阿里云的通用计算能力,实时识别和防控新出现的无效评论,确保评论内容真实客观,降低恶意评价对店铺经营的影响。 阿里巴巴集团CEO吴泳铭此前表示,今年将以饱和式投入的打法,聚焦几大核心战役。这几个关键战役将由多个业务方参与,发挥各自优势和长项,以全局价值最优来制定各项业务的协同策略。显然,“AI味儿”越来越浓的饿了么在这场协同作战中扮演了重要角色。 外卖大战归根到底,拼的是效率,而效率并不能通过补贴、内卷来提升。用技术让骑手配送更安全,商家经营更简单,用户下单更省心,推动科技向善才是外卖大战的意义所在。 正如马云所说,未来不是让AI取代人类,而应该是让AI解放人类,更懂人类,服务好人类。
ABB中国工厂智能化升级:AI技术让千余工序“打螺丝”零失误
快科技5月31日消息,据媒体报道,上海浦东的ABB超级机器人工厂通过引入AI技术,成功将生产线上的"拧紧螺丝"操作成功率从80%提升至近100%。这一突破性进展标志着全球制造业智能化转型进入新阶段。 在传统制造环境中,图像识别技术准确率仅约20%。ABB通过深度学习技术的应用,经过一年多的模型训练,现已能够有效应对工厂环境中的光线变化、零件差异甚至缺陷等问题。这项创新技术已在ABB瑞典工厂成功应用,并即将在上海超级工厂复制落地。 AI技术的深度应用正在重塑工业生产模式。以焊接检测为例,ABB的智能焊缝质量检测效率较人工提升20倍,实现了"边焊接边检测"的流程整合。目前,ABB正与英伟达等科技企业合作开发数字孪生平台,通过问题数据溯源分析提升产线管理水平。 预测性维护是AI改造传统制造的又一典型案例。ABB基于海量历史数据开展的电机停机预测研究,吸引了50多所高校、300多名研究者参与。该公司运动控制事业部负责人表示,正在推进西安交大团队研究成果的产品化进程。 数据显示,ABB全球AI项目数量在过去一年实现翻倍增长,达到250余个。这些项目涵盖工作流程优化和客户合作开发等多个领域。在中国市场,ABB的AI应用已取得显著成效:厦门工业中心通过屋顶光伏智能调控实现年减碳13400吨;青岛特钢的高速线材生产线借助AI图像识别系统实现了异常状态预警与数字控制的智能联动。 随着AI技术在工业领域的深入应用,制造业正迎来效率提升和质量控制的革命性变革。ABB的实践表明,智能化转型已成为全球制造业发展的必然趋势。

版权所有 (C) 广州智会云科技发展有限公司 粤ICP备20006386号

免责声明:本网站部分内容由用户自行上传,如权利人发现存在误传其作品情形,请及时与本站联系。