Next-GPT: any-to any Multimodal LLMShengqiong Wu, Hao Fei *, Leigang Qu, Wei Ji et Tat-Seng Chua. (* Correspondance)
ICML 2024, papier oral
Next ++ Research Center, School of Computing, Université nationale de Singapour
Ce référentiel héberge le code, les données et le poids du modèle de Next-GPT , le premier MM-LLM de bout en bout qui perçoit l'entrée et génère la sortie dans des combinaisons arbitraires (tout-à-tout) du texte, de l'image, de la vidéo et de l'audio et au-delà.
Remarqué : Nous enroulons l'ancienne vieille base de code dans le prochain GPT-Lagacy. Veuillez vous référer à cette nouvelle base de code pour toutes les procédures de formation et de réglage.
7b_tiva_v0 . Ici, nous présentons des exemples générés à partir de Next-GPT. Pour plus d'exemples, veuillez visiter la page Web ou la démo en direct en ligne.
Next-GPT est construite au-dessus des modèles de diffusion LLM pré-formés existants, d'encodeur multimodal et de diffusion SOTA, avec un réglage d'instructions de bout en bout suffisant.

Pour plus de détails techniques, veuillez consulter le document.
. |-- 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 est formée en fonction de l'excellent modèle existant. Veuillez suivre les instructions pour préparer les points de contrôle.
ImageBind est l'encodeur d'image / vidéo / audio unifié. Le point de contrôle pré-formé peut être téléchargé à partir d'ici avec une version huge . Ensuite, mettez le fichier imagebind_huge.pth sur [.pretrain_ckpt / imagebind].Vicuna : Préparez la vicuna pré-entraînée de [ici]. Ensuite, mettez le modèle pré-formé sur [./pretrain_ckpt/vicuna-7b-v1.5/].Image Diffusion est utilisée pour générer des images. Next-GPT utilise une diffusion stable avec la version v2 . ( sera automatiquement téléchargé )Audio Diffusion pour la production de contenu audio. Next-GPT utilise Audioldm avec la version l-full . ( sera automatiquement téléchargé )Video Diffusion pour la génération vidéo. Nous utilisons le zéroscope avec la version v2_576w . ( sera automatiquement téléchargé )Veuillez télécharger les ensembles de données suivants utilisés pour la formation du modèle:
a) Données de paires TX
CC3M de paires d'image texte , veuillez suivre cette instruction [ici]. Mettez ensuite les données sur [./data/t-x_pair_data/cc3m].WebVid des paires de Text-Video , voir [Instruction]. Le fichier doit être enregistré sur [./data/t-x_pair_data/webvid].AudioCap des paires de texte-audio , voir [l'instruction]. Enregistrez les données dans [./data/t-x_pair_data/audiocap].B) Données d'instruction
T + XT
LLaVA des données d'instructions visuelles , téléchargez-les à partir d'ici, puis mettez-les sur [./data/it_data/t+x-t_data/llava].Alpaca des données d'instruction textuelle , téléchargez-les à partir d'ici, puis mettez-les sur [./data/it_data/t+x-t_data/alpaca/].VideoChat , téléchargez les données d'instructions vidéo ici, puis mettez-les sur [./data/it_data/t+x-t_data/videochat/].Remarque latérale: Après avoir téléchargé l'ensemble de données, veuillez exécuter prepare_data.py pour prétraiter l'ensemble de données.
T-X + T (T2M)
T-X+T (T2M) sont enregistrés sur [./data/it_data/t-t+x_data].MOSIT
dans la formation d'alignement côté décodage, nous minimisons la distance entre la représentation des jetons et des légendes du signal. Pour économiser des coûts de temps et de mémoire, nous précompute les incorporations de texte pour les légendes de l'image, de l'audio et de la vidéo à l'aide de l'encodeur de texte dans les modèles de diffusion respectifs.
Veuillez exécuter cette commande avant la formation suivante de Next-GPT, où le fichier embedding produit sera enregistré sur [./data/embed].
cd ./code/ python preprocess_embeddings.py ../data/T-X_pair_data/cc3m/cc3m_generation.json image ../data/embed/ stabilityai/stable-diffusion-2Remarque des arguments:
image , video et audio ;Tout d'abord, veuillez vous référer au fichier de configuration de base [Training_Utils.py] pour le réglage du système de base des modules globaux et la configuration de l'ensemble de données NextGPT / DataSet / Catalog.py. L'ensemble de la formation Next-GPT implique 3 étapes:
Étape 1 : Alignement multimodal centré sur LLM côté LLM. Cette étape entraîne la couche de projection d'entrée tout en gelant la couche de projection de sortie ImageBind, LLM.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shÉtape 2 : Alignement de suivi des instructions côté décodage. Cette étape entraîne les couches de projection de sortie tout en gelant les couches de projection ImageBind, LLM, d'entrée.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shÉtape 3 : réglage des instructions. Cette étape d'instruction 1) la LLM via LORA, 2) la couche de projection d'entrée et 3) la couche de projection de sortie sur l'ensemble de données d'instructions.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shd'abord les points de contrôle, en chargeant le système pré-formé Next-GPT.
Étape 1 : Chargez Frozen parameters . Veuillez vous référer au 3.1 Préparation du point de contrôle pré-formé.
Étape-2 : Chargez Tunable parameters . Veuillez mettre le système Next-GPT sur ./Checkpoints/NextGPT-V1.5-7B. Vous pouvez soit 1) utiliser les paramètres formés vous-même, ou 2) télécharger nos points de contrôle depuis HuggingFace.
à la fin du chargement du point de contrôle, vous pouvez exécuter la prédiction via:
python predict.pyVous pouvez définir votre propre ensemble de données, veuillez vous référer à la base_dataset.py, puis ajouter le catalog jeu de données dans catalog.py, y compris la target et parameters .
vous pouvez prédéfinir le modèle, les données et les paramètres de formation dans Training_Utils.py. Veuillez référer le Finetune.sh pour affiner votre propre modèle.
pour toute question ou commentaire, n'hésitez pas à contacter Shengqiong Wu et Hao Fei.
Si vous trouvez NextGpt utile dans vos recherches ou applications, veuillez citer:
@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} }Vous pouvez vous référer à des travaux connexes qui servent de fondements pour notre cadre et notre référentiel de code, Vicuna, ImageBind, STABLE Diffusion, Audioldm et Zeroscope. Nous nous inspirons également partiellement de Pandagpt,
Gill, codi, vidéo-llama, llava et minigpt-4. Merci pour leurs merveilleuses œuvres.
Ce référentiel est sous la licence BSD 3 clause. Next-GPT est un projet de recherche destiné à une utilisation non commerciale uniquement. Il ne faut pas utiliser le code de Next-GPT à des fins illégales, nuisibles, violentes, racistes ou sexuelles. On est strictement interdit de se livrer à toute activité qui violera potentiellement ces directives. Toute utilisation commerciale potentielle de ce code doit être approuvée par les auteurs.