SparseML обеспечивает скорость вывода данных от графического процессора к процессору. Это означает существенную экономию, эффективность и больше возможностей для развертывания. С Lightning Flash все, что требуется, - это одна строка кода, чтобы включить обучение SparseML, используя при этом отличные функции Lightning, такие как обратные вызовы, ведение журнала, смешанная точность и распределенное обучение с поддержкой расширенного распределенного Плагины.

Ниже мы расскажем, как можно использовать Lightning Flash + SparseML для обучения ResNet50 с помощью задачи классификации текста Flash и увидеть впечатляющее ускорение вывода!

В соответствии с целью PyTorch Lightning по избавлению от шаблонов, Flash стремится упростить обучение, вывод и точную настройку моделей глубокого обучения.

Flash построен на основе PyTorch Lightning, чтобы абстрагироваться от ненужного шаблона для общих задач глубокого обучения.

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

Обучите классификацию изображений Lightning Flash с помощью SparseML

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

Это сводится к 3 шагам:

  • Выберите рецепт SparseML
  • Обучите классификацию изображений Lightning Flash с помощью SparseML Recipe
  • Запускать с помощью DeepSparse

Во-первых, давайте установим и импортируем библиотеки, которые мы будем использовать!

Шаг 1. Выберите рецепт SparseML

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

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

Сначала мы экспортируем модель ONNX, необходимую Sparsify для вывода конфигурации.

Затем мы импортируем файл ONNX в панель управления Sparsify UI!

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

Шаг 2. Обучение классификации изображений Lightning Flash с помощью SparseML Recipe

Когда у вас есть SparseML Recipe, определите свой DataModule, Task и Flash Trainer. Передайте SparseMLCallback тренеру, а Молния сделает все остальное!

После обучения мы можем экспортировать модель в формат ONNX с помощью обратного вызова. Это необходимо для использования движка DeepSparse.

Обратите внимание, что при введении разреженности важно поддерживать разумную точность. Lightning Flash автоматически регистрирует метрики для отслеживания прогонов, что позволяет очень легко сравнивать с базовой моделью.

Шаг 3: DeepSparse

Чтобы максимально использовать введенную разреженность, мы используем движок DeepSparse. Выполнить логический вывод с помощью DeepSparse просто; скомпилируйте модель и передайте обработанные входные данные через функцию запуска.

Мы также можем использовать Sparsify для тестирования модели, сравнивая механизм DeepSparse со стандартной средой выполнения ONNX.

Следующие шаги

Для получения дополнительной информации о SparseML и Lightning Flash, ознакомьтесь с нашими Документами обратного вызова SparseML, Документами по Flash и Документами SparseML для других вариантов использования!

Также ознакомьтесь с функциями распределенного обучения с ранним доступом в Grid, которые позволяют масштабировать модели Lightning Flash, не беспокоясь об инфраструктуре.

Вы можете начать работу с grid.ai бесплатно, просто имея аккаунт GitHub или Google!

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

Об авторе

Шон Нарентиран - инженер-исследователь в Grid AI Labs и PyTorch Lightning. Шон много работал с машинным обучением, чтобы улучшать, вводить новшества и масштабировать подходы к глубокому обучению для голосовой аналитики и обработки естественного языка, особенно в финансовой сфере. Шон также поддерживает и участвует в различных проектах PyTorch с открытым исходным кодом, таких как DeepSpeech, PyTorch, NeMo и других.