百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 失宠!Hugging Face 用 Rust 新写了一个 ML框架,现已低调开源

off999 2025-04-30 18:52 5 浏览 0 评论

大数据文摘受权转载自AI前线
整理 | 褚杏娟

近期,Hugging Face 低调开源了一个重磅 ML 框架:Candle。Candle 一改机器学习惯用 Python 的做法,而是 Rust 编写,重点关注性能(包括 GPU 支持)和易用性。

根据 Hugging Face 的介绍,Candle 的核心目标是让 Serverless 推理成为可能。像 PyTorch 这样的完整机器学习框架非常大,这使得在集群上创建实例的速度很慢。Candle 允许部署轻量级二进制文件。另外,Candle 可以让用户从生产工作负载中删除 Python。Python 开销会严重影响性能,而 GIL 是众所周知的令人头疼的问题。

Rust 真的可以吗?

Pytorch 框架是用 Python 编写的,API 也是基于 Python 的,这让用户上手开发会非常快。另外,Python 本身就是一种简洁而易于学习的编程语言,很适合初学者和专业开发者使用。

但基于 Python 的 Pytorch 框架问题也很明显。相对于一些静态图框架(如 TensorFlow),Python 在某些情况下可能会导致性能问题。Python 的全局解释器锁(GIL)可能会在多线程的情况下影响性能,尤其是在涉及 CPU 密集型任务时。Python 的解释性质还可能会引入一些运行时开销。另外,将基于 Python 的 PyTorch 模型部署到生产环境中可能需要一些额外的步骤,不如其他编译型语言那么方便。

显然,Hugging Face 一直在寻找解决办法,它给出的答案是用时下最快的语言 Rust 重写一个 ML 框架。“最酷的是,这是来自 Hugging Face 的,不仅仅是某人的爱好项目。”有网友赞叹道。实际上,许多 HF 生态系统已经使用 Rust,例如 safetensors、tokenizer。

不过,Rust 的难度也让一些开发者望而却步,“编写 Rust 是一件艰难的事情,你必须跳来跳去,花更多的时间思考编程语言的抽象,而不是思考要解决的问题。所以,我现在还不着急重写任何 Python 的东西。”

开发者“fooblaster”指出,Pytorch 部署模型有多个生产路径无需 Python 解释器,如 torchscript 和 libtorch,或是更烦人的路径如 onnx export 和 onnx runtime,所以不需要 Rust 来解决这个问题。另外很人知道,现在可以使用 C++ 编写 Torch 训练代码,并与推理和训练共享一种通用语言。

对此,开发者“malcolmgreaves”表示,这些是使模型推理独立于 Python 的伟大技术。然而,总是有大量的预处理、后处理或其他业务逻辑需要围绕模型推理。这种事情需要在通用编程语言中完成,因此 Python 经常被使用(因为支持模型的代码通常是由同一个人编写的,并且这些代码很可能是 Python,因为您的模型训练和 eval 代码很可能也是 Python)。这就是非 Python PL(如 Rust)可以在简化生产部署 / 维护以及具有真正高效的生产推理方面发挥巨大作用的地方。

当然,也有开发者为 Python 打抱不平。

“任何编程语言在生产环境中都可能是一种痛苦。Python 的缺点之一也是它的优点之一。使用 Python 或 JavaScript 等‘混乱’语言很容易陷入糟糕的生产环境,因此避免这些痛点的工具已经非常成熟。有了这些,Python 在生产中就会变得很棒。”开发者“devjab”进一步表示,“是的,这将要求您的组织做出一些严肃的 CI 文化决策并强制执行。但问题是,虽然使用某些编程语言可以不必如此,但当企业达到一定规模时,总是会需要它们。因此,更早建立这个流程就会容易得多,而且如果您认真使用 Python,早就会这样做了。我认为,如果在生产环境中工作很痛苦,那么问题不在于技术,而在于流程。”

实际上,业内一直在努力解决 Python 带来的问题。

5 月份,LLVM 和 Swift 编程语言联合创始人 Chris Lattner 创办的新公司 Modular AI 发布了一个名为 Mojo 的新编程语言。Mojo 将 Python 特性与 C、C++ 和 CUDA 的系统编程功能结合了起来,并通过其所谓“极限加速”与其他 Python 速度增强方案区分了开来。据悉,凭借着硬件加速,Mojo 在运行 Mandelbrot 等数字算法时比原始 Python 快上 3.5 万倍。

另一方面,Python 自身也在做改进。最近,Python 终于宣布要删 GIL,Python 默认版本将逐渐过渡到无 GIL 版本。这一决定能否巩固其在机器学习领域的地位,也需要时间验证。

与 PyTorch 对比

据悉,当前 Candle 已经支持如今的前沿模型,像 Llama2。经过改写的模型,比如 Llama2 能够方便、快速的运行在容器环境,甚至可以运行在浏览器中。Candle 结构包括:

  • Candle-core:核心操作、设备和 Tensor 结构定义。
  • Candle-nn:构建真实模型的工具。
  • Candle-examples:在实际设置中使用库的示例。
  • Candle-kernels:CUDA 自定义内核;
  • Candle-datasets:数据集和数据加载器。
  • Candle-Transformers:与 Transformers 相关的实用程序。
  • Candle-flash-attn:Flash attention v2 层。

Pytorch 和 Candle 对比

该项目正在处于快速迭代过程中,更新非常频繁,很多功能在不断开发中,目前包含如下功能和特点:

  • 语法简单, 风格与 PyTorch 相似。
  • CPU 和 Cuda Backend:m1、f16、bf16。
  • 支持 Serverless(CPU)、小型和快速部署
  • 支持 WASM,可在浏览器中运行模型。
  • 模型训练
  • 使用 NCCL 进行分布式计算。
  • 开箱即用的模型:Llama、Whisper、Falcon、StarCoder...
  • 嵌入用户定义的操作 / 内核,如 flash-attention v2。

对于 Hugging Face 的这一新 ML 框架,大家有什么感想或使用感受?欢迎在评论区分享!

参考链接:
https://github.com/huggingface/candle
https://news.ycombinator.com/item?id=37049198



租!AI云资源
新上线一批A100/A800
运营商机房,服务有保障
扫码了解详情







相关推荐

python gui编程框架推荐以及介绍(python gui开发)

Python的GUI编程框架有很多,这里为您推荐几个常用且功能强大的框架:Tkinter:Tkinter是Python的标准GUI库,它是Python内置的模块,无需额外安装。它使用简单,功能较为基础...

python自动化框架学习-pyautogui(python接口自动化框架)

一、适用平台:PC(windows和mac均可用)二、下载安装:推荐使用命令行下载(因为会自动安装依赖库):pipinstallPyAutoGUI1该框架的依赖库还是蛮多的,第一次用的同学耐心等...

Python 失宠!Hugging Face 用 Rust 新写了一个 ML框架,现已低调开源

大数据文摘受权转载自AI前线整理|褚杏娟近期,HuggingFace低调开源了一个重磅ML框架:Candle。Candle一改机器学习惯用Python的做法,而是Rust编写,重...

Flask轻量级框架 web开发原来可以这么可爱呀~(建议收藏)

Flask轻量级框架web开发原来可以这么可爱呀大家好呀~今天让我们一起来学习一个超级可爱又实用的PythonWeb框架——Flask!作为一个轻量级的Web框架,Flask就像是一个小巧精致的工...

Python3使用diagrams生成架构图(python架构设计)

目录技术背景diagrams的安装基础逻辑关系图组件簇的定义总结概要参考链接技术背景对于一个架构师或者任何一个软件工程师而言,绘制架构图都是一个比较值得学习的技能。这就像我们学习的时候整理的一些Xmi...

几个高性能Python网络框架,高效实现网络应用

Python作为一种广泛使用的编程语言,其简洁易读的语法和强大的生态系统,使得它在Web开发领域占据重要位置。高性能的网络框架是构建高效网络应用的关键因素之一。本文将介绍几个高性能的Python网络框...

Web开发人员的十佳Python框架(python最好的web框架)

Python是一种面向对象、解释型计算机程序设计语言。除了语言本身的设计目的之外,Python的标准库也是值得大家称赞的,同时Python还自带服务器。其它方面,Python拥有足够多的免费数据函数库...

Diagram as Code:用python代码生成架构图

工作中常需要画系统架构图,通常的方法是通过visio、processon、draw.io之类的软件,但是今天介绍的这个软件Diagrams,可以通过写Python代码完成架构图绘制,确实很co...

分享一个2022年火遍全网的Python框架

作者:俊欣来源:关于数据分析与可视化最近Python圈子当中出来一个非常火爆的框架PyScript,该框架可以在浏览器中运行Python程序,只需要在HTML程序中添加一些Python代码即可实现。该...

10个用于Web开发的最好 Python 框架

Python是一门动态、面向对象语言。其最初就是作为一门面向对象语言设计的,并且在后期又加入了一些更高级的特性。除了语言本身的设计目的之外,Python标准库也是值得大家称赞的,Python甚至还...

使用 Python 将 Google 表格变成您自己的数据库

图片来自Shutterstock,获得FrankAndrade的许可您知道Google表格可以用作轻量级数据库吗?GoogleSheets是一个基于云的电子表格应用程序,可以像大多数数据库管...

牛掰!用Python处理Excel的14个常用操作总结!

自从学了Python后就逼迫用Python来处理Excel,所有操作用Python实现。目的是巩固Python,与增强数据处理能力。这也是我写这篇文章的初衷。废话不说了,直接进入正题。数据是网上找到的...

将python打包成exe的方式(将python文件打包成exe可运行文件)

客户端应用程序往往需要运行Python脚本,这对于那些不熟悉Python语言的用户来说可能会带来一定的困扰。幸运的是,Python拥有一些第三方模块,可以将这些脚本转换成可执行的.exe...

对比Excel学Python第1练:既有Excel,何用Python?

背景之前发的文章开头都是“Python数据分析……”,使得很多伙伴以为我是专门分享Python的,但我的本意并非如此,我的重点还是会放到“数据分析”上,毕竟,Python只是一种工具而已。现在网上可以...

高效办公:Python处理excel文件,摆脱无效办公

一、Python处理excel文件1.两个头文件importxlrdimportxlwt其中xlrd模块实现对excel文件内容读取,xlwt模块实现对excel文件的写入。2.读取exce...

取消回复欢迎 发表评论: