Пользовательские каркасы ML
Вы можете использовать пользовательский каркас машинного обучения, чтобы выполнить запись в журнал полезной нагрузки, ведение журнала обратной связи и измерить правильность производительности, обнаружение неравномерности среды выполнения, объяснимость, обнаружение дрейфа и функцию автоустранения неравномерности в IBM Watson OpenScale. Пользовательский каркас машинного обучения должен иметь эквивалентность с IBM Watson Machine Learning.
IBM Watson OpenScale полностью поддерживает следующие пользовательские каркасы машинного обучения:
Таблица 1. Подробности поддержки каркаса
| Структура | Тип проблемы | Тип переменной |
|---|---|---|
| Эквивалентно IBM Watson Machine Learning | Классификация | Структурированный |
| Эквивалентно IBM Watson Machine Learning | Регрессия | Структурированный |
Для модели, которая не эквивалентна IBM Watson Machine Learning, надо создать оболочку для пользовательской модели, предоставляющую требуемые конечные точки API REST, и мост ввода/вывода между Watson OpenScale и фактическим пользовательским механизмом машинного обучения.
Когда пользовательский механизм машинного обучения будет для меня лучшим выбором?
Пользовательский механизм машинного обучения - лучший выбор в следующих ситуациях:
- Вы не используете никакие готовые продукты для ваших моделей машинного обучения. Для этого вы разработали свою собственную систему. В Watson OpenScale нет и не будет прямой поддержки для этой системы.
- Используемый вами механизм от независимого разработчика пока не поддерживаются Watson OpenScale. В этом случае обдумайте разработку пользовательского механизма машинного обучения в качестве оболочки для исходных или собственных внедрений.
Как это работает
На следующем рисунке показана поддержка пользовательской среды:

Можно также получить дополнительную информацию по следующим ссылкам:
API записи в журнал полезной нагрузки Watson OpenScale
API пользовательского внедрения
Python SDK for IBM Watson OpenScale
-
Входные критерии для модели с поддержкой мониторов
Ваша модель должна принимать в качестве входных данных вектор признаков, который по сути представляет собой собрание именованных полей и их значений (в число таких полей входят поля, отслеживаемые для смещения):
{ "fields": [ "name", "age", "position" ], "values": [ [ "john", 33, "engineer" ], [ "mike", 23, "student" ] ]В этом примере поле
"age"может оцениваться на чистоту.Если входное значение - тензор или матрица, которая преобразована из пространства входных признаков (что часто происходит при глубоком обучении для текстов или изображений), эта модель не может быть обработана платформой Watson OpenScale в текущем выпуске. При помощи расширения модели глубокого обучения с входными данными в виде текста или изображений нельзя обработать для обнаружения и компенсации смещения.
Кроме того, данные обучения надо загрузить для поддержки объяснимости.
Чтобы применять объяснимость для текста, одним из признаков должен быть полный текст. Объяснимость изображений для пользовательской модели в текущем выпуске не поддерживается.
-
Выходные критерии для модели с поддержкой мониторов
Ваша модель должна выводить вектор входных признаков вместе с вероятностями предсказаний различных классов этой модели.
{ "fields": [ "name", "age", "position", "prediction", "probability" ], "labels": [ "personal", "camping" ], "values": [ [ "john", 33, "engineer", "personal", [ 0.6744664422398081, 0.3255335577601919 ] ], [ "mike", 23, "student" "camping", [ 0.2794765664946941, 0.7205234335053059 ] ] ] }В этом примере
"personal"и"camping"- возможные классы, и оценки в каждом выводе скоринга назначаются обоим классам. Если вероятности предсказаний отсутствуют, обнаружение смещения будет работать, но автоматическое устранения смещения не будет.Предыдущий вывод скоринга должен быть доступен из конечной точки оценки в реальном времени, которую Watson OpenScale может вызвать через REST. Для CUSTOMML, SageMaker и IBM Watson Machine Learning Watson OpenScale непосредственно соединяется с собственными конечными точками скоринга, так что вы можете не заботиться о реализации спецификации скоринга.
Пользовательские механизмы машинного обучения
Пользовательский механизм машинного обучения предоставляет возможности инфраструктуры и хостинга для моделей машинного обучения и веб-программ. Пользовательские механизмы машинного обучения, поддерживаемые Watson OpenScale, должны соответствовать следующим требованиям:
-
Обеспечивать доступ к конечным точкам API REST двух типов:
- конечная точка обнаружения (для получения списка внедрений и подробностей)
- конечные точки скоринга (скоринг онлайн и в реальном времени)
-
Все поддерживаемые конечные точки должны быть совместимы со спецификацией Swagger.
-
Входная полезная нагрузка и вывод для внедрения должны соответствовать формату файла JSON, описанному в спецификации.
На этом этапе поддерживаются только форматы BasicAuth и none.
Спецификация конечных точек API REST приведена в описании API REST Watson OpenScale.
Добавление пользовательского механизма машинного обучения в Watson OpenScale
Можно настроить Watson OpenScale для работы с пользовательским провайдером обучения систем, используя один из следующих методов:
- При первом добавлении пользовательского провайдера машинного обучения в Watson OpenScale можно использовать интерфейс конфигурирования. Дополнительная информация приведена в разделе Задание пользовательского экземпляра машинного обучения.
- Кроме того, можно добавить провайдер машинного обучения, используя SDK Python. Этот метод следует использовать, если требуется несколько провайдеров. Дополнительная информация об этом программном уровне приведена в разделе Добавить свой пользовательский механизм машинного обучения.
Исследовать далее
Пользовательский монитор машинного обучения дает способ взаимодействия с другими службами, такими как IBM Watson Assistant.
- Мониторинг пользовательского механизма машинного обучения с помощью Watson OpenScale
- Объяснение использования Watson OpenScale чат-ботом Watson Assistant
- Работающий пример пользовательской оболочки смотрите в документе Пользовательская оболочка Watson Assistant для взаимодействия с Watson OpenScale
Задание пользовательского экземпляра службы ML
Первый шаг в инструменте Watson OpenScale заключается в том, чтобы указать экземпляр службы. Ваш экземпляр службы содержит модели ИИ и внедрения.
Соединение с экземпляром вашей пользовательской службы
Watson OpenScale подключается к моделям ИИ и внедрению в экземпляре службы. Можно создать соединение с пользовательской службой. Для подключения службы к Watson OpenScale перейдите на вкладку Настройка
, добавьте провайдера обучения и щелкните по значку Редактировать
. В дополнение к имени и описанию и типу среды Предпроизводство или Производство, необходимо указать следующую информацию,
относящуюся к этому типу экземпляра службы:
- Имя пользователя
- Пароль
- Конечная точка API, использующий формат
https://хост:порт, например,https://custom-serve-engine.mybluemix.net:8443
Выберите, нужно ли соединяться с вашими внедрениями, запрашивая список, или введя отдельные конечные точки скоринга.
Запрос списка внедрений
Если выбрана плитка Запросить список внедрений, введите свои идентификационные данные и конечную точку API, а затем сохраните конфигурацию.
Предоставление отдельных конечных точек скоринга
Если выбрана плитка Ввести отдельную конечную точку скоринга, то введите свои идентификационные данные для конечной точки API, а затем сохраните конфигурацию.
Теперь вы готовы выбрать внедренные модели и сконфигурировать мониторы. Watson OpenScale показывает список внедренных моделей на сводной панели Выявленные закономерности, в которой можно нажать кнопку Добавить на сводную панель. Выберите внедрения, которые вы хотите отслеживать, и щелкните по Конфигурировать.
Дополнительная информация приведена в разделе Настройка мониторов.
Примеры пользовательских механизмов машинного обучения
Используйте следующие идеи, чтобы сконфигурировать собственный механизм машинного обучения.
Python и flask
Можно использовать Python и flask для обслуживания модели scikit.
Для генерирования модели обнаружения дрейфа надо использовать версию scikit-learn 0.20.2 в блокноте.
Это приложение можно внедрить локально для тестирования, а также как прикладную программу в IBM Cloud.
Node.js
Можно также найти пример пользовательского механизма машинного обучения Node.js здесь.
Паттерн кода сквозного примера
Паттерн кода показывает сквозной пример внедрения пользовательского механизма и интеграции с Watson OpenScale.
Запись в журнал полезной нагрузки с помощью пользовательского механизма машинного обучения
Чтобы сконфигурировать запись в журнал полезной нагрузки для механизма машинного обучения, отличного от IBM Watson Machine Learning или пользовательского механизма машинного обучения, необходимо связать механизм ML как пользовательский.
Добавление вашего пользовательского механизма машинного обучения
Механизм, отличный от Watson Machine Learning, добавляется как пользовательский с помощью метаданных; нет прямой интеграции
со службой, отличной от IBM Watson Machine Learning. В Watson OpenScale можно добавить несколько служб машинного обучения, используя метод wos_client.service_providers.add.
CUSTOM_ENGINE_CREDENTIALS = {
"url": "***",
"username": "***",
"password": "***",
}
wos_client.service_providers.add(
name=SERVICE_PROVIDER_NAME,
description=SERVICE_PROVIDER_DESCRIPTION,
service_type=ServiceTypes.CUSTOM_MACHINE_LEARNING,
credentials=CustomCredentials(
url= CUSTOM_ENGINE_CREDENTIALS['url'],
username= CUSTOM_ENGINE_CREDENTIALS['username'],
password= CUSTOM_ENGINE_CREDENTIALS['password'],
),
background_mode=False
).result
Провайдер служб можно просмотреть с помощью следующей команды:
client.service_providers.get(service_provider_id).result.to_dict()

Добавить пользовательскую подписку
Для добавления пользовательской подписки введите следующую команду:
custom_asset = Asset(
asset_id=asset['entity']['asset']['asset_id'],
name=asset['entity']['asset']['name'],
url = "dummy_url",
asset_type=asset['entity']['asset']['asset_type'] if 'asset_type' in asset['entity']['asset'] else 'model',
problem_type=ProblemType.MULTICLASS_CLASSIFICATION,
input_data_type=InputDataType.STRUCTURED,
)
deployment = AssetDeploymentRequest(
deployment_id=asset['metadata']['guid'],
url=asset['metadata']['url'],
name=asset['entity']['name'],
deployment_type=asset['entity']['type'],
scoring_endpoint = scoring_endpoint
)
asset_properties = AssetPropertiesRequest(
prediction_field='predicted_label',
probability_fields = ["probability"],
training_data_reference=None,
training_data_schema=None,
input_data_schema=None,
output_data_schema=output_schema,
)
result = ai_client.subscriptions.add(
data_mart_id=cls.datamart_id,
service_provider_id=cls.service_provider_id,
asset=custom_asset,
deployment=внедрение,
asset_properties=свойства_актива,
background_mode=False
).result
Для получения списка подписок выполните следующую команду:
subscription_id = subscription_details.metadata.id
subscription_id
details: wos_client.subscriptions.get(subscription_id).result.to_dict()
Включить ведение журнала полезной нагрузки
Чтобы включить ведение журнала полезной нагрузки в подписке, введите следующую команду:
request_data = {'fields': feature_columns,
'values': [[payload_values]]}
Чтобы получить подробности записи в журнал, введите следующую команду:
response_data = {'fields': list(result['predictions'][0]),
'values': [list(x.values()) for x in result['predictions']]}
Дополнительная информация приведена в разделе Ведение журнала полезной нагрузки.
Оценка и запись данных в журнал полезной нагрузки
- Оценка модели.
-
Сохранить требование и ответ в таблице ведения журнала полезной нагрузки
records_list = [PayloadRecord(request=request_data, response=response_data, response_time=response_time), PayloadRecord(request=request_data, response=response_data, response_time=response_time)] subscription.payload_logging.store(records=records_list)
В случае языков, отличных от Python, можно также записывать данные в журнал с помощью API REST.
Дальнейшие шаги
Watson OpenScale теперь готов к конфигурированию мониторов.