PyTorch 幕后故事:核心开发者带你深入框架内部
今天我们来聊聊 PyTorch 框架的幕后故事。这篇文章整理自 PyTorch 核心开发者 ezyang 在 2019 年纽约 PyTorch Meetup 上的分享,深入浅出地介绍了 PyTorch 的内部构造。对于想要为 PyTorch 贡献代码但又对其 C++ 代码库感到畏惧的开发者来说,这是一份宝贵的入门指南。文章涵盖了张量结构、运算分发、自动微分机制以及开发工具等方面,帮助读者理解 PyTorch 的设计理念和实现细节。
PyTorch 的核心数据结构:张量 (Tensor)
文章从 PyTorch 的核心数据结构——张量(Tensor)讲起。张量不仅仅是多维数组,还包含了数据类型 (dtype)、设备 (device)、步长 (stride) 等元数据。Stride 是 PyTorch 的特色,它允许张量以“视图”形式共享底层数据,修改视图会影响原始张量。为了实现视图,PyTorch 将张量分为 Tensor 和 Storage 两个概念,Tensor 负责逻辑结构,Storage 负责物理存储。文章提到,未来 PyTorch 可能会移除 Storage 层,使其结构更接近 Numpy。
张量运算的实现机制:双重动态分发
文章深入探讨了张量运算的实现机制,揭示了 CPU 和 CUDA 设备、不同数据类型之间的双重动态分发过程。理解这种分发机制对于理解 PyTorch 如何调用底层 kernel 至关重要。
扩展 PyTorch 张量
文章还讨论了如何扩展 PyTorch 的张量,通过 device、layout 和 dtype 三个维度,可以灵活添加各种张量变体,如 XLA 张量、量化张量等。对于不需要参与自动微分的扩展,可以考虑使用 Tensor wrapper 类,甚至在 PyTorch 外部进行开发。
PyTorch 的自动微分 (Autograd) 机制
文章后半部分转向 PyTorch 的自动微分(autograd)机制。Autograd 是 PyTorch 的核心竞争力,用于自动计算神经网络的反向传播梯度。文章解释了 autograd 的基本原理,以及 Variable(变量)在 autograd 中的角色。虽然 Variable 在前端接口中已被合并,但 C++ 后端仍在进行类似工作。
PyTorch 代码目录结构
文章简要介绍了 PyTorch 的代码目录结构,重点是 torch/
, torch/csrc/
, aten/
和 c10/
这四个核心目录。以 torch.add
为例,详细解析了从 Python 函数调用到最终 C++ kernel 执行的完整流程,揭示了 PyTorch 复杂但精巧的代码分发机制。
高效开发 PyTorch Kernel 的实用工具和技巧
为了帮助开发者高效编写 PyTorch kernel,文章介绍了一系列实用工具,包括 operator schema 定义、错误检查宏 TORCH_CHECK
、数据类型分发宏 AT_DISPATCH_ALL_TYPES
、并行化工具以及数据访问方式,如 TensorAccessor
和 TensorIterator
。文章最后分享了高效开发 PyTorch 的技巧,例如修改 cpp 文件、利用 CI 和 ccache 加速编译、使用高性能服务器进行 CUDA 构建等。
Hacker News 评论区讨论
文章发布后在 Hacker News 评论区引发热烈讨论。有人推荐了作者的 PyTorch 开发者播客,也有人认为 MLX 框架代码更简洁。许多读者肯定了文章的价值,认为即使在今天依然具有参考意义,有助于理解 PyTorch 核心概念。评论区还补充了自动微分介绍、PyTorch 开发论坛和设计文档等学习资源,为读者提供了更丰富的学习路径。
Landrun:轻量级 Linux 沙箱工具,提升进程安全性
今天我们来聊聊 Hacker News 上热门项目 Landrun。Landrun 是一款 Linux 系统上的轻量级沙箱工具,无需 root 权限或 Docker 即可为进程添加安全隔离。它基于 Linux 内核 Landlock 模块,简化了沙箱创建过程,提升了程序运行的安全性。
Landrun:基于 Linux Landlock 的轻量级沙箱工具
Landrun 基于 Linux 内核 Landlock 安全模块开发。Landlock 允许普通用户为进程设置沙箱,但其 API 使用较为复杂。Landrun 的目标是简化 Landlock 的操作,提供类似 firejail
的易用性,同时保持内核级安全。
Landlock 模块与 Landrun 的简化
Landrun 将 Landlock 复杂的 API 封装成简单的命令行工具,用户可以轻松地控制程序的文件系统访问权限(只读、读写)和 TCP 网络连接。
Landrun 的功能与使用示例
Landrun 使用 Go 语言开发,安装简便,可以通过 Go 环境编译安装或直接使用 go install
命令。文章提供了详细的使用示例,展示如何限制 ls
命令的访问目录,以及如何运行只能访问特定端口的网络服务。
Hacker News 评论区讨论
评论区对 Landrun 表现出浓厚的兴趣,许多人认为这款工具很有潜力。讨论集中在 Landrun 与 bubblewrap
、Firejail
等沙箱工具的对比,以及对 Landrun 功能改进的建议,例如支持配置文件、与 systemd 集成、以及作为进程级防火墙的应用前景。 总体而言,评论区对 Landrun 的未来发展持乐观态度,并提出了许多有价值的反馈。
Crabtime:为 Rust 引入编译时编程的宏库
今天要介绍的是 Rust 社区的新工具 Crabtime。Crabtime 是一个 Rust 宏库,旨在将 Zig 语言中强大的 "comptime" 概念引入 Rust。它通过宏扩展 Rust 的编译时能力,为开发者提供更灵活的代码生成和编译时计算。
Crabtime:Rust 宏库引入 Zig comptime 概念
Crabtime 的目标是将 Zig 语言的 "comptime" 功能带入 Rust。"comptime" 允许在编译时执行 Zig 代码,实现编译时计算、代码生成和程序结构调整等高级功能。Crabtime 尝试通过 Rust 宏提供类似的能力,简化 Rust 宏的使用。
Zig comptime 的强大之处
Zig 的 comptime 允许在编译时执行代码,进行复杂的计算和代码生成,甚至可以根据编译时条件改变程序结构。这种能力赋予 Zig 极大的灵活性和表达力。
Crabtime 与 Rust 宏的简化
Rust 现有的过程宏较为复杂,学习曲线陡峭。Crabtime 旨在简化 Rust 宏的使用,让开发者更容易利用编译时计算的能力。
Crabtime 与 Zig comptime 的区别
评论区指出,Crabtime 与 Zig comptime 存在差异。Zig comptime 可以访问类型信息,而 Rust 宏在这方面受限。这使得 Zig comptime 在某些场景下更强大。讨论还深入到语言设计哲学层面,认为 Zig comptime 的强大不仅在于功能本身,更在于与 Zig 语言其他特性的协同作用。
Hacker News 评论区讨论
评论区对 Crabtime 的看法多样。有人赞赏其 logo 设计和简化 Rust 宏的努力,也有人认为 Crabtime 更像是 Rust 宏的增强版,而非 Zig comptime 的真正 аналог。讨论聚焦于 Rust 宏和 Zig comptime 的差异,以及语言复杂性问题。 Crabtime 的出现引发了关于编译时编程和语言设计的深入思考。
Scallop:AI 符号推理的声明式语言,融合逻辑与概率
今天我们来聊聊 Hacker News 上讨论热烈的编程语言 Scallop。Scallop 是一种专为 AI 应用中复杂符号推理设计的声明式语言。它基于 Datalog,并扩展了推理能力,支持离散、概率和可微分的推理模式,并提供 Python 绑定,方便与现有机器学习流程集成。
Scallop:AI 符号推理的声明式语言
Scallop 是一种基于 Datalog 的声明式语言,专为 AI 应用中的符号推理而设计。与传统的 Datalog 相比,Scallop 更加强大,支持多种推理模式,能够满足不同 AI 应用的需求。
Scallop 的核心特性与功能
Scallop 不仅是一个 Datalog 求解器,还支持离散、概率和可微分的推理模式。开发者可以根据具体的 AI 应用场景选择合适的推理模式。更重要的是,Scallop 提供了 Python 绑定,可以无缝集成到 Python 程序中,特别是 PyTorch 机器学习流程。
Scallop 的应用示例
文章展示了 Scallop 在多个 AI 任务中的应用,包括视觉推理 (CLEVR)、长距离连通性推理 (Pathfinder) 和手写公式评估。这些例子展示了 Scallop 如何将逻辑规则与机器学习模型(如 CNN 和 Transformer)结合,实现端到端的训练。
Hacker News 评论区讨论
评论区对 Scallop 这种神经符号编程的概念非常感兴趣。有人认为这是结合符号推理和概率推理的优雅尝试,可能是通往通用人工智能的关键一步。也有人赞赏 Scallop 背后的工程实现,如解释器和 JIT 编译器。讨论也涉及 Scallop 的可扩展性、与 Prolog 等现有语言的比较,以及 “可微分” 推理的必要性。 评论区希望看到更多实际应用案例来验证 Scallop 的价值。
腾讯开源「混元-Large」MoE 大模型:参数规模领先,性能卓越
今天我们关注腾讯新开源的「混元-Large」模型。这款模型号称业界参数规模最大、效果最好的开源 MoE 模型,在多项基准测试中表现出色,尤其在多轮对话、文本生成、数学逻辑和代码创作方面表现突出。腾讯希望通过开源这款大模型,推动 AI 技术的进步。
腾讯开源「混元-Large」MoE 大模型
腾讯开源了混元-Large 模型,这是一个 Mixture-of-Experts (MoE) 架构的大型语言模型。腾讯声称该模型在参数规模和性能上都处于领先地位,并将其开源以促进 AI 技术发展。
混元大模型的技术亮点
混元大模型采用了多项技术提升性能和效率。其中包括随机补偿路由策略,用于更高效地利用模型中的“专家”,提升训练稳定性和速度。为了加速推理,模型还使用了 KV Cache 压缩技术,包括 GQA 和 CLA,据称可以将 KV Cache 压缩到传统方法的 5%,显著提升推理性能。
基准测试的领先地位
文章强调混元-Large 模型在多个评测基准上的领先地位,并与 DeepSeek、Llama3 和 Mixtral 等知名模型进行了对比,以展示其卓越的性能。
Hacker News 评论区对基准测试和 AI 智能的讨论
评论区讨论的焦点集中在对基准测试的质疑上。许多人认为过度依赖跑分可能导致不良激励,甚至出现“训练集污染测试集”的情况。大家普遍认为,除了跑分,更应关注模型能力的深入探讨和训练数据的透明度。 评论也涉及了对 LLM “智能” 的质疑,以及基准测试的局限性。 总体而言,评论区从多个角度探讨了当前 LLM 发展中存在的问题和挑战。
Mozilla.ai 的 OpenStreetMap AI 助手项目:计算机视觉加速地图绘制
今天我们关注 Mozilla.ai 博客的一篇文章,介绍了 “OpenStreetMap AI Helper” 蓝图项目。该项目利用计算机视觉技术,特别是对象检测和图像分割模型,来辅助 OpenStreetMap 的地图绘制,旨在提升效率和数据质量。
Mozilla.ai 的 OpenStreetMap AI 助手项目
Mozilla.ai 推出了 “OpenStreetMap AI Helper” 项目,旨在利用 AI 技术提升 OpenStreetMap 的地图绘制效率。该项目专注于使用计算机视觉模型自动识别卫星图像中的地图要素。
项目目标与技术选型
项目的核心目标是利用计算机视觉技术,特别是对象检测和图像分割模型,自动识别卫星图像中的地图要素,例如游泳池。他们选择了 YOLOv11 和 SAM2 这两个模型,因为它们轻量、快速,且对硬件要求不高。
OpenStreetMap AI Helper 的工作流程
蓝图项目分为三个阶段:数据准备(从 OpenStreetMap 获取数据并结合卫星图像创建数据集)、模型微调(微调对象检测模型)和模型推理(利用模型进行推理,辅助用户贡献数据)。
效率提升与人工验证
该工具并非旨在完全自动化地图绘制,而是希望通过 AI 加速人工验证前的耗时环节,例如搜索和绘制多边形区域。实验结果显示,使用该蓝图后,地图绘制效率提升了约 5 倍。工具设计中包含人工验证环节,用户需要手动确认才能上传数据。
Hacker News 评论区的担忧与讨论
OpenStreetMap 基金会成员在评论区表达了对数据质量的担忧,指出 AI 检测可能存在误报和形状不准确的问题。作者回应强调了人工验证环节,并公开代码接受社区监督。但一些评论者对人工验证的有效性表示怀疑,并指出示例图片中 AI 识别的形状存在偏差。 讨论也提出了改进建议,例如不直接上传 AI 识别的要素,而是生成待办事项列表。 总体而言,评论区体现了 OpenStreetMap 社区对 AI 辅助工具的期待与审慎。
Monster Cable 的法律威胁与 Blue Jeans Cable 的强硬回应:一场有趣的商业纠纷
今天我们来聊聊 Hacker News 上一篇关于 Monster Cable 的有趣文章。文章讲述了 Monster Cable 在 2008 年向 Blue Jeans Cable 发送律师函,指控对方侵犯知识产权,却遭遇 Blue Jeans Cable 总裁 Kurt Denke 的强硬反击的故事。
Monster Cable 的法律威胁与 Blue Jeans Cable 的强硬回应
Monster Cable 以高价音响线缆闻名,在 2008 年向 Blue Jeans Cable 发送律师函,指控其侵犯知识产权。然而,Blue Jeans Cable 的总裁 Kurt Denke 是一位前诉讼律师,他对 Monster Cable 的指控进行了强硬回击。
Kurt Denke 的反击
收到律师函后,Denke 先生直接回信,措辞强硬,要求 Monster Cable 提供具体的侵权证据,否则将视为放弃指控。Denke 还在信中强调了自己作为前诉讼律师的经验和原则,表明绝不向恶霸妥协的态度,并表示不惧怕诉讼。
事件的曝光与 Blue Jeans Cable 的免费广告
文章作者认为,这次事件的公开曝光对 Blue Jeans Cable 来说可能是一次免费的广告,反而提升了公司的知名度。
Hacker News 评论区对 Monster Cable 的评价
评论区对 Monster Cable 的评价褒贬不一。有人肯定 Monster Cable 早期产品的质量和终身保修政策,但更多人认为 Monster Cable 依靠过度营销和品牌溢价,产品性价比不高。 许多人分享了购买其他品牌线缆的经历,认为 Monoprice 等品牌性价比更高。 评论也讨论了其他公司处理类似法律纠纷的案例,以及 Monster Cable 此次事件的策略失误。 总体而言,评论区认为 Monster Cable 这次是自讨没趣,反而可能损害品牌形象。
极地涡旋减速与平流层增温事件:冬季天气或将迎来变局
今天我们关注一篇来自 climate.gov 的文章,讨论了今年冬天异常强劲的极地涡旋,以及它即将减速并可能引发重大扰动的现象。文章指出,极地涡旋的扰动可能会影响地面天气,甚至可能将北极冷空气带到美国东部。
极地涡旋减速与平流层增温事件
文章指出,今年二月份极地涡旋的风速是往年同期的两倍,但最新预测显示,极地涡旋即将减速,并可能发生重大扰动,甚至提前结束本季度的极地涡旋活动。
突发性平流层增温的预测
文章预测本周末可能会发生一次“突发性平流层增温”事件,平流层中部温度可能在五天内飙升 25 摄氏度。这种增温可能导致极地涡旋偏离极地或分裂成多个涡旋。
对地面天气的影响
极地涡旋的扰动可能会影响对流层,扰乱急流,并将北极冷空气带到美国东部。但文章也指出,目前判断此次扰动是否会影响对流层尚为时过早,且即使有影响,三月份的冷空气强度也相对有限。
Hacker News 评论区的讨论与担忧
评论区对文章内容进行了多角度讨论。有人对文章中“三月份天气没那么冷”的说法表示疑惑,并探讨了阳光照射和辐射热传递的影响。 也有人质疑 climate.gov 作为信息来源的可靠性,并对 NOAA 的预算削减和私有化表示担忧,甚至联想到天气预报私有化后的公共服务问题。 评论还跑题讨论了 NIH 研究成果的重要性、科研成果可重复性以及其他不相关的话题。 总体而言,评论区对气候现象、信息来源可靠性以及更广泛的社会问题都表达了关注。
FastOpenAPI:Python Web 框架的 OpenAPI 文档生成利器,告别框架限制
这周 Hacker News 上热门的项目 FastOpenAPI,旨在解决 Python 开发者在不同框架中生成 OpenAPI 文档的痛点。FastOpenAPI 支持多种 Python Web 框架,让开发者在 Flask、Sanic 等框架中也能享受到类似 FastAPI 的便捷 OpenAPI 文档生成体验。
FastOpenAPI:Python Web 框架的 OpenAPI 文档生成利器
FastOpenAPI 库的目标是为多种 Python Web 框架提供快速生成 OpenAPI 文档的能力,填补了 FastAPI 在框架兼容性方面的不足。
FastOpenAPI 的核心功能与特点
FastOpenAPI 基于 Pydantic v2 生成 OpenAPI schema,并利用 Pydantic 模型进行数据验证,保证数据类型安全。其路由设计借鉴了 FastAPI 的风格,使用装饰器轻松定义接口和文档。
支持多种 Python Web 框架
FastOpenAPI 支持包括 Falcon、Flask、Quart、Sanic、Starlette 和 Tornado 在内的多种 Python Web 框架,满足不同项目和团队的技术选型需求。安装简便,可通过 pip install fastopenapi[框架名]
安装特定框架的支持。
Hacker News 评论区的赞赏与讨论
评论区对 FastOpenAPI 给予了积极评价,特别是来自 .NET 背景的开发者表示赞赏。讨论内容包括 API 版本管理、框架选择原因以及 “代码优先” 与 “规范优先” API 设计模式的优劣。 也有人直接询问为何不使用 FastAPI,作者坦诚地解释了框架选择的历史原因和团队习惯。 评论还延伸到 Python 异步编程和 Go 语言在 API 开发中的优势等话题。 总体而言,FastOpenAPI 被认为是一个实用工具,并引发了关于 Python Web 开发和 API 设计的深入思考。
加州检察长发布 23andMe 消费者警报:基因数据隐私再敲警钟
今天我们关注加州检察长针对基因检测公司 23andMe 发布的消费者警报。由于 23andMe 公开承认面临财务困难,加州检察长提醒用户关注个人基因数据安全,并告知加州居民有权要求 23andMe 删除基因数据和销毁遗传样本。
加州检察长发布 23andMe 消费者警报
加州检察长发布消费者警报,提醒 23andMe 用户关注基因数据隐私风险。警报发布背景是 23andMe 公开承认面临财务困难,引发了用户对其数据安全性的担忧。
基因数据隐私担忧
加州检察长强调,根据州法律《基因信息隐私法案》和《加州消费者隐私法案》,加州居民有权要求 23andMe 删除其基因数据,并销毁公司持有的遗传样本。
加州居民的权利与操作指南
检察长办公室提供了详细的操作指南,指导加州居民如何行使数据删除和样本销毁的权利。用户可以通过 23andMe 网站的账户设置进行操作,包括删除数据、下载备份、销毁唾液样本和撤销研究授权。
Hacker News 评论区的 diverse 观点
评论区对 23andMe 的数据隐私问题展开了热烈讨论,观点多样。有人早就对基因检测公司的隐私政策表示担忧,认为将敏感生物信息交给商业公司存在风险。 也有人认为,用户选择 23andMe 主要是为了满足好奇心,对隐私风险持相对接受的态度。 还有用户分享了通过 23andMe 获得健康信息或寻亲成功的经历,认为服务的价值超过了潜在的隐私担忧。 也有评论对基因数据泄露的风险持怀疑态度,认为目前尚未出现大规模受害案例。 总体而言,评论区讨论涵盖了数据隐私的深度思考和个人价值权衡的务实态度。