kigichang/candle-notebook

學習 Huggingface Candle 筆記

Rust

10

119 commits

updated Jun 11, 2025

See the code

README

candle-notebook

Huggingface Candle 是 Huggingface 官方用 Rust 開發的 Machine Learning (ML) 框架。跟另一個知名的 Rust ML 框架 tch-rs 不一樣,Candle 完全用 Rust 寫成,而 tch-rs 是用 Rust 封裝 libtorch。現在 Huggingface 也找了 tch-rs 的開發者 Laurent Mazare 一起維護 Candle。

因為 Candle 的官方文件 還不完整,我主要是透過 examples 和一些 Pytorch 書籍的範例,來學習怎麼用 Candle。我已經成功把公司內部的一個 Pytorch 專案移植到 Candle 上了。這些筆記大多透過程式碼來說明怎麼使用 Candle。

由於 Candle 還在開發中,我也會隨著它的更新,持續調整筆記內容。

Pyhton Virtual Environment

使用 uv 來建立 Python Virtual Environment。

uv venv candle-nb --python 3.12 --seed # 建立虛擬環境
source candle-nb/bin/activate # 啟動虛擬環境

筆記內容 (持續更新中)

  1. 以推論為主軸,介紹如何使用 Huggingface Candle
    1. Introduction: 簡介 Candle 與如何使用 Huggingface Hub 下載模型。
    2. Tokenizer 與建立模型: 介紹 Tokenizer 與如何建立模型。
    3. 硬體加速: 介紹如何使用硬體加速。
    4. 文字生成: 介紹如何使用 Huggingface Candle 與 Qwen2.5-1.5B-Instruct 進行文字生成。
    5. 使用量化模型 (GGUF) 進行文字生成: 介紹如何使用 Huggingface Candle 與量化模型Qwen2.5-3B-Instruct-GGUF 進行文字生成。
  2. matrix-op: 透過 2D 繪圖,學習 Candle 的基本操作。
    • 位移、旋轉矩陣。
    • 矩陣乘法。
    • 轉置矩陣。
  3. tensor-op: 介紹張量(Tensor)建立與基本操作。
    • 張量建立。
    • 張量形狀與維度。
    • 張量形狀相容性。
    • 張量四則運算。
    • 張量矩陣乘法。
  4. tensor-op-2: 其他張量操作。
    • 張量升、降維。
    • 張量內容總和、平均值、最大、最小值。
    • 比較兩個張量關係。
    • 組合多個張量。
    • 張量轉置。
    • 張量索引取值。
  5. mnist-training: 參考 Candle 的 Mnist 範例,說明如何用 Candle 進行模型訓練,以及如何使用硬體加速。
  6. bert-base-chinese: 使用 google-bert/bert-base-chinese,展示如何使用 Huggingface 上的預訓練模型。
  7. Candle meet Yew: 如何在瀏覽器上使用預訓練模型。
  8. Cross Encoder: 透過實作 BertForSequenceClassification 學習如何擴充 Candle 的功能與可能會遇到的問題。
  9. Sentence Transforms - All-MiniLM-L6-v2: 實作 sentence-transformers/all-MiniLM-L6-v2
  10. *[BAAI/bge-m3]: 利用剛上 PR 的 xmlroberta,使用BAAI/bge-m3模型。
  11. *Sentence Transforms - Sentence Transformers: 實作 Alibaba-NLP/gte-multilingual-base
  12. *crf: 分享怎麼把 Pytorch 版的 Conditional Random Field (CRF) 移植到 Candle 上。
  13. *rnn: 以 LSTM 為例,講解如何擴充 Candle 的功能。
  14. *CheatSheet 快速查詢指南。

這份筆記是我邊學邊記錄的結果,未來會根據實際使用經驗和 Candle 的更新繼續補充。希望能幫助到其他對 Candle 有興趣的朋友!

Contributors

kigichang

119 commits

kigichang/candle-notebook

學習 Huggingface Candle 筆記

Rust

10

119 commits

updated Jun 11, 2025

See the code

README

candle-notebook

Huggingface Candle 是 Huggingface 官方用 Rust 開發的 Machine Learning (ML) 框架。跟另一個知名的 Rust ML 框架 tch-rs 不一樣,Candle 完全用 Rust 寫成,而 tch-rs 是用 Rust 封裝 libtorch。現在 Huggingface 也找了 tch-rs 的開發者 Laurent Mazare 一起維護 Candle。

因為 Candle 的官方文件 還不完整,我主要是透過 examples 和一些 Pytorch 書籍的範例,來學習怎麼用 Candle。我已經成功把公司內部的一個 Pytorch 專案移植到 Candle 上了。這些筆記大多透過程式碼來說明怎麼使用 Candle。

由於 Candle 還在開發中,我也會隨著它的更新,持續調整筆記內容。

Pyhton Virtual Environment

使用 uv 來建立 Python Virtual Environment。

uv venv candle-nb --python 3.12 --seed # 建立虛擬環境
source candle-nb/bin/activate # 啟動虛擬環境

筆記內容 (持續更新中)

  1. 以推論為主軸,介紹如何使用 Huggingface Candle
    1. Introduction: 簡介 Candle 與如何使用 Huggingface Hub 下載模型。
    2. Tokenizer 與建立模型: 介紹 Tokenizer 與如何建立模型。
    3. 硬體加速: 介紹如何使用硬體加速。
    4. 文字生成: 介紹如何使用 Huggingface Candle 與 Qwen2.5-1.5B-Instruct 進行文字生成。
    5. 使用量化模型 (GGUF) 進行文字生成: 介紹如何使用 Huggingface Candle 與量化模型Qwen2.5-3B-Instruct-GGUF 進行文字生成。
  2. matrix-op: 透過 2D 繪圖,學習 Candle 的基本操作。
    • 位移、旋轉矩陣。
    • 矩陣乘法。
    • 轉置矩陣。
  3. tensor-op: 介紹張量(Tensor)建立與基本操作。
    • 張量建立。
    • 張量形狀與維度。
    • 張量形狀相容性。
    • 張量四則運算。
    • 張量矩陣乘法。
  4. tensor-op-2: 其他張量操作。
    • 張量升、降維。
    • 張量內容總和、平均值、最大、最小值。
    • 比較兩個張量關係。
    • 組合多個張量。
    • 張量轉置。
    • 張量索引取值。
  5. mnist-training: 參考 Candle 的 Mnist 範例,說明如何用 Candle 進行模型訓練,以及如何使用硬體加速。
  6. bert-base-chinese: 使用 google-bert/bert-base-chinese,展示如何使用 Huggingface 上的預訓練模型。
  7. Candle meet Yew: 如何在瀏覽器上使用預訓練模型。
  8. Cross Encoder: 透過實作 BertForSequenceClassification 學習如何擴充 Candle 的功能與可能會遇到的問題。
  9. Sentence Transforms - All-MiniLM-L6-v2: 實作 sentence-transformers/all-MiniLM-L6-v2
  10. *[BAAI/bge-m3]: 利用剛上 PR 的 xmlroberta,使用BAAI/bge-m3模型。
  11. *Sentence Transforms - Sentence Transformers: 實作 Alibaba-NLP/gte-multilingual-base
  12. *crf: 分享怎麼把 Pytorch 版的 Conditional Random Field (CRF) 移植到 Candle 上。
  13. *rnn: 以 LSTM 為例,講解如何擴充 Candle 的功能。
  14. *CheatSheet 快速查詢指南。

這份筆記是我邊學邊記錄的結果,未來會根據實際使用經驗和 Candle 的更新繼續補充。希望能幫助到其他對 Candle 有興趣的朋友!

Contributors

kigichang

119 commits

Languages

Rust

98.4%

Python

1.6%