純Rust編寫的機(jī)器學(xué)習(xí)框架Neuronika,速度堪比PyTorch
Rust 作為一門系統(tǒng)編程語言,專注于安全,尤其是并發(fā)安全,支持函數(shù)式和命令式以及泛型等編程范式的多范式語言,其語法上與 C++ 類似。
隨著 Rust 語言熱度的強(qiáng)勁增長,也有許多研究者探索 Rust 在機(jī)器學(xué)習(xí)等方面的研究。近日,有研究者用 Rust 編寫了一個機(jī)器學(xué)習(xí)框架 Neuronika。
Neuronika 是由 Francesco Iannelli 等人開發(fā),他們現(xiàn)在是計(jì)算機(jī)科學(xué)的碩士生。該框架提供了自動分化和動態(tài)神經(jīng)網(wǎng)絡(luò),非常像 Pytorch。目前已經(jīng)實(shí)現(xiàn)了最常見的層組件,如 dense 層、dropout 層、GRU、LSTM 和 1d-2d-3d CNN,然而,缺少池化層等等。Neuronika 還提供了損失函數(shù)、優(yōu)化器、計(jì)算圖、張量和數(shù)據(jù)實(shí)用程序。
速度方面,項(xiàng)目作者表示 Neuronika 的表現(xiàn)可與 PyTorch 媲美。你可以對它進(jìn)行基準(zhǔn)測試。但目前還不能支持 GPU。想要進(jìn)行基準(zhǔn)測試,可以參考測試文檔。
測試文檔地址:https://docs.rs/neuronika/0.1.0/neuronika/

項(xiàng)目地址:https://github.com/neuronika/neuronika
對于該機(jī)器學(xué)習(xí)框架,網(wǎng)友直呼非常棒!

對于還不能支持 GPU,有網(wǎng)友支招:「對于 GPU 支持,可考慮 Vulkan 計(jì)算著色器。事實(shí)證明,它們的性能非常好,而且?guī)缀跛械?GPU 平臺都支持它,包括智能手機(jī)和瀏覽器。」

還有網(wǎng)友表示擔(dān)心,「如果不支持 GPU,能訓(xùn)練出可用的模型嗎?現(xiàn)在關(guān)于機(jī)器學(xué)習(xí)的文章,他們都在談?wù)摳蟆⒏嘿F的 GPU。」對于這一擔(dān)心,項(xiàng)目作者表示:「這取決于用例。當(dāng)然,GPU 支持是當(dāng)今必須的,我們認(rèn)為它是我們框架的開發(fā)的一個重大里程碑。」

項(xiàng)目介紹
Neuronika 是用純 Rust 語言編寫的機(jī)器學(xué)習(xí)框架,其構(gòu)建重點(diǎn)在于易用性、快速原型開發(fā)和高效性能。
Neuronika 的核心機(jī)制是一種叫做反向模式自動分化機(jī)制( reverse-mode automatic differentiation),這種機(jī)制允許用戶在改變動態(tài)神經(jīng)網(wǎng)絡(luò)時可以輕松實(shí)現(xiàn),沒有任何開銷,可通過 API 運(yùn)行。

Rust 語言提供了一個直觀、輕巧且易于使用的界面,同時實(shí)現(xiàn)了令人難以置信的性能。
以下 crate 特征 flag 可用,配置 ndarray 后端:
- serialize:可以序列化支持 serde 1.x。
- blas:為矩陣乘法提供透明的 BLAS 支持。將 blas-src 用于 pluggable 后端,需要單獨(dú)配置。
- matrixmultiply-threading:啟用 matrixmultiply 包中的 threading 特性。
目前,Neuronika 的開發(fā)處于初始階段,但其發(fā)展迅速。研究者還在不斷的開發(fā)該項(xiàng)目,從一個版本到另一個版本的轉(zhuǎn)換過程中,預(yù)計(jì)會有突破性的變化。如果可能的話,研究者會采用最新的、穩(wěn)定的 Rust 特征來開發(fā)。