純Rust編寫的機器學習框架Neuronika,速度堪比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 特征來開發。