前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python 失宠!Hugging Face 用 Rust 新写了一个 ML 框架,现已低调开源

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

作者头像
深度学习与Python
发布于 2023-09-08 01:00:52
发布于 2023-09-08 01:00:52
7070
举报

作者 | 褚杏娟

近期,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

点击底部阅读原文访问 InfoQ 官网,获取更多精彩内容!

今日好文推荐

中国最大公有云服务商,如何从零开始构建一支云效团队

工信部要求所有 App、小程序备案;某国产电商被提名 Pwnie Awards “最差厂商奖”;阿里财报超预期 | Q资讯

谷歌的反“背锅”文化

生成的代码会出错、质量差?面对 AI 编程工具的老大难问题,华为这群人打算这样做

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 InfoQ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【一行分析】利用12000条招聘数据分析Python学习方向和就业方向
选择大于努力,已经成为一个无可否认的事实。就像当年高几十分考上985生物专业的同学和考上211计算机专业的同学,毕业的薪资出现明显的反差;又或者同是生物专业,一位考雅思出国读硕士和一位自学python转行的同学,两年后的薪资也具有明显的反差(有些专业不见得出国回来就能够有很大差距)。
行哥玩Python
2020/07/14
6190
【一行分析】利用12000条招聘数据分析Python学习方向和就业方向
我是如何在自学编程9个月后找到工作的
昨天在我在国外网站 reddit 上看到一篇文章,作者分享了他自学编程 9 个月后找到工作的经历。文章不到一天就得到3千多赞,2百条回复。我看了下内容,非常中肯,其中有不少建议也是我在编程教室屡次提过的。所以我连夜翻译了出来。原文略长,我做了适当的缩减。另外加上了一点我的想法(括号内斜体字)。虽说国情有不同,但本质是相同的,对想要入行的朋友很有参考价值。
Crossin先生
2018/10/22
1.4K0
我是如何在自学编程9个月后找到工作的
再次认真聊一聊,Java or C++?
这篇文章的标题叫做“再次认真聊一聊,Java or C++?”之所以叫再次,是因为大概在去年八月份的时候已经写过一篇文章聊了聊对于校招这块的语言选择,到底是选Java还是C++或者是Python?
拓跋阿秀
2023/01/05
9120
植被定量遥感研0求职方向选择与准备路径
中科院某所定量遥感专业学硕研0男生,个人研究方向未定;不打算从事科研,想去地学相关公司或类似比亚迪等非科班可去的公司。
疯狂学习GIS
2024/06/04
1200
植被定量遥感研0求职方向选择与准备路径
IT学生学习指南
其实很早就想安静地坐下来写这篇文章了,疫情期间总算是能够腾出时间了。自我介绍一下,本人之前在菊厂干过几年开发,期间也曾担任过校招技术面试官,现在回归故里西安成为了一名软件开发培训讲师,同时也兼职着西安本地一些高校的计算机老师。
全栈程序员站长
2022/09/05
7160
IT学生学习指南
自学Python要多久?Python学到什么程度可以找到好工作
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/07/10
4.2K0
自学Python要多久?Python学到什么程度可以找到好工作
程序员的自我修养4️⃣—学习方向和方法
在之前信息采集中很多小伙伴提及到的问题是,怎么快速学习,找不到方向、动力,怎么才能达到公司的招聘标准。
马拉松程序员
2022/04/26
4080
程序员的自我修养4️⃣—学习方向和方法
新人学习写程序的第一道坎
排第一位的大多数是听说程序员职业“高薪”(谈不上对计算机感兴趣,但不讨厌),第二是出于兴趣爱好,第三是现有工作无出路,想通过学习一门技术再就业。
王炸
2020/12/08
3590
新人学习写程序的第一道坎
计算机视觉毕业后找不到工作怎么办?
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
用户1150922
2019/10/22
1.1K0
计算机应届生月薪大多是多少?
月薪4k,6k,8k,10k的各占百分之多少呢,好对自己有个定位,现在听听那些亲身经历者说一说。
磐创AI
2020/03/05
6K0
象牙塔之旅
又是一年暑假季,八月的炎热比起七月要温和点,只是每每到了夜晚,隔三两天就会暴雨如注,清晨起来,一夜好梦。 不知不觉毕业快两个月了,偶尔恍惚还以为自己才大四,前段时间有一些学弟学妹询问我关于就业和工作选择的一些问题,其实作为一个老学姐我也不能给你们很好的建议,毕竟每个人的路都是不一样的,不过一路走来踩了不少坑,倒是可以写一些个人见解,学弟学妹们可以参考参考,学长学姐们可以留言补充。 我正式接触编程应该是大二那个暑假做了一个月的暑假工,然后买了第一台笔记本,才开始编程之旅,现在想想觉得很搞笑,一个计算机专业的居然到大三才有自己的电脑。上班之后,接触到了很多大牛大虾,才发现人家很多都是从初中或者高中就接触编程了,虽然也在很多新闻上看到有人三十或者像那个日本的奶奶一样学的很晚,但是对我这样天资不是很聪颖的小麻瓜来说,还是笨鸟先飞的好。如果你是计算机专业的或者对IT比较感兴趣的,个人觉得在刚进大学时最好就开始着手打好基础,尤其是不要错过暑假这么美好的实习时光,当年姐姐大一暑假出去浪,现在回头想想,也就浪了那么个十天半个月,剩下的大把时光干嘛去了,嗯,美名其曰应该是思考人生去了!bullshit!不同阶段思考的问题和看待问题的解决方法还是有很大差别的,虽然刚进大学都是踌躇满志的,但是去实施的过程还是很稚嫩的,也不懂的去通过更好的渠道达到自己的目的,有时经常活在自己的世界里,其实应该走出来看看那些比你更聪明的人还比你更勤奋。 大学四年的暑假千万要好好利用起来,为什么呢?出去十天半个月的旅行时光,我们的大部分时间还是很空闲的,甚至不知道该干什么,然后每天日上三竿起来,吃吃喝喝玩手机打游戏聊天看视频到深夜,然后日复一日,最后到开学。作为老学姐,建议你们在这段时间最好找一个实习工作,而且这些实习工作最好和你的职业规划有一定的联系。可能有的人会觉得我才脱离高中,正是大学美好生活的开始,没必要去想什么职业规划这些遥远的东西。但是在我看来,大学才是最关键的,高中只是一个小打小闹,大学才是最好玩的。不是说高中不重要,相反,通过高中的努力获得一张进入高等学府的门票是很有必要的,高等学府能让你接触更好的知识和更多志同道合的小伙伴,但是如果这张门票没抢到一等座的,那没什么大不了,大学里面厚积薄发的人多了去了,就看你是不是还拿着高中的心态来决定大学的四年了。 我见过很多高中没有上一本或者二本的,但是在大学期间考研去了一本重点的,还有的在工作上也有成就,我觉得没什么能限制你的未来除了你自己。回到之前的话题,好好思考一下自己的职业规划,最好是自己感兴趣的,喜欢的工作,其次的话如果没有什么思路或者想法,那就是目前最赚钱的工作咯,我比较现实,在情怀之外,没有钱还是很尴尬的。对于以后想要从事IT 行业的学弟学妹们来说,暑假要提前找好实习工作,不要小看这两个月,它会让你的思想有一个质的飞跃,而且很多互联网公司,很喜欢招实习生,等你毕业了,反而不欢迎你了(如果你没有一定的工作经验),当然你能力很牛逼,还是有很多橄榄枝的。那么问题来了,怎么去找实习工作?我当初一方面是有一颗浪的心,一方面是这方面的资源信息很少,不知道去挖掘。我根据个人的一些经历整理了一下渠道,可以参考参考。
仇诺伊
2018/09/12
5440
新人自学Python有哪些快速上手的方法?编程到底难不难?
因为想通过编程来处理工作中的一些重复性枯燥任务,例如通过Python脚本定期登陆远程设备采集相关数据等等,于是打算学习编程。
刀刀老高
2019/05/05
1.1K0
「大学生学编程系列」第二篇:如何选择第一门编程语言?
第一篇讲述了为什么要选择做一名程序员,从源头上讲述要想成为一名程序员需要很强的驱动力,因为编程相对而言算是比较难入门的一个职业。在入门之前必须有克服困难的勇气,有成为一名程序员的决心
程序员互动联盟
2018/08/06
8720
「大学生学编程系列」第二篇:如何选择第一门编程语言?
一般人到底要不要学Python_Python值得学吗
本人纯屌丝一枚,在学python之前对电脑的认知也就只限于上个网,玩个办公软件。这里不能跑题,我为啥说自学python,一般人我还是劝你算了吧。因为我就是那个一般人。
全栈程序员站长
2022/10/03
5230
Java可以自学吗?自学Java要多久?自学Java能找到工作吗?
我相信在此之前应该有一部分是自学Java的人,也有很多正在想自学Java的人。 那么,这些人在选择自学的道路时,一定也有想过很多,比如:自学Java找工作好找吗?自学要学习多久呢?Java可以自学吗?
Java知音
2018/12/19
4.3K0
python自学清单方法,分析优势和劣势,这三个问题你得思考一下
因为想通过编程来处理工作中的一些重复性枯燥任务,例如通过Python脚本定期登陆远程设备采集相关数据等等,于是打算学习编程。
一墨编程学习
2019/05/08
4620
python自学清单方法,分析优势和劣势,这三个问题你得思考一下
校招途中换语言,真的很不应该!
众所周知,互联网岗位一般可分为非技术岗以及技术岗,其中非技术岗则是指产品、运营等。
拓跋阿秀
2022/09/28
3240
读研转码,纠结技术方向
很多本科非科班的小伙伴都会选择通过读个研来达到转码的目的,主要是想给自己一个2-3年的缓冲时间。
拓跋阿秀
2023/01/30
5820
为何有人说Python不好找工作?
Python编程近两年来可谓是C位出道,吸引了无数编程圈里圈外人的围观,有的人想要借机突破自己的职业瓶颈,有人想要借机突破自己的薪酬瓶颈,有人终于有机会转行到自己喜欢的领域了,可在大家疯狂追捧Pyth
python学习教程
2019/09/17
1.4K0
为何有人说Python不好找工作?
工作难找,工作也好找
我是一名98年专科大一学生,在北京就读。我家庭经济情况不好,上高中时父母一直在外地工作,而我寄宿在亲戚家。
用户4303460
2018/12/23
3940
工作难找,工作也好找
推荐阅读
相关推荐
【一行分析】利用12000条招聘数据分析Python学习方向和就业方向
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档