0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python失宠!Hugging Face用Rust新写了一个ML框架

jf_WZTOguxH 来源:AI前线 2023-08-11 16:24 次阅读

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

cd4f865e-3808-11ee-9e74-dac502259ad0.png

Pytorch 和 Candle 对比

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

语法简单, 风格与 PyTorch 相似。

CPU 和 Cuda Backend:m1、f16、bf16。

支持 Serverless(CPU)、小型和快速部署

支持 WASM,可在浏览器中运行模型。

模型训练

使用 NCCL 进行分布式计算。

开箱即用的模型:Llama、Whisper、Falcon、StarCoder...

嵌入用户定义的操作 / 内核,如 flash-attention v2。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 框架
    +关注

    关注

    0

    文章

    297

    浏览量

    17045
  • pytorch
    +关注

    关注

    2

    文章

    761

    浏览量

    12835
  • Rust
    +关注

    关注

    1

    文章

    223

    浏览量

    6387

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

文章出处:【微信号:AI前线,微信公众号:AI前线】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Python自动化测试框架及其应用

    Pytest是一个非常成熟的全功能的Python测试框架,与python自带的unittest测试框架类似,但是比unittest框架使用起
    的头像 发表于 04-03 16:15 144次阅读
    <b class='flag-5'>Python</b>自动化测试<b class='flag-5'>框架</b>及其应用

    ServiceNow、Hugging Face 和 NVIDIA 发布全新开放获取 LLM,助力开发者运用生成式 AI 构建企业应用

    2024 年 2 月 28 日 - ServiceNow(NYSE:NOW)、Hugging Face 和 NVIDIA 于今日发布 StarCoder2,其为一系列用于代码生成的开放获取大语言模型(LLM
    发表于 02-29 11:12 153次阅读
    ServiceNow、<b class='flag-5'>Hugging</b> <b class='flag-5'>Face</b> 和 NVIDIA 发布全新开放获取 LLM,助力开发者运用生成式 AI 构建企业应用

    Python Web框架Django 5.0新特性

    根据 JetBrains 公布的 2022 Python 开发者调查结果,Python Web 框架的三巨头依旧是 Flask、Django 和 FastAPI。Django 和 Flask 的使用率排名并列第一。
    的头像 发表于 12-06 13:37 623次阅读

    Hugging Face LLM部署大语言模型到亚马逊云科技Amazon SageMaker推理示例

     本篇文章主要介绍如何使用新的Hugging Face LLM推理容器将开源LLMs,比如BLOOM大型语言模型部署到亚马逊云科技Amazon SageMaker进行推理的示例。我们将部署12B
    的头像 发表于 11-01 17:48 464次阅读
    <b class='flag-5'>Hugging</b> <b class='flag-5'>Face</b> LLM部署大语言模型到亚马逊云科技Amazon SageMaker推理示例

    使用Rust优化Python性能

    在数据分析领域Python无疑是最流行的编程语言,但是Python有一个硬伤就是作为一个编译语言在性能上有些微的欠缺。而同样最流行的语言Rust则在性能方面表现优秀。本文我们一起学习一个优化项目的实践,对一个数据分析程序,改为
    的头像 发表于 11-01 15:59 468次阅读
    使用<b class='flag-5'>Rust</b>优化<b class='flag-5'>Python</b>性能

    Hugging Face被限制访问

    目前尚不清楚 Hugging Face 何时出现访问限制问题。雅虎的报道称,早在今年 5 月起,就已经有用户在 HF 的论坛上抱怨连接问题。另外有报道称,至少从 9 月 12 日起,Hugging
    的头像 发表于 10-22 15:51 1178次阅读
    <b class='flag-5'>Hugging</b> <b class='flag-5'>Face</b>被限制访问

    Rust GUI实践之Rust-Qt模块

    Rust-Qt 是 Rust 语言的一个 Qt 绑定库,它允许 Rust 开发者使用 Qt 框架来创建跨平台的图形界面应用程序。Qt 是一个跨平台的应用程序
    的头像 发表于 09-30 16:43 964次阅读

    如何在Rust项目中使用InfluxDB 2.x

    Rust是一种系统编程语言,它具有高性能、内存安全和并发性等特点。InfluxDB是一个开源的时序数据库,它专门用于存储和查询时间序列数据。InfluxDB 2.x是InfluxDB的新版本,它提供
    的头像 发表于 09-19 16:33 353次阅读

    基于Rust的Log日志库介绍

    了一种简单的方法来实现日志记录,本文将介绍如何使用Rust的Log库作为日志门面,并结合env_logger和log4rs两个日志库的实战用例进行深入探讨。 Rust的Log库 Rust的Log库是一个轻量级的日志记录
    的头像 发表于 09-19 14:49 2128次阅读

    NVIDIA 与 Hugging Face 将连接数百万开发者与生成式 AI 超级计算

    NVIDIA DGX Cloud 集成到 Hugging Face 平台将加速大语言模型(LLM)的训练和调优,简化了几乎每个行业的模型定制     洛杉矶 — SIGGRAPH — 2023
    发表于 08-09 11:41 108次阅读
    NVIDIA 与 <b class='flag-5'>Hugging</b> <b class='flag-5'>Face</b> 将连接数百万开发者与生成式 AI 超级计算

    NVIDIA 与 Hugging Face 将连接数百万开发者与生成式 AI 超级计算

    NVIDIA DGX Cloud 集成到 Hugging Face 平台将加速大语言模型(LLM)的训练和调优,简化了几乎每个行业的模型定制
    的头像 发表于 08-09 11:38 703次阅读
    NVIDIA 与 <b class='flag-5'>Hugging</b> <b class='flag-5'>Face</b> 将连接数百万开发者与生成式 AI 超级计算

    NASA 携手 IBM 发布 Hugging Face 平台最大开源地理空间 AI 基础模型

    近日,IBM (NYSE: IBM) 与开源 AI 平台 Hugging Face 共同宣布,基于美国宇航局 ( NASA) 卫星数据构建的 IBM watsonx.ai 地理空间基础模型,现已
    的头像 发表于 08-08 18:15 431次阅读
    NASA 携手 IBM 发布 <b class='flag-5'>Hugging</b> <b class='flag-5'>Face</b> 平台最大开源地理空间 AI 基础模型

    Hugging Face更改文本推理软件许可证,不再“开源”

    据悉,TGI 已成为 Hugging Face 商业产品(如推理端点)及其商业合作伙伴(如 Amazon SageMaker、Azure 机器学习和 IBM watsonx )的重要组成部分。而 Hugging
    的头像 发表于 07-31 14:42 408次阅读

    Rust构建QEMU插件的框架

    Cannonball 是一个用 Rust 构建 QEMU 插件的框架!您可以在 C 语言的 QEMU TCG 插件中执行的任何操作,都可以使用cannonball。编写以最小的开销和尽可能多的功能运行的插件!
    的头像 发表于 07-21 16:57 509次阅读

    Rust代码中加载静态库时,出现错误 ` rust-lld: error: undefined symbol: malloc `怎么解决?

    我正在 MCUXpresso IDE 中创建静态库。我正在使用 redlib 在我的代码中导入 ` [i]stdlib.h`。它成功地构建了静态库。但是,静态库中未定义
    发表于 06-09 08:44