阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

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

  • 2023-08-11
    北京
  • 本文字数:2109 字

    阅读完需:约 7 分钟

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

近期,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,例如safetensorstokenizer

 

不过,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 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2023-08-11 14:327511

评论

发布
暂无评论
发现更多内容

面试突击49:说一下 JUC 中的 Exchange 交换器?

王磊

Java java面试

通过 Amazon API Gateway 和 Amazon Lambda 实现基于 Restful API 的 CloudFront Distribution 复制/克隆功能

亚马逊云科技 (Amazon Web Services)

Lambda Gateway

存储模组头部厂商嘉合劲威加入龙蜥社区

OpenAnolis小助手

开源 操作系统 芯片 龙蜥社区 嘉合劲威

数据产品实战-toB产品实践心得

第519区

数字化转型 解决方案 数据产品 tob产品

程序员,做业务还是做技术更有前途?

张泽豪

程序员

Tapdata Cloud 2.1.5来啦:新增支持Amazon RDS数据库,错误日志查询更便捷,Agent部署细节再优化

tapdata

SaaS 数据同步 polarDB Amazon RDS

员工考勤打卡时,如何避免非本人代替打卡?

华为云开发者联盟

人脸识别 打卡 华为云FRS 华为云FunctionGraph 华为云APIG

互联网大厂研发效能团队的需求管理

laofo

互联网 DevOps cicd 研发效能 CI/CD

万字长文:手把手教你实现一套高效的IM长连接自适应心跳保活机制

JackJiang

TCP 网络编程 即时通讯 im开发 心跳保活

python实现连接两个数据库

YUKI0506

Tapdata x 轻流,为用户打造实时接入轻流的数据高速通道

tapdata

SaaS 数据同步 实时数据 轻流

私有化的IM即时通讯平台,企业首选的沟通工具

WorkPlus

学生管理系统架构设计图

Justin1024

ShardingSphere 在东南亚|与科技保险公司 Fuse 的技术融合

SphereEx

Apache 开源 ShardingSphere SphereEx 数据库·

活动报名:以「数」制「疫」,解密 Tapdata 在张家港市卫健委数字化防疫场景下的最佳实践

tapdata

数字化 数据孤岛 实时数据 疫情防控 活动报名

软件的license是什么意思?作用是什么?

行云管家

软件 运维 许可证

零基础可以学云计算运维吗?怎样从才可以学好?

行云管家

云计算 运维 IT运维 云运维 服务器运维

架构实战营|模块1

KDA

#架构实战营

互联网公司目标管理OKR和绩效考核误区

laofo

OKR 研发效能 互联网公司 快手 绩效考核 GRAD

融云首席科学家任杰:历练出人才,职场「经历>经验」

融云 RongCloud

微信业务架构,学生管理系统架构设计

泋清

#架构实战营

css 学习笔记【二】-背景,渐变,链接文档的MIME类,id选择器和类选择器的区别

恒山其若陋兮

5月月更

互联网公司目标管理OKR实践落地与反思

laofo

互联网 OKR 研发效能 绩效管理 快手

Reactor百万连接的并发

C++后台开发

reactor 高并发 epoll Linux服务器开发 C++后台开发

互联网研发效能专家怎么找?

laofo

设施资产管理系统解决方案

低代码小观

资产管理 CRM CRM系统 企业设备管理 设备巡检管理系统

场景实践 | 如何使用融云超级群构建游戏社区

融云 RongCloud

TDengine在弘源泰平量化投资中的实践

TDengine

数据库 tdengine 开源 时序数据库

架构7期模块1作业

Elvis FAN

架构实战营

开启分布式应用性能观测(APM)

观测云

可观测性 可观测

Python unicode三明治

AIWeker

Python 人工智能 5月月更

Python 失宠!Hugging Face 用 Rust 新写了一个 ML框架,现已低调开源_AI 工程化_褚杏娟_InfoQ精选文章