Gradio-Lite: ブラウザ内で完全に動作するサーバーレス Gradio

Hugging Face は、Gradio-Lite (@gradio/lite) を発表しました。これは、ユーザーのウェブブラウザ内で完全に Gradio アプリケーションを実行できる JavaScript ライブラリです。Pyodide(WebAssembly 用の Python ランタイム)を活用することで、@gradio/lite はサーバーサイドインフラストラクチャの必要性をなくし、インタラクティブな機械学習アプリのサーバーレスデプロイを可能にします。

技術的アーキテクチャと実装

@gradio/lite は Pyodide を利用して、ブラウザ環境で直接 Python コードを実行します。このアーキテクチャにより、開発者は標準的な Python コードで Gradio アプリケーションを記述し、クライアント側でシームレスにレンダリングすることができます。

統合手順

Gradio-Lite アプリをデプロイするには、開発者は以下の3つの主要な手順に従います:

  1. アセットのインポート: CDN(例: jsDelivr)を介して @gradio/lite の JavaScript と CSS ファイルを含めます。
  2. コンテナの定義: HTML の body 内に <gradio-lite> タグを作成し、アプリをレンダリングする場所を指定します。theme 属性(例: theme="dark")を使用して、システムテーマをオーバーライドできます。
  3. Python コードの記述: Gradio の Python コードを <gradio-lite> タグ内に直接配置します。

高度な設定

@gradio/lite はシングルファイルスクリプトを超える複雑なアプリケーション構造をサポートします:

  • 複数ファイル: <gradio-file> タグを使用すると、開発者は複数のファイルを定義できます。アプリケーションのエントリポイントは entrypoint 属性でマークする必要があります。
  • 依存関係管理: micropip のラッパーを使用して、ブラウザでカスタムの Python 依存関係をインストールできます。依存関係は標準の requirements.txt 構文を使用して <gradio-requirements> タグ内にリストします。

ブラウザベース実行の主な利点

クライアントサイドで Gradio アプリケーションを実行すると、従来のサーバーベースホスティングと比較して3つの主要な利点があります:

  • Serverless Deployment: サーバーインフラストラクチャの必要性をなくし、ホスティングコストを削減し、共有プロセスを簡素化します。
  • Low Latency: クライアントとサーバー間でデータを転送する必要がないため、インタラクションが高速化され、ユーザー体験がよりスムーズになります。
  • Privacy and Security: すべてのデータ処理がユーザーのデバイス上でローカルに行われるため、ユーザーデータがプライベートかつ安全に保たれます。

現在の制限事項

サーバーレス実行の利点にもかかわらず、@gradio/lite には2つの主要な制約があります:

  • 初期ロード時間: アプリケーションは通常、初回ロード時に5〜15秒かかります。これは、ブラウザがまず Pyodide ランタイムをダウンロードしてインストールする必要があるためです。
  • パッケージ互換性: すべての Python パッケージがサポートされているわけではありません。numpyscikit-learntransformers-js などの人気ライブラリは互換性がありますが、開発者は特定の依存関係が Pyodide で利用可能か、または micropip を介してインストールできるかを確認する必要があります。

Sources