Próximo-GPT: qualquer LLM multimodal qualquerShengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji e Tat-Seng Chua. (*Correspondência)
ICML 2024, papel oral
Next ++ Research Center, Escola de Computação, Universidade Nacional de Cingapura
Este repositório hospeda o código, dados e peso do modelo do próximo-GPT , o primeiro MM-LLM de ponta a ponta que percebe a entrada e gera saída em combinações arbitrárias (em qualquer qualquer) de texto, imagem, vídeo e áudio e além.
Observado : envolvemos a antiga base de código na próxima lagacia do GPT. Consulte esta nova base de código para todos os procedimentos de treinamento e ajuste.
7b_tiva_v0 . Aqui, mostramos exemplos gerados no Next-GPT. Para mais exemplos, visite a página da web ou a demonstração ao vivo online.
O Next-GPT é construído sobre os modelos existentes de LLM pré-treinado, codificador multimodal e difusão SOTA, com ajuste de instrução de ponta a ponta suficiente.

Para detalhes mais técnicos, consulte o artigo.
. |-- 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.pyPor favor, clone primeiro o repositório e instale o ambiente necessário, o que pode ser feito executando os seguintes 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.txtO próximo-GPT é treinado com base no seguinte excelentes modelos existentes. Siga as instruções para preparar os pontos de verificação.
ImageBind é o codificador de imagem/vídeo/áudio unificado. O ponto de verificação pré-treinado pode ser baixado aqui com a versão huge . Posteriormente, coloque o arquivo imagebind_huge.pth em [.Pretrain_CKPT/ImageBind].Vicuna : Prepare o Vicuna pré -treinado a partir de [aqui]. Em seguida, coloque o modelo pré-treinado em [./pretrain_ckpt/vicuna-7b-v1.5/].Image Diffusion é usada para gerar imagens. O próximo-GPT usa difusão estável com a versão v2 . ( será baixado automaticamente )Audio Diffusion para produzir conteúdo de áudio. O Next-GPT emprega o Audioldm com a versão l-full . ( será baixado automaticamente )Video Diffusion para a geração de vídeo. Empregamos o Zeroscópio com a versão v2_576w . ( será baixado automaticamente )Faça o download dos seguintes conjuntos de dados usados para treinamento de modelos:
a) TX pares dados
CC3M de pares de imagem de texto , siga esta instrução [aqui]. Em seguida, coloque os dados em [./data/t-x_pair_data/cc3m].WebVid de pares de texto-video , consulte a [instrução]. O arquivo deve ser salvo em [./data/t-x_pair_data/webvid].AudioCap de pares de texto-Audio , consulte a [instrução]. Salve os dados em [./data/t-x_pair_data/audiocap].B) Dados de instrução
t+xt
LLaVA dos dados de instruções visuais , baixe-os aqui e coloque-os em [./data/it_data/t+x-t_data/llava].Alpaca dos dados de instrução textual , faça o download daqui e, em seguida, coloque-os em [./data/it_data/t+x-t_data/alpaca/].VideoChat , faça o download dos dados de instruções de vídeo aqui e, em seguida, coloque-os em [./data/it_data/t+x-t_data/videochat/].Nota lateral: Após o download do conjunto de dados, execute prepare_data.py para pré -processar o conjunto de dados.
T-X+T (T2M)
T-X+T (T2M) são salvos em [./data/it_data/t-t+x_data].Mosit
No treinamento de alinhamento do lado da decodificação, minimizamos a distância entre a representação de tokens e legendas de sinal. Para economizar custos de tempo e memória, pré -computamos as incorporações de texto para legendas de imagem, áudio e vídeo usando o codificador de texto nos respectivos modelos de difusão.
Execute este comando antes do treinamento seguinte do Next-GPT, onde o arquivo embedding produzido será salvo em [./data/embed].
cd ./code/ python preprocess_embeddings.py ../data/T-X_pair_data/cc3m/cc3m_generation.json image ../data/embed/ stabilityai/stable-diffusion-2Nota dos argumentos:
image , video e audio ;Primeiro de tudo, consulte o arquivo de configuração base [TREINA_UTILS.PY] para obter a configuração do sistema básico dos módulos gerais e a configuração do conjunto de dados NextGPT/DataSeT/catalog.py. Todo o treinamento do próximo GPT envolve 3 etapas:
Etapa-1 : Alinhamento multimodal centrado no lado da codificação LLM. Este estágio treina a camada de projeção de entrada enquanto congela o ImageBind, LLM, camada de projeção de saída.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shEtapa 2 : Alinhamento de seguidores do lado da decodificação. Este estágio treina as camadas de projeção de saída enquanto congelam o ImageBind, LLM, camadas de projeção de entrada.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shEtapa 3 : ajuste de instrução. Esta instrução de estágio-ajuste 1) o LLM via Lora, 2) Camada de projeção de entrada e 3) camada de projeção de saída no conjunto de dados de instruções.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shprimeiro, carregando o sistema Próximo-GPT pré-treinado.
Etapa 1 : Carregue Frozen parameters . Consulte 3.1 Preparando o ponto de verificação pré-treinado.
Etapa 2 : Carregar Tunable parameters . Coloque o sistema Next-GPT em ./checkpoints/nextgpt-v1.5-7b. Você pode 1) usar os parâmetros treinados ou 2) baixar nossos pontos de verificação do huggingface.
após a conclusão do carregamento do ponto de verificação, você pode executar a previsão via:
python predict.pyVocê pode definir seu próprio conjunto de dados, consulte o Base_dataset.py e adicione o catalog do conjunto de dados no catalog.py, incluindo o target e parameters .
Você pode predefinir os parâmetros de modelo, dados e treinamento em treinamento em treinamento_utils.py. Consulte o Finetune.sh para ajustar seu próprio modelo.
com qualquer dúvida ou feedback, entre em contato com Shengqiong Wu e Hao Fei.
Se você achar o NextGPT útil em sua pesquisa ou aplicativos, cite gentilmente:
@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} }Você pode consultar um trabalho relacionado que serve como funda para nossa estrutura e repositório de código, vicuna, imagebind, difusão estável, audioldm e zeroscópio. Também inspiramos parcialmente de Pandagpt,
Gill, Codi, Video-Llama, Llava e Minigpt-4. Obrigado por seus trabalhos maravilhosos.
Este repositório está sob licença de 3-cláusulas BSD. O Next-GPT é um projeto de pesquisa destinado apenas ao uso não comercial. Não se deve usar o código do próximo GPT para fins ilegais, prejudiciais, violentos, racistas ou sexuais. Um é estritamente proibido de se envolver em qualquer atividade que potencialmente viole essas diretrizes. Qualquer uso comercial potencial deste código deve ser aprovado pelos autores.