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」により、ユーザーは 3 クリックでニューラルネットワークタスクの雛形を作成でき、ノートブックをインタラクティブな機械学習環境に変えます。
  • Phoenix, Broadway, Nerves support: Bumblebee のモデルは Phoenix のウェブアプリに組み込んだり、Broadway パイプラインでストリーミングしたり、Nerves の組み込みデバイスにデプロイしたりできます。

技術的基盤

  • Nx tensors: Bumblebee は Nx ライブラリ上に構築されており、マルチディメンショナルテンソルと、ハードウェアアクセラレーションのために XLA(EXLA 経由)または Libtorch(Torchx 経由)にコンパイルされる Elixir のサブセットを提供します。
  • Axon: 関数型で合成可能なニューラルネットワーク定義は Axon によって提供され、Flax と PyTorch Ignite からインスピレーションを受けています。
  • Explorer: データフレーム操作は Explorer を活用し、dplyr と Polars の概念を取り入れて効率的なデータ操作を実現します。
  • Tokenizers: ネイティブな Elixir トークナイザライブラリが Transformer モデルに必要な前処理ステップを処理します。

はじめ方

  1. Livebook v0.8 をインストールし、“+ Smart” セルメニューを使ってニューラルネットワークタスクのテンプレートを生成します。
  2. Bumblebee リポジトリから 例の Phoenix アプリ を実行し、LiveView を使ったウェブサーバ内での推論を確認します。
  3. Bumblebee の notebooks/ ディレクトリにある ノートブックを探索し、ハンズオンチュートリアルを体験します。

今後のロードマップ

  • Training & transfer learning: チームは事前学習モデルのファインチューニングを Elixir で直接可能にする計画で、企業がドメイン固有データにモデルを適応できるようにします。
  • Traditional ML algorithms: 従来の機械学習手法に関する追加作業が次期リリースで予定されています。
  • Expanded platform support: Livebook は Hugging Face Spaces を含む、より多くの環境へ移植中です。

コミュニティ参加

  • Bumblebee に新しいモデルアーキテクチャを追加する貢献は歓迎します。
  • コンパイラ作業、モデル構築、Elixir の並行エコシステムとの統合など、さまざまな機会があります。
  • 本プロジェクトは、Elixir における機械学習の“並行的、分散的、そして楽しい”未来を強調しています。

この発表は 2022 年 12 月 9 日に Hugging Face ブログに掲載されました。

Sources