Hello Rust, 與AI/Python完美的結合 - 陳昭明(I code so i am)
Why Rust
2024 v1.81.0
佳評如潮
連續多年最被Stackoverflow票選為最佳程式語言
Technology - Admired and Desired
大廠支持
- Google, AWS, Microsoft
- Linus Torvalds: Rust will go into Linux 6.1
Rust is quitely taking over Generative AI inside of HuggingFace
Hugging Face 投入大量人力開發 Rust 生成式 AI 相關模組
- Candle
- TEI
- Tokenizer
- Safetensors
生態系支援
Rust 簡介和優勢
兼具 C、Python 優點
- 效能接近 C,保留 Address、Pointer 操作
- 穩定、安全:避免 segmentation fault & memory leak
- 與 Python 語法相近
- 套件齊全
- 跨平台
克服 Python 缺點
- 套件版本依賴
- 可編譯成執行檔
- PyInstaller:很肥,包含直譯器和套件與程式碼,並非是二進位檔案
- 效能提升
- Python 處理大量資料效能差,但 Rust 可以有效提升
效能提升
- 預設變數都是 immutable
- 數值資料型別 8~128 bits
- 嚴格的運算規定,減少型別判斷 e.g. i32+i16 => error
- 變數生命週期:變數超出有效範圍就立刻回收
- 效能直逼 C/C++,完勝 Python:很多 Python 套件都改用 Rust
安裝
- 用rustup-init.exe
- wsl/linux/mac:指令
Concurrency
- 平行處理 Parallel Processing
- 非同步處理 Asynchronous
實際應用
以Rust開發一個網站,不是網頁喔!
awesome
Memory safty
- Segmentation Fault
- Memory Leak
- C 在使用 malloc 操作記憶體,若未釋放記憶體則會導致記憶體備用爆
- Rust 會在離開變數作用域時自動進行記憶體回收
跨平台
- 安裝容易
- Cargo 套件管理,是跟專案資料夾的,不會影響到全域
- 可編譯 exe, dll
- 可打包成套件
- FII(Foreign Function Interface)
WEB Assembly
與 AI/Python 的完美結合
Python/ Rust FII
Pyo3 crate 支援互相呼叫
maturin 可產生 wheel 檔案
機器學習開發流程
Image Not Showing
Possible Reasons
- The image was uploaded to a note which you don't have access to
- The note which the image was originally uploaded to has been deleted
Learn More →
ML & DL Crates
- Machine Learning: Linfa
- Deep learning
LLM with Candle