Прошло некоторое время с момента моего последнего сообщения, и с тех пор в Cloud Pak for Data (теперь версия 4.0) было внесено несколько улучшений.

В моем предыдущем посте с Cloud Pak for Data 2.5 были некоторые проблемы с созданием пользовательских сред в Watson Machine Learning, и было сложно развернуть модели Prophet (приходилось прибегать к обходным путям).

Эти проблемы были исправлены, и в этом посте я продемонстрирую собственный способ развертывания моделей Prophet в Watson Machine Learning. Следующее было протестировано в Cloud Pak для данных как услуга (CPDaaS) и Cloud Pak для данных 4.0 (CPD).

Существует три шага, которые обычно выполняются при создании пользовательской среды.

  1. Разработка — разработка модели в пользовательской среде в Watson Studio.
  2. Производство — развертывание модели и пользовательской среды в Watson Machine Learning.
  3. Testing — протестировать развернутую функцию

Разработайте модель, используя пользовательскую среду в Watson Studio.

Одним из распространенных способов установки пакетов в Watson Studio является запуск pip install в ячейке Jupyter Notebook, которая выглядит следующим образом:

! pip install prophet

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

Watson Studio может установить пакеты за вас, определив пользовательскую среду. Таким образом, каждый раз, когда вы запускаете Jupyter Notebook или Jupyter Lab с помощью среды, все указанные вами пакеты будут предварительно установлены.

Чтобы создать пользовательскую среду, щелкните вкладку «Среды» в своем проекте Watson Studio. Ниже приведен пример создания окружения для Prophet.

Примечание: ошибка в названии пакета, вместо fbprophet должно быть пророк.

Ниже приведен альтернативный способ указания пакетов с помощью pip. Работает как conda, так и pip.

После того, как вы завершили разработку модели и она готова к развертыванию, следующим шагом будет переход в настраиваемую среду к пространству развертывания (Watson Machine Learning).

Как и большинство функций Cloud Pak for Data, существует два способа развертывания пользовательской среды:

  1. Использование пользовательского интерфейса (как показано ниже)
  2. Использование Watson Machine Learning API (как показано ниже)

Чтобы развернуть настраиваемую среду с помощью пользовательского интерфейса, просто щелкните дополнительные параметры и выберите вариант продвижения. Затем выберите пространство для развертывания, и пользовательская среда готова к использованию.

Развертывание модели и пользовательской среды в Watson Machine Learning

Согласно документации Пророка,

В Python модели не следует сохранять с помощью pickle; серверная часть Stan, прикрепленная к объекту модели, не будет хорошо обрабатываться и будет вызывать проблемы в некоторых версиях Python. Вместо этого вы должны использовать встроенные функции сериализации для сериализации модели в json.

Один из способов развертывания модели Пророка состоит в следующем:

  1. Подходит для модели
  2. Сериализировать модель в json
  3. Передать сериализованную модель в развернутую функцию для логического вывода

Используя пользовательскую среду, созданную ранее,

Примечание. Первый запуск пользовательской среды может занять некоторое время, так как диспетчер пакетов (conda) должен разрешить множество зависимостей. В случае с Prophet есть несколько тяжелых зависимостей для Prophet, таких как Stan и компилятор gcc.

Подгоняя простую модель Пророка,

Сериализация модели в json,

Существует множество способов сохранения сериализованной модели json, например, сохранение вывода json в

  • база данных
  • файловая система
  • в ведре S3
  • в Студии Ватсона
  • в машинном обучении Watson

Для простоты я сохраню json как переменную и передам ее функции. Развертывание функции в Watson Machine Learning дает вам возможность делать почти все, что вам нужно, чтобы загрузить сериализованную модель json и сделать прогноз.

После подгонки и сериализации модели следующим шагом будет развертывание функции Prophet в Watson Machine Learning и передача сериализованной модели json для логического вывода. Подробную информацию см. в следующей записной книжке.

Протестируйте развернутую функцию

Тестирование развернутой функции путем выполнения запроса на оценку.

# feel free to change to your desired forecast horizon
forecast_horizon = future.values.tolist() 
payload = {
    "input_data": [{
        "serialized_model": serialized_model,
        "values": forecast_horizon
    }]
}
function_result = client.deployments.score(function_deployment_uid, payload)

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

Вы также можете посмотреть блокнот в Jupyter Notebook Viewer, здесь.

Заключение

В более ранних версиях Cloud Pak for Data развертывание моделей Prophet было немного сложнее. Однако в обновленной версии (4.0) вы можете использовать настраиваемые среды для естественного и беспрепятственного развертывания сложных пакетов, таких как Prophet. Я надеюсь, что этот пост помог вам понять, как создавать и развертывать пользовательские среды вместе с моделями.