Поделиться через


Создание аналитики ответственного искусственного интеллекта с помощью YAML и Python

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение машинного обучения Azure CLI версии 2 (current)Python SDK azure-ai-ml версии 2 (current)

Вы можете создать информационную панель ответственного ИИ и систему показателей с помощью задания конвейера с помощью компонентов ответственного искусственного интеллекта. Существует шесть основных компонентов для создания панелей мониторинга применения ответственного ИИ, а также несколько вспомогательных компонентов. Пример графа экспериментов:

Снимок экрана: пример графа экспериментов.

Компоненты ответственного применения ИИ

Ниже перечислены основные компоненты для создания панели мониторинга ответственного применения ИИ в Машинном обучении Azure.

  • RAI Insights dashboard constructor
  • Компоненты средства:
    • Add Explanation to RAI Insights dashboard
    • Add Causal to RAI Insights dashboard
    • Add Counterfactuals to RAI Insights dashboard
    • Add Error Analysis to RAI Insights dashboard
    • Gather RAI Insights dashboard
    • Gather RAI Insights score card

Компоненты RAI Insights dashboard constructor и Gather RAI Insights dashboard требуются всегда, а также хотя бы один из компонентов средства. Тем не менее не обязательно использовать все средства на каждой панели мониторинга ответственного применения ИИ.

В следующих разделах приведены спецификации компонентов ответственного применения ИИ и примеры фрагментов кода в YAML и Python.

Внимание

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Предварительная версия предоставляется без соглашения об уровне обслуживания и не рекомендована для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования Предварительных версий Microsoft Azure.

Ограничения

Текущий набор компонентов имеет множество ограничений на их использование:

  • Все модели должны быть зарегистрированы в Машинном обучении Azure в формате MLflow с помощью одного из вариантов sklearn (scikit-learn).
  • Модели должны быть загружаемыми в среду компонента.
  • Модели должны быть доступными для сериализации.
  • Модели должны быть предоставлены компонентам ответственного искусственного интеллекта с помощью Fetch Registered Model компонента, который мы предоставляем.
  • Входные данные набора данных должны быть в mltable формате.
  • Модель должна быть предоставлена, даже если выполняется только анализ причинно-следственных связей. Для этой цели можно использовать DummyClassifier и DummyRegressor оценщики из scikit-learn.

Конструктор панели мониторинга аналитики RAI

Этот компонент имеет три порта ввода:

  • Модель машинного обучения
  • Набор данных для обучения
  • Набор данных для тестирования

Для создания аналитики отладки моделей с помощью таких компонентов, как анализ ошибок и пояснения к модели, используйте обучающий и тестовый набор данных, который вы применяли при обучении модели. Для таких компонентов, как анализ причинно-следственных связей, для которых не требуется модель, набор данных обучения будет использоваться для обучения модели причинно-следственных связей и создания соответствующей аналитики. Набор данных для тестирования используется для заполнения визуализаций панели мониторинга ответственного применения ИИ.

Самый простой способ предоставить модель — зарегистрировать входную модель и ссылаться на ту же модель в порте RAI Insight Constructor ввода модели компонента, который мы рассмотрим далее в этой статье.

Примечание.

В настоящее время поддерживаются только модели в формате MLflow и с ароматом sklearn .

Два набора данных должны быть в mltable формате. Вы не обязаны предоставлять те же обучающий и тестовый наборы данных, которые использовались для обучения модели, но это допускается. По умолчанию, из соображений производительности, набор данных для тестирования ограничен 5 тысячами строк пользовательского интерфейса визуализации.

Компонент конструктора также принимает следующие параметры:

Наименование параметра Описание Тип
title Краткое описание панели мониторинга Строка
task_type Указывает, является ли модель для классификации, регрессии или прогнозирования. Строка, , classificationregressionилиforecasting
target_column_name Имя столбца во входных наборах данных, которые модель пытается спрогнозировать. Строка
maximum_rows_for_test_dataset Максимальное число строк, разрешенных в наборе данных для тестирования (по соображениям производительности). Целое число (по умолчанию — 5000)
categorical_column_names Столбцы в наборах данных, представляющие категориальные данные. Необязательный список строк1
classes Полный список меток классов в наборе данных для обучения. Необязательный список строк1
feature_metadata Указывает дополнительные сведения, которые может потребоваться панели мониторинга в зависимости от типа задачи. Для прогнозирования это включает указание столбца datetime и столбца, который является столбцом time_series_id . Для визуального зрения это может включать среднее значение пикселя или данные расположения изображения. Необязательный список строк1
use_model_dependency Указывает, требуется ли для модели отдельный контейнер Docker для выполнения из-за конфликтующих зависимостей с панелью мониторинга RAI. Для прогнозирования это необходимо включить. Обычно для других сценариев это не включено. Логический

1 Списки должны быть предоставлены в виде одной строки в кодировке JSON для categorical_column_names, classesfeature_metadata входных данных.

Компонент конструктора имеет один выход с именем rai_insights_dashboard. Это пустая панель мониторинга, с которой работают отдельные компоненты инструментов. Все результаты собираются компонентом Gather RAI Insights dashboard в конце.

 create_rai_job: 

    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_constructor/versions/<get current version>
    inputs: 
      title: From YAML snippet 
      task_type: regression
      type: mlflow_model
      path: azureml:<registered_model_name>:<registered model version> 
      train_dataset: ${{parent.inputs.my_training_data}} 
      test_dataset: ${{parent.inputs.my_test_data}} 
      target_column_name: ${{parent.inputs.target_column_name}} 
      categorical_column_names: '["location", "style", "job title", "OS", "Employer", "IDE", "Programming language"]' 

Добавление причинно-следственных связей на панель мониторинга аналитики RAI

Этот компонент выполняет анализ причинно-следственных связей предоставленных наборов данных. Он имеет один входной порт, который принимает выходные данные из RAI Insights dashboard constructor. Он также принимает следующие параметры:

Наименование параметра Description Введите .
treatment_features Список имен функций в наборах данных, которые потенциально могут обрабатываться для получения разных результатов. Список строк2.
heterogeneity_features Список имен возможностей в наборах данных, которые могут повлиять на поведение "обрабатываемых" функций. По умолчанию будут учитываться все возможности Необязательный список строк2.
nuisance_model Модель, используемая для оценки результата изменения возможностей обработки. Необязательная строка. Допускаются значения linear и AutoML, по умолчанию используется linear.
heterogeneity_model Модель, используемая для оценки влияния разнородных возможностей на результат. Необязательная строка. Допускаются значения linear и forest, по умолчанию используется linear.
alpha Доверительный уровень доверительных интервалов. Необязательное число с плавающей запятой, по умолчанию имеет значение 0,05.
upper_bound_on_cat_expansion Максимальное расширение для категориальных признаков. Необязательное целое число, по умолчанию имеет значение 50.
treatment_cost Стоимость обработки. Если значение равно 0, все обработки будут иметь нулевую стоимость. Если передается список, каждый его элемент применяется к одному из treatment_features.

Каждый элемент может быть скалярным значением, указывающим постоянную стоимость применения этой обработки или массива, который указывает стоимость для каждого образца. Если обработка является дискретной, массив для этой возможности должен быть двумерным, где первое измерение представляет выборки, а второе — разницу в стоимости между значениями, не используемыми по умолчанию, и значением по умолчанию.
Необязательное целое число или список2.
min_tree_leaf_samples Минимальное количество выборок на один листовой узел в дереве политик. Необязательное целое число, по умолчанию имеет значение 2.
max_tree_depth Максимальная глубина дерева политики. Необязательное целое число, по умолчанию имеет значение 2.
skip_cat_limit_checks По умолчанию, чтобы модель была надежной, категориальные возможности должны иметь несколько экземпляров каждой категории. Если задано значение True, эти проверки будут пропускаться. Необязательное логическое значение, по умолчанию равно False.
categories Категории, которые нужно использовать для категориальных столбцов. Если auto, то категории будут выведены для всех категориальных столбцов. В противном случае этот аргумент должен содержать количество записей, равное количеству категориальных столбцов.

Каждая запись должна быть либо auto, чтобы выводить значения для этого столбца, либо списком значений для столбца. Если указаны явные значения, первое значение обрабатывается как "элемент управления" для этого столбца, с которым сравниваются другие значения.
Необязательное значение auto или список2.
n_jobs Степень параллелизма, который нужно использовать. Необязательное целое число, по умолчанию имеет значение 1.
verbose Указывает, следует ли предоставлять подробные выходные данные во время вычисления. Необязательное целое число, по умолчанию имеет значение 1.
random_state Начальное значение для генератора псевдослучайных чисел (PRNG). Необязательное целое число.

2 Для параметров list: несколько параметров принимают списки других типов (строки, числа, даже другие списки). Чтобы передать их в компонент, они сначала должны быть закодированы в формате JSON в одну строку.

Этот компонент имеет один выходной порт, который может быть подключен к одному из insight_[n] входных портов Gather RAI Insights Dashboard компонента.

  causal_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_causal/versions/<version>
    inputs: 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      treatment_features: `["Number of GitHub repos contributed to", "YOE"]' 

добавляют анализ противоречащих фактам предположений на панель мониторинга аналитики RAI;

Этот компонент создает противоречащие фактам точки для предоставленного набора данных для тестирования. Он имеет один порт ввода, который принимает выходные данные конструктора панели мониторинга аналитики RAI. Он также принимает следующие параметры:

Наименование параметра Описание Тип
total_CFs Число противоречащих фактам точек, которые необходимо создать для каждой строки в тестовом наборе данных. Необязательное целое число, по умолчанию имеет значение 10.
method Необходимо использовать объяснение dice-ml. Необязательная строка. random, genetic или kdtree. По умолчанию — random.
desired_class Индекс, определяющий требуемый противоречащий фактам класс. Для двоичной классификации необходимо задать значение opposite. Необязательная строка или целое число. Значение по умолчанию — 0.
desired_range Для проблем регрессии определите требуемый диапазон результатов. Необязательный список двух чисел3.
permitted_range Словарь с именами возможностей в качестве ключей и разрешенным диапазоном в списке в качестве значений. По умолчанию используется диапазон, выводимый из данных для обучения. Необязательная строка или список3.
features_to_vary Строка all или список имен признаков для разных значений. Необязательная строка или список3.
feature_importance Флаг для включения расчета важности возможностей с помощью dice-ml. Необязательный логический атрибут. По умолчанию — True.

3 Для нескалярных параметров: параметры, являющиеся списками или словарями, должны передаваться в виде одной строки в кодировке JSON.

Этот компонент имеет один выходной порт, который может быть подключен к одному из insight_[n] входных портов Gather RAI Insights dashboard компонента.

 counterfactual_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_counterfactual/versions/<version>
    inputs: 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      total_CFs: 10 
      desired_range: "[5, 10]" 

добавляют анализ ошибок на панель мониторинга аналитики RAI;

Этот компонент создает анализ ошибок для модели. Он имеет один входной порт, который принимает выходные данные из RAI Insights Dashboard Constructor. Он также принимает следующие параметры:

Наименование параметра Описание Тип
max_depth Максимальная глубина дерева анализа ошибок. Необязательное целое число. Значение по умолчанию — 3.
num_leaves Максимальное количество листовых узлов в дереве ошибок. Необязательное целое число. По умолчанию имеет значение 31.
min_child_samples Минимальное количество точек данных, необходимых для создания листового узла. Необязательное целое число. По умолчанию установлено значение 20.
filter_features Список из одной или двух возможностей, используемых для фильтра матрицы. Необязательный список, который передается одной строкой в формате JSON.

Этот компонент имеет один выходной порт, который может быть подключен к одному из insight_[n] входных портов Gather RAI Insights Dashboard компонента.

  error_analysis_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_erroranalysis/versions/<version>
    inputs: 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      filter_features: `["style", "Employer"]' 

добавляют объяснения на панель мониторинга аналитики RAI;

Этот компонент создает объяснение для модели. Он имеет один входной порт, который принимает выходные данные из RAI Insights Dashboard Constructor. Он принимает одну необязательную строку с комментариями в качестве параметра.

Этот компонент имеет один выходной порт, который можно подключить к одному из входных портов insight_[n] компонента панели мониторинга сбора аналитики RAI.

  explain_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_explanation/versions/<version>
    inputs: 
      comment: My comment 
      rai_insights_dashboard: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 

Панель мониторинга сбора аналитики RAI

Этот компонент собирает созданную аналитику на одной панели мониторинга ответственного применения искусственного интеллекта. Он имеет пять входных портов:

  • Порт constructor, который должен быть подключен к компоненту конструктора панели мониторинга аналитики RAI.
  • Четыре порта insight_[n], которые можно подключить к выводу компонентов средства. По крайней мере один из этих портов должен быть подключен.

Существует два порта вывода.

  • Порт dashboard содержит завершенный объект RAIInsights.
  • Порт ux_json содержит данные, необходимые для отображения минимальной панели мониторинга.
  gather_01: 
    type: command 
    component: azureml://registries/azureml/components/microsoft_azureml_rai_tabular_insight_gather/versions/<version>
    inputs: 
      constructor: ${{parent.jobs.create_rai_job.outputs.rai_insights_dashboard}} 
      insight_1: ${{parent.jobs.causal_01.outputs.causal}} 
      insight_2: ${{parent.jobs.counterfactual_01.outputs.counterfactual}} 
      insight_3: ${{parent.jobs.error_analysis_01.outputs.error_analysis}} 
      insight_4: ${{parent.jobs.explain_01.outputs.explanation}} 

Создание системы показателей ответственного ИИ (предварительная версия)

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

Как и другие компоненты панели мониторинга ответственного искусственного интеллекта, настроенные в конвейере YAML, можно добавить компонент для создания системы показателей в конвейере YAML:

scorecard_01: 

   type: command 
   component: azureml:rai_score_card@latest 
   inputs: 
     dashboard: ${{parent.jobs.gather_01.outputs.dashboard}} 
     pdf_generation_config: 
       type: uri_file 
       path: ./pdf_gen.json 
       mode: download 

     predefined_cohorts_json: 
       type: uri_file 
       path: ./cohorts.json 
       mode: download 

Где pdf_gen.json — файл json конфигурации конфигурации карты оценки и predifined_cohorts_json идентификатор предварительно созданного json определения когорт.

Далее приведен пример JSON-файла для определения когорт и конфигурации поколения системы показателей:

Определение когорт:

[ 
  { 
    "name": "High Yoe", 
    "cohort_filter_list": [ 
      { 
        "method": "greater", 
        "arg": [ 
          5 
        ], 
        "column": "YOE" 
      } 
    ] 
  }, 
  { 
    "name": "Low Yoe", 
    "cohort_filter_list": [ 
      { 
        "method": "less", 
        "arg": [ 
          6.5 
        ], 
        "column": "YOE" 
      } 
    ] 
  } 
] 

Далее приведен файл конфигурации поколения системы показателей в качестве примера регрессии:

{ 
  "Model": { 
    "ModelName": "GPT-2 Access", 
    "ModelType": "Regression", 
    "ModelSummary": "This is a regression model to analyze how likely a programmer is given access to GPT-2" 
  }, 
  "Metrics": { 
    "mean_absolute_error": { 
      "threshold": "<=20" 
    }, 
    "mean_squared_error": {} 
  }, 
  "FeatureImportance": { 
    "top_n": 6 
  }, 
  "DataExplorer": { 
    "features": [ 
      "YOE", 
      "age" 
    ] 
  }, 
  "Fairness": {
    "metric": ["mean_squared_error"],
    "sensitive_features": ["YOUR SENSITIVE ATTRIBUTE"],
    "fairness_evaluation_kind": "difference OR ratio"
  },
  "Cohorts": [ 
    "High Yoe", 
    "Low Yoe" 
  ]  
} 

Далее приведен файл конфигурации поколения системы показателей в качестве примера классификации:

{
  "Model": {
    "ModelName": "Housing Price Range Prediction",
    "ModelType": "Classification",
    "ModelSummary": "This model is a classifier that predicts whether the house will sell for more than the median price."
  },
  "Metrics" :{
    "accuracy_score": {
        "threshold": ">=0.85"
    },
  }
  "FeatureImportance": { 
    "top_n": 6 
  }, 
  "DataExplorer": { 
    "features": [ 
      "YearBuilt", 
      "OverallQual", 
      "GarageCars"
    ] 
  },
  "Fairness": {
    "metric": ["accuracy_score", "selection_rate"],
    "sensitive_features": ["YOUR SENSITIVE ATTRIBUTE"],
    "fairness_evaluation_kind": "difference OR ratio"
  }
}

Определение входных данных для компонента системы показателей ответственного применения ИИ

В этом разделе приведен список и описание параметров, необходимых для настройки компонента системы показателей ответственного применения ИИ.

Модель

НазваниеМодели Имя модели
ModelType Значения из списка ['classification', 'regression'].
ModelSummary Введите текст с кратким описанием назначения модели.

Примечание.

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

Метрики

Метрика производительности Определение Тип модели
accuracy_score Доля точек данных с корректной классификацией. Классификация
precision_score Доля точек данных с корректной классификацией среди тех, что классифицированы как 1. Классификация
recall_score Доля точек данных с корректной классификацией среди тех, у которых истинная метка равна 1. Альтернативные имена: показатель истинноположительных результатов, чувствительность. Классификация
f1_score Оценка F1 — это среднее гармоническое значение точности и полноты. Классификация
error_rate Доля неправильно классифицированных экземпляров по всему набору экземпляров. Классификация
mean_absolute_error Среднее значение абсолютных значений погрешностей. Более высокий уровень надежности при выбросах, чем при mean_squared_error. Регрессия
mean_squared_error Среднее значение квадратических погрешностей. Регрессия
median_absolute_error Медианное значение квадратических погрешностей. Регрессия
r2_score Доля вариантности в метках, объясняемая моделью. Регрессия

Порог: требуемое пороговое значение для выбранной метрики. Допустимые математические маркеры: >, <, >= и <=m, за которыми следует действительное число. Например, >= 0,75 означает, что целевое значение для выбранной метрики больше или равно 0,75.

Важность признака

top_n: количество функций для отображения (максимальное число — 10). Допустимы положительные целые числа до 10.

Справедливость

Метрика Определение
metric Основная метрика для справедливости оценки.
sensitive_features Список имен компонентов из входного набора данных, который будет считаться признаком, требующим особого обращения, для отчета о справедливости.
fairness_evaluation_kind Значения из словаря [‘difference’, ‘ratio’].
threshold Требуемые целевые значения для оценки справедливости. Допустимые математические маркеры: >, <, >= и <=, за которыми следует действительное число.
Например, metric="accuracy", fairness_evaluation_kind="difference".
<= 0.05 означает, что целевое значение для разницы в точности меньше или равно 0,05.

Примечание.

Выбранный вариант fairness_evaluation_kind ("различие" или "отношение") влияет на масштаб целевого значения. Следует внимательно отнестись к этому выбору, чтобы выбрать понятное целевое значение.

Вы можете выбрать из следующих метрик, связанных с fairness_evaluation_kind, для настройки компонента оценки справедливости в системе показателей:

Метрика fairness_evaluation_kind Определение Тип модели
accuracy_score различие Максимальная разница в показателях оценки правильности между любыми двумя группами. Классификация
accuracy_score товара Минимальное отношение показателей оценки правильности между любыми двумя группами. Классификация
precision_score различие Максимальная разница в показателях оценки точности между любыми двумя группами. Классификация
precision_score товара Максимальное отношение показателей оценки точности между любыми двумя группами. Классификация
recall_score различие Максимальная разница в показателях оценки полноты между любыми двумя группами. Классификация
recall_score товара Максимальное отношение показателей оценки полноты между любыми двумя группами. Классификация
f1_score различие Максимальная разница в показателях оценки f1 между любыми двумя группами. Классификация
f1_score товара Максимальное отношение показателей оценки f1 между любыми двумя группами. Классификация
error_rate различие Максимальная разница в показателях ошибок между любыми двумя группами. Классификация
error_rate товара Максимальное отношение показателей ошибок между любыми двумя группами. Классификация
Selection_rate различие Максимальная разница в показателях выбора между любыми двумя группами. Классификация
Selection_rate товара Максимальное отношение показателей выбора между любыми двумя группами. Классификация
mean_absolute_error различие Максимальная разница в показателях средней абсолютной погрешности между любыми двумя группами. Регрессия
mean_absolute_error товара Максимальное отношение показателей средней абсолютной погрешности между любыми двумя группами. Регрессия
mean_squared_error различие Максимальная разница в показателях среднеквадратической погрешности между любыми двумя группами. Регрессия
mean_squared_error товара Максимальное отношение показателей среднеквадратической абсолютной погрешности между любыми двумя группами. Регрессия
median_absolute_error различие Максимальная разница в показателях медианной абсолютной погрешности между любыми двумя группами. Регрессия
median_absolute_error товара Максимальное отношение показателей медианной абсолютной погрешности между любыми двумя группами. Регрессия
r2_score различие Максимальная разница в показателях оценки R2 между любыми двумя группами. Регрессия
r2_Score товара Максимальное отношение показателей оценки R2 между любыми двумя группами. Регрессия

Ограничения входных данных

Какие форматы и варианты приложения моделей поддерживаются?

Модель должна находиться в каталоге MLflow с доступным вариантом приложения sklearn. Кроме того, модель должна быть загружаемой в среде, используемой компонентами ответственного применения искусственного интеллекта.

Какие форматы данных поддерживаются?

Предоставленные наборы данных должны иметь mltable табличные данные.

Следующие шаги