Repolode
mit-han-lab

mit-han-lab/streaming-llm

Исследовательский код StreamingLLM — метода, который позволяет предобученным LLM обрабатывать практически неограниченные текстовые потоки, сохраняя в кэше attention sink-токены и окно недавних токенов.

Звёзды
7,276
Форки
402
Открытые issues
50
Последний коммит
2 года назад

Что это?

StreamingLLM — исследовательский проект MIT Han Lab, опубликованный вместе со статьёй об эффективных потоковых языковых моделях с attention sink на ICLR 2024. Он решает две проблемы длительного многоэтапного использования LLM: затраты памяти на кэширование состояний Key и Value всех предыдущих токенов при декодировании и ухудшение генерации, когда входные данные превышают длину последовательности, на которой модель обучалась.

Авторы обнаружили, что сохранение KV-состояний первых нескольких токенов, которые работают как attention sink, вместе со скользящим окном недавних токенов в значительной степени восстанавливает качество обычного внимания в пределах окна. Размер контекстного окна модели не увеличивается: промежуточные токены просто отбрасываются, поэтому модель обрабатывает недавний текст без сброса кэша. В репозитории есть демо потокового чат-бота на Llama и код для оценки perplexity; сейчас поддерживаются Llama-2, MPT, Falcon и Pythia.

Это публикация кода для статьи, а не библиотека общего назначения. Для установки используются conda, закреплённая версия transformers и локальная установка в режиме develop.

Ключевые возможности

  • 01Сохраняет в KV-кэше начальные токены attention sink и окно недавних токенов.
  • 02Позволяет моделям обрабатывать входные данные, намного превышающие длину последовательности, на которой они обучались, без fine-tuning.
  • 03Включает скрипт демо потокового чат-бота на Llama.
  • 04Предоставляет код для оценки perplexity.
  • 05Поддерживает Llama-2, MPT, Falcon и Pythia.

Сценарии использования

  • Запуск чат-бота или ежедневного помощника, который должен отвечать в течение долгого времени и многих ходов диалога.
  • Изучение поведения attention sink и управления KV-кэшем в исследованиях LLM.
  • Воспроизведение результатов по perplexity из статьи StreamingLLM.

Быстрый старт

  1. 1

    Создайте и активируйте окружение conda с Python 3.8

    conda create -yn streaming python=3.8
  2. 2

    Активируйте окружение

    conda activate streaming
  3. 3

    Установите PyTorch и зависимости Python с зафиксированными версиями

    pip install torch torchvision torchaudio
  4. 4

    Запустите демонстрацию потокового чат-бота Llama на GPU 0

    CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming

Что важно знать

  • Для настройки требуются конкретная более старая версия Python (3.8) и зафиксированная версия transformers (4.33.0).
  • Для демонстрации нужен GPU; она использует предварительно обученные модели, например Llama-2, которые необходимо получить отдельно.
  • Модель учитывает только недавние токены и attention sinks, поэтому не расширяет контекст и не обеспечивает долговременную память.
  • Последний push в репозиторий был в июле 2024 года, поэтому поддержка ограничена.

В подборках

Темы

Частые вопросы

Что такое streaming-llm?
Исследовательский код StreamingLLM — метода, который позволяет предобученным LLM обрабатывать практически неограниченные текстовые потоки, сохраняя в кэше attention sink-токены и окно недавних токенов. StreamingLLM — исследовательский проект MIT Han Lab, опубликованный вместе со статьёй об эффективных потоковых языковых моделях с attention sink на ICLR 2024. Он решает две проблемы длительного многоэтапного использования LLM: затраты памяти на кэширование состояний Key и Value всех предыдущих токенов при декодировании и ухудшение генерации, когда входные данные превышают длину последовательности, на которой модель обучалась.
streaming-llm можно использовать бесплатно? Какая у него лицензия?
streaming-llm распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
streaming-llm всё ещё поддерживается?
Нет коммитов больше 6 месяцев. Последний коммит в streaming-llm — 11 июл. 2024 г..
Для чего можно использовать streaming-llm?
Запуск чат-бота или ежедневного помощника, который должен отвечать в течение долгого времени и многих ходов диалога. Изучение поведения attention sink и управления KV-кэшем в исследованиях LLM. Воспроизведение результатов по perplexity из статьи StreamingLLM.
Как установить streaming-llm?
Создайте и активируйте окружение conda с Python 3.8: conda create -yn streaming python=3.8 Активируйте окружение: conda activate streaming Установите PyTorch и зависимости Python с зафиксированными версиями: pip install torch torchvision torchaudio Запустите демонстрацию потокового чат-бота Llama на GPU 0: CUDA_VISIBLE_DEVICES=0 python examples/run_streaming_llama.py --enable_streaming
Где скачать streaming-llm?
Исходный код и инструкции по установке — на GitHub: https://github.com/mit-han-lab/streaming-llm

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты