Next-GPT: Any-To-MultiModal LLMShengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji и Tat-Seng Chua. (*Переписка)
ICML 2024, пероральная бумага
Следующий исследовательский центр ++, Школа вычислительной техники, Национальный университет Сингапура
Этот репозиторий проводит код, данные и вес модели Next-GPT , первую сквозную MM-LLM, который воспринимает ввод и генерирует вывод в произвольных комбинациях (любой-любой) текста, изображения, видео и звука и за его пределами.
Отметом : мы завершаем бывшую старую кодовую базу в следующую-GPT-Lagacy. Пожалуйста, обратитесь к этой новой кодовой базе для всех процедур обучения и настройки.
7b_tiva_v0 . Здесь мы демонстрируем примеры, сгенерированные из следующего 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 - это Unified Image/Video/Audio Encoder. Предварительно обученная контрольная точка может быть загружена отсюда с версией huge . После этого поместите файл imagebind_huge.pth на [.pretrain_ckpt/imagebind].Vicuna : Подготовьте предварительную викуну от [здесь]. Затем поместите предварительно обученную модель на [./pretrain_ckpt/vicuna-7b-v1.5/].Image Diffusion используется для генерации изображений. Next-GPT использует стабильную диффузию с версией v2 . ( будет автоматически загружен )Audio Diffusion для производства аудиоконтента. Next GPT использует Audioldm с версией l-full . ( будет автоматически загружен )Video Diffusion для генерации видео. Мы используем Zeroscope с версией 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].Б) Данные инструкции
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].MOSIT
в тренировке выравнивания на стороне декодирования мы минимизируем расстояние между представлением сигнальных токенов и подписей. Чтобы сэкономить затраты на время и память, мы предварительно выпускаем текстовые встраиваемые встроения по подпивкам изображения, аудио и видео, используя текстовый энкодер в соответствующих моделях диффузии.
Пожалуйста, запустите эту команду перед следующей подготовкой следующего GPT, где производимый файл 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] для базовой системы системы общих модулей и конфигурации набора данных NextGPT/DataSet/catalog.py. Вся тренировка следующего GPT включает в себя 3 шага:
Step-1 : кодировка LLM-ориентированная мультимодальная выравнивание. На этом этапе тренируется входной проекционный слой, замораживая слой изображения, LLM, выводный проекционный слой.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shШаг-2 : декодирующее выравнивание на стороне. На этом этапе тренируется выходные проекционные слои , замораживая слои изображения, LLM, входные проекционные слои.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shШаг-3 : настройка инструкции. На этой стадии инструкция 1) LLM через LORA, 2) Проекционное слой ввода и 3) Выходной проекционный слой в наборе данных инструкции.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shсначала, загружая предварительно обученную систему следующей GPT.
Шаг-1 : нагрузка Frozen parameters . Пожалуйста, обратитесь к 3.1 Подготовка предварительно обученной контрольной точки.
Шаг-2 : Загрузите Tunable parameters . Пожалуйста, поместите следующую систему GPT по адресу ./checkpoints/nextgpt-v1.5-7b. Вы можете либо 1) использовать параметры, обученные самим собой, либо 2) загрузить наши контрольные точки с Huggingface.
после завершения загрузки контрольной точки, вы можете запустить прогноз через:
python predict.pyВы можете parameters свой собственный набор target , пожалуйста, см 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} }Вы можете ссылаться на соответствующую работу, которая служит основой для нашей структуры и репозитория кода, Vicuna, ImageBind, стабильной диффузии, Audioldm и Zeroscope. Мы также частично черпаем вдохновение в Pandagpt,
Джилл, Коди, Видео-Лама, Ллава и Минигпт-4. Спасибо за их замечательные работы.
Этот репозиторий находится под лицензией BSD 3-rack. Next GPT-это исследовательский проект, предназначенный только для некоммерческого использования. Нельзя использовать кодекс следующего GPT для любых незаконных, вредных, насильственных, расистских или сексуальных целей. Одно из них строго запрещено участвовать в любой деятельности, которая потенциально нарушает эти руководящие принципы. Любое потенциальное коммерческое использование этого кода должно быть одобрено авторами.