
Что касается тестирования моделей и экспериментов, Wallaroo предлагает несколько различных сред для оценки моделей по сравнению с другими моделями или наборами моделей внутри конвейера. Это позволяет вам выбрать, какая из имеющихся у вас моделей будет лучше работать в производстве. Возможность протестировать существующие модели в сравнении с потенциальной заменой помогает принимать более обоснованные решения на основе ваших данных.
Один из типов среды тестирования — параллельные развертывания, также называемые «теневыми развертываниями». Одна или несколько новых моделей, известных как «претенденты», тестируются в сравнении с существующей моделью управления, которая, как уже известно, дает точные результаты, называемые «чемпионом», чтобы определить, может ли «претендент» генерировать более быстрые или более точные выходные данные. в зависимости от критериев. Ключевым моментом теневого развертывания является то, что вы можете увидеть, как претендент будет работать в производственной среде, фактически не находясь в производственной среде (и, возможно, принося плохие результаты бизнесу).
В этом руководстве мы покажем, как развернуть модели-претенденты и сравнить их производительность с моделью-чемпионом с помощью Wallaroo. Это будет охватывать пошаговый процесс загрузки моделей чемпиона и претендента, создания теневого развертывания в конвейере Wallaroo, выполнения вывода с помощью теневого развертывания, наблюдения за данными и shadow_data. результатов из объекта результата вывода и просмотра журналов конвейера и теневых журналов конвейера.
Предпосылки для теневого развертывания
Для этого руководства мы будем использовать файлы ниже, которые доступны через репозиторий учебных пособий Wallaroo.
- Пример тестовых данных для тестирования логического вывода: dev_smoke_test.json
- Модель-чемпион: keras_ccfraud.onnx
- Модели Challenger: modelA.onnx и xgboost_ccfraud.onnx
Шаг 1: Импорт библиотек
Начните с импорта необходимых библиотек с помощью следующей команды:
import wallaroo from wallaroo.object import EntityNotFoundError
Шаг 2: Подключение к Wallaroo
Затем введите команду ниже, чтобы подключиться к вашему экземпляру Wallaroo, и сохраните соединение как переменную wl:
wl = wallaroo.Client()
Шаг 3: Установка переменных
В зависимости от требований вашей организации и экземпляра Wallaroo вам потребуется указать следующие переменные для создания или использования существующих рабочих пространств и конвейеров, а также для загрузки моделей. Например, в этом руководстве файлы моделей были помещены в папку с именем «models», поэтому расположение файлов написано 'models/(имя файла)'. Начните со следующих команд, внося необходимые коррективы в соответствии с потребностями вашей организации:
workspace_name = ‘ccfraud-comparison-demo’ pipeline_name = ‘cc-shadow’ pipeline_name_multi = ‘cc-shadow-multi’ champion_model_name = ‘ccfraud-lstm’ champion_model_file = ‘models/keras_ccfraud.onnx’ shadow_model_01_name = ‘ccfraud-xgb’ shadow_model_01_file = ‘models/xgboost_ccfraud.onnx’ shadow_model_02_name = ‘ccfraud-rf’ shadow_model_02_file = ‘models/modelA.onnx’ sample_data_file = ‘./smoke_test.json’
Шаг 4: Создание или подключение к рабочей области и конвейеру
Для экземпляра Wallaroo не требуется иметь уникальные имена рабочей области и конвейера. Поэтому используйте стандарты вашей организации для создания или подключения к рабочему месту и конвейеру, определив переменную workspace_name и переменную pipeline_name соответственно в приведенной ниже команде:
def get_workspace(name): wl = wallaroo.Client() workspace = None for ws in wl.list_workspaces(): if ws.name() == name: workspace= ws if(workspace == None): workspace = wl.create_workspace(name) return workspace def get_pipeline(name): wl = wallaroo.Client() try: pipeline = wl.pipelines_by_name(pipeline_name)[0] except EntityNotFoundError: pipeline = wl.build_pipeline(pipeline_name) return pipeline workspace = get_workspace(workspace_name) wl.set_current_workspace(workspace) pipeline = get_pipeline(pipeline_name) pipeline
Шаг 5: Загрузка моделей
Создав рабочую область и настроив ее как текущую в предыдущей команде, ваши модели будут загружены и перечислены как champion, model2 и model3 в соответствии с имена переменных, назначенные на шаге 3. Команды должны отражать следующее:
champion = wl.upload_model(champion_model_name, champion_model_file).configure() model2 = wl.upload_model(shadow_model_01_name, shadow_model_01_file).configure() model3 = wl.upload_model(shadow_model_02_name, shadow_model_02_file).configure()
Шаг 6: Создание теневого развертывания
Теперь вы можете приступить к созданию теневого развертывания с помощью команды add_shadow_deploy(champion, challengers[]). В этой команде champion относится к основной модели, используемой для выводов, проходящих через конвейер, а challengers[] обозначает наборы моделей, используемые для выводов итеративно:
pipeline.add_shadow_deploy(champion, [model2, model3]) pipeline.deploy()
Это приведет к следующим результатам:

Шаг 7: Запуск тестового вывода
Тестовый вывод будет создан с использованием данных из файла sample_data_file.
Данные результата вывода из моделей champion и challengers[] будут возвращены через элемент data Объект результата вывода и элемент Элемент shadow_data объекта результата вывода соответственно:
response = pipeline.infer_from_file(sample_data_file) response
Ответ будет выглядеть так:
Шаг 8. Просмотр журналов конвейера
После завершения выводов используйте следующую функцию конвейера logs для извлечения данных журнала из конвейера:
pipeline.logs()
Если процесс прошел успешно, он будет выглядеть следующим образом:
Шаг 9. Просмотр журналов конвейера теневого развертывания
Следующая команда pipelogs_shadow_deploy() позволит вам просмотреть результаты и входные данные для теневых развернутых моделей:
logs = pipeline.logs_shadow_deploy() logs
Журналы из теневого конвейера, сгруппированные по входным данным, будут такими, как показано ниже:
Шаг 10. Отмена развертывания пайплайна
Наконец, после завершения теневого развертывания и получения журналов конвейера отмените развертывание конвейера, чтобы восстановить ресурсы в системе. Команда для этого процесса:
pipeline.undeploy()
Это приведет к следующим результатам:
Оценка производительности вашей модели перед запуском ее в производство — отличный способ протестировать новые версии, не влияя на бизнес-операции. Следуя описанным выше шагам, вы сможете успешно теневое развертывание моделей и тестирование производительности с помощью Wallaroo. Чтобы поговорить с нашими экспертами о наших решениях для теневого развертывания, свяжитесь с нами. Для получения дополнительной информации или помощи по этому руководству посетите сайт документации Wallaroo.