Открытая Python-библиотека Intel для сжатия моделей глубокого обучения с помощью квантования, разреживания и дистилляции в PyTorch, JAX и ONNX.
microsoft/TransformerCompression
SliceGPT сжимает трансформерные модели, включая LLM, после обучения, удаляя строки и столбцы матриц весов.
- Звёзды
- 466
- Форки
- 59
- Открытые issues
- 27
- Последний коммит
- 2 месяца назад
Что это?
SliceGPT уменьшает размер трансформерных сетей, в том числе больших языковых моделей, уже после обучения. Сначала к каждому слою применяются ортогональные преобразования, не меняющие выходы модели, а затем удаляются наименее значимые строки и столбцы матриц весов, выбранные по убыванию собственных значений. Структура модели остается прежней, но размерность эмбеддингов сокращается. Это ускоряет работу без дополнительной оптимизации кода и уменьшает объем памяти.
В репозитории есть Python-пакет `slicegpt` и скрипты для воспроизведения экспериментов из статьи на ICLR'24. Рабочие процессы включают сжатие модели, дообучение для восстановления качества на основе LoRA и оценку с помощью LM Eval Harness. Поддерживаются Phi-2, Phi-3-mini, несколько вариантов Llama-2 и Llama-3, а также модели OPT размером от 125M до 66B параметров.
Чтобы добавить новое семейство моделей, нужно реализовать адаптер модели и адаптер слоя, а затем обновить утилиту загрузки Hugging Face.
Ключевые возможности
- 01Сжатие после обучения за счет уменьшения размерности эмбеддингов путем срезания матриц весов.
- 02Ортогональные преобразования каждого слоя не меняют функцию модели перед срезанием.
- 03На выходе получаются плотные матрицы весов меньшего размера, поэтому для ускорения не нужны пользовательские ядра.
- 04Опциональное дообучение для восстановления качества с LoRA и байесовским поиском гиперпараметров.
- 05Интеграция для оценки с помощью LM Eval Harness.
- 06Интерфейс адаптеров для добавления новых архитектур трансформеров из Hugging Face.
Сценарии использования
- Уменьшение объема памяти, необходимого моделям Phi-2 или Llama для запуска на GPU с ограниченными ресурсами.
- Исследование сжатия LLM после обучения и воспроизведение результатов статьи SliceGPT.
- Добавление поддержки SliceGPT для новой архитектуры трансформера с помощью адаптеров.
Быстрый старт
- 1
Установите пакет slicegpt с дополнительными зависимостями для экспериментов
pip install -e .[experiment] - 2
Сожмите microsoft/phi-2 с помощью SliceGPT из папки experiments
python run_slicegpt.py --model microsoft/phi-2 --save-dir dir/to/save/sliced_model/in --sparsity 0.25 --device cuda:0 --eval-baseline --no-wandb
Что важно знать
- Поддерживаются только модели Hugging Face, перечисленные в README; для других моделей потребуется новый адаптер.
- Для некоторых моделей требуется аутентификация Hugging Face с помощью --hf-token или HF_TOKEN.
Темы
Частые вопросы
- Что такое TransformerCompression?
- SliceGPT сжимает трансформерные модели, включая LLM, после обучения, удаляя строки и столбцы матриц весов. SliceGPT уменьшает размер трансформерных сетей, в том числе больших языковых моделей, уже после обучения. Сначала к каждому слою применяются ортогональные преобразования, не меняющие выходы модели, а затем удаляются наименее значимые строки и столбцы матриц весов, выбранные по убыванию собственных значений. Структура модели остается прежней, но размерность эмбеддингов сокращается. Это ускоряет работу без дополнительной оптимизации кода и уменьшает объем памяти.
- TransformerCompression можно использовать бесплатно? Какая у него лицензия?
- TransformerCompression распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- TransformerCompression всё ещё поддерживается?
- Обновлялся за последние 6 месяцев. Последний коммит в TransformerCompression — 10 сент. 2026 г..
- Для чего можно использовать TransformerCompression?
- Уменьшение объема памяти, необходимого моделям Phi-2 или Llama для запуска на GPU с ограниченными ресурсами. Исследование сжатия LLM после обучения и воспроизведение результатов статьи SliceGPT. Добавление поддержки SliceGPT для новой архитектуры трансформера с помощью адаптеров.
- Как установить TransformerCompression?
- Установите пакет slicegpt с дополнительными зависимостями для экспериментов: pip install -e .[experiment] Сожмите microsoft/phi-2 с помощью SliceGPT из папки experiments: python run_slicegpt.py --model microsoft/phi-2 --save-dir dir/to/save/sliced_model/in --sparsity 0.25 --device cuda:0 --eval-baseline --no-wandb
- Где скачать TransformerCompression?
- Исходный код и инструкции по установке — на GitHub: https://github.com/microsoft/TransformerCompression
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Бэкенд квантования для PyTorch в Hugging Face Optimum: квантование весов и активаций модели в диапазоне от int2 до float8.
Набор инструментов для слияния предобученных больших языковых моделей путём комбинирования их весов разными алгоритмами на CPU или GPU.
Библиотека обучения на PyTorch с нативной поддержкой DTensor для дообучения и предобучения LLM, VLM и diffusion-моделей непосредственно из чекпойнтов Hugging Face.
Библиотека NVIDIA с открытым исходным кодом для сжатия моделей глубокого обучения с помощью квантования, pruning, дистилляции, разреженности и спекулятивного декодирования, ускоряющих инференс.
Учебник на китайском языке, который объясняет принципы работы LLM на примере создания небольшой модели в стиле LLaMA2 с нуля: от Transformer и предобучения до дообучения, RAG и агентов.