LLM Compressor с Alauda AI
В этом документе описывается, как использовать интеграцию LLM Compressor с платформой Alauda AI для выполнения рабочих процессов сжатия моделей. Интеграция LLM Compressor с Alauda AI предоставляет два примерных рабочих процесса:
- Образ Workbench и data-free-compressor.ipynb, демонстрирующие, как сжать модель.
- Образ Workbench и calibration-compressor.ipynb, демонстрирующие, как сжать модель с использованием калибровочного набора данных.
Содержание
Поддерживаемые рабочие процессы сжатия моделейСоздание WorkbenchСоздание репозитория моделей и загрузка моделей(Опционально) Подготовка и загрузка набора данных(Опционально) Загрузка набора данных в хранилище S3(Опционально) Использование набора данных из хранилища S3Клонирование моделей и наборов данных в JupyterLabСоздание и запуск ноутбуков сжатияЗагрузка сжатой модели в репозиторийРазвёртывание и использование сжатой модели для инференсаПоддерживаемые рабочие процессы сжатия моделей
На платформе Alauda AI вы можете использовать функцию Workbench для запуска LLM Compressor на моделях, хранящихся в вашем репозитории моделей. Ниже приведён типичный рабочий процесс сжатия модели.
Создание Workbench
Следуйте инструкциям в разделе Create Workbench для создания нового экземпляра Workbench. При создании Workbench обязательно выберите образ odh-workbench-jupyter-pytorch-llmcompressor-cuda-py312-ubi9, который включает необходимую среду LLM Compressor. В настоящее время сжатие моделей поддерживается только в JupyterLab.
Если этот образ недоступен в вашей среде, обратитесь к указанной статье для получения инструкций по синхронизации образа и патчу ресурса WorkspaceKind, чтобы образ стал доступен в опциях создания Workbench.
Создание репозитория моделей и загрузка моделей
Обратитесь к разделу Upload Models Using Notebook для подробных шагов по созданию репозитория моделей и загрузке файлов модели. Примерные ноутбуки в этом руководстве используют модель TinyLlama-1.1B-Chat-v1.0.
- Модель для сжатия. Вы можете изменить эту строку, если хотите использовать свою модель.
- Этот рецепт выполнит квантизацию всех слоёв Linear, кроме тех, что в
lm_head, который часто чувствителен к квантизации. СхемаW4A16сжимает веса до 4-битных целых чисел, сохраняя 16-битные активации.
(Опционально) Подготовка и загрузка набора данных
Если вы планируете использовать data-free compressor notebook, этот шаг можно пропустить.
Для использования calibration compressor notebook необходимо подготовить и загрузить калибровочный набор данных. Подготовьте набор данных, используя тот же процесс, описанный в разделе Upload Models Using Notebook. Пример калибровочного ноутбука использует набор данных ultrachat_200k.
- Создайте калибровочный набор данных с помощью API Huggingface datasets. Вы можете изменить эту строку, если хотите использовать свой набор данных.
- Выберите количество образцов. 512 образцов — хорошее начало. Увеличение количества образцов может повысить точность.
- Загрузите набор данных.
- Перемешайте и выберите только необходимое количество образцов.
- Предобработайте и токенизируйте в формат, используемый моделью.
(Опционально) Загрузка набора данных в хранилище S3
Если вы хотите загрузить наборы данных в S3, вы можете выполнить этот код в JupyterLab.
- Вы можете изменить эту строку, если хотите использовать свой набор данных.
- Настройте multipart-загрузку с чанками по 100 МБ и максимум 10 параллельных потоков.
(Опционально) Использование набора данных из хранилища S3
Если вы хотите использовать наборы данных из S3, сначала установите инструмент s3fs, а затем измените раздел загрузки набора данных в примере, следуя коду ниже.
- Установите переменные окружения (в качестве резервного варианта, некоторые внутренние компоненты будут их использовать).
- Определите конфигурацию хранилища; необходимо явно указать endpoint_url для подключения к MinIO.
- Если набор данных разбит на части, это эквивалентно
split="train_sft"в примере.
Клонирование моделей и наборов данных в JupyterLab
В терминале JupyterLab используйте git clone для загрузки репозитория модели (и набора данных, если применимо) в ваше рабочее пространство. Для data-free compressor notebook набор данных не требуется.
Рекомендуется использовать командную строку Hugging Face (hf) для прямой загрузки моделей и наборов данных при наличии сетевого доступа. Этот способ обычно быстрее и проще, чем ручное клонирование репозиториев.
Если вы находитесь в ограниченной сетевой среде, можно использовать зеркало Hugging Face для ускоренного доступа:
Вы можете использовать командную строку hf для прямой загрузки моделей и наборов данных. Например, для загрузки модели TinyLlama:
Для калибровочных наборов данных загрузите их аналогично:
Создание и запуск ноутбуков сжатия
Скачайте соответствующий пример ноутбука для вашего случая: calibration compressor notebook, если вы используете набор данных, или data-free compressor notebook в противном случае. Нажмите кнопку со стрелкой вверх на странице JupyterLab, чтобы загрузить скачанный файл ноутбука.
Загрузка сжатой модели в репозиторий
После завершения сжатия загрузите сжатую модель обратно в репозиторий моделей. Подробные шаги по загрузке файлов модели в репозиторий см. в разделе Upload Models Using Notebook.
- Сохраните модель и токенизатор. Вы можете изменить эту строку, если хотите изменить имя выходного файла.
Развёртывание и использование сжатой модели для инференса
Квантизированные и разреженные модели, созданные с помощью LLM Compressor, сохраняются с использованием библиотеки compressed-tensors (расширение Safetensors).
Формат сжатия соответствует типу квантизации или разреженности модели. Эти форматы нативно поддерживаются в vLLM, что обеспечивает быстрый инференс через оптимизированные ядра развёртывания с использованием Alauda AI Inference Server.
Следуйте инструкциям в разделе create inference service для завершения этого шага.