Создание аналитики ответственного искусственного интеллекта с помощью 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 |
Указывает, является ли модель для классификации, регрессии или прогнозирования. | Строка, , classification regression или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
, classes
feature_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
табличные данные.
Следующие шаги
- После создания панели мониторинга ответственного применения искусственного интеллекта просмотрите, как ее открыть и использовать в Студии машинного обучения Azure.
- Резюмируйте аналитику ответственного применения ИИ и делитесь эти данными с помощью системы показателей ответственного применения ИИ в формате PDF.
- Ознакомьтесь с дополнительными сведениями о концепциях и методах, на основе которых работает панель мониторинга ответственного применения ИИ.
- Дополнительная информация об ответственном сборе данных.
- Просмотрите примеры блокнотов YAML и Python для создания панели мониторинга "Ответственное применение ИИ" с помощью YAML или Python.
- Дополнительные сведения об использовании панели мониторинга и системы показателей ответственного применения ИИ для отладки данных и моделей и принятия более обоснованных решений см. в этой записи блога Tech Community.
- Чтобы узнать об использовании панели мониторинга и системы показателей ответственного применения ИИ Национальной службой здравоохранения (NHS) Великобритании, ознакомьтесь с реальной историей клиента.
- Ознакомьтесь с возможностями панели мониторинга ответственного применения ИИ, просмотрев эту интерактивную веб-демонстрацию лаборатории ИИ.