首頁 > 科技

純Rust編寫的機器學習框架Neuronika,速度堪比PyTorch

2021-06-18 15:52:05

機器之心報道

編輯:陳萍

這是一個用 Rust 編寫的機器學習框架,與 PyTorch 類似,現已實現最常見的層元件(dense 層、dropout 層等),速度堪比 PyTorch。

Rust 作為一門系統程式語言,專注於安全,尤其是併發安全,支援函數式和命令式以及泛型等程式設計正規化的多正規化語言,其語法上與 C++ 類似。

隨著 Rust 語言熱度的強勁增長,也有許多研究者探索 Rust 在機器學習等方面的研究。近日,有研究者用 Rust 編寫了一個機器學習框架 Neuronika。

Neuronika 是由 Francesco Iannelli 等人開發,他們現在是電腦科學的碩士生。該框架提供了自動分化和動態神經網路,非常像 Pytorch。目前已經實現了最常見的層元件,如 dense 層、dropout 層、GRU、LSTM 和 1d-2d-3d CNN,然而,缺少池化層等等。Neuronika 還提供了損失函數、優化器、計算圖、張量和資料實用程式。

速度方面,項目作者表示 Neuronika 的表現可與 PyTorch 媲美。你可以對它進行基準測試。但目前還不能支援 GPU。想要進行基準測試,可以參考測試文件。

測試文件地址:https://docs.rs/neuronika/0.1.0/neuronika/

項目地址:https://github.com/neuronika/neuronika

對於該機器學習框架,網友直呼非常棒!

對於還不能支援 GPU,有網友支招:「對於 GPU 支援,可考慮 Vulkan 計算著色器。事實證明,它們的效能非常好,而且幾乎所有的 GPU 平臺都支援它,包括智慧手機和瀏覽器。」

還有網友表示擔心,「如果不支援 GPU,能訓練出可用的模型嗎?現在關於機器學習的文章,他們都在談論更大、更昂貴的 GPU。」對於這一擔心,項目作者表示:「這取決於用例。當然,GPU 支援是當今必須的,我們認為它是我們框架的開發的一個重大里程碑。」

項目介紹

Neuronika 是用純 Rust 語言編寫的機器學習框架,其構建重點在於易用性、快速原型開發和高效效能。

Neuronika 的核心機制是一種叫做反向模式自動分化機制( reverse-mode automatic differentiation),這種機制允許使用者在改變動態神經網路時可以輕鬆實現,沒有任何開銷,可通過 API 運行。

Rust 語言提供了一個直觀、輕巧且易於使用的介面,同時實現了令人難以置信的效能。

以下 crate 特徵 flag 可用,配置 ndarray 後端:

serialize:可以序列化支援 serde 1.x。blas:為矩陣乘法提供透明的 BLAS 支援。將 blas-src 用於 pluggable 後端,需要單獨配置。matrixmultiply-threading:啟用 matrixmultiply 包中的 threading 特性。

目前,Neuronika 的開發處於初始階段,但其發展迅速。研究者還在不斷的開發該項目,從一個版本到另一個版本的轉換過程中,預計會有突破性的變化。如果可能的話,研究者會採用最新的、穩定的 Rust 特徵來開發。


IT145.com E-mail:sddin#qq.com