Next-GPT: LLM multimodal de cualquieraShengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji y Tat-Seng Chua. (*Correspondencia)
ICML 2024, papel oral
Next ++ Centro de investigación, Escuela de Computación, Universidad Nacional de Singapur
Este repositorio aloja el código, los datos y el peso del modelo de Next-GPT , el primer MM-LLM de extremo a extremo que percibe la entrada y genera salida en combinaciones arbitrarias (de cualquier manera) de texto, imagen, video y audio y más allá.
Notado : envolvemos la antigua base de código antigua en la siguiente-lagacy de GPT. Consulte esta nueva base de código para todos los procedimientos de capacitación y ajuste.
7b_tiva_v0 . Aquí mostramos ejemplos generados a partir de Next-GPT. Para obtener más ejemplos, visite la página web o la demostración en vivo en línea.
Next-GPT se construye sobre LLM previamente capacitada existente, codificador multimodal y modelos de difusión SOTA, con suficiente ajuste de instrucciones de extremo a extremo.

Para obtener más detalles técnicos, consulte el documento.
. |-- 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.pyPrimero clone el repositorio e instale el entorno requerido, que se puede hacer ejecutando los siguientes comandos:
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.txtel próximo GPT está entrenado en función de los siguientes modelos existentes. Siga las instrucciones para preparar los puntos de control.
ImageBind es el codificador de imagen/video/audio unificado. El punto de control previamente entrenado se puede descargar desde aquí con la versión huge . Posteriormente, coloque el archivo imagebind_huge.pth en [.Pretrain_CKPT/ImageBind].Vicuna : Prepare la vicuna previa a la aparición de [aquí]. Luego coloque el modelo previamente entrenado en [./pretrain_ckpt/vicuna-7b-v1.5/].Image Diffusion se usa para generar imágenes. Next-GPT usa difusión estable con la versión v2 . ( se descargará automáticamente )Audio Diffusion para producir contenido de audio. Next-GPT emplea Audioldm con la versión l-full . ( se descargará automáticamente )Video Diffusion para la generación de videos. Empleamos Zeroscope con la versión v2_576w . ( se descargará automáticamente )Descargue los siguientes conjuntos de datos utilizados para la capacitación del modelo:
a) TX Pares Datos
CC3M de pares de imágenes de texto , siga esta instrucción [aquí]. Luego coloque los datos en [./data/t-x_pair_data/cc3m].WebVid of Text-Video , consulte la [Instrucción]. El archivo debe guardar en [./data/t-x_pair_data/webvid].AudioCap de los pares de texto de texto , consulte la [instrucción]. Guarde los datos en [./data/t-x_pair_data/audiocap].B) Datos de instrucciones
T+XT
LLaVA de los datos de instrucciones visuales , descargarlos desde aquí y luego ponerlo en [./data/it_data/t+x-t_data/llava].Alpaca de los datos de instrucciones textuales , descárguelo desde aquí y luego póngalo en [./data/it_data/t+x-t_data/alpaca/].VideoChat , descargue los datos de instrucciones de video aquí y luego póngalos en [./data/it_data/t+x-t_data/videochat/].Nota al margen: Después de descargar el conjunto de datos, ejecute prepare_data.py para preprocesar el conjunto de datos.
T-X+T (T2M)
T-X+T (T2M) se guardan en [./data/IT_DATA/T-T-T+X_DATA].Mosit
en el entrenamiento de alineación del lado de la decodificación, minimizamos la distancia entre la representación de tokens y subtítulos de señal. Para ahorrar costos de tiempo y memoria, precomputamos los incrustaciones de texto para subtítulos de imagen, audio y video utilizando el codificador de texto dentro de los modelos de difusión respectivos.
Ejecute este comando antes de la siguiente capacitación de Next-GPT, donde el archivo embedding producido se guardará en [./data/embed].
cd ./code/ python preprocess_embeddings.py ../data/T-X_pair_data/cc3m/cc3m_generation.json image ../data/embed/ stabilityai/stable-diffusion-2Nota de argumentos:
image , video y audio ;En primer lugar, consulte el archivo de configuración base [Training_utils.py] para la configuración básica del sistema de los módulos generales y la configuración del conjunto de datos NextGPT/DataSet/Catalog.py. Todo el entrenamiento de Next GPT implica 3 pasos:
Paso 1 : Alineación multimodal centrada en el lado de la codificación LLM. Esta etapa entrena la capa de proyección de entrada mientras congela la capa de proyección de salida de ImageBind, LLM.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shPaso 2 : Alineación de seguimiento de instrucciones del lado de decodificación. Esta etapa entrena las capas de proyección de salida mientras congela las capas de proyección de entrada de ImageBind, LLM.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shPaso-3 : ajuste de instrucciones. Esta etapa de instrucción Tune 1) LLM a través de Lora, 2) capa de proyección de entrada y 3) capa de proyección de salida en el conjunto de datos de instrucciones.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shprimero, cargando el sistema de Next-GPT previamente capacitado.
Paso 1 : Cargue Frozen parameters . Consulte 3.1 Preparación del punto de control previamente capacitado.
Paso-2 : Cargar Tunable parameters . Ponga el próximo sistema GPT en ./checkpoints/nextgpt-v1.5-7b. Puede 1) usar los parámetros entrenados, o 2) descargue nuestros puntos de control de Huggingface.
al finalizar la carga del punto de control, puede ejecutar la predicción a través de:
python predict.pyPuede definir su propio conjunto de datos, consulte el base_dataset.py y luego agregar el catalog del conjunto de datos en Catalog.py, incluido el target y parameters .
Puede definir el modelo, los datos y los parámetros de entrenamiento en Training_utils.py. Consulte Finetune.sh para ajustar su propio modelo.
con cualquier pregunta o retroalimentación, no dude en comunicarse con Shengqiong Wu y Hao Fei.
Si encuentra que NextGPT es útil en su investigación o aplicaciones, por favor cita:
@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} }Puede consultar el trabajo relacionado que sirva como fundamentos para nuestro marco y repositorio de código, vicuna, imagen de imagen, difusión estable, audioldm y zeroscope. También nos inspiramos parcialmente en Pandagpt,
Gill, Codi, Video-Llama, Llava y Minigpt-4. Gracias por sus maravillosas obras.
Este repositorio está bajo la licencia BSD 3 cláusula. Next-GPT es un proyecto de investigación destinado solo a uso no comercial. No se debe usar el código de Next-GPT para fines ilegales, dañinos, violentos, racistas o sexuales. Uno está estrictamente prohibido participar en cualquier actividad que potencialmente viole estas pautas. Cualquier uso comercial potencial de este código debe ser aprobado por los autores.