2 ポイント 投稿者 GN⁺ 2023-11-14 | 1件のコメント | WhatsAppで共有

Rust+Wasm スタック: Python の強力な代替

  • Rust+Wasm アプリケーションは Python と比べてサイズが 1/100、速度は 100 倍高速で、ハードウェアアクセラレーションをまったく変更せずにどこでも安全に実行できる。
  • Rust は AGI(汎用人工知能)のための言語であり、llama2 モデルを本来の速度で推論するシンプルな Rust プログラムを作成している。
  • Wasm にコンパイルされたバイナリアプリケーション(2MB)は、さまざまなハードウェアアクセラレータを備えたデバイス間で完全に移植可能である。
  • Wasm ランタイム(WasmEdge)は、クラウド環境で安全かつセキュアな実行環境を提供する。

Rust プログラムのインストールと実行

  • Step 1. WasmEdge と GGML プラグインのインストール: Linux または Mac デバイスで以下のコマンドを使用してインストールする。
  • Step 2. 事前ビルド済み Wasm アプリとモデルのダウンロード: llama2 モデルを GGUF 形式でダウンロードし、例として llama2 7B のチャットチューニングモデルを 5 ビット重みで量子化したバージョンをダウンロードする。
  • Step 3. 実行: WasmEdge を使用して wasm 推論アプリケーションを実行し、GGUF モデルを渡してモデルと会話するための質問を入力する。

モデル動作の設定

  • コマンドラインオプションを使って、モデルとの対話方法を設定できる。
  • たとえば、特定のコンテキスト長を指定し、各応答で予測する最大トークン数を設定し、統計を出力し、モデル応答を stdout にストリーミングするように設定できる。
  • このプログラムは低価格帯の M2 MacBook で毎秒約 25 トークンを生成する。

LLM エージェントとアプリ

  • Rust と WasmEdge を使って OpenAI 互換 API サーバーを構築する。
  • これにより、OpenAI 互換の開発ツールを使って LLM エージェントやアプリを作成できる。

Python の代わりに Rust+Wasm を使う利点

  • Rust+Wasm スタックは AI 推論アプリケーション向けの Python スタックに対する強力な代替であり、クラウドコンピューティングインフラを提供する。
  • 超軽量: 推論アプリケーションはすべての依存関係を含めてもわずか 2MB。
  • 非常に高速: 推論アプリケーションのあらゆる部分でネイティブ C/Rust 並みの速度を提供する。
  • 移植性: 同一の Wasm バイトコードアプリケーションは、異種のハードウェアアクセラレーションをサポートする主要な計算プラットフォームすべてで実行できる。
  • インストール、開発、デプロイが容易: 複雑な依存関係がなく、ノート PC 上で標準ツールを使って単一の Wasm ファイルをビルドし、どこへでもデプロイできる。
  • 安全でクラウド対応: Wasm ランタイムは信頼できないユーザーコードを分離するよう設計されており、コンテナツールで管理され、クラウドネイティブプラットフォームへ容易にデプロイできる。

Rust 推論プログラム

  • デモ用推論プログラムは Rust で書かれ、Wasm にコンパイルされる。
  • Rust のソースコードは非常にシンプルで、わずか 40 行のコードで構成されている。
  • Rust プログラムはユーザー入力を管理し、会話履歴を追跡し、テキストを llama2 のチャットテンプレートに変換し、WASI NN API を使って推論タスクを実行する。

クラウドまたはエッジでの実行

  • Wasm バイトコードファイルを用意すれば、WasmEdge ランタイムをサポートするあらゆるデバイスにデプロイできる。
  • WasmEdge は GGML プラグインとともにインストールされ、さまざまなハードウェアアクセラレーションを自動的に活用して llama2 モデルを実行する。

次のステップ

  • WasmEdge GGML ツールは現在すでに利用可能で、クラウドネイティブの顧客に使われているが、まだ初期段階にある。
  • オープンソースプロジェクトへの貢献や、将来の LLM 推論インフラの方向性形成に関心があるなら、貢献できる低レベルの作業がいくつかある。

他の AI モデル

  • WasmEdge と WASI NN は、Python の代替として軽量で高速、移植性が高く安全な推論アプリケーションを構築できる。
  • たとえば、mediapipe-rs プロジェクトは Google の mediapipe Tensorflow モデル向けに Rust+Wasm API を提供している。

GN⁺の見解

この記事で最も重要なのは、Rust と WebAssembly(Wasm)を使って AI 推論のための Python の代替を提示している点であり、サイズ、速度、移植性、セキュリティの面で顕著な利点をもたらすことです。この技術スタックはクラウドコンピューティングインフラを統合し、多様なデバイスやクラウド環境での性能を向上させ、複雑な依存関係の問題を解決し、開発とデプロイを簡素化する方法を提供します。このアプローチは特にエッジコンピューティングと AI 推論の未来に重要な影響を与える可能性があり、技術に関心のある人々にとって非常に興味深いテーマです。

1件のコメント

 
GN⁺ 2023-11-14
Hacker Newsのコメント
  • RustとWASMを支持しているとしながら、実際のコードはRustで書かれた基本的なコマンドラインスクリプトにすぎず、主要な処理はWASI-NNバックエンドを呼び出す1行のコードに依存していると指摘。しかもこのバックエンドはWasmEdgeランタイムが提供しており、WasmEdge自体はC++で書かれている。
  • アプリケーション開発者にとって、このプロジェクトは推論エンジンを配布可能なファイルとしてパッケージ化する最も簡単な方法を提供している。モデルの重みはすでに移動可能であり、必要に応じてダウンロードできる。
  • このプロジェクトは単に llama.cpp をラップしているだけではないかという疑問を呈しつつ、RustとWebGPUを使ったMLフレームワーク開発の経験を共有。
  • wasm-nn に依存するプロジェクトは実際には移植性がなく、特定のハードウェアのサポートがない場合は実行できない可能性があると指摘。これはWASIの目的に合致しない状況だとしている。
  • GGMLプラグインのMac OSビルドが、M1/M2/M3のニューラルエンジンではなくGPU上でMetal APIを用いて推論を実行するという記述の正確性に疑問を呈している。
  • トランスフォーマーアーキテクチャをエッジコンピューティングでより効率的かつ高速に実行する方法は開発されていくだろうが、VRAM要件が主要なボトルネックとなり、大規模モデルのロードは限界に達する可能性があると懸念。
  • このプロジェクトがオフライン状態のiPhoneで実行可能かどうかを質問。インターネット接続が不可能な状況では有用になりうる。
  • 他言語で書かれたラッパーを使って、サイズや速度の面で革新的であるかのようにマーケティングしていることへの批判を提示。実際には llama.cpp ベースのプロジェクトであり、推論速度やバイナリサイズはラッパーの選択によって制約されるものではない。
  • モデルの学習済み重みがサイズの大部分を占める場合、精度を失わずにどうやってサイズを削減できるのかと質問。
  • Rustソースコードの中核は非常にシンプルで、ユーザー入力の管理、会話履歴の追跡、テキストの llama2 チャットテンプレートへの変換、そしてWASI NN APIを使った推論実行を行う40行のコードで構成されている。