はじめに
AnyGPTは、音声、テキスト、画像、音楽など様々なモダリティを統一的に処理できるマルチモーダル言語モデルです。
この記事では、Dockerを使ってAnyGPTを簡単に実行する方法を初心者向けに解説します。
AnyGPTとは
AnyGPTは、次のような特徴を持つマルチモーダル言語モデルです。
- 音声、テキスト、画像、音楽の4つのモダリティをアライメントし、モダリティ間の変換とテキストとの対話が可能
- AnyInstructデータセットを使って学習することで、自由なマルチモーダル会話が可能
- 大規模言語モデル(LLM)を用いて、次トークン予測タスクによる統一的な学習を行う
つまり、AnyGPTは様々なモダリティのデータをひとつのモデルに圧縮することで、テキストベースのLLMにはない能力を発揮できるのです。
デモ動画
記事書きました!
AnyGPTをDockerで簡単に実行する方法Text-to-Image, TTS(random voice), Text-to-Musicやってみました!これは面白い
🔗https://t.co/J3BWXmYenf https://t.co/GX9WNGc4qs pic.twitter.com/SrYEgb3Rwx
— Maki@Sunwood AI Labs. (@hAru_mAki_ch) March 27, 2024
Dockerでの実行方法
前提条件
- Dockerがインストール済みであること
- GPUで実行する場合は、NVIDIA Container Toolkitもインストール済みであること
モデルの重み
AnyGPTを実行するには、以下のモデルの重みが必要です。
- AnyGPT-base: fnlp/AnyGPT-base
- AnyGPT-chat: fnlp/AnyGPT-chat
- SpeechTokenizerとSoundstorm: fnlp/AnyGPT-speech-modules
- SEED tokenizer: AILab-CVC/seed-tokenizer-2
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で実行して、その性能を体験してみてください。
コメント