AI in rust
接下來幾天筆者會開始實作gobblet的 AI. 在進入實作的部分前, 我們可以先來聊聊 rust 或著更擴展的說其他語言相較於 python 開發到底有任何優勢嗎?
..... 老實說真目前真的沒有具體的產業大老開始使用rust作為ai 產品的一部分.
在AI領域上,或著說機器學習的領域中, train/learn v.s interference/prediction 是兩個很不同的任務.
舉凡推薦系統, 自動車駕駛. 多數都是將這兩個過程切開. 有多開? 可能連機器/硬體都不一樣. 我認為在interference上會有很有趣的機會.
果不起然有實驗用的benchmark:
2019年 EuroPython Conference的影片.
很有意思的點出作為一個不需要garbege collection的程式語言. 在interference上極限的速度和大小差異, 有興趣可以去點開來看.但我們這邊快轉到數量級的比較.
感謝YT的留言.
If my math isn't wrong it was about 1357x faster ( Python: 13:00 Rust: 20:15 ). Mind blown. ~209s vs ~154ms, and the RAM footprint was about 8.75x smaller at the peak (34MB vs ~4MB)
以 AWS lambda服務為例, 收費方式採用 ram size * execution time. 若是作為成本考量有 10^3 數量級的縮減. 這樣的成本優勢是不是很有吸引力呢?
最大打包Size也是外一個考量,
Rust in the Browser for JavaScripters: New Frontiers, New Possibilities
提到 Minimal runtime. Go是 2mb+ TinyGo是 10kb+. Rust則是一開始就設計作為embed language就 kb+等級. 節制總歸在這邊產生句的應用好處.
在這幾十年的發展下, deep learning的framework 日漸推陳出新.
但這邊就筆者最推薦開始使用的兩個, 也是多數 code with paper可以找到的, 分別是 pytorch 與 tensorflow.
使用這兩個基本上不會成為技術孤兒, 在stackoverflow 上面也容易找到同樣問題的解答.
安裝的話這邊提供m1/m2的安裝指南:
如果按照官方的做法會希望重新 build lib, tensorflow 底層還是c++. brew 有 prebuild 的版本可以直接安裝.
brew install libtensorflow # for tensorflow install
brew install libtorch # for tch(pytorch)
export LIBTORCH=/path/to/libtorch
export LD_LIBRARY_PATH=${LIBTORCH}/lib:$LD_LIBRARY_PATH
to ~/.profile (any equivalent file). Default terminal for mac user is zsh, that is , ~/.zshrc
像是sklearn這樣強大的工具, 目前不好說rust裏頭有相對應的open source ML領頭羊. Awesome-Rust-MachineLearning
是筆者目前優先參考的內容. 但就算是最熱們的幾個repository都說不算是超級熱門.目前還是屬於開荒階段.