Next-GPT:任意のマルチモーダルLLMShengqiong Wu、Hao Fei*、Leigang QU、Wei Ji、およびTat-Seng Chua。 (*対応 )
ICML 2024、オーラルペーパー
シンガポール国立大学コンピューティングスクール、次の++研究センター
このリポジトリは、入力を知覚し、テキスト、画像、ビデオ、およびオーディオなどの任意の組み合わせ(Any-to-a-to-and)で出力を生成する最初のエンドツーエンドMM-LLMであるNext - GPTのコード、データ、およびモデルの重みをホストします。
注意:以前の古いコードベースを次のGPTラガシーに包みます。すべてのトレーニングおよびチューニング手順については、この新しいコードベースを参照してください。
7b_tiva_v0で次のGPTのコードをリリースします。 ここでは、次のGPTから生成された例を紹介します。その他の例については、ウェブページまたはオンラインライブデモをご覧ください。
Next-GPTは、十分なエンドツーエンドの命令チューニングを備えた、既存の事前訓練を受けたLLM、マルチモーダルエンコーダー、SOTA拡散モデルの上に構築されています。

詳細については、ペーパーをご覧ください。
. |-- NExT-GPT-Lagacy # the previous version of the model |-- assets |-- checkpoints # save the pretraining and tuning checkpoints |-- data | |-- IT_data | | |-- MosIT_data | | |-- T+X-T_data # text+[image/audio/video] to text instruction data | | `-- T-T+X_data # synthesized text to text+[image/audio/video] instruction data | |-- T_X_pair_data # text-autio pairs data | | |-- audiocap | | |-- cc3m | | `-- webvid | |-- embed | `-- prepare_data.py |-- figures |-- merge_lora_weights.py |-- nextgpt | |-- __init__.py | |-- constants.py | |-- conversation.py | |-- dataset | | |-- __init__.py | | |-- audio_processor.py | | |-- base_dataset.py | | |-- catalog.py | | |-- concat_dataset.py | | |-- dataset_utils.py | | `-- sampler.py | |-- mm_utils.py | |-- model | | |-- __init__.py | | |-- apply_delta.py | | |-- builder.py | | |-- consolidate.py | | |-- language_model | | |-- make_delta.py | | |-- multimodal_decoder | | |-- multimodal_encoder | | |-- multimodal_projector | | |-- nextgpt_arch.py | | `-- utils.py | `-- utils.py |-- scripts | |-- finetune.sh | |-- pretrain_dec.sh | |-- pretrain_enc.sh | |-- zero2.json | |-- zero3.json | `-- zero3_offload.json |-- LICENSE.md |-- README.md |-- nextgpt_trainer.py |-- predict.py |-- preprocess_embeddings.py |-- requirements.txt |-- train.py |-- train_mem.py `-- training_utils.py最初にリポジトリをクローンして、必要な環境をインストールしてください。これは、次のコマンドを実行することで実行できます
conda env create -n nextgpt python=3.8 conda activate nextgpt # CUDA 12.1 conda install pytorch==2.1.2 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia git clone https://github.com/NExT-GPT/NExT-GPT.git cd NExT-GPT pip install -r requirements.txtNext-GPTは、優れた既存のモデルに基づいてトレーニングされています。チェックポイントを準備するために、指示に従ってください。
ImageBindは、統一された画像/ビデオ/オーディオエンコーダーです。事前に訓練されたチェックポイントは、ここからVersion hugeをダウンロードできます。その後、 imagebind_huge.pthファイルを[.pretrain_ckpt/imagebind]に配置します。Vicuna :先立ったVicunaを[ここ]から準備します。次に、事前に訓練されたモデルを[./pretrain_ckpt/vicuna-7b-v1.5/]に配置します。Image Diffusion画像を生成するために使用されます。 Next-GPTは、バージョンv2で安定した拡散を使用します。 (自動的にダウンロードされます)Audio Diffusion 。 Next-GPTは、バージョンl-fullでAudioldmを採用しています。 (自動的にダウンロードされます)Video Diffusion 。バージョンv2_576wでゼロスコープを使用しています。 (自動的にダウンロードされます)モデルトレーニングに使用される次のデータセットをダウンロードしてください:
a)Txペアデータ
CC3Mのテキストイメージペア、この指示に従ってください[こちら]。次に、[./data/t-x_pair_data/cc3m]にデータを配置します。WebVid 、[命令]を参照してください。ファイルは[./data/t-x_pair_data/webvid]に保存する必要があります。AudioCap 、[命令]を参照してください。 [./data/t-x_pair_data/audiocap]にデータを保存します。b)
T+XT
LLaVAここからダウンロードしてから[./data/it_data/t+x-t_data/llava]に置きます。Alpaca 、ここからダウンロードしてから[./data/it_data/t+x-t_data/alpaca/]に置きます。VideoChat 、ここからビデオ命令データをダウンロードしてから[./data/it_data/t+x-t_data/videochat/]に置きます。サイドノート:データセットをダウンロードした後、 prepare_data.pyを実行してデータセットを事前に処理してください。
T-X+T(T2M)
T-X+T命令データセット(T2M)は[./data/it_data/t-t+x_data]で保存されます。モジー
、信号トークンの表現とキャプションの間の距離を最小限に抑えます。時間とメモリのコストを節約するために、それぞれの拡散モデル内のテキストエンコーダを使用して、画像、オーディオ、ビデオキャプションのテキスト埋め込みを事前に計算します。
次の次のトレーニングの前にこのコマンドを実行してください。ここで、生成されたembeddingファイルが[./data/embed]に保存されます。
cd ./code/ python preprocess_embeddings.py ../data/T-X_pair_data/cc3m/cc3m_generation.json image ../data/embed/ stabilityai/stable-diffusion-2引数のメモ:
image 、 video 、 audioなどのモダリティ。まず最初に、全体的なモジュールの基本システム設定については、ベース構成ファイル[Training_utils.py]を参照してください。次のGPTトレーニング全体には、3つのステップが含まれます。
ステップ1 :エンコード側LLM中心のマルチモーダルアライメント。このステージは、ImageBind、LLM、出力投影層を凍結しながら、入力投影層を訓練します。
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shステップ2 :デコード側の命令に従うアライメント。このステージは、ImageBind、LLM、入力投影層を凍結しながら、出力投影層をトレーニングします。
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shステップ3 :命令チューニング。このステージ命令-Tune 1)LORAを介したLLM 、2)入力投影層、3)命令データセットの出力投影層。
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.sh、事前に訓練されたNext-GPTシステムをロードします。
ステップ1 : Frozen parametersをロードします。事前に訓練されたチェックポイントの準備3.1を参照してください。
ステップ2 : Tunable parametersをロードします。 ./checkpoints/nextgpt-v1.5-7bに次のgptシステムを置いてください。 1)自分で訓練されたParamsを使用するか、2)Huggingfaceからチェックポイントをダウンロードできます。
python predict.py経由で予測を実行できます。
python predict.py独自のデータセットを定義できます。Base_Dataset.pyを参照してから、 targetとparametersを含むCatalog.pyにデータセットcatalogを追加してください。
Training_utils.pyのモデル、データ、およびトレーニングパラメーターを事前に定義できます。独自のモデルを微調整するには、Finetune.shを参照してください。
ご質問やフィードバックについては、shengqiong wuとhao feiにお問い合わせください
nextgptが研究やアプリケーションで役立つと思う場合は、親切に引用してください:
@inproceedings{wu24next, title={{NE}x{T}-{GPT}: Any-to-Any Multimodal {LLM}}, author={Wu, Shengqiong and Fei, Hao and Qu, Leigang and Ji, Wei and Chua, Tat-Seng}, booktitle={Proceedings of the International Conference on Machine Learning}, pages = {53366--53397}, year={2024} }Framework and Code Repository、Vicuna、ImageBind、Stable Diffusion、Audioldm、およびZeroscopeの基礎として機能する関連作業を参照することができます。また、Pandagptからインスピレーションを部分的に引き出します。
Gill、Codi、Video-llama、Llava、およびMinigpt-4。彼らの素晴らしい作品をありがとう。
このリポジトリは、BSD 3-Clauseライセンスの下にあります。 Next-GPTは、非営利目的のみを目的とした研究プロジェクトです。違法、有害、暴力、人種差別主義者、または性的目的には、次のGPTのコードを使用してはなりません。これらのガイドラインに違反する可能性のあるアクティビティに関与することは厳密に禁止されています。このコードの潜在的な商業的使用は、著者によって承認されるべきです。