Hugging Face 宣布 Bumblebee:純 Elixir 中的 Transformers 與 Stable Diffusion
TL;DR
Hugging Face 推出了 Bumblebee,這是一個純 Elixir 的函式庫,將 Hugging Face Transformers(包括 GPT‑2 與 Stable Diffusion)移植到 Elixir 執行環境,讓開發者能在 CPU 或 GPU 上執行推論,且不需要第三方二進位檔。
Bumblebee 提供的功能
- Model coverage: 從文字生成(GPT‑2)到影像合成(Stable Diffusion)的預訓練模型皆以 Elixir 模組形式提供。
- Zero external dependencies: 模型會使用 Erlang VM 的並行與分散特性編譯成原生 CPU/GPU 程式碼;不需要 Python 或 C 函式庫。
- Livebook integration: Livebook 的「Smart cells」讓使用者只需三次點擊即可建立神經網路任務,將筆記本變成互動式機器學習環境。
- Phoenix、Broadway、Nerves 支援: Bumblebee 模型可嵌入 Phoenix 網頁應用、透過 Broadway 管線串流,或部署於 Nerves 嵌入式裝置上。
技術基礎
- Nx tensors: Bumblebee 基於 Nx 函式庫,提供多維張量以及可編譯至 XLA(透過 EXLA)或 Libtorch(透過 Torchx)的 Elixir 子集,以實現硬體加速。
- Axon: 功能式、可組合的神經網路定義由 Axon 提供,靈感來自 Flax 與 PyTorch Ignite。
- Explorer: 資料框操作使用 Explorer,借鑑 dplyr 與 Polars 的概念,以提升資料處理效率。
- Tokenizers: 原生 Elixir 的 tokenizer 函式庫負責 Transformer 模型所需的前處理步驟。
如何開始使用
- 安裝 Livebook v0.8,並使用「+ Smart」儲存格選單產生神經網路任務範本。
- 執行 Bumblebee 倉庫中的範例 Phoenix 應用,以在搭配 LiveView 的網頁伺服器中觀察推論。
- 探索 Bumblebee
notebooks/目錄中的筆記本,獲得實作教學。
未來路線圖
- Training & transfer learning: 團隊計畫在 Elixir 中直接支援預訓練模型的微調,讓企業能將模型套用於特定領域資料。
- Traditional ML algorithms: 將在未來版本加入傳統機器學習演算法的支援。
- Expanded platform support: Livebook 正在移植至更多環境,包括 Hugging Face Spaces。
社群參與
- 歡迎貢獻新增模型架構至 Bumblebee。
- 可在編譯器開發、模型建構、以及與 Elixir 並行生態系的整合等領域提供協助。
- 本專案強調在 Elixir 中打造「並行、分散且有趣」的機器學習未來。
此公告於 2022 年 12 月 9 日發表於 Hugging Face 部落格。