PyTorch Lightning 供应链攻击复盘:AI 训练依赖为什么不能只靠 pip install

如果你在训练脚本里写过 pip install lightning,这次事件就不只是安全圈的新闻。它提醒的是一个更难听的事实:很多 AI 团队的“训练基础设施”,其实建立在一条几乎没人认真审计的依赖链上。模型代码、数据集、实验追踪、云端凭证都在同一个环境里跑,任何一个热门 Python 包被污染,攻击面都会比普通 Web 服务更肥。 HN 上这条 Semgrep 披露 很快冲到前排,原因也不复杂:被点名的是 Lightning 生态里的 lightning 包。Semgrep 的研究文章称,PyPI 上 lightning 2.6.2 和 2.6.3 在 2026 年 4 月 30 日被发布为恶意版本,导入时会执行隐藏在 _runtime 目录里的混淆 JavaScript payload,尝试窃取凭证、认证 token、环境变量和云端 secret,并带有 Shai-Hulud 风格的仓库投毒行为。原文细节见 Semgrep: Shai-Hulud Themed Malware Found in the PyTorch Lightning AI Training Library。 我不想把这篇写成“某某包又中招了”的快讯。快讯今天看完,明天就忘。更值得拆的是:为什么 AI/ML 工程里的同类事故破坏力特别大?以及,一个现实团队到底应该改哪几件事。 先把边界说清楚。PyTorch Lightning 本身是一个真实、活跃且规模很大的开源项目,GitHub 仓库 Lightning-AI/pytorch-lightning 有 3 万级 stars,近期仍有提交;PyPI 上当前可见的 lightning 项目页 也显示稳定版本和维护者信息。这类事件的重点通常不是“项目没价值”,而是“发布链路或账号链路被污染后,价值越大的包越适合被当成入口”。 说白了,热门依赖就是最好的投递渠道。 AI 训练环境为什么更危险?第一,它天然带 secret。为了拉数据、写 S3、连实验平台、访问模型 API、推送镜像,训练机里经常有 AWS_ACCESS_KEY_ID、Hugging Face token、Weights & Biases key、GitHub token、数据库只读账号,甚至还有企业内部对象存储凭证。普通后端服务至少还会被平台团队逼着走 secret manager;很多研究环境则是 .env、notebook、shell history 混着来。 ...

May 1, 2026 · 2 min · Hypho

TRELLIS.2 移植到 Mac:没有 NVIDIA 也能跑图片转 3D 模型

如果你只有一台 Mac 电脑,想从单张图片生成 3D 模型——直到今天,这基本上是个伪需求。市面上最好的开源图片转 3D 技术,几乎全部围绕 NVIDIA CUDA 构建,买不到合适的硬件就等于玩不了。 这个局面正在被打破。 TRELLIS.2 是微软 2025 年发表在 CVPR 的论文提出的图片转 3D 方法,在 GitHub 上有 1.2 万星,官方仓库清一色 CUDA 代码。近日有个开发者把它完整移植到了 Apple Silicon,M4 Pro 上 3.5 分钟就能生成一个 40 万顶点的网格模型,全程跑在苹果自研芯片上,不需要半块 NVIDIA 显卡。 移植的核心思路:替换掉 CUDA 依赖 TRELLIS.2 依赖好几个 CUDA 专用的库,官方版本开箱即用但根本不支持 Metal。这不是简单的编译选项问题,而是代码里大量硬编码了 .cuda() 调用和 CUDA 核函数。 移植的思路很直接:找到每一个 CUDA 依赖,用 PyTorch 原生功能或纯 Python 实现替换。 主要替换关系如下: 原始(CUDA) 移植版本 用途 flex_gemm backends/conv_none.py 子流形稀疏 3D 卷积,通过 gather-scatter 实现 o_voxel._C hashmap backends/mesh_extract.py 从双体素网格提取网格面 flash_attn PyTorch SDPA 稀疏变换器的注意力机制 cumesh Stub(跳过) 网格孔填充与简化 nvdiffrast Stub(跳过) 可微分光栅化(仅影响纹理导出) 稀疏 3D 卷积的替换是个技术亮点。原始 flex_gemm 做的是子流形稀疏卷积——3D 生成任务中只有物体表面有数据,不需要对整个空间做卷积。移植版本用 Python 构建空间哈希表,对每个活跃体素收集邻域特征,通过矩阵乘法应用权重,再把结果 scatter 回去。neighbor maps 做了缓存避免重复计算。 ...

April 20, 2026 · 2 min · Hypho

GuppyLM: 用一个 Colab 笔记本,在 5 分钟内训练出你自己的 LLM

昨天在 HN 上看到一个很有想法的项目:作者在 5 分钟内,用一个 Colab 笔记本,从零训练出了一个 9M 参数的语言模型 GuppyLM。 不是跑 demo,不是微调,是从数据生成、tokenizer、模型架构、训练循环到推理全部从零开始。 真实案例:一条鱼能告诉你 LLM 内部发生了什么 GuppyLM 是一个假装自己是热带鱼 Guppy 的小模型。它说的话听起来很傻: You> what is the meaning of life? Guppy> food. the answer is always food. 这显然不是 GPT-4。但重点不在这里。重点是:你能完整看到它是怎么被训练出来的。 项目地址:https://github.com/arman-bd/guppylm 在线 Demo(浏览器直接跑,无需服务器):https://arman-bd.github.io/guppylm/ 框架拆解:GuppyLM 的技术架构 GuppyLM 是一个极简 vanilla transformer,没有 GQA、没有 RoPE、没有 SwiGLU——怎么简单怎么来。 核心参数: 参数量 8.7M 层数 6 隐层维度 384 注意力头数 6 FFN 维度 768(ReLU) 词表大小 4,096(BPE) 最大序列长度 128 tokens Norm LayerNorm 位置编码 Learned embeddings 整个架构就是教科书级别的 transformer。没有花活,这是刻意设计的——作者想让读者看清每一行代码在做什么。 ...

April 12, 2026 · 1 min · Hypho