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

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

Python失寵!Hugging Face用Rust新寫了一個ML框架
評論