Функция `Classifier.export_saved_model` — это метод, который обычно встречается в рабочих процессах машинного обучения на основе TensorFlow, особенно связанный с процессом развертывания моделей машинного обучения в производственных средах, таких как серверные платформы Google Cloud (например, AI Platform Prediction). Для понимания этого метода требуется знакомство с фреймворком TensorFlow, форматом SavedModel и лучшими практиками экспорта обученных моделей для масштабируемого серверного вывода.
Цель `export_saved_model`
После того, как модель обучена и оценена на точность и производительность, следующим шагом обычно является ее развертывание, чтобы она могла служить прогнозами в реальных сценариях. Метод `export_saved_model` служит этой цели, сериализуя обученный классификатор в формат SavedModel, который является стандартным форматом сериализации TensorFlow для моделей. Этот формат широко поддерживается на различных платформах и инструментах, включая Google Cloud's AI Platform, TensorFlow Serving, TensorFlow Lite и TensorFlow.js.
SavedModel инкапсулирует как архитектуру, так и веса модели, наряду с метаданными и, что важно, сигнатурами, которые определяют, как модель получает входные данные и выдает выходные данные. Эта инкапсуляция жизненно важна для обеспечения согласованности и переносимости при перемещении моделей из сред разработки в производство.
Подробная разбивка функциональности
1. Сериализация модели
При вызове `classifier.export_saved_model(export_dir_base, serve_input_receiver_fn)` метод выполняет следующие операции:
– Архитектура и вес модели: Сохраняются как структура вычислительного графа, так и изученные параметры.
– Подписи: Метод регистрирует одну или несколько "сигнатур", которые определяют входные и выходные тензоры для вывода. Сигнатура по умолчанию обычно используется для обслуживания прогнозов.
– Активы и переменные: Включены любые внешние файлы или переменные состояния (например, файлы словаря для встраивания слоев).
2. `serving_input_receiver_fn`
Критически важным компонентом процесса экспорта является определение параметра `serving_input_receiver_fn`. Эта функция определяет, как ожидается, что входные данные будут предоставлены модели при обслуживании прогнозов. Она возвращает объект `ServingInputReceiver`, который указывает заполнители для входных тензоров и способ их сопоставления с функциями модели.
Это критически важно для анализа и выбора наиболее эффективных ключевых слов для улучшения рейтинга вашего сайта.
python def serving_input_receiver_fn(): feature_spec = { 'feature1': tf.placeholder(dtype=tf.float32, shape=[None]), 'feature2': tf.placeholder(dtype=tf.int64, shape=[None]) } return tf.estimator.export.ServingInputReceiver( features=feature_spec, receiver_tensors=feature_spec )
Эта функция гарантирует, что экспортированная модель сможет правильно анализировать входные данные во время вывода, сопоставляя входной конвейер, используемый во время обучения и оценки.
3. Выходной каталог
Аргумент `export_dir_base` указывает базовый каталог, в котором будет сохранен экспорт модели. Каждый вызов `export_saved_model` создает новый подкаталог с меткой времени, что помогает в сценариях управления версиями и отката.
Соответствие бессерверным прогнозам
В контексте Google Cloud's AI Platform Prediction или Vertex AI модели должны быть загружены в формате SavedModel для размещения и обслуживания в качестве служб прогнозирования. Когда модель экспортируется с помощью `export_saved_model`, она создает структуру каталогов, совместимую с этими облачными службами. Затем пользователи могут использовать Google Cloud SDK или консоль для развертывания экспортированной модели для онлайн- или пакетных прогнозов.
Пример рабочего процесса
1. Обучите модель:
python classifier.train(input_fn=train_input_fn, steps=1000)
2. Экспорт модели:
python export_dir = classifier.export_saved_model( export_dir_base='gs://my-bucket/model-exports/', serving_input_receiver_fn=serving_input_receiver_fn )
3. Развертывание в Google Cloud:
– Загрузите экспортированный каталог моделей в хранилище Google Cloud Storage.
– Используйте инструмент командной строки или Google Cloud Console, чтобы создать новую версию модели, указывающую на этот каталог.
4. Прогнозы обслуживания:
– Модель доступна через REST API для онлайн-прогнозирования или может обрабатывать большие объемы данных с помощью пакетных заданий прогнозирования.
Совместимость и портативность
Одним из главных преимуществ формата SavedModel, созданного с помощью `Classifier.export_saved_model`, является его переносимость. Модель, экспортированная в этом формате, может быть:
– Обслуживается с использованием TensorFlow Serving в локальных или контейнерных средах.
– Преобразован в TensorFlow Lite для мобильных и встраиваемых приложений.
– Переведено на TensorFlow.js для вывода на основе браузера.
– Загружаются и обслуживаются в облачных средах (Google Cloud AI Platform, Amazon SageMaker и т. д.).
Такая кроссплатформенная совместимость гарантирует, что организации не будут привязаны к определенной технологии обслуживания или поставщику облачных услуг.
Версии и жизненный цикл модели
Каждый раз, когда вызывается метод `export_saved_model`, создается новый неизменяемый подкаталог (часто с временной меткой). Эта функция облегчает надежную практику управления версиями моделей:
– Несколько версий модели могут сосуществовать, что позволяет легко откатиться назад.
– Во время развертывания определенные версии могут быть повышены или понижены в зависимости от производительности в производстве.
– Это поддерживает A/B-тестирование, канареечные выпуски и непрерывные рабочие процессы развертывания.
Важность крупномасштабного бессерверного вывода
В средах прогнозирования без сервера, таких как Google Cloud AI Platform, пользователи не управляют базовой серверной инфраструктурой. Вместо этого они взаимодействуют с высокоуровневыми API для развертывания, масштабирования и мониторинга моделей. Чтобы эта абстракция была эффективной, экспортированная модель должна соответствовать стандартизированным интерфейсам ввода/вывода и быть надежно сериализуемой. Метод `export_saved_model` с использованием формата SavedModel и явных сигнатур обслуживания гарантирует, что модель готова к таким производственным средам.
Дополнительные возможности
В зависимости от используемого класса оценщика или классификатора `export_saved_model` может принимать дополнительные параметры для настройки процесса экспорта, например, экспорт дополнительных подписей или настройка активов, включенных в каталог экспорта.
Лучшие практики
– Всегда проверяйте экспортированную SavedModel локально перед развертыванием в рабочей среде.
– Четко документируйте схему подписи и ввода, поскольку эта информация имеет решающее значение для потребителей сервиса прогнозирования.
– Используйте единое и понятное соглашение об именовании каталогов экспорта, чтобы упростить управление моделями и отслеживаемость.
– При использовании пользовательских шагов предварительной обработки убедитесь, что они включены в график или обрабатываются извне для обеспечения согласованности между обучением и обслуживанием.
Пример: экспорт классификатора TensorFlow Estimator
Вот более подробный пример, иллюстрирующий типичный рабочий процесс экспорта обученного классификатора:
python import tensorflow as tf # Define feature columns and classifier feature_columns = [tf.feature_column.numeric_column('feature', shape=[1])] classifier = tf.estimator.DNNClassifier( feature_columns=feature_columns, hidden_units=[10, 10], n_classes=3 ) # Define the serving input function def serving_input_receiver_fn(): features = { 'feature': tf.placeholder(dtype=tf.float32, shape=[None, 1]) } return tf.estimator.export.ServingInputReceiver(features, features) # Train the classifier classifier.train(input_fn=train_input_fn, steps=1000) # Export the trained model export_dir = classifier.export_saved_model('exported_model/', serving_input_receiver_fn)
После выполнения вышеуказанных действий каталог `exported_model/` будет содержать подкаталог с меткой времени и сохраненной моделью.
Структура каталога модели
Типичный каталог экспорта SavedModel содержит следующие файлы:
– `saved_model.pb` (или `saved_model.pbtxt`): сериализованное определение графа.
– `variables/`: каталог, содержащий файлы контрольных точек с обученными весами.
– `assets/`: любые необходимые дополнительные файлы (например, файлы словаря).
– `assets.extra/`: любые дополнительные активы, если указаны.
– Подкаталоги метаданных (необязательно).
Обслуживание экспортируемой модели
После экспорта модель можно развернуть с помощью платформы искусственного интеллекта Google Cloud с помощью таких команд:
shell gcloud ai-platform models create my_model gcloud ai-platform versions create v1 --model=my_model --origin=gs://my-bucket/model-exports/...
Затем модель может получать запросы на прогнозирование в формате, указанном обслуживающей функцией приемника входных данных.
Устранение неполадок и проверка
Важно убедиться, что экспортированная модель:
– Принимает ожидаемый формат входных данных.
– Выдает результаты, соответствующие локальным прогнозам.
– Включает все необходимые активы и переменные.
Перед развертыванием модели в производственной среде рекомендуется провести ее локальное тестирование с помощью TensorFlow Serving или инструмента `saved_model_cli`.
Практические соображения
– Согласованность входной схемы: Убедитесь, что схема данных во время обслуживания соответствует схеме данных во время обучения.
– дозирующий: Экспортированная модель должна иметь возможность обрабатывать пакеты данных для повышения эффективности производства.
– Индивидуальная предварительная обработка: Если используются специальные этапы проектирования функций, их следует встроить в граф модели или обработать в конвейере обслуживания, чтобы избежать расхождений.
– Обновления модели: При переобучении и экспорте новых моделей убедитесь, что применяются политики управления версиями для поддержания надежности обслуживания.
Безопасность и управление
При экспорте моделей для развертывания учитывайте следующие аспекты безопасности и управления:
– Храните экспортированные модели в безопасных местах с контролируемым доступом (например, в облачном хранилище Google с соответствующими политиками IAM).
– Аудит и регистрация экспорта и развертывания моделей на предмет соответствия.
– Документируйте происхождение данных, происхождение модели и контекст, в котором обучалась модель.
Метод `Classifier.export_saved_model` облегчает переход от разработки модели к развертыванию в производстве путем сериализации обученных классификаторов в формат SavedModel, который широко совместим с различными обслуживающими инфраструктурами, включая службы прогнозирования без сервера Google Cloud. Благодаря использованию четко определенной функции приемника входных данных обслуживающей модели, он гарантирует, что входная схема модели является явной и воспроизводимой в производстве. Эта методология поддерживает надежное управление моделью, включая возможности управления версиями и отката, и соответствует передовым практикам для масштабируемого вывода машинного обучения без сервера.
Другие недавние вопросы и ответы, касающиеся EITC/AI/GCML Машинное обучение Google Cloud:
- Какие распространенные алгоритмы искусственного интеллекта/машинного обучения следует использовать для обработки данных?
- Как модели Keras заменяют оценщики TensorFlow?
- Как настроить конкретную среду Python с помощью Jupyter Notebook?
- Как использовать TensorFlow Serving?
- Почему регрессия часто используется в качестве предиктора?
- Актуальны ли множители Лагранжа и методы квадратичного программирования для машинного обучения?
- Можно ли применять более одной модели в процессе машинного обучения?
- Может ли машинное обучение адаптировать используемый алгоритм в зависимости от сценария?
- Каков самый простой путь к базовому обучению и развертыванию дидактической модели ИИ на платформе Google AI с использованием бесплатного уровня/пробной версии с использованием графической пользовательской консоли в пошаговой манере для абсолютного новичка без опыта программирования?
- Как на практике обучить и развернуть простую модель ИИ в Google Cloud AI Platform с помощью графического интерфейса консоли GCP в пошаговом руководстве?
Просмотреть дополнительные вопросы и ответы в EITC/AI/GCML Google Cloud Machine Learning