Пользовательские каркасы 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 и фактическим пользовательским механизмом машинного обучения.

Когда пользовательский механизм машинного обучения будет для меня лучшим выбором?

Пользовательский механизм машинного обучения - лучший выбор в следующих ситуациях:

Как это работает

На следующем рисунке показана поддержка пользовательской среды:

Показана диаграмма работы пользовательской среды. На ней есть блоки компонентов пользовательской среды с API клиента и API Watson OpenScale

Можно также получить дополнительную информацию по следующим ссылкам:

API записи в журнал полезной нагрузки Watson OpenScale

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

SDK клиента Python

Python SDK for IBM Watson OpenScale

Пользовательские механизмы машинного обучения

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

На этом этапе поддерживаются только форматы BasicAuth и none.

Спецификация конечных точек API REST приведена в описании API REST Watson OpenScale.

Добавление пользовательского механизма машинного обучения в Watson OpenScale

Можно настроить Watson OpenScale для работы с пользовательским провайдером обучения систем, используя один из следующих методов:

Исследовать далее

Пользовательский монитор машинного обучения дает способ взаимодействия с другими службами, такими как IBM Watson Assistant.

Задание пользовательского экземпляра службы ML

Первый шаг в инструменте Watson OpenScale заключается в том, чтобы указать экземпляр службы. Ваш экземпляр службы содержит модели ИИ и внедрения.

Соединение с экземпляром вашей пользовательской службы

Watson OpenScale подключается к моделям ИИ и внедрению в экземпляре службы. Можно создать соединение с пользовательской службой. Для подключения службы к Watson OpenScale перейдите на вкладку Настройка значок Вкладка Конфигурация, добавьте провайдера обучения и щелкните по значку Редактировать значок Вкладка Конфигурация. В дополнение к имени и описанию и типу среды Предпроизводство или Производство, необходимо указать следующую информацию, относящуюся к этому типу экземпляра службы:

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

Запрос списка внедрений

Если выбрана плитка Запросить список внедрений, введите свои идентификационные данные и конечную точку 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()

Универсальная привязка ML

Добавить пользовательскую подписку

Для добавления пользовательской подписки введите следующую команду:

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']]}

Дополнительная информация приведена в разделе Ведение журнала полезной нагрузки.

Оценка и запись данных в журнал полезной нагрузки

В случае языков, отличных от Python, можно также записывать данные в журнал с помощью API REST.

Дальнейшие шаги

Watson OpenScale теперь готов к конфигурированию мониторов.