Согласование MLLM с помощью обратной связи с искусственным интеллектом с открытым исходным кодом для обеспечения надежности Super GPT-4V
中文 | Английский
[2024.11.26] Теперь мы поддерживаем обучение LoRA!
[2024.05.28] Наша статья теперь доступна на arXiv!
[2024.05.20] Наш набор данных RLAIF-V используется для обучения MiniCPM-Llama3-V 2.5, который представляет собой первый MLLM конечного уровня GPT-4V!
[2024.05.20] Мы открываем исходный код, веса (7B, 12B) и данные RLAIF-V!
Мы представляем RLAIF-V, новую структуру, которая объединяет MLLM в парадигму полностью открытого исходного кода для обеспечения надежности Super GPT-4V. RLAIF-V максимально использует обратную связь с открытым исходным кодом с двух ключевых точек зрения, включая высококачественные данные обратной связи и алгоритм онлайн-обучения с обратной связью. Примечательные особенности RLAIF-V включают в себя:
Надежность Super GPT-4V благодаря обратной связи с открытым исходным кодом . Используя отзывы искусственного интеллекта с открытым исходным кодом, RLAIF-V 12B достигает супернадежности GPT-4V как в генеративных, так и в дискриминативных задачах.
Высококачественные обобщаемые данные обратной связи . Данные обратной связи, используемые RLAIF-V , эффективно уменьшают галлюцинации различных MLLM .
⚡️ Эффективное обучение с обратной связью и итеративное согласование. RLAIF-V демонстрирует как лучшую эффективность обучения, так и более высокую производительность по сравнению с неитеративным подходом.
Набор данных
Установить
Вес модели
Вывод
Генерация данных
Тренироваться
Оценка
Объект ХалБенч
ММХал Скамейка
РефоМБ
Цитирование
Мы представляем набор данных RLAIF-V, который представляет собой набор данных о предпочтениях, созданный искусственным интеллектом и охватывающий широкий спектр задач и областей. Этот набор данных мультимодальных предпочтений с открытым исходным кодом содержит 83 132 пары высококачественного сравнения . Набор данных содержит сгенерированные пары предпочтений в каждой итерации обучения различных моделей, включая LLaVA 1.5 7B, OmniLMM 12B и MiniCPM-V.
Клонируйте этот репозиторий и перейдите в папку RLAIF-V.
git-клон https://github.com/RLHF-V/RLAIF-V.gitcd RLAIF-V
Установить пакет
conda create -n rlaifv python=3.10 -y Конда активирует rlaifv пип установить -e .
Установите необходимую модель SpaCy
wget https://github.com/explosion/spacy-models/releases/download/en_core_web_trf-3.7.3/en_core_web_trf-3.7.3.tar.gz pip install en_core_web_trf-3.7.3.tar.gz
Модель | Описание | Скачать |
---|---|---|
РЛАИФ-В 7Б | Самый надежный вариант на LLaVA 1.5. | ? |
РЛАИФ-В 12Б | Основан на OmniLMM-12B и обеспечивает супернадежность GPT-4V. | ? |
Мы предоставляем простой пример, показывающий, как использовать RLAIF-V.
из чата import RLAIFVChat, img2base64chat_model = RLAIFVChat('openBMB/RLAIF-V-7B') # или 'openBMB/RLAIF-V-12B'image_path="./examples/test.jpeg"msgs = "Подробно опишите людей в картинка."inputs = {"изображение": image_path, "вопрос": msgs}ответ = chat_model.chat(входные данные)печать(ответ)
Вы также можете запустить этот пример, выполнив следующий скрипт:
python чат.py
Вопрос:
Почему машина на картинке остановилась?
Ожидаемые результаты:
На снимке автомобиль остановился на дороге из-за присутствия на проезжей части овцы. Вероятно, машина остановилась, чтобы позволить овцам безопасно уйти с дороги или избежать возможных несчастных случаев с животным. Эта ситуация подчеркивает важность осторожности и внимательности во время вождения, особенно в районах, где животные могут бродить вблизи дорог.
Настройка среды
Мы предоставляем модель OmniLMM 12B и модель MiniCPM-Llama3-V 2.5 для формирования обратной связи. Если вы хотите использовать MiniCPM-Llama3-V 2.5 для отправки отзывов, настройте его среду вывода в соответствии с инструкциями в репозитории MiniCPM-V GitHub.
Загрузите наши доработанные модели Llama3 8B: разделенную модель и модель преобразования вопросов и сохраните их в папках ./models/llama3_split
и ./models/llama3_changeq
соответственно.
Отзыв о модели OmniLMM 12B
В следующем сценарии показано использование модели LLaVA-v1.5-7b для генерации ответов кандидатов и модели OmniLMM 12B для предоставления обратной связи.
mkdir ./результаты bash ./script/data_gen/run_data_pipeline_llava15_omni.sh
Отзыв о модели MiniCPM-Llama3-V 2.5
В следующем сценарии показано использование модели LLaVA-v1.5-7b для генерации ответов кандидатов и модели MiniCPM-Llama3-V 2.5 для предоставления обратной связи. Сначала замените minicpmv_python
в ./script/data_gen/run_data_pipeline_llava15_minicpmv.sh
на путь Python к созданной вами среде MiniCPM-V.
mkdir ./результаты bash ./script/data_gen/run_data_pipeline_llava15_minicpmv.sh
Подготовьте данные (необязательно)
Если у вас есть доступ к набору данных Huggingface, вы можете пропустить этот шаг, мы автоматически загрузим набор данных RLAIF-V.
Если вы уже загрузили набор данных, вы можете заменить «openbmb/RLAIF-V-Dataset» на путь к вашему набору данных здесь, в строке 38.
Обучение
Здесь мы предоставляем обучающий скрипт для обучения модели за 1 итерацию . Параметр max_step
должен быть настроен в соответствии с объемом ваших данных.
Полностью точная настройка
Выполните следующую команду, чтобы начать полную настройку.
bash ./script/train/llava15_train.sh
ЛоРА
Выполните следующую команду, чтобы начать обучение Лоры.
pip установить пефт bash ./script/train/llava15_train_lora.sh
Итеративное выравнивание
Чтобы воспроизвести итеративный процесс обучения в статье, необходимо 4 раза выполнить следующие действия:
С1. Генерация данных.
Следуйте инструкциям по созданию данных, чтобы создать пары предпочтений для базовой модели. Преобразуйте сгенерированный файл JSONL в паркет HuggingFace.
С2. Изменить конфигурацию обучения.
В коде набора данных замените здесь 'openbmb/RLAIF-V-Dataset'
на свой путь к данным.
В сценарии обучения замените --data_dir
новым каталогом, замените --model_name_or_path
на путь к базовой модели, установите --max_step
на количество шагов для 4 эпохи, установите --save_steps
на количество шагов для 1/4 эпохи .
С3. Пройдите обучение DPO.
Запустите сценарий обучения для обучения базовой модели.
С4. Выберите базовую модель для следующей итерации.
Оцените каждую контрольную точку в Object HalBench и MMHal Bench, выберите наиболее эффективную контрольную точку в качестве базовой модели на следующей итерации.
Подготовьте аннотации COCO2014.
Оценка Object HalBench основана на аннотациях заголовков и сегментации из набора данных COCO2014. Сначала загрузите набор данных COCO2014 с официального сайта набора данных COCO.
mkdir coco2014cd coco2014 wget http://images.cocodataset.org/annotations/annotations_trainval2014.zip разархивируйте annotations_trainval2014.zip
Выводы, оценка и обобщение
Замените {YOUR_OPENAI_API_KEY}
действительным API-ключом OpenAI.
Примечание. Оценка основана на gpt-3.5-turbo-0613
.
# cd RLAIF-Vbash ./script/eval/eval_rlaifv_objhal.sh ./RLAIF-V_weight ./results/RLAIF-V ./coco2014/annotations {YOUR_OPENAI_API_KEY}
Подготовьте данные MMHal
Загрузите оценочные данные MMHal здесь и сохраните файл в eval/data
.
Запустите следующий сценарий для создания MMHal Bench:
Примечание. Оценка основана на gpt-4-1106-preview
.
# cd RLAIF-Vbash ./script/eval/eval_rlaifv_mmhal.sh ./RLAIF-V_weight ./results/RLAIF-V {YOUR_OPENAI_API_KEY}
Подготовка
Чтобы использовать оценку GPT-4, сначала запустите pip install openai==0.28
чтобы установить пакет openai. Затем измените openai.base
и openai.api_key
в eval/gpt4.py
на свои собственные настройки.
Оценочные данные для набора разработчика можно найти по адресу eval/data/RefoMB_dev.jsonl
. Вам необходимо загрузить каждое изображение по ключу image_url
в каждой строке.
Оценка на общий балл
Сохраните ответ модели в ключе answer
файла входных данных eval/data/RefoMB_dev.jsonl
, например:
{ "image_url": "https://thunlp.oss-cn-qingdao.aliyuncs.com/multimodal_openmme_test_20240319__20.jpg", "question": "What is the background of the image?", "type": "Coarse Perception", "split": "dev", "answer": "The background of the image features trees, suggesting that the scene takes place outdoors.", "gt_description": "......" }
Запустите следующий скрипт, чтобы оценить результат вашей модели:
save_dir="YOUR SAVING DIR" model_ans_path="YOUR MODEL ANSWER PATH" model_name="YOUR MODEL NAME" bash ./script/eval/run_refobm_overall.sh $save_dir $model_ans_path $model_name
Оценка галлюцинаций
После оценки общего балла будет создан файл результатов оценки с именем A-GPT-4V_B-${model_name}.json
. Использование этого файла результатов оценки для расчета оценки галлюцинаций следующим образом:
eval_result="EVAL RESULT FILE PATH, e.g. 'A-GPT-4V_B-${model_name}'" # Do not include ".json" in your file path! bash ./script/eval/run_refomb_hall.sh $eval_result
Примечание. Для большей стабильности мы рекомендуем вам выполнить оценку более 3 раз и использовать средний балл в качестве окончательного балла модели.
Уведомления об использовании и лицензии . Данные, код и контрольная точка предназначены и лицензированы только для исследовательского использования. Их использование также ограничено условиями лицензионного соглашения LLaMA, Vicuna и Chat GPT. Набор данных — CC BY NC 4.0 (разрешен только некоммерческое использование), и модели, обученные с использованием набора данных, не должны использоваться вне исследовательских целей.
RLHF-V: Кодовая база, на которой мы строили.
LLaVA: Модель инструкций и модель этикетировщика RLAIF-V-7B.
MiniCPM-V: модель инструкций и модель этикетировщика RLAIF-V-12B.
Если наша модель/код/данные/бумага кажутся вам полезными, пожалуйста, процитируйте наши статьи и поставьте нам отметку ️!
@article{yu2023rlhf, title={Rlhf-v: На пути к заслуживающим доверия МЛЛМ через согласование поведения на основе детальной корректирующей обратной связи с людьми}, автор={Ю, Тяньюй и Яо, Юань и Чжан, Хаое и Хэ, Тайвэнь и Хань, Ифэн и Цуй, Ганьцюй и Ху, Цзиньи и Лю, Чжиюань и Чжэн, Хай-Тао и Сунь, Маосун и другие}, журнал={препринт arXiv arXiv:2312.00849}, год={2023}}@article{yu2024rlaifv, title={RLAIF-V: Согласование MLLM с помощью обратной связи с искусственным интеллектом с открытым исходным кодом для надежности Super GPT-4V}, автор={ Ю, Тяньюй и Чжан, Хаое и Яо, Юань и Данг, Юнкай и Чэнь, Да и Лу, Сяомань и Цуй, Ганьцюй и Хэ, Тайвэнь и Лю, Чжиюань и Чуа, Тат-Сэн и Сунь, Маосун}, журнал={препринт arXiv arXiv:2405.17220}, год={2024}, }