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Создание и запуск блокнотов для сжатияЗагрузка сжатой модели в репозиторийРазвертывание и использование сжатой модели для inferenceПоддерживаемые рабочие процессы сжатия моделей
На платформе 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.
- Модель для сжатия. Вы можете изменить эту строку, если хотите использовать собственную модель.
- Этот recipe выполнит квантование всех слоев Linear, кроме слоев в
lm_head, которые часто чувствительны к квантованию. СхемаW4A16сжимает веса до целых чисел4-bit, сохраняя активации16-bit.
(Необязательно) Подготовка и загрузка набора данных
Если вы планируете использовать data-free compressor notebook, этот шаг можно пропустить.
Чтобы использовать calibration compressor notebook, необходимо подготовить и загрузить набор данных для калибровки. Подготовьте набор данных тем же способом, который описан в разделе Upload Models Using Notebook. В примере блокнота для калибровки используется набор данных ultrachat_200k.
- Создайте набор данных для калибровки, используя API Huggingface datasets. Вы можете изменить эту строку, если хотите использовать собственный набор данных.
- Укажите количество образцов. 512 образцов — хорошая отправная точка. Увеличение количества образцов может повысить точность.
- Загрузите набор данных.
- Перемешайте данные и возьмите только нужное количество образцов.
- Выполните предварительную обработку и токенизацию в формат, который использует модель.
(Необязательно) Загрузка набора данных в совместимое с S3 объектное хранилище
Если вы хотите загрузить наборы данных в совместимое с S3 объектное хранилище, вы можете выполнить следующий код в JupyterLab. Alauda AI поддерживает доступ к хранилищу, совместимому с S3, и в типичных развертываниях продукта используется объектное хранилище Ceph, поэтому можно использовать стандартный клиент boto3.
- Вы можете изменить эту строку, если хотите использовать собственный набор данных.
- Настройте загрузку multipart с фрагментами по 100 MB и максимальным числом из 10 параллельных потоков.
(Необязательно) Использование набора данных из совместимого с S3 объектного хранилища
Если вы хотите использовать наборы данных, хранящиеся в совместимом с S3 объектном хранилище, сначала установите инструмент s3fs, а затем измените раздел загрузки набора данных в примере, как показано ниже. В средах Alauda AI такое S3-совместимое хранилище обычно использует объектное хранилище Ceph.
- Задайте переменные среды (в качестве резервного варианта некоторые нижележащие компоненты будут использовать их).
- Определите конфигурацию хранилища; для вашей службы объектного хранилища, совместимого с S3, необходимо явно указать
endpoint_url, например endpoint для объектного хранилища Ceph. - Если набор данных разделен на части, это эквивалентно
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.
- Сохраните модель и tokenizer. Вы можете изменить эту строку, если хотите изменить имя выходных данных.
Развертывание и использование сжатой модели для inference
Квантованные и sparse-модели, которые вы создаете с помощью LLM Compressor, сохраняются с использованием библиотеки compressed-tensors (расширения Safetensors).
Формат сжатия соответствует типу квантования или разреженности модели. Эти форматы нативно поддерживаются в vLLM, что обеспечивает быстрое inference благодаря оптимизированным kernel развертывания с использованием Alauda AI Inference Server.
Чтобы завершить этот шаг, следуйте инструкциям в разделе create inference service.