Next-GPT: LLM แบบหลายรูปแบบใด ๆShengqiong Wu, Hao Fei*, Leigang Qu, Wei Ji และ Tat-Seng Chua (*สารบรรณ)
ICML 2024 กระดาษปาก
ศูนย์วิจัยถัดไป ++, โรงเรียนคอมพิวเตอร์, มหาวิทยาลัยแห่งชาติสิงคโปร์
ที่เก็บนี้โฮสต์รหัสข้อมูลและน้ำหนักรุ่นของ GPT Next-GPT ซึ่งเป็น MM-LLM แบบ end-to-end แรกที่รับรู้อินพุตและสร้างเอาต์พุตในชุดค่าผสมโดยพลการ (ใด ๆ ) ของข้อความรูปภาพวิดีโอและเสียงและอื่น ๆ
ระบุไว้ : เราห่อ codebase เก่าในอดีตลงใน gpt-lagacy ถัดไป โปรดดู codebase ใหม่นี้สำหรับขั้นตอนการฝึกอบรมและการปรับแต่งทั้งหมด
7b_tiva_v0 ที่นี่เราแสดงตัวอย่างที่สร้างขึ้นจาก Next-GPT สำหรับตัวอย่างเพิ่มเติมโปรดไปที่หน้าเว็บหรือการสาธิตสดออนไลน์
Next-GPT ถูกสร้างขึ้นบน LLM ที่ผ่านการฝึกอบรมมาแล้วที่ผ่านการฝึกอบรมมาก่อน, ตัวเข้ารหัสแบบหลายรูปแบบและแบบจำลอง SOTA ที่มีการปรับแต่งการเรียนการสอนแบบ end-to-end เพียงพอ

สำหรับรายละเอียดทางเทคนิคเพิ่มเติมโปรดอ้างถึงกระดาษ
. |-- 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โปรดโคลน repo ก่อนและติดตั้งสภาพแวดล้อมที่ต้องการซึ่งสามารถทำได้โดยการเรียกใช้คำสั่งต่อไปนี้:
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 เป็นตัวเข้ารหัสภาพ/วิดีโอ/เสียงที่รวมเป็นแบบรวม จุดตรวจสอบที่ผ่านการฝึกอบรมมาก่อนสามารถดาวน์โหลดได้จากที่นี่ด้วยเวอร์ชัน huge หลังจากนั้นใส่ไฟล์ imagebind_huge.pth ที่ [.pretrain_ckpt/imageBind]Vicuna : เตรียม 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]b) ข้อมูลคำสั่ง
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]]
ในการฝึกอบรมการจัดตำแหน่งด้านการถอดรหัสเราลดระยะห่างระหว่างการเป็นตัวแทนของโทเค็นสัญญาณและคำอธิบายภาพ เพื่อประหยัดค่าใช้จ่ายของเวลาและหน่วยความจำเราได้ทำการคำนวณข้อความที่ฝังอยู่สำหรับภาพคำบรรยายภาพเสียงและวิดีโอโดยใช้ตัวเข้ารหัสข้อความภายในโมเดลการแพร่กระจายที่เกี่ยวข้อง
โปรดเรียกใช้คำสั่งนี้ก่อนการฝึกอบรมต่อไปนี้ของ 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 ขั้นตอน:
ขั้นตอนที่ 1 : การจัดตำแหน่งหลายรูปแบบ LLM-centric-centric ขั้นตอนนี้ฝึกอบรม เลเยอร์การฉายอินพุต ในขณะที่แช่แข็ง ImageBind, LLM, เลเยอร์ฉายภาพเอาต์พุต
# Encoding-side LLM-centric Multimodal Alignment bash scripts/pretrain_enc.shขั้นตอนที่ 2 : การจัดตำแหน่งคำสั่งตามการถอดรหัส ขั้นตอนนี้จะฝึก เลเยอร์ฉายภาพเอาต์พุต ในขณะที่แช่แข็ง ImageBind, 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โหลดจุดตรวจ
python predict.pyคุณสามารถกำหนดชุดข้อมูลของคุณเองโปรดดูที่ base_dataset.py จากนั้นเพิ่ม catalog ข้อมูลใน catalog.py รวมถึง target และ parameters
คุณสามารถกำหนดรูปแบบข้อมูลและพารามิเตอร์การฝึกอบรมไว้ล่วงหน้าในการฝึกอบรม _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 บางส่วน
Gill, Codi, Video-llama, Llava และ Minigpt-4 ขอบคุณสำหรับผลงานที่ยอดเยี่ยมของพวกเขา
ที่เก็บนี้อยู่ภายใต้ใบอนุญาต BSD 3 ข้อ Next-GPT เป็นโครงการวิจัยที่มีไว้สำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์เท่านั้น เราจะต้องไม่ใช้รหัสของ GPT ถัดไปสำหรับวัตถุประสงค์ที่ผิดกฎหมายอันตรายรุนแรงเหยียดผิวหรือมีวัตถุประสงค์ทางเพศ หนึ่งถูกห้ามอย่างเคร่งครัดจากการมีส่วนร่วมในกิจกรรมใด ๆ ที่อาจละเมิดแนวทางเหล่านี้ การใช้รหัสนี้ที่อาจเกิดขึ้นจากรหัสนี้ควรได้รับการอนุมัติจากผู้เขียน