13
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ElixirAdvent Calendar 2023

Day 14

2023年末のElixirが出来ること⑤AI・LLM前編【Nx/Bumblebee】(最新Elixirのキャッチアップや、アドカレのネタ探しに読んでください)

Last updated at Posted at 2023-12-15

この記事は、Elixir Advent Calendar 2023 シリーズ9 の14日目です

昨日は、 @RyoWakabayashi さんで 「闘魂Elixir ── Advent of code 2023 Day 3 Part 2 を Livebook で楽しむ」 でした


piacere です、ご覧いただいてありがとございます :bow:

2023年末の時点で、Elixirにいったい何が出来るのかを紐解いていくシリーズで、前回は「④ Web/スマホ開発ライブラリ編」でしたが、今回は「⑤ AI・ML前編【Nx/Bumblebee】」です

なお、本コラムで紹介した内容は、あなたのスキルからBright(輝き)とRight(正しさ)を引き出すプロダクト「Bright」の「AI・MLエンジニア Elixir」スキルパネルに反映された上でアンロックされるので、お楽しみに :wink:

https://bright-fun.org
image.png

本シリーズの全体像は、下記になります

あと、このコラムが、面白かったり、役に立ったら、image.png をお願いします :bow:

Elixir AI・ML関連プロダクトのおさらい

中核である「Nx」を始めとするNxシリーズのレポジトリは、下記の通り、さまざまなOSSで構成されています

image.png

各OSSの機能と、Pythonで言うと何に相当するかは、下図の通りです

OSS名 機能 Pythonで言うと何?
Nx Elixirで行列/テンソルを扱う NumPy
EXLA NxでGPUやTPUを扱えるようにする
(Google XLAバインディング)
TensorFlow
PyTorch
TorchX NxでGPUやTPUを扱えるようにする
(PyTorchバインディング)
PyTorch
Axon Nxで下記の学習/予測を実現
・ニューラルネットワーク
・ディープラーニング
TensorFlow/Keras
PyTorch
TensorFlow Serving
AxonOnnx ONNXモデルをAxonモデルに変換 ONNX Runtime
Bumblebee 最新事前学習済モデルを利用可能に
・各種Hugginf Faceモデル
・Stable Diffusion
・Whisper
・BERT
・ResNet
・その他TensorFlowサポートモデル
各モデル毎に異なり、該当無し
(強いて言うならTensorFlow)
Scholar Nxで機械学習を実現 Scikit-learn
Polaris 最適化関数のオプティマイザ
・Adam
・SGD
・Lamb他
TensorFlow/Keras
PyTorch
Scikit-learn
Scidata 機械学習用サンプルデータの提供
・Irisデータセット
・MNISTデータセット
・CIFAR-10データセット他
scikit-learn
NxSignal Nxで信号処理 SciPy
Safetensors Pickleに変わる安全なデータ処理
※Hugging Faceモデルで常用
safetensors
Ortex ONNXモデルをNx.Servingで利用可能に ONNX Runtime
Livebook Web上でElixir開発する環境 JupyterNotebook
Colaboratory

うち、Livebookは本コラム続編の「⑥ Livebookアップデート編」で扱うので、今回、割愛します

また、上記Nxシリーズ以外にも、Nxを土台として使うライブラリには、下記があります

OSS名 機能 Pythonで言うと何?
EXGBoost Nx版XGBoost(究極の勾配ブースティング)
※Kaggleで上位入賞する機械学習アルゴリズム
xgboost
Explorer Nxでデータ加工を実現 Pandas
Evision Nxでの画像処理(OpenCVベース) opencv-python(cv2)
Image Nxでの画像処理(Vixベース) pyvips
PgvectorElixir Nxを使ったベクトルDBラッパー pgvector

Nx(EXLA/TorchXも梱包)/Axon/Ortex

Nx/EXLA/TorchXは、2022年1月が初出ですが、初期リリース時点から高い完成度で、その後のアップデートは、便利関数の追加や高速化/軽量化がほとんどでした

大きめのアップデートとしては、2022年12月の Nx.Serving の追加で、これはPythonのTensorFlow Servingとほぼ同等のモデルデプロイとクライアント/サーバ分離をもたらしつつ、同時にElixirの分散にも対応した、現行のElixir AI・MLの発展を支えています

Axon /AxonOnnxは2022年6月が初出で、Ortexは2023年5月が初出ですが、これらも初期リリースから実用的で素晴らしいプロダクトです

出来ること

  • NumPy並の行列/テンソル操作に、Elixir構文を組み合わせられる
  • Enumモジュールと同じようなラムダ関数で行列/テンソル操作ができる
  • ディープラーニング向け多層ニューラルネットワークをKeras同等に簡単に作れる
  • 損失関数や最適化関数など、ディープラーニングのためのパーツが揃っている
  • GPU/TPUでの高速学習が可能 … XLA(Accelerated Linear Algebra)/libtorch経由
  • Pythonで構築したONNXモデルをロードして、Elixir上で実行可能
  • Pythonでのディープラーニング開発とほぼ遜色無いか、それ以上の開発体験

全量は下記にあります

Bumblebee/Safetensors

Bumblebeeは、2022年12月が初出ですので、ほぼ今年のOSSと言って良いかと思います

バージョンアップのたびに、新たなモデルへの対応が追加されており、「Llama 2」「 Mistral 」のような生成AIの主戦場であるLLM(Large Langauge Model)も動きます

Hugging Faceが、ファイル形式を「ckpt(Pickel形式)」から「Safetensors(安全なデータ形式)」に統一したことに伴い、Bumblebeeでも対応していきました

出来ること

  • Hugging Face Hubから様々なモデルをダウンロードし、実行可能
    • Transformer/Attention系(生成AIの中核でもある)
      • テキストから画像生成
        • Stable Diffusion … ミュンヘン大学作、いわゆる「お絵描きAI」
      • 画像からテキスト生成
        • BLIP … Salesforce作、画像をテキストで情景説明できる
      • 音声からテキスト生成
        • Whisper … OpenAI作、音声をテキストに起こせる
      • テキストからテキスト生成
        • Llama 2 … Facebook作、ChatGPTの対抗馬と目される高速LLM
        • Mistral … Llama 2よりも高速なLLM
        • GPT2 … OpenAI作、ChatGPTのGPT3の前身
        • BART … BERTをRNNであるseq2seqで構成することで翻訳/要約を強化
      • テキスト翻訳/補完/要約
        • BERT … Google作、自然言語間を変換したり、穴埋めできる
        • RoBERTa … Facebook作、事前学習データ増加や長文学習で精度向上
        • XLM-RoBERTa … RoBERTaの多言語バージョン
        • ALBERT … BERTを軽量化することで少ないパラメータで高精度
        • DistilBERT … Hugging Face作、BERTより60%高速でパラメータ40%減
      • 画像分類
        • ViT … Google作、Transformerを自然言語処理から画像に転用
        • DeiT … Facebook作、ViTよりも少ないパラメータで学習できる
    • 非Transformer系(CNN/RNN/AE)
      • 画像分類
        • ResNet … CNNベースの画像分類としては高性能なモデル
        • ConvNeXt … CNNにViTの構造を模倣したハイブリッド

全量は下記にあります

最後に

Nx登場からのこの2年間は、Elixirが真にAI・MLおよびGPU対応していった激震の区間で、今となってはPython無しでもAI・MLプロダクト開発に不自由しないレベルへと進化しました

この先、LLM(Large Language Models) … すなわち「生成AI」の最新すらも、Elixirでビルドできる状況へと進行することも見えており、それは思ったよりも近い未来でしょう

次回は、「⑥ AI・LLM後編【Scholar/Explorer/Evison/EXGBoost】」 をお送りします


明日は、 私で 「2023年末のElixirが出来ること⑥AI・ML後編【Scholar/Explorer/Evison/EXGBoost】」 です

p.s.このコラムが、面白かったり、役に立ったら…

image.png にて、どうぞ応援よろしくお願いします :bow:

13
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?