近期,Hugging Face 低調(diào)開源了一個重磅 ML 框架:Candle。Candle 一改機器學習慣用 Python 的做法,而是 Rust 編寫,重點關(guān)注性能(包括 GPU 支持)和易用性。
根據(jù) Hugging Face 的介紹,Candle 的核心目標是讓 Serverless 推理成為可能。像 PyTorch 這樣的完整機器學習框架非常大,這使得在集群上創(chuàng)建實例的速度很慢。Candle 允許部署輕量級二進制文件。另外,Candle 可以讓用戶從生產(chǎn)工作負載中刪除 Python。Python 開銷會嚴重影響性能,而 GIL 是眾所周知的令人頭疼的問題。
Rust 真的可以嗎?
Pytorch 框架是用 Python 編寫的,API 也是基于 Python 的,這讓用戶上手開發(fā)會非常快。另外,Python 本身就是一種簡潔而易于學習的編程語言,很適合初學者和專業(yè)開發(fā)者使用。
但基于 Python 的 Pytorch 框架問題也很明顯。相對于一些靜態(tài)圖框架(如 TensorFlow),Python 在某些情況下可能會導致性能問題。Python 的全局解釋器鎖(GIL)可能會在多線程的情況下影響性能,尤其是在涉及 CPU 密集型任務(wù)時。Python 的解釋性質(zhì)還可能會引入一些運行時開銷。另外,將基于 Python 的 PyTorch 模型部署到生產(chǎn)環(huán)境中可能需要一些額外的步驟,不如其他編譯型語言那么方便。
顯然,Hugging Face 一直在尋找解決辦法,它給出的答案是用時下最快的語言 Rust 重寫一個 ML 框架。“最酷的是,這是來自 Hugging Face 的,不僅僅是某人的愛好項目。”有網(wǎng)友贊嘆道。實際上,許多 HF 生態(tài)系統(tǒng)已經(jīng)使用 Rust,例如 safetensors、tokenizer。
不過,Rust 的難度也讓一些開發(fā)者望而卻步,“編寫 Rust 是一件艱難的事情,你必須跳來跳去,花更多的時間思考編程語言的抽象,而不是思考要解決的問題。所以,我現(xiàn)在還不著急重寫任何 Python 的東西。”
開發(fā)者“fooblaster”指出,Pytorch 部署模型有多個生產(chǎn)路徑無需 Python 解釋器,如 torchscript 和 libtorch,或是更煩人的路徑如 onnx export 和 onnx runtime,所以不需要 Rust 來解決這個問題。另外很人知道,現(xiàn)在可以使用 C++ 編寫 Torch 訓練代碼,并與推理和訓練共享一種通用語言。
對此,開發(fā)者“malcolmgreaves”表示,這些是使模型推理獨立于 Python 的偉大技術(shù)。然而,總是有大量的預處理、后處理或其他業(yè)務(wù)邏輯需要圍繞模型推理。這種事情需要在通用編程語言中完成,因此 Python 經(jīng)常被使用(因為支持模型的代碼通常是由同一個人編寫的,并且這些代碼很可能是 Python,因為您的模型訓練和 eval 代碼很可能也是 Python)。這就是非 Python PL(如 Rust)可以在簡化生產(chǎn)部署 / 維護以及具有真正高效的生產(chǎn)推理方面發(fā)揮巨大作用的地方。
當然,也有開發(fā)者為 Python 打抱不平。
“任何編程語言在生產(chǎn)環(huán)境中都可能是一種痛苦。Python 的缺點之一也是它的優(yōu)點之一。使用 Python 或 JavaScript 等‘混亂’語言很容易陷入糟糕的生產(chǎn)環(huán)境,因此避免這些痛點的工具已經(jīng)非常成熟。有了這些,Python 在生產(chǎn)中就會變得很棒。”開發(fā)者“devjab”進一步表示,“是的,這將要求您的組織做出一些嚴肅的 CI 文化決策并強制執(zhí)行。但問題是,雖然使用某些編程語言可以不必如此,但當企業(yè)達到一定規(guī)模時,總是會需要它們。因此,更早建立這個流程就會容易得多,而且如果您認真使用 Python,早就會這樣做了。我認為,如果在生產(chǎn)環(huán)境中工作很痛苦,那么問題不在于技術(shù),而在于流程。”
實際上,業(yè)內(nèi)一直在努力解決 Python 帶來的問題。
5 月份,LLVM 和 Swift 編程語言聯(lián)合創(chuàng)始人 Chris Lattner 創(chuàng)辦的新公司 Modular AI 發(fā)布了一個名為 Mojo 的新編程語言。Mojo 將 Python 特性與 C、C++ 和 CUDA 的系統(tǒng)編程功能結(jié)合了起來,并通過其所謂“極限加速”與其他 Python 速度增強方案區(qū)分了開來。據(jù)悉,憑借著硬件加速,Mojo 在運行 Mandelbrot 等數(shù)字算法時比原始 Python 快上 3.5 萬倍。
另一方面,Python 自身也在做改進。最近,Python 終于宣布要刪 GIL,Python 默認版本將逐漸過渡到無 GIL 版本。這一決定能否鞏固其在機器學習領(lǐng)域的地位,也需要時間驗證。
與 PyTorch 對比
據(jù)悉,當前 Candle 已經(jīng)支持如今的前沿模型,像 Llama2。經(jīng)過改寫的模型,比如 Llama2 能夠方便、快速的運行在容器環(huán)境,甚至可以運行在瀏覽器中。Candle 結(jié)構(gòu)包括:
Candle-core:核心操作、設(shè)備和 Tensor 結(jié)構(gòu)定義。
Candle-nn:構(gòu)建真實模型的工具。
Candle-examples:在實際設(shè)置中使用庫的示例。
Candle-kernels:CUDA 自定義內(nèi)核;
Candle-datasets:數(shù)據(jù)集和數(shù)據(jù)加載器。
Candle-Transformers:與 Transformers 相關(guān)的實用程序。
Candle-flash-attn:Flash attention v2 層。

Pytorch 和 Candle 對比
該項目正在處于快速迭代過程中,更新非常頻繁,很多功能在不斷開發(fā)中,目前包含如下功能和特點:
語法簡單, 風格與 PyTorch 相似。
CPU 和 Cuda Backend:m1、f16、bf16。
支持 Serverless(CPU)、小型和快速部署
支持 WASM,可在瀏覽器中運行模型。
模型訓練
使用 NCCL 進行分布式計算。
開箱即用的模型:Llama、Whisper、Falcon、StarCoder...
嵌入用戶定義的操作 / 內(nèi)核,如 flash-attention v2。
對于 Hugging Face 的這一新 ML 框架,大家有什么感想或使用感受?歡迎在評論區(qū)分享!
-
框架
+關(guān)注
關(guān)注
0文章
404瀏覽量
18425 -
pytorch
+關(guān)注
關(guān)注
2文章
813瀏覽量
14853 -
Rust
+關(guān)注
關(guān)注
1文章
240瀏覽量
7586
原文標題:Python 失寵!Hugging Face 用 Rust 新寫了一個 ML框架,現(xiàn)已低調(diào)開源
文章出處:【微信號:AI前線,微信公眾號:AI前線】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
NVIDIA Alpamayo 1模型在Hugging Face平臺下載量已突破10萬次
2025開放原子開發(fā)者大會旋武開源社區(qū)Rust分論壇成功舉辦
2025開放原子開發(fā)者大會旋武社區(qū)Rust分論壇即將啟幕
CIE全國RISC-V創(chuàng)新應(yīng)用大賽 人臉識別系統(tǒng)介紹與移植
NVIDIA推出面向語言、機器人和生物學的全新開源AI技術(shù)
Python調(diào)用API教程
PYQT 應(yīng)用程序框架及開發(fā)工具
用 Python 給 Amazon 做“全身 CT”——可量產(chǎn)、可擴展的商品詳情爬蟲實戰(zhàn)
NVIDIA開源Audio2Face模型及SDK
什么是AI模型的推理能力
利用超微型 Neuton ML 模型解鎖 SoC 邊緣人工智能
RT-Thread 遇上 Rust:安全內(nèi)核 RusT-Thread 的誕生
商湯科技日日新V6大模型斬獲“雙料第一” 一項國內(nèi)榜首,一個全球第一
利用英特爾OpenVINO在本地運行Qwen2.5-VL系列模型
Python失寵!Hugging Face用Rust新寫了一個ML框架
評論