InternLM-XComposer: мультимодальная макромодель для вывода очень длинных текстов и понимания изображений и видео

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

InternLM-XComposer - это проект графического мультимодального макромоделирования с открытым исходным кодом, разработанный командой InternLM и размещенный на GitHub, который основан на языковой модели InternLM и способен обрабатывать мультимодальные данные, такие как текст, изображения и видео, и широко используется в области графического авторинга, понимания изображений и видеоанализа. Проект известен своей способностью поддерживать контексты длиной до 96 Кбайт, обрабатывать изображения высокого разрешения 4 Кбайт и понимать видео с мелкой детализацией, при этом его производительность сопоставима с GPT-4V при использовании всего 7B параметров. Код, весовые коэффициенты модели и подробная документация доступны на GitHub для исследователей, разработчиков и пользователей, интересующихся мультимодальным ИИ. По состоянию на февраль 2025 года проект выпустил несколько версий, включая InternLM-XComposer-2.5 и OmniLive, чтобы постоянно оптимизировать опыт мультимодального взаимодействия.

InternLM-XComposer:输出超长文本与图像视频理解的多模态大模型

 

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

  • Поддержка сверхдлинного контекстного вывода: обработка до 96 КБ смешанного графического контента для сложных задач.
  • Понимание изображений с высоким разрешением: поддерживает анализ изображений от 336 пикселей до 4K с четкой детализацией.
  • Тонкое понимание видео: разбиение видео на многокадровые изображения для улавливания динамических деталей.
  • Создание графики: создание графических статей или веб-контента в соответствии с инструкциями.
  • Несколько раундов диалога с несколькими изображениями: поддержка нескольких изображений для непрерывного анализа диалога.
  • Поддержка моделей с открытым исходным кодом: предоставление различных весов моделей и кода тонкой настройки для облегчения вторичной разработки.
  • Мультимодальное потоковое взаимодействие: версия OmniLive поддерживает обработку видео и аудио большой продолжительности.

 

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

InternLM-XComposer - это проект с открытым исходным кодом, основанный на GitHub, для установки и использования которого пользователям необходимы некоторые основы программирования. Ниже приведено подробное руководство по эксплуатации, которое поможет пользователям быстро начать работу.

Процесс установки

 

1. Подготовка окружающей среды

 

    • Убедитесь, что на вашем устройстве установлен Python 3.9 или выше.
    • Требуется NVIDIA GPU и поддержка CUDA (рекомендуется CUDA 11.x или 12.x).
    • Установите Git для клонирования вашей кодовой базы.

 

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

 

git clone https://github.com/InternLM/InternLM-XComposer.git
cd InternLM-XComposer

3. Создание виртуальной среды   Изолируйте зависимости с помощью Conda или инструментов виртуального окружения:

conda create -n internlm python=3.9 -y
conda activate internlm

4. Установка зависимостей   Установите необходимые библиотеки в соответствии с официальной документацией:

pip install torch==2.0.1+cu117 torchvision==0.15.2+cu117 torchaudio==2.0.2 --index-url https://download.pytorch.org/whl/cu117
pip install transformers==4.33.2 timm==0.4.12 sentencepiece==0.1.99 gradio==4.13.0 markdown2==4.4.10 xlsxwriter==3.1.2 einops

- Дополнительно: установите flash-attention2 для экономии памяти GPU:

pip install flash-attn --no-build-isolation

5. Скачать модельные веса   Проект поддерживает загрузку предварительно обученных моделей, например, с сайта Hugging Face:

model = AutoModel.from_pretrained('internlm/internlm-xcomposer2d5-7b', torch_dtype=torch.bfloat16, trust_remote_code=True).cuda().eval()

6. Проверка установки   Запустите код примера, чтобы проверить, нормально ли работает среда:

python -m torch.distributed.run --nproc_per_node=1 example_code/simple_chat.py

Основные функции

1. Создание графики

  • Введение функции: Генерирование контента, содержащего текст и изображения, например статей или веб-страниц, на основе инструкций пользователя.
  • процедура::
  1. Подготовьте вводные данные: напишите текст-инструкцию (например, "Напишите статью о путешествиях, включив в нее три картинки").
  2. Запустите код:
from transformers import AutoModel, AutoTokenizer
model = AutoModel.from_pretrained('internlm/internlm-xcomposer2d5-7b', trust_remote_code=True).cuda().eval()
tokenizer = AutoTokenizer.from_pretrained('internlm/internlm-xcomposer2d5-7b', trust_remote_code=True)
query = "写一篇关于旅行的文章,包含三张图片"
response, _ = model.chat(tokenizer, query, do_sample=False, num_beams=3)
print(response)
  1. Выход: модель генерирует смесь графического и текстового контента, а описания изображений автоматически встраиваются в текст.

2. Понимание изображений высокого разрешения

  • Введение функции: Анализирует изображения высокого разрешения и предоставляет подробные описания.
  • процедура::
  1. Подготовьте изображение: поместите файл изображения в локальный каталог (например. examples/dubai.png).
  2. Запустите код:
query = "详细分析这张图片"
image = ['examples/dubai.png']
with torch.autocast(device_type='cuda', dtype=torch.float16):
response, _ = model.chat(tokenizer, query, image, do_sample=False, num_beams=3)
print(response)
  1. Выход: модель выдает подробное описание содержимого изображения, например, деталей, таких как здания, цвета и т.д.

3. Видеоанализ

  • Введение функции: Декомпозиция видеокадра и описание его содержания.
  • процедура::
  1. Подготовительное видео: Загрузите пример видео (например. liuxiang.mp4).
  2. Используйте версию OmniLive:
from lmdeploy import pipeline
pipe = pipeline('internlm/internlm-xcomposer2d5-ol-7b')
video = load_video('liuxiang.mp4')
query = "描述这段视频内容"
response = pipe((query, video))
print(response.text)
  1. Выходной результат: возвращает подробное описание видеокадра, например, действия или сцены.

4. Несколько раундов диалога с несколькими картами

  • Введение функции: Поддерживает ввод нескольких изображений для непрерывного диалога.
  • процедура::
  1. Подготовьте несколько изображений (например. cars1.jpgcars2.jpgcars3.jpg).
  2. Запустите код:
query = "Image1 <ImageHere>; Image2 <ImageHere>; Image3 <ImageHere>; 分析这三辆车的优缺点"
images = ['examples/cars1.jpg', 'examples/cars2.jpg', 'examples/cars3.jpg']
response, _ = model.chat(tokenizer, query, images, do_sample=False, num_beams=3)
print(response)
  1. Выход: модель поочередно анализирует характеристики автомобиля, соответствующие каждой фотографии.

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

  • требования к оборудованию: Рекомендуется не менее 24 ГБ памяти GPU, попробуйте 4-битную квантованную версию для более дешевых устройств.
  • Советы по отладке: Если вам не хватает видеопамяти, уменьшите значение hd_num (по умолчанию 18).
  • Поддержка общества: Посетите страницу GitHub Issues, чтобы ознакомиться с часто задаваемыми вопросами или оставить отзыв.

С помощью этих шагов вы сможете легко установить и использовать возможности InternLM-XComposer как для исследований, так и для разработок.

© заявление об авторских правах

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

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

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