日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

作者 | 褚杏娟

近期,Hugging Face 低調(diào)開源了一個重磅 ML 框架:Candle。Candle 一改機器學(xué)習(xí)慣用 Python/ target=_blank class=infotextkey>Python 的做法,而是 Rust 編寫,重點關(guān)注性能(包括 GPU 支持)和易用性。

根據(jù) Hugging Face 的介紹,Candle 的核心目標是讓 Serverless 推理成為可能。像 PyTorch 這樣的完整機器學(xué)習(xí)框架非常大,這使得在集群上創(chuàng)建實例的速度很慢。Candle 允許部署輕量級二進制文件。另外,Candle 可以讓用戶從生產(chǎn)工作負載中刪除 Python。Python 開銷會嚴重影響性能,而 GIL 是眾所周知的令人頭疼的問題。

Rust 真的可以嗎?

Pytorch 框架是用 Python 編寫的,API 也是基于 Python 的,這讓用戶上手開發(fā)會非???。另外,Python 本身就是一種簡潔而易于學(xué)習(xí)的編程語言,很適合初學(xué)者和專業(yè)開發(fā)者使用。

但基于 Python 的 Pytorch 框架問題也很明顯。相對于一些靜態(tài)圖框架(如 TensorFlow),Python 在某些情況下可能會導(dǎo)致性能問題。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 解釋器,如 torch 和 libtorch,或是更煩人的路徑如 onnx export 和 onnx runtime,所以不需要 Rust 來解決這個問題。另外很人知道,現(xiàn)在可以使用 C++ 編寫 Torch 訓(xùn)練代碼,并與推理和訓(xùn)練共享一種通用語言。

對此,開發(fā)者“malcolmgreaves”表示,這些是使模型推理獨立于 Python 的偉大技術(shù)。然而,總是有大量的預(yù)處理、后處理或其他業(yè)務(wù)邏輯需要圍繞模型推理。這種事情需要在通用編程語言中完成,因此 Python 經(jīng)常被使用(因為支持模型的代碼通常是由同一個人編寫的,并且這些代碼很可能是 Python,因為您的模型訓(xùn)練和 eval 代碼很可能也是 Python)。這就是非 Python PL(如 Rust)可以在簡化生產(chǎn)部署 / 維護以及具有真正高效的生產(chǎn)推理方面發(fā)揮巨大作用的地方。

當然,也有開發(fā)者為 Python 打抱不平。

“任何編程語言在生產(chǎn)環(huán)境中都可能是一種痛苦。Python 的缺點之一也是它的優(yōu)點之一。使用 Python 或 JAVA 等‘混亂’語言很容易陷入糟糕的生產(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 版本。這一決定能否鞏固其在機器學(xué)習(xí)領(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ā)中,目前包含如下功能和特點:

  • 語法簡單, 風(fēng)格與 PyTorch 相似。
  • CPU 和 Cuda Backend:m1、f16、bf16。
  • 支持 Serverless(CPU)、小型和快速部署
  • 支持 WASM,可在瀏覽器中運行模型。
  • 模型訓(xùn)練使用 NCCL 進行分布式計算。
  • 開箱即用的模型:Llama、Whisper、Falcon、StarCoder...
  • 嵌入用戶定義的操作 / 內(nèi)核,如 flash-attention v2。

對于 Hugging Face 的這一新 ML 框架,大家有什么感想或使用感受?歡迎在評論區(qū)分享!

參考鏈接:

https://Github.com/huggingface/candle

https://news.ycombinator.com/item?id=37049198

分享到:
標簽:框架 ML
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定