Библиотека Python от NVIDIA для сжатия KV-кэша LLM во время инференса с множеством подключаемых методов на базе Hugging Face transformers.
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
Создайте и активируйте окружение conda с Python 3.8
conda create -yn streaming python=3.8 - 2
Активируйте окружение
conda activate streaming - 3
Установите PyTorch и зависимости Python с зафиксированными версиями
pip install torch torchvision torchaudio - 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 обновляется ежедневно.
Похожие проекты
Менеджер памяти KV-кэша для обслуживания LLM: выделяет память GPU по мере необходимости через API виртуальной памяти CUDA, без PagedAttention.
SGLang — открытый фреймворк для инференса больших языковых и мультимодальных моделей, а также diffusion-моделей на GPU, TPU и CPU разных платформ.
Библиотека Microsoft для Python сжимает промпты LLM и KV cache до 20 раз, удаляя несущественные токены и практически не теряя в качестве.
Слой управления KV-кэшем, который хранит, передаёт и повторно использует кэши внимания LLM между serving-движками, сокращая время до первого токена.
Единая исследовательская среда для сравнения сжатия, извлечения, объединения и квантования KV-кэша при инференсе LLM с длинным контекстом.