AnyGPTをDockerで簡単に実行する方法

LLM

はじめに

AnyGPTは、音声、テキスト、画像、音楽など様々なモダリティを統一的に処理できるマルチモーダル言語モデルです。
この記事では、Dockerを使ってAnyGPTを簡単に実行する方法を初心者向けに解説します。

AnyGPTとは

AnyGPTは、次のような特徴を持つマルチモーダル言語モデルです。

  • 音声、テキスト、画像、音楽の4つのモダリティをアライメントし、モダリティ間の変換とテキストとの対話が可能
  • AnyInstructデータセットを使って学習することで、自由なマルチモーダル会話が可能
  • 大規模言語モデル(LLM)を用いて、次トークン予測タスクによる統一的な学習を行う

つまり、AnyGPTは様々なモダリティのデータをひとつのモデルに圧縮することで、テキストベースのLLMにはない能力を発揮できるのです。

デモ動画

Dockerでの実行方法

前提条件

  • Dockerがインストール済みであること
  • GPUで実行する場合は、NVIDIA Container Toolkitもインストール済みであること

モデルの重み

AnyGPTを実行するには、以下のモデルの重みが必要です。

SpeechTokenizerは音声のトークン化と再構成、Soundstormは言語的情報の補完、SEED tokenizerは画像のトークン化に使用されます。

画像再構成に使用されるunCLIP SD-UNetと、音楽のトークン化と再構成に使用されるEncodec-32kの重みは自動的にダウンロードされます。

手順

1. Dockerイメージのビルド

まず、以下のコマンドでDockerイメージをビルドします。

docker-compose up --build

2. モデルのダウンロード

次に、以下のコマンドでモデルをダウンロードします。

docker-compose run anygpt python /app/scripts/download_models.py

3. 推論の実行

最後に、以下のコマンドで推論を実行します。

docker-compose run anygpt python anygpt/src/infer/cli_infer_base_model.py \
  --model-name-or-path models/anygpt/base \
  --image-tokenizer-path models/seed-tokenizer-2/seed_quantizer.pt \
  --speech-tokenizer-path models/speechtokenizer/ckpt.dev \
  --speech-tokenizer-config models/speechtokenizer/config.json \
  --soundstorm-path models/soundstorm/speechtokenizer_soundstorm_mls.pt \
  --output-dir "infer_output/base"

推論結果は docker/infer_output/base ディレクトリに出力されます。

対話方法

AnyGPTのベースモデルは、以下のようなタスクを実行できます。

  • Text-to-Image: テキストから画像を生成
  • Image Caption: 画像のキャプション生成
  • Automatic Speech Recognition (ASR): 音声認識
  • Zero-shot Text-to-Speech (TTS): テキストから音声を生成
  • Text-to-Music: テキストから音楽を生成
  • Music Captioning: 音楽のキャプション生成

各タスクは、特定の命令フォーマットに従って推論を行います。例えば、

  • Text-to-Image: text|image|{caption}
  • Image Caption: image|text|{caption}
  • TTS(random voice): text|speech|{speech content}
  • Zero-shot TTS: text|speech|{speech content}|{voice prompt}
  • ASR: speech|text|{speech file path}
  • Text-to-Music: text|music|{caption}
  • Music Caption: music|text|{music file path}

より詳細な使用例はREADMEを参照してください。

トラブルシューティング

  • モデルのダウンロードに失敗する場合は、download_models.pyスクリプトを確認し、必要に応じてURLを更新してください。
  • 推論の実行に失敗する場合は、コマンドの引数を確認し、モデルのパスが正しいことを確認してください。

注意事項

  • モデルのダウンロードと推論の実行には、大量のメモリとディスク容量が必要です。十分なリソースを確保してから実行してください。

  • データとトレーニングリソースの制約により、モデルの生成はまだ不安定な場合があります。複数回の生成を試したり、異なるデコード戦略を試してみてください。

  • 音声と音楽のレスポンスは.wavファイルに、画像のレスポンスはjpgに保存されます。ファイル名はプロンプトと時刻を連結したものになります。これらのファイルへのパスはレスポンスに示されます。

まとめ

この記事では、DockerでAnyGPTを簡単に実行する方法を解説しました。モデルの重みを準備し、Dockerイメージのビルド、モデルのダウンロード、推論の実行という3つのステップを踏むだけで、初心者でもAnyGPTを試すことができます。

また、AnyGPTのベースモデルが実行できる様々なタスクと、それぞれの命令フォーマットについても説明しました。

AnyGPTは様々なモダリティを統一的に扱える強力なモデルです。ぜひこの機会にDockerで実行して、その性能を体験してみてください。

リポジトリ

GitHub - Sunwood-ai-labs/AnyGPT-JP: "AnyGPT: 離散シーケンスモデリングを用いた統一マルチモーダル大規模言語モデル" のコード
"AnyGPT: 離散シーケンスモデリングを用いた統一マルチモーダル大規模言語モデル" のコード. Contribute to Sunwood-ai-labs/AnyGPT-JP development by creating an account on GitHub.

コメント

タイトルとURLをコピーしました