Next-GPT: LLM multimodal apa sajaShengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji, dan Tat-Seng Chua. (*Korespondensi)
ICML 2024, kertas oral
Pusat Penelitian Next ++, Sekolah Komputasi, Universitas Nasional Singapura
Repositori ini meng-host kode, data, dan berat model -GPT berikutnya , MM-LLM ujung-ke-ujung pertama yang merasakan input dan menghasilkan output dalam kombinasi sewenang-wenang (apa saja) dari teks, gambar, video, dan audio dan seterusnya.
Tercatat : Kami membungkus basis kode lama sebelumnya ke dalam-lagacy berikutnya. Silakan merujuk pada basis kode baru ini untuk semua prosedur pelatihan dan tuning.
7b_tiva_v0 . Di sini kami menampilkan contoh-contoh yang dihasilkan dari GPT berikutnya. Untuk contoh lebih lanjut, kunjungi halaman web, atau demo langsung online.
Next-GPT dibangun di atas LLM pra-terlatih, encoder multimodal dan model difusi SOTA, dengan penyetelan instruksi end-to-end yang cukup.

Untuk detail teknis lebih lanjut, rujuk ke makalah ini.
. |-- 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.pySilakan klon terlebih dahulu repo dan pasang lingkungan yang diperlukan, yang dapat dilakukan dengan menjalankan perintah berikut:
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 dilatih berdasarkan mengikuti model yang ada yang sangat baik. Harap ikuti instruksi untuk menyiapkan pos pemeriksaan.
ImageBind adalah encoder gambar/video/audio terpadu. Pos Pemeriksaan yang terlatih dapat diunduh dari sini dengan versi huge . Setelah itu, letakkan file imagebind_huge.pth di [.praRain_ckpt/ImageBind].Vicuna : Siapkan vicuna pretrain dari [di sini]. Kemudian letakkan model pra-terlatih di [./prain_ckpt/vicuna-7b-v1.5/].Image Diffusion digunakan untuk menghasilkan gambar. Next-GPT menggunakan difusi stabil dengan versi v2 . ( akan diunduh secara otomatis )Audio Diffusion untuk memproduksi konten audio. Next-GPT mempekerjakan audiOldm dengan versi l-full . ( Akan diunduh secara otomatis )Video Diffusion untuk pembuatan video. Kami menggunakan Zeroscope dengan versi v2_576w . ( akan diunduh secara otomatis )Silakan unduh dataset berikut yang digunakan untuk pelatihan model:
a) TX pasangan data
CC3M dari pasangan gambar teks , silakan ikuti instruksi ini [di sini]. Kemudian letakkan data di [./data/t-x_pair_data/cc3m].WebVid dari pasangan teks-video , lihat [instruksi]. File harus disimpan di [./data/t-x_pair_data/webvid].AudioCap pasangan teks-audio , lihat [instruksi]. Simpan data di [./data/t-x_pair_data/audiocap].B) Data instruksi
T+xt
LLaVA dari data instruksi visual , unduh dari sini, dan kemudian letakkan di [./data/it_data/t+x-t_data/llava].Alpaca dari data instruksi tekstual , unduh dari sini, dan kemudian letakkan di [./data/it_data/t+x-t_data/alpaca/].VideoChat , unduh data instruksi video di sini, lalu letakkan di [./data/it_data/t+x-t_data/videochat/].Catatan samping : Setelah mengunduh dataset, silakan jalankan prepare_data.py untuk preprocess dataset.
T-X+T (T2M)
T-X+T (T2M) disimpan di [./data/it_data/t-t+x_data].Mosit
dalam pelatihan penyelarasan sisi decoding, kami meminimalkan jarak antara representasi token sinyal dan keterangan. Untuk menghemat biaya waktu dan memori, kami mengkomputasi embeddings teks untuk keterangan gambar, audio dan video menggunakan encoder teks dalam model difusi masing -masing.
Harap jalankan perintah ini sebelum pelatihan-GPT berikutnya berikut, di mana file embedding yang diproduksi akan disimpan di [./data/embed].
cd ./code/ python preprocess_embeddings.py ../data/T-X_pair_data/cc3m/cc3m_generation.json image ../data/embed/ stabilityai/stable-diffusion-2Catatan argumen:
image , video , dan audio ;Pertama-tama, silakan merujuk ke file konfigurasi dasar [pelatihan_utils.py] untuk pengaturan sistem dasar modul keseluruhan, dan konfigurasi dataset NextGpt/dataset/catalog.py. Seluruh pelatihan GPT berikutnya melibatkan 3 langkah:
Langkah-1 : Penyelar Multimodal LLM-Side-Side. Tahap ini melatih lapisan proyeksi input sambil membekukan Lapisan Proyeksi ImageBind, LLM, output.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shLangkah-2 : Penyelarasan mengikuti instruksi-sisi decoding. Tahap ini melatih lapisan proyeksi output sambil membekukan Lapisan Proyeksi Input ImageBind, LLM.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shLangkah-3 : Penyetelan instruksi. Instruksi tahap ini-Tune 1) LLM via LORA, 2) Lapisan proyeksi input dan 3) output proyeksi lapisan pada dataset instruksi.
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shterlebih dahulu, memuat sistem GPT berikutnya yang sudah terlatih.
Langkah-1 : Muat Frozen parameters . Silakan merujuk ke 3.1 Mempersiapkan pos pemeriksaan pra-terlatih.
Langkah-2 : Muat Tunable parameters . Harap letakkan sistem GPT berikutnya di ./checkpoints/nextgpt-v1.5-7b. Anda dapat 1) menggunakan params yang dilatih sendiri, atau 2) Unduh pos pemeriksaan kami dari Huggingface.
setelah menyelesaikan pemuatan pos pemeriksaan, Anda dapat menjalankan prediksi melalui:
python predict.pyAnda dapat mendefinisikan dataset Anda sendiri, silakan merujuk ke base_dataset.py, dan kemudian menambahkan catalog dataset di katalog.py, termasuk target dan parameters .
Anda dapat mendefinisikan pra-mendefinisikan parameter model, data, dan pelatihan di pelatihan_utils.py. Silakan merujuk finetune.sh karena menyempurnakan model Anda sendiri.
pertanyaan atau umpan balik, jangan ragu untuk menghubungi Shengqiong Wu dan Hao Fei.
Jika Anda menemukan NextGPT berguna dalam penelitian atau aplikasi Anda, silakan kutip:
@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} }Anda dapat merujuk pada karya terkait yang berfungsi sebagai dasar untuk kerangka kerja dan repositori kode kami, vicuna, ImageBind, difusi stabil, audioldm, dan zeroscope. Kami juga sebagian menarik inspirasi dari pandagpt,
Gill, codi, video-llama, llava, dan minigpt-4. Terima kasih atas pekerjaan mereka yang luar biasa.
Repositori ini berada di bawah lisensi BSD 3-Clause. Next-GPT adalah proyek penelitian yang dimaksudkan hanya untuk penggunaan non-komersial. Seseorang tidak boleh menggunakan Kode GPT berikutnya untuk tujuan ilegal, berbahaya, kejam, rasis, atau seksual. Salah satunya dilarang keras terlibat dalam kegiatan apa pun yang berpotensi melanggar pedoman ini. Potensi penggunaan komersial kode ini harus disetujui oleh penulis.