iT邦幫忙

2025 iThome 鐵人賽

DAY 7
0
Rust

30天解鎖 Rust 開發者工具箱系列 第 7

「Day 07」探索 AI 框架

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250921/20177832jTDzvmyle2.jpg
圖:“Rust 的吉祥物 Ferris the Crab 從事人工智慧相關工作”,gemini-2.5-flash-preview,2025年09月21日。

前言:AI 時代,Rust 能夠做什麼?

AI 時代,這不用多說什麼了,而 Rust 又能夠扮演什麼角色呢?以 Python 這門語言來說,它的快速成長期剛好疊合在機器學習逐步爆發的年代,使得其能夠在這個領域獨領風騷,但實際上目前這領域並離不開 C/C++ 等的底層系統級語言。機器學習乃至目前人工智慧應用來說,底層邏輯依然是數值計算,C/C++ 早已有非常豐富,且無論是演算法優化、硬體加速等擁有龐大穩定的函數庫,所以實際上 Python 對相關應用的開發也是從巨人的肩膀上開始的。哪怕是因為 wrapper 的關係,或不同語言交互邏輯的情況以致效能不理想,但在那個快速實驗與驗證的時代,幾乎是唯一的選擇。

但至今顯然某些模型的應用,如:電腦視覺、聲音辨識、甚至大型語言模型等,都已經渡過心中想法理論需要快速得到實驗驗證的時代了,而落地應用在接下來必定是重中之重,而當中要優化和開發應付的面向固然是不一樣了。

Rust 生態系在這領域中,目前仍在發展當中,熱門常見的 crate 有:ortcandleburntch-rstract 等。和昨日的 opencv 類似,以 C/C++ 實現底層數值計算的演算法的這一顆大樹早已非常穩健,一朝一夕想要完全由 Rust 從頭開始實現,顯然是不切實際的,而也待需要時間和應用場景進行驗證等。這篇文章會介紹以上常見的 crate 中具體是如何實現的。

Rust-only 與 Rust-C++ 並存

能有表格就不要有文字了啦XD,先破題快速比較

Crate 主要用途 核心機制 主要優勢
ort 推論 FFI binding ONNX Runtime (C++) 模型相容性強,效能取決 ONNX Runtime
candle 推論與訓練 Rust 原生 Tensor 核心 + FFI 後端 Hugging Face 生態、WASM 元件支持
burn 推論與訓練 後端無關的抽象層 靈活性依據後端選擇所定
tch-rs 推論與訓練 FFI binding LibTorch (C++) 與 PyTorch API 相似
tract 推論 純 Rust 運算核心 輕量、零相依性、適合嵌入式或邊緣計算

ort (ONNX Runtime)

ort 是 ONNX Runtime 的 Rust 綁定(binding)。ONNX (Open Neural Network Exchange) 是一個開放的模型格式標準,幾乎所有的主流訓練框架(PyTorch, TensorFlow, JAX)都能將模型匯出成 .onnx 格式。

核心機制與架構

ort 的核心是微軟開源的高效能推論引擎 ONNX Runtime。這個引擎本身是用 C++ 寫的,針對不同硬體(CPU, GPU, NPUs)進行了極致的最佳化。ort crate 的作用是提供一個安全、符合人體工學的 Rust 介面,讓我們可以透過這個介面去呼叫底層的 C++ 函式庫。

純 Rust 還是 FFI?

透過 FFI (Foreign Function Interface)。ort 本身是 Rust 程式碼,但它不執行任何運算。所有的神經網路計算都是透過 FFI 呼叫預先編譯好的 ONNX Runtime C++ 動態或靜態函式庫來完成的。你的 Rust 專案在編譯時需要連結到這個 C++ 函式庫。

優點

  • 生態系最廣:只要模型能轉成 ONNX 格式,你就能在 Rust 中使用它。這是目前在 Rust 中使用最多樣模型的方法。
  • 極致的效能:ONNX Runtime 經過微軟的深度最佳化,在各種硬體上的推論速度都是頂級水準。
  • 穩定與成熟:由大公司維護,經過了大量的生產環境驗證。

candle

candle 是由 Hugging Face 發起的專案,它是一個以 Rust 為中心、極簡且模組化的機器學習框架。它的設計深受 PyTorch 的啟發,但目標是更輕量、更適合伺服器端和 WebAssembly (WASM) 場景。

核心機制與架構

candle 的核心 (candle-core) 是一個 Tensor 函式庫,負責處理多維陣列的運算。它在設計上盡可能使用純 Rust 實現 CPU 上的運算。對於 GPU 加速,它會透過特定的後端(Backend)來達成。例如,candle-cuda 後端會呼叫 CUDA 函式庫來利用 NVIDIA GPU。它的架構非常模組化,讓使用者可以輕易地擴充或替換後端。

純 Rust 還是 FFI?

混合體,但核心為純 Rust。candle-core 的 CPU 運算部分是純 Rust 實現的。這使得它在沒有特殊硬體加速的環境下(例如 WASM 或輕量級伺服器)非常高效且易於部署。當你需要 GPU 加速時,它會透過 FFI 呼叫底層的硬體 API,例如 CUDA 或 Apple Metal。你可以將它理解為一個Rust 原生的核心,搭配可選的 FFI 加速後端。

優點

  • Hugging Face 生態整合:與 tokenizers 和 safetensors 等專案無縫整合,載入 Hugging Face Hub 上的模型非常方便。
  • 輕量與高效:移除了 Python 和 PyTorch 的許多歷史包袱,二進位檔尺寸小,啟動速度快,非常適合 Serverless 和 WASM。
  • Rust 原生體驗:API 設計非常符合 Rust 的風格,提供了很好的開發體驗。
  • 支援訓練:與 ort 不同,candle 同時支援模型的訓練與推論。

burn

burn 是另一個以 Rust 寫成的、注重靈活性與安全性的深度學習框架。它最大的特色是其後端無關 (Backend Agnostic) 的架構設計。

核心機制與架構

在 burn 中,你撰寫的神經網路邏輯與實際執行運算的後端是完全分離的。burn 提供了一個通用的 API 介面,開發者可以選擇在編譯時掛載不同的後端來執行。例如,它內建了:

  • ndarray 後端:基於 ndarray crate,純 Rust 實現,在 CPU 上執行。
  • wgpu 後端:基於 wgpu(WebGPU API 的 Rust 實現),可以跨平台(Windows, macOS, Linux)地利用 GPU 加速,而無需安裝 CUDA。
  • tch 後端:透過 FFI 使用 LibTorch (PyTorch 的 C++ 函式庫) 進行運算。

純 Rust 還是 FFI?

取決於你選擇的後端。如果你使用 ndarray 後端,那麼整個計算過程就是純 Rust的。如果你使用 wgpu 後端,它本身是一個 Rust 函式庫,但它會與系統的圖形驅動(Vulkan, Metal, DirectX)互動,這層可以看作是低階的互動,但開發體驗上更接近純 Rust。如果你使用 tch 後端,那就是透過 FFI呼叫 C++ 函式庫。

優點

  • 極致的靈活性:一套程式碼,可以無縫切換到不同的後端執行,方便在不同硬體上進行測試與部署。
  • 安全性:充分利用 Rust 的型別系統和所有權機制,減少執行時錯誤。
  • 跨平台 GPU:wgpu 後端讓 GPU 加速不再是 NVIDIA 的專利,AMD 和 Apple Silicon 的 GPU 也能得到很好的支援。
  • 同時支援訓練與推論。

tch-rs

機制與定位:這是 PyTorch 的 C++ 函式庫 (LibTorch) 的直接 Rust 綁定。如果你熟悉 PyTorch 的 API,你會發現 tch-rs 的 API 非常相似。它提供了非常全面的功能,幾乎涵蓋了 LibTorch 的所有能力。

純 Rust 還是 FFI?:純 FFI。與 ort 類似,tch-rs 本身是 Rust 的外殼,所有 Tensor 運算都轉交給底層的 LibTorch C++ 函式庫處理。

tract

機制與定位:tract 是一個專為推論設計的嵌入式神經網路函式庫。它的主要目標是輕量、零相依性(或極少相依性)和可預測的效能。它支援 ONNX、NNEF 和 TensorFlow Lite 等多種模型格式。

純 Rust 還是 FFI?:核心為純 Rust。tract 的主要賣點之一就是它用純 Rust 實現了運算核心,這讓它在交叉編譯和部署到各種嵌入式平台(如 no_std 環境)時非常方便

結語:大亂鬥時代必定存在優勢

不像 Python 生態系的 PyTorch(或 TensorFlow),這幾乎全都圍繞著其發展開來的狀況,目前 Rust 在人工智慧開發面來看,仍然還未達到一定的成熟度,甚至各有千秋,也說不上有一個共識的選擇。然而,這種大亂鬥的時代,我認為必定存在優勢,是一種值得探索冒險的優勢,強迫你去面對不穩定的現狀,當遇到後逐步去釐清背後的邏輯並實作解決,那種成長感很有價值!共勉之~


上一篇
「Day 06」Rust 之眼,開!
下一篇
「Day 08」用 ort 打造 AI 物件辨識應用(一)
系列文
30天解鎖 Rust 開發者工具箱9
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言