MiniMind-V: 1 час обучения визуальной модели языка с 26 миллионами параметров

Общее введение

MiniMind-V - это проект с открытым исходным кодом, размещенный на GitHub, призванный помочь пользователям обучить легкую визуальную языковую модель (VLM) с 26 миллионами параметров менее чем за час. Он основан на языковой модели MiniMind, новом визуальном кодере и модуле проекции признаков, поддержке совместной обработки изображений и текста. Проект предоставляет полный код от очистки набора данных до вывода модели, при этом стоимость обучения составляет всего ~RMB1.3 для одного GPU (например, NVIDIA 3090). MiniMind-V подчеркивает простоту и легкость использования, с менее чем 50 строками изменений кода, что делает его подходящим инструментом для разработчиков, чтобы экспериментировать и изучать процесс построения визуальной языковой модели.

MiniMind-V:1小时训练26M参数视觉语言模型

 

Список функций

  • Предоставляет полный код обучения для визуальных языковых моделей с 26 миллионами параметров, поддерживая быстрое обучение на одном GPU.
  • С помощью визуального кодера CLIP изображение размером 224x224 пикселя было обработано для создания 196 визуальных лексем.
  • Поддерживает ввод одного или нескольких изображений в сочетании с текстом для диалога, описания изображения или вопросов и ответов.
  • Содержит полные технологические скрипты для очистки набора данных, предварительного обучения и тонкой настройки под наблюдением (SFT).
  • Обеспечивает нативную реализацию PyTorch, поддерживает ускорение на нескольких картах и обладает высокой совместимостью.
  • Включает загрузку весов моделей и поддерживает платформы Hugging Face и ModelScope.
  • Предоставляет веб-интерфейс и командную строку для простого тестирования эффектов модели.
  • Поддержка инструмента wandb для регистрации потерь и производительности во время тренировок.

 

Использование помощи

Процесс использования MiniMind-V включает в себя настройку среды, подготовку данных, обучение модели и тестирование эффекта. Каждый этап подробно описан ниже, чтобы помочь пользователям быстро приступить к работе.

Конфигурация среды

Для работы MiniMind-V требуется среда Python и поддержка GPU. Вот шаги по установке:

  1. Клонирование кода
    Выполните следующую команду в терминале, чтобы загрузить код проекта:

    git clone https://github.com/jingyaogong/minimind-v
    cd minimind-v
    
  2. Установка зависимостей
    Проектные предложения requirements.txt файл, содержащий необходимые библиотеки. Выполните следующую команду:

    pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    Рекомендуется Python 3.9 или выше. Убедитесь, что PyTorch поддерживает CUDA (если у вас есть GPU). Это можно проверить, выполнив следующий код:

    import torch
    print(torch.cuda.is_available())
    

    экспорт True Указывает, что графический процессор доступен.

  3. Скачать модели CLIP
    MiniMind-V использует модель CLIP (clip-vit-base-patch16) в качестве визуального кодировщика. Выполните следующую команду, чтобы загрузить и разместить файл ./model/vision_model::

    git clone https://huggingface.co/openai/clip-vit-base-patch16 ./model/vision_model
    

    Также можно загрузить с сайта ModelScope:

    git clone https://www.modelscope.cn/models/openai-mirror/clip-vit-base-patch16 ./model/vision_model
    
  4. Загрузите весовые коэффициенты базовой языковой модели
    MiniMind-V основан на языковой модели MiniMind, что требует загрузки весов языковой модели в ./out Каталог. Пример:

    wget https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_512.pth -P ./out
    

    или скачать lm_768.pthв зависимости от конфигурации модели.

Подготовка данных

MiniMind-V использует около 570 000 изображений для предварительного обучения и 300 000 данных для тонкой настройки команд, занимая около 5 Гб памяти:

  1. Создание каталога наборов данных
    В корневом каталоге проекта создайте файл ./dataset Папка:

    mkdir dataset
    
  2. Скачать набор данных
    Загрузите набор данных с сайта Hugging Face или ModelScope, содержащий *.jsonl Данные в вопросах и ответах и *images Изобразительные данные:

    • Обнимающееся лицо: https://huggingface.co/datasets/jingyaogong/minimind-v_dataset
    • ModelScope: https://www.modelscope.cn/datasets/gongjy/minimind-v_dataset
      Загрузите и разархивируйте данные изображения в ./dataset::
    unzip pretrain_images.zip -d ./dataset
    unzip sft_images.zip -d ./dataset
    
  3. Валидационный набор данных
    безопасный ./dataset Содержит следующие файлы:

    • pretrain_vlm_data.jsonl: Данные предварительного обучения, около 570 000 записей.
    • sft_vlm_data.jsonl: Данные о точной настройке одной фигуры, около 300 000 записей.
    • sft_vlm_data_multi.jsonl: Данные тонкой настройки мультикарты, около 13 600 записей.
    • Папка с изображениями: содержит файлы изображений для предварительного обучения и тонкой настройки.

обучение модели

Обучение MiniMind-V делится на предварительное обучение и контролируемую тонкую настройку и поддерживает ускорение одной или нескольких карт.

  1. Параметры конфигурации
    компилятор ./model/LMConfig.py, задайте параметры модели. Пример:

    • Миниатюры:dim=512n_layers=8
    • Средняя модель:dim=768n_layers=16
      Эти параметры определяют размер и производительность модели.
  2. предтренировочный курс
    Запустите сценарии предварительного обучения, чтобы узнать возможности описания изображений:

    python train_pretrain_vlm.py --epochs 4
    

    Выходные веса сохраняются в виде ./out/pretrain_vlm_512.pth(или 768.pthМодель CLIP заморожена). На выполнение одной эпохи у одного NVIDIA 3090 уходит около 1 часа. замораживает модель CLIP и обучает только проекционный слой и последний слой языковой модели.

  3. Контролируемая тонкая настройка (SFT)
    Тонкая настройка с использованием предварительно обученных весов для оптимизации возможностей диалога:

    python train_sft_vlm.py --epochs 4
    

    Выходные веса сохраняются в виде ./out/sft_vlm_512.pth. На этом этапе происходит обучение проекционного слоя и языковой модели со всеми параметрами.

  4. Обучение доке (по желанию)
    Если у вас N видеокарт, используйте следующую команду для ускорения:

    torchrun --nproc_per_node N train_pretrain_vlm.py --epochs 4
    

    взаимозаменяемость train_pretrain_vlm.py Для других обучающих сценариев (например. train_sft_vlm.py).

  5. Мониторинг обучения
    Потери при обучении можно записать с помощью wandb:

    python train_pretrain_vlm.py --epochs 4 --use_wandb
    

    Просматривайте данные в режиме реального времени на официальном сайте wandb.

Тест на эффективность

После завершения обучения модель можно проверить на способность вести диалог с изображением.

  1. рассуждения из командной строки
    Выполните следующую команду, чтобы загрузить модель:

    python eval_vlm.py --load 1 --model_mode 1
    
    • --load 1: Загрузите модель формата трансформаторов из Hugging Face.
    • --load 0: Из ./out Загрузите грузы PyTorch.
    • --model_mode 1: Тестирование моделей с точной настройкой;0 Тестирование предварительно обученных моделей.
  2. Тестирование веб-интерфейса
    Запустите веб-интерфейс:

    python web_demo_vlm.py
    

    интервью http://localhost:8000Загрузите изображение и введите текст для проверки.

  3. формат ввода
    MiniMind-V использует 196 @@@ Заголовки представляют собой изображения. Пример:

    @@@...@@@\n这张图片是什么内容?
    

    Пример ввода нескольких изображений:

    @@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
    
  4. Загрузите предтренировочные веса
    Если вы не тренируетесь, вы можете скачать официальные веса напрямую:

предостережение

  • Рекомендуемая видеопамять 24 ГБ (например, RTX 3090). Если видеопамяти недостаточно, уменьшите размер партии (batch_size).
  • Убедитесь, что путь к набору данных указан правильно.*.jsonl и файлы изображений должны быть помещены в папку ./dataset.
  • Замораживание моделей CLIP во время обучения снижает требования к арифметике.
  • Диалоги с несколькими изображениями имеют ограниченную эффективность, поэтому рекомендуется в первую очередь тестировать сценарии с одним изображением.

 

сценарий применения

  1. Алгоритмическое обучение ИИ
    MiniMind-V предоставляет краткий код моделирования на визуальном языке, подходящий для студентов, чтобы понять принципы кросс-модального моделирования. Пользователи могут модифицировать код, чтобы экспериментировать с различными параметрами или наборами данных.
  2. Быстрое прототипирование
    Разработчики могут создавать прототипы приложений для работы с диалогами изображений на основе MiniMind-V. Он легкий и эффективный и подходит для устройств с низким энергопотреблением, таких как ПК или встраиваемые системы. Легкий и эффективный, он подходит для устройств с низким энергопотреблением, таких как ПК или встраиваемые системы.
  3. Средства обучения и тренировки
    Колледжи и университеты могут использовать MiniMind-V в курсах по искусственному интеллекту, чтобы показать весь процесс обучения модели. Код четко прокомментирован и подходит для практики в классе.
  4. Недорогие эксперименты
    Стоимость обучения в проекте невысока, что подходит командам с ограниченным бюджетом для тестирования эффекта мультимодальных моделей без необходимости использования высокопроизводительных серверов.

 

QA

  1. Изображения какого размера поддерживает MiniMind-V?
    По умолчанию обрабатываются изображения размером 224x224 пикселя, ограниченные моделью CLIP. Для экономии места изображения наборов данных могут быть сжаты до 128x128. В будущем могут быть опробованы модели CLIP с более высоким разрешением.
  2. Сколько времени займет обучение?
    На одном NVIDIA 3090 1 эпоха предварительного обучения занимает около 1 часа, при этом тонкая настройка выполняется немного быстрее. Точное время зависит от аппаратного обеспечения и объема данных.
  3. Могу ли я просто настроить его без предварительной подготовки?
    Можно. Загрузите официальные предтренировочные веса прямо и бегите train_sft_vlm.py Тонкая настройка.
  4. Какие языки поддерживаются?
    В основном поддерживает китайский и английский языки, эффект зависит от набора данных. Пользователи могут расширить другие языки путем тонкой настройки.
  5. Насколько хорошо работает диалог с несколькими изображениями?
    Текущие возможности диалога с несколькими изображениями ограничены, поэтому рекомендуется использовать сценарии с одним изображением. В будущем можно будет усовершенствовать систему, используя более крупные модели и наборы данных.
© заявление об авторских правах

Похожие статьи

AnimatedDrawings:儿童手绘涂鸦转换动画,自动化儿童绘画动画生成工具

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...