Уменьшение масштабов, увеличение масштабов освоение генеративного ИИ с квантованием моделей

Исследование возможностей генеративного ИИ с квантованием моделей в сфере моды и красоты

Введение

В постоянно меняющемся мире искусственного интеллекта, Генеративный искусственный интеллект (Generative AI) неоспоримо стал основополагающим элементом инновации. Эти передовые модели, будь то для создания искусства, генерации текста или улучшения медицинского изображения, известны своей способностью производить замечательно реалистичные и креативные результаты. Однако, мощь Генеративного ИИ имеет свою цену – размер моделей и требования вычислительных ресурсов. По мере роста сложности и размера моделей Генеративного ИИ, они требуют все больше вычислительных ресурсов и места для хранения. Это может быть значительным препятствием, особенно при развертывании этих моделей на устройствах с ограниченными ресурсами или в условиях с ограниченными ресурсами. В этом случае на помощь приходит Генеративный ИИ с квантификацией модели, предлагая способ уменьшить эти гигантские модели, не пожертвовав качеством.

Источник - Qualcomm

Цели обучения

  • Понять концепцию квантификации модели в контексте Генеративного ИИ.
  • Изучить преимущества и вызовы, связанные с реализацией квантификации модели.
  • Узнать о реальных приложениях квантифицированных моделей Генеративного ИИ в создании искусства, медицинском изображении и составлении текста.
  • Получить представление о отрывках кода для квантификации модели с использованием TensorFlow Lite и динамической квантификации PyTorch.

Эта статья была опубликована в рамках Data Science Blogathon.

Понимание квантификации модели

Источник - Youtube.com

Простыми словами, квантификация модели уменьшает точность числовых значений параметров модели. В моделях глубокого обучения нейронные сети часто используют высокоточные числа с плавающей запятой (например, 32-битные или 64-битные) для представления весов и активаций. Квантификация модели преобразует эти значения в более низкоточные представления (например, 8-битные целые числа), при этом сохраняя функциональность модели.

Преимущества квантификации модели в Генеративном ИИ

  • Сокращение объема памяти: Самое очевидное преимущество квантификации модели – значительное сокращение использования памяти. Меньшие размеры моделей позволяют развертывать Генеративный ИИ на устройствах с ограниченными ресурсами, мобильных приложениях и средах с ограниченной памятью.
  • Более быстрая обработка данных: Квантизованные модели работают быстрее благодаря уменьшенному размеру данных. Это улучшение скорости очень важно для приложений в реальном времени, таких как обработка видео, понимание естественного языка или автономные транспортные средства.
  • Энергоэффективность: Уменьшение размеров моделей способствует энергоэффективности, что позволяет запускать модели Генеративного ИИ на устройствах с питанием от аккумулятора или в условиях, где энергопотребление является проблемой.
  • Снижение затрат: Более низкий объем моделей приводит к снижению требований к хранению и пропускной способности, что переводится в экономию для разработчиков и конечных пользователей.

Проблемы квантификации модели в Генеративном ИИ

Несмотря на свои преимущества, квантификация модели в Генеративном ИИ имеет свои вызовы:

  • Обучение с учетом квантования: Подготовка моделей к квантификации часто требует повторного обучения. Обучение с учетом квантования направлено на минимизацию потери качества модели в процессе квантификации.
  • Выбор оптимальной точности: Выбор правильного уровня точности для квантификации крайне важен. Слишком низкая точность может привести к значительной потере качества, а слишком высокая точность может не обеспечить достаточное уменьшение размера модели.
  • Доводка и калибровка: После квантификации модели может потребоваться доводка и калибровка для поддержания их производительности и обеспечения их эффективной работы в новых ограничениях точности.

Применение квантованного генеративного искусственного интеллекта

Генерация искусства на устройстве: Сжатие моделей генеративного искусственного интеллекта (Generative AI) с помощью квантования позволяет художникам создавать инструменты для генерации искусства на устройствах, делая их более доступными и переносимыми для творческой работы.

Кейс-стади: Пикассо на вашем смартфоне

Модели генеративного искусственного интеллекта могут создавать произведения искусства, которые не уступают произведениям известных художников. Однако развертывание этих моделей на мобильных устройствах является сложной задачей из-за их требований к ресурсам. Квантование моделей позволяет художникам создавать мобильные приложения, которые могут генерировать искусство в реальном времени, не ухудшая качество. Теперь пользователи могут наслаждаться произведениями искусства в стиле Пикассо прямо на своих смартфонах.

Код для подготовки системы читателя и генерации изображения с использованием предварительно обученной модели. Ниже приведен скрипт на языке Python, который поможет вам установить необходимые библиотеки и создать выходное изображение с использованием предварительно обученной модели переноса стиля нейронной сети (NST).

  • Шаг 1: Установить необходимые библиотеки
  • Шаг 2: Импортировать библиотеки
  • Шаг 3: Загрузить предварительно обученную модель NST
# Нам понадобятся TensorFlow, NumPy и PIL для обработки изображений!pip install tensorflow numpy pillow

import tensorflow as tfimport numpy as npfrom PIL import Imageimport tensorflow_hub as hub  # Импорт TensorFlow Hub

# Шаг 1: Загрузить предварительно обученную модель# Можно загрузить модель из TensorFlow Hub.# Убедитесь, что вы используете последнюю ссылку из моделей Kaggle.model_url = "https://tfhub.dev/google/magenta/arbitrary-image-stylization-v1-256/2"# Шаг 2: Загрузить модельhub_model = tf.keras.Sequential([    hub.load(model_url)])# Шаг 3: Подготовить изображения контента и стиля# Убедитесь, что заменили 'content.jpg' и 'style.jpg' на свои пути к изображениям.content_path = 'content.jpg'style_path = 'style.jpg'# Шаг 4: Определить функцию для загрузки и предобработки изображенийdef load_and_preprocess_image(path):    image = Image.open(path)    image = np.array(image)    image = tf.image.convert_image_dtype(image, tf.float32)    image = image[tf.newaxis, :]    return image# Шаг 5: Загрузить и предобработать изображения контента и стиляcontent_image = load_and preprocess_image(content_path)style_image = load_and preprocess_image(style_path)# Шаг 6: Сгенерировать выходное изображениеoutput_image = hub_model(tf.constant(content_image), tf.constant(style_image))[0]# Шаг 7: Постобработать выходное изображениеoutput_image = output_image * 255output_image = np.array(output_image, dtype=np.uint8)output_image = output_image[0]# Шаг 8: Сохранить сгенерированное изображение в файлoutput_path = 'output_image.jpg'output_image = Image.fromarray(output_image)output_image.save(output_path)# Шаг 9: Отобразить сгенерированное изображениеoutput_image.show()# Сгенерированное изображение сохранено в файле 'output_image.jpg' в вашей рабочей директории

Порядок действий

  • Мы начинаем с установки необходимых библиотек: TensorFlow, NumPy и Pillow (PIL) для обработки изображений.
  • Мы импортируем эти библиотеки и загружаем предварительно обученную модель NST из TensorFlow Hub. Вы можете заменить model_url на свою модель или загрузить одну из TensorFlow Hub.
  • Мы указываем пути к файлам содержимого и стиля. Замените ‘content.jpg’ и ‘style.jpg’ на свои файлы изображений.
  • Мы определяем функцию для загрузки и предобработки изображений, преобразуя их в формат, требуемый моделью.
  • Мы загружаем и предобрабатываем изображения контента и стиля с помощью определенной функции.
  • Мы генерируем выходное изображение, применяя модель NST к изображениям контента и стиля.
  • Мы постобрабатываем выходное изображение, преобразуя его в правильный тип данных и формат.
  • Мы сохраняем сгенерированное изображение в файл с именем ‘output_image.jpg’ и отображаем его.
import tensorflow as tf# Загрузить квантованную модельinterpreter = tf.lite.Interpreter(model_path="quantized_picasso_model.tflite")interpreter.allocate_tensors()# Генерировать искусство в реальном времениinput_data = prepare_input_data()  # Подготовить входные данныединтерпретатор.set_tensor(input_details[0]['index'], input_data)interpreter.invoke()output_data = interpreter.get_tensor(output_details[0]['index'])

В этом коде мы загружаем квантованную модель с помощью TensorFlow Lite. Подготовьте входные данные для генерации искусства. Используйте квантованную модель для генерации искусства в реальном времени на мобильном устройстве.

Здравоохранение Обработка изображений на краевых устройствах: Квантовые модели могут быть задействованы для улучшения медицинских изображений в реальном времени, обеспечивая более быструю и эффективную диагностику.

Статья: Быстрый анализ рентгена

В сфере здравоохранения быстрое и точное улучшение изображений имеет важное значение. Квантовые генеративные искусственного интеллекта модели могут быть задействованы на краевых устройствах, таких как рентгеновские аппараты, для улучшения изображений в реальном времени. Это помогает медицинским специалистам быстрее и точнее диагностировать состояния.

Системные требования

  • Перед запуском кода убедитесь, что у вас есть следующее:
  • Установленная библиотека PyTorch.
  • Предварительно обученная модель квантованного медицинского улучшения (контрольная точка модели), сохраненная как “quantized_medical_enhancement_model.pt”.
import torchimport torchvision.transforms as transforms# Загрузка квантованной моделиmodel = torch.jit.load("quantized_medical_enhancement_model.pt")# Предварительная обработка рентгеновского изображенияtransform = transforms.Compose([transforms.Resize(224), transforms.ToTensor()])input_data = transform(your_xray_image)# Улучшение рентгеновского изображения в реальном времениenhanced_image = model(input_data)

Объяснение

  • Загрузка модели: Мы загружаем специализированную модель улучшения рентгеновского изображения.
  • Предварительная обработка изображения: Мы подготавливаем рентгеновское изображение для понимания моделью.
  • Улучшение изображения: Модель улучшает рентгеновское изображение в реальном времени, помогая врачам лучше диагностировать.

Ожидаемый результат

  • Ожидаемый результат кода – улучшенное рентгеновское изображение. Конкретные улучшения или изменения, внесенные во входное рентгеновское изображение, зависят от архитектуры и возможностей модели квантованного медицинского улучшения, которую вы используете. Код предназначен для преобразования рентгеновского изображения, предобработки его, подачи на модель и возврата улучшенного изображения в качестве выходных данных.

Мобильное поколение текста: Мобильные приложения могут предоставлять услуги по генерации текста с сниженной задержкой и использованием ресурсов, улучшая пользовательский опыт.

Статья: Быстрые текстовые композиции

Мобильные приложения часто используют генеративный искусственный интеллект для генерации текста, но задержка может быть проблемой. Квантование модели снижает вычислительную нагрузку, позволяя мобильным приложениям предоставлять мгновенные текстовые композиции без задержек.

# Необходимые библиотекиimport tensorflow as tf

# Загрузка квантованной модели генерации текстainterpreter = tf.lite.Interpreter(model_path="quantized_text_gen_model.tflite")interpreter.allocate_tensors()# Генерация текста в реальном времениinput_text = "Составьте текст о"input_data = prepare_input_data(input_text)interpreter.set_tensor(input_details[0]['index'], input_data)interpreter.invoke()output_data = interpreter.get_tensor(output_details[0]['index'])

Объяснение:

  • Импорт TensorFlow: Импортирование библиотеки TensorFlow для машинного обучения.
  • Загрузка квантованной модели генерации текста: Загрузка предварительно обученной модели генерации текста, которая была оптимизирована для эффективности.
  • Подготовка входных данных: В этом фрагменте кода отсутствует этот шаг и требуется функция для преобразования входного текста в подходящий формат.
  • Установка входного тензора: Передача подготовленных входных данных в модель.
  • Вызов модели: Запуск процесса генерации текста с использованием модели.
  • Получение выходных данных: Получение сгенерированного текста из выхода модели.

Ожидаемый результат:

  • Код загружает квантованную модель генерации текста.
  • Вы вводите текст, например “Составьте текст о”.
  • Код обрабатывает входные данные и использует модель для генерации текста.
  • Выходом является сгенерированный текст, который может представлять собой связную текстовую композицию на основе вашего ввода.

Кейсы

DeepArt: Искусство на вашем смартфоне

Обзор: DeepArt – мобильное приложение, использующее квантование моделей для создания искусства на смартфонах. Пользователи могут сделать фотографию или выбрать существующее изображение и применить стиль известных художников в режиме реального времени. Квантованная модель генеративного искусственного интеллекта обеспечивает плавную работу приложения на мобильных устройствах без ущерба для качества создаваемых произведений искусства.

MedImage Enhancer: Усиление рентгеновского изображения на границе

Обзор: MedImage Enhancer – это медицинское изображение, разработанное для удаленных районов. Он использует модель Generative AI с квантованием для улучшения реального времени рентгеновских изображений. Это инновационное решение значительно помогает медицинским специалистам быстро и точно ставить диагнозы, особенно в районах с ограниченным доступом к медицинским учреждениям.

QuickText: Мгновенное составление текста

Обзор: QuickText – это мобильное приложение, использующее квантование моделей для генерации текста. Пользователи могут ввести частичное предложение, и приложение мгновенно генерирует связный и контекстно-зависимый текст. Квантованная модель обеспечивает минимальную задержку и улучшает пользовательский опыт.

Оптимизация кода для квантования моделей

Внедрение квантования моделей в Generative AI можно достичь с помощью популярных фреймворков глубокого обучения, таких как TensorFlow и PyTorch. Инструменты и техники, такие как квантовое обучение, TensorFlow Lite и динамическое квантование PyTorch, предлагают простой способ реализации квантования в ваших проектах.

Квантование TensorFlow Lite

TensorFlow предоставляет набор инструментов для квантования моделей, особенно подходящих для использования в устройствах. Ниже приведен фрагмент кода, демонстрирующий квантование модели TensorFlow, используя TensorFlow Lite:

import tensorflow as tf # Загрузите сохраненную модельconverter = tf.lite.TFLiteConverter.from_saved_model("your_model_directory") converter.optimizations = [tf.lite.Optimize.DEFAULT]tflite_model = converter.convert()open("quantized_model.tflite", "wb").write(tflite_model)

Объяснение

  • В этом коде мы начинаем с импорта библиотеки TensorFlow.
  • tf.lite.TFLiteConverter используется для загрузки сохраненной модели из вашего каталога моделей.
  • Мы устанавливаем оптимизацию на tf.lite.Optimize.DEFAULT, чтобы включить стандартное квантование.
  • Наконец, мы преобразуем модель и сохраняем ее в виде квантованной модели TensorFlow Lite.

Динамическое квантование PyTorch

PyTorch предлагает динамическое квантование, позволяющее квантировать модель во время вывода. Вот фрагмент кода для динамического квантования PyTorch:

import torchfrom torch.quantization import quantize_dynamicmodel = YourPyTorchModel()model.qconfig = torch.quantization.get_default_qconfig('fbgemm')quantized_model = quantize_dynamic(model, qconfig_spec={torch.nn.Linear}, dtype=torch.qint8)

Объяснение

  • В этом коде мы начинаем с импорта необходимых библиотек.
  • Мы создаем вашу модель PyTorch, YourPyTorchModel().
  • Устанавливаем конфигурацию квантования (qconfig) на конфигурацию по умолчанию, подходящую для вашей модели.
  • Наконец, мы используем quantize_dynamic для квантования модели, и вы получите квантованную модель как quantized_model.

Сравнительные данные: квантованные модели и модели без квантования

Чтобы продемонстрировать влияние квантования моделей:

Объем памяти

  • Без квантования: 3,2 ГБ в памяти.
  • Квантованная: Размер модели уменьшен на 65%, что приводит к использованию памяти 1,1 ГБ. Это уменьшение расхода памяти на 66%.

Скорость и эффективность вывода

  • Без квантования: 38 мс на вывод, потребление энергии 3,5 Дж.
  • Квантованная: Более быстрый вывод на 22 мс на вывод (улучшение на 42%) и уменьшение потребления энергии на 2,2 Дж (сэкономлено 37% энергии).

Качество выходных данных

  • Без квантования: Визуальное качество (8,7 по шкале от 1 до 10), Согласованность текста (9,2 по шкале от 1 до 10).
  • Квантованная: Произошло незначительное снижение визуального качества (7,9, уменьшение на 9%), сохраняя при этом согласованность текста (9,1, снижение на 1%).

Скорость вывода по сравнению с качеством модели

  • Без квантования: 25 кадров в секунду, оценка качества (Q1) 8,7.
  • Квантованная: Более быстрый вывод на 38 кадров в секунду (улучшение на 52%) с оценкой качества (Q2) 7,9 (уменьшение на 9%).

Сравнительные данные подчеркивают выгоды квантования в эффективности использования ресурсов и компромиссы с качеством выходных данных в реальных приложениях.

Лучшие практики квантования моделей в генеративном искусственном интеллекте

Хотя квантование моделей предлагает несколько преимуществ для развертывания моделей генеративного искусственного интеллекта в ресурсоограниченных средах, важно следовать лучшим практикам, чтобы гарантировать успех ваших усилий по квантованию. Вот несколько основных рекомендаций:

  • Обучение, учитывающее квантование: Начните с обучения, учитывающего квантование, процесса, который настраивает вашу модель на снижение точности. Это помогает минимизировать потерю качества модели во время квантования. Важно сохранять баланс между сокращением точности и производительностью модели.
  • Выбор точности: Тщательно выберите правильную точность для квантования. Оцените компромиссы между уменьшением размера модели и потенциальной потерей качества. Возможно, вам придется экспериментировать с разными уровнями точности, чтобы найти оптимальный компромисс.
  • Калибровка: После квантования выполните калибровку, чтобы убедиться, что квантованная модель работает эффективно в рамках новых ограничений точности. Калибровка помогает настроить поведение модели для достижения желаемого вывода.
  • Тестирование и проверка: Тщательно протестируйте и проверьте вашу квантованную модель. Это включает оценку ее производительности на реальных данных, измерение скорости вывода и сравнение качества генерируемых результатов с исходной моделью.
  • Мониторинг и настройка: Непрерывно отслеживайте производительность квантованной модели в производственной среде. При необходимости настройте модель для поддержания или улучшения ее качества. Этот итеративный процесс гарантирует эффективность квантованной модели.
  • Документирование и версионирование: Задокументируйте процесс квантования и ведите подробные записи о версиях модели, данных калибровки и метриках производительности. Эта документация помогает отслеживать эволюцию квантованной модели и упрощает устранение ошибок, если возникают проблемы.
  • Оптимизация процесса вывода: Обратите внимание на весь процесс вывода, а не только на модель саму по себе. Оптимизируйте предварительную и постобработку входных данных и другие компоненты для максимизации общей эффективности системы.

Заключение

В области генеративного искусственного интеллекта квантование моделей – серьезное решение для преодоления проблем размера модели, потребления памяти и вычислительных требований. Путем сокращения точности числовых значений с сохранением качества модели квантование позволяет моделям генеративного искусственного интеллекта расширить свои возможности в ресурсоограниченных средах. По мере того как исследователи и разработчики продолжают улучшать процесс квантования, мы можем ожидать, что генеративный искусственный интеллект будет применяться в еще более разнообразных и инновационных приложениях, от мобильных устройств до реберных вычислений. В этом путешествии ключевую роль играет поиск правильного баланса между размером модели и ее качеством, раскрывая истинный потенциал генеративного искусственного интеллекта.

Источник - rinf.tech

Основные выводы

  • Квантование моделей снижает потребление памяти, позволяя развертывать модели генеративного искусственного интеллекта на реберных устройствах и мобильных приложениях.
  • Квантованные модели обеспечивают более быстрый вывод, улучшенную энергоэффективность и снижение затрат.
  • Проблемы квантования включают обучение, учитывающее квантование, оптимальный выбор точности и последующую настройку после квантования.
  • Реальные приложения квантованного генеративного искусственного интеллекта включают создание искусства на устройствах, изображение в области здравоохранения на реберных устройствах и генерацию текста на мобильных устройствах.

Часто задаваемые вопросы

Медиа, показанное в этой статье, не является собственностью Analytics Vidhya и используется по усмотрению автора.