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

Один из типов среды тестирования — параллельные развертывания, также называемые «теневыми развертываниями». Одна или несколько новых моделей, известных как «претенденты», тестируются в сравнении с существующей моделью управления, которая, как уже известно, дает точные результаты, называемые «чемпионом», чтобы определить, может ли «претендент» генерировать более быстрые или более точные выходные данные. в зависимости от критериев. Ключевым моментом теневого развертывания является то, что вы можете увидеть, как претендент будет работать в производственной среде, фактически не находясь в производственной среде (и, возможно, принося плохие результаты бизнесу).

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

Предпосылки для теневого развертывания

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

Шаг 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.