🚀 論文「AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling」のベースモデル
AnyGPTは、音声、テキスト、画像、音楽などの様々なモダリティを統一的に処理するために離散表現を利用する、あらゆるモダリティ間の変換が可能なマルチモーダル言語モデルです。このベースモデルは4つのモダリティを整列させ、異なるモダリティとテキスト間の相互変換を可能にします。また、様々な生成モデルに基づいてAnyInstructデータセットを構築し、任意のモダリティ間変換の指示を含んでいます。このデータセットで訓練されたチャットモデルは、マルチモーダルデータを自由に挿入できるマルチモーダル会話が可能です。
🚀 クイックスタート
AnyGPTは、すべてのモダルデータを統一された離散表現に変換する生成的訓練スキームを提案し、次のトークン予測タスクを使用して大規模言語モデル(LLM)で統一的に訓練します。「圧縮は知能である」という観点から、Tokenizerの品質が十分に高く、LLMの困惑度(PPL)が十分に低い場合、インターネット上の膨大なマルチモーダルデータを同じモデルに圧縮し、純粋なテキストベースのLLMにはない能力を生み出すことが可能です。デモはプロジェクトページで確認できます。
✨ 主な機能
- 音声、テキスト、画像、音楽の4つのモダリティを統一的に処理し、モダリティ間の相互変換を可能にする。
- 自由なマルチモーダル会話が可能で、マルチモーダルデータを自由に挿入できる。
- 生成的訓練スキームを提案し、大規模言語モデルで統一的に訓練する。
📦 インストール
git clone https://github.com/OpenMOSS/AnyGPT.git
cd AnyGPT
conda create --name AnyGPT python=3.9
conda activate AnyGPT
pip install -r requirements.txt
💻 使用例
基本的な使用法
モデルの重みを確認するには、以下のリンクを参照してください。
SpeechTokenizerは音声のトークン化と再構築に使用され、Soundstormは副言語情報の完成に責任を持ち、SEED-tokenizerは画像のトークン化に使用されます。画像を再構築するためのunCLIP SD-UNetのモデル重みと、音楽のトークン化と再構築に使用されるEncodec-32kは自動的にダウンロードされます。
高度な使用法
ベースモデルのCLI推論
python anygpt/src/infer/cli_infer_base_model.py \
--model-name-or-path "path/to/AnyGPT-7B-base" \
--image-tokenizer-path models/seed-tokenizer-2/seed_quantizer.pt \
--speech-tokenizer-path "path/to/model" \
--speech-tokenizer-config "path/to/config" \
--soundstorm-path "path/to/model" \
--output-dir "infer_output/base"
例えば、以下のように実行できます。
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"
対話
ベースモデルは、テキストから画像への変換、画像のキャプション生成、自動音声認識(ASR)、ゼロショットテキストから音声への変換(TTS)、テキストから音楽への変換、音楽のキャプション生成などの様々なタスクを実行できます。特定の指示形式に従って推論を実行できます。
- テキストから画像への変換
text|image|{caption}
- 例:
text|image|A bustling medieval market scene with vendors selling exotic goods under colorful tents
- 画像のキャプション生成
image|text|{caption}
- 例:
image|text|static/infer/image/cat.jpg
- TTS(ランダムな声)
text|speech|{speech content}
- 例:
text|speech|I could be bounded in a nutshell and count myself a king of infinite space.
- ゼロショットTTS
text|speech|{speech content}|{voice prompt}
- 例:
text|speech|I could be bounded in a nutshell and count myself a king of infinite space.|static/infer/speech/voice_prompt1.wav/voice_prompt3.wav
- ASR
speech|text|{speech file path}
- 例:
speech|text|AnyGPT/static/infer/speech/voice_prompt2.wav
- テキストから音楽への変換
text|music|{caption}
- 例:
text|music|features an indie rock sound with distinct elements that evoke a dreamy, soothing atmosphere
- 音楽のキャプション生成
music|text|{music file path}
- 例:
music|text|static/infer/music/features an indie rock sound with distinct element.wav
⚠️ 重要提示
異なるタスクには、異なる言語モデルのデコード戦略を使用しています。画像、音声、音楽生成のデコード設定ファイルはそれぞれ config/image_generate_config.json
、config/speech_generate_config.json
、config/music_generate_config.json
にあります。他のモダリティからテキストへのデコード設定ファイルは config/text_generate_config.json
にあります。直接パラメータを変更または追加して、デコード戦略を変更できます。データと訓練リソースの制限により、モデルの生成はまだ不安定な場合があります。複数回生成したり、異なるデコード戦略を試してみることをお勧めします。音声と音楽の応答は .wav
ファイルに保存され、画像の応答は jpg
ファイルに保存されます。ファイル名はプロンプトと時間の連結になります。これらのファイルのパスは応答に表示されます。
🔧 技術詳細
事前学習
- 依存関係のインストール
cd FastChat
pip3 install -e ".[train]"
- 実行
srun --partition=llm_h --job-name=pretrain --gres=gpu:8 --quotatype=spot --ntasks=1 --ntasks-per-node=1 --cpus-per-task 100 --kill-on-bad-exit=1 bash scripts/stage1_pretrain.sh
「data」フォルダにいくつかのサンプルデータを用意しています。完全なデータセットをダウンロードするには、以下を参照してください。
- 画像データ: https://huggingface.co/datasets/zhanjun/AnyGPT-data-image
- t2iフォルダの2つのデータセットは高品質な画像データセットで、テキストから画像への生成の微調整に使用されます。
- 音声データ: https://huggingface.co/datasets/zhanjun/AnyGPT-data-speech
- 音楽データ: なし
- 指示データ: https://huggingface.co/datasets/zhanjun/Anygpt_data_instruction
これらのデータはマルチモーダルトークナイザーで前処理されています。
📄 ライセンス
AnyGPT
は LLaMA2 の元のライセンスの下でリリースされています。
謝辞
引用
AnyGPTとAnyInstructがあなたの研究やアプリケーションで役立つ場合、以下のように引用してください。
@article{zhan2024anygpt,
title={AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling},
author={Zhan, Jun and Dai, Junqi and Ye, Jiasheng and Zhou, Yunhua and Zhang, Dong and Liu, Zhigeng and Zhang, Xin and Yuan, Ruibin and Zhang, Ge and Li, Linyang and others},
journal={arXiv preprint arXiv:2402.12226},
year={2024}
}