Menghasilkan wawasan AI yang Bertanggung Jawab dengan YAML dan Python

BERLAKU UNTUK:Ekstensi ml Azure CLI v2 (saat ini)Python SDK azure-ai-ml v2 (saat ini)

Anda dapat menghasilkan dasbor AI yang Bertanggung Jawab dan kartu skor melalui pekerjaan alur dengan menggunakan komponen AI yang Bertanggung Jawab. Ada enam komponen inti untuk membuat dasbor Responsible AI, bersama dengan beberapa komponen pembantu. Berikut sampel grafik eksperimen:

Cuplikan layar contoh grafik eksperimen.

Komponen Responsible AI

Komponen inti untuk membangun dasbor AI yang Bertanggung Jawab di Azure Machine Learning adalah:

  • RAI Insights dashboard constructor
  • Komponen alat:
    • 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

Komponen RAI Insights dashboard constructor dan Gather RAI Insights dashboard selalu diperlukan, ditambah setidaknya salah satu komponen alat. Namun, tidak perlu menggunakan semua alat di setiap dasbor Responsible AI.

Di bagian berikut adalah spesifikasi komponen AI yang Bertanggung Jawab dan contoh cuplikan kode di YAML dan Python.

Penting

Item yang ditandai (pratinjau) dalam artikel ini sedang dalam pratinjau publik. Versi pratinjau disediakan tanpa perjanjian tingkat layanan, dan tidak disarankan untuk beban kerja produksi. Fitur tertentu mungkin tidak didukung atau mungkin memiliki kemampuan terbatas. Untuk mengetahui informasi selengkapnya, lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure.

Batasan

Kumpulan komponen saat ini memiliki banyak batasan pada penggunaannya:

  • Semua model harus terdaftar di Azure Machine Learning dalam format MLflow dengan rasa sklearn (scikit-learn).
  • Model harus dapat dimuat di lingkungan komponen.
  • Model harus bisa dipilih.
  • Model harus disediakan ke komponen AI yang Bertanggung Jawab dengan menggunakan Fetch Registered Model komponen, yang kami sediakan.
  • Input himpunan data harus dalam mltable format.
  • Model harus disediakan meskipun hanya analisis kausal data yang dilakukan. Anda dapat menggunakan estimator DummyClassifier dan DummyRegressor dari scikit-learn untuk tujuan ini.

Konstruktor dasbor RAI Insights

Komponen ini memiliki tiga port input:

  • Model pembelajaran mesin
  • Himpunan data pelatihan
  • Himpunan data pengujian

Untuk menghasilkan insight penelusuran kesalahan model dengan komponen seperti analisis kesalahan dan penjelasan Model, gunakan himpunan data pelatihan dan pengujian yang Anda gunakan ketika melatih model. Untuk komponen seperti analisis kausal, yang tidak memerlukan model, gunakan himpunan data pelatihan untuk melatih model kausal guna menghasilkan insight kausal. Anda menggunakan himpunan data pengujian untuk mengisi visualisasi dasbor AI yang Bertanggung Jawab.

Cara term mudah untuk menyediakan model adalah dengan mendaftarkan model input dan mereferensikan model yang sama dalam port RAI Insight Constructor input model komponen, yang kita bahas nanti di artikel ini.

Catatan

Saat ini, hanya model dalam format MLflow dan dengan rasa yang sklearn didukung.

Dua himpunan data harus dalam mltable format. Himpunan data pelatihan dan pengujian yang disediakan tidak harus berupa himpunan data yang sama yang digunakan dalam melatih model, tetapi himpunan data tersebut bisa sama. Secara default, untuk alasan performa, himpunan data pengujian dibatasi hingga 5.000 baris dari antarmuka pengguna visualisasi.

Komponen konstruktor juga menerima parameter berikut:

Nama Parameter Deskripsi Jenis
title Deskripsi singkat tentang dasbor. String
task_type Menentukan apakah model tersebut untuk klasifikasi, regresi, atau prakiraan. String, classification, regression, atau forecasting
target_column_name Nama kolom dalam himpunan data input, yang coba diprediksi model. String
maximum_rows_for_test_dataset Jumlah maksimum baris yang diizinkan dalam himpunan data pengujian, untuk alasan performa. Bilangan bulat, default ke 5.000
categorical_column_names Kolom dalam himpunan data, yang mewakili data kategoris. Daftar string opsional1
classes Daftar lengkap label kelas dalam himpunan data pelatihan. Daftar string opsional1
feature_metadata Menentukan informasi tambahan yang mungkin diperlukan dasbor bergantung pada jenis tugas. Untuk prakiraan, ini termasuk menentukan kolom mana yang merupakan datetime kolom dan kolom mana yang merupakan time_series_id kolom. Untuk visi, ini mungkin termasuk nilai piksel rata-rata atau data lokasi gambar. Daftar string opsional1
use_model_dependency Menentukan apakah model memerlukan kontainer docker terpisah untuk dilayani karena dependensi yang bertentangan dengan dasbor RAI. Untuk prakiraan, ini harus diaktifkan. Biasanya untuk skenario lain, ini tidak diaktifkan. Boolean

1 Daftar harus disediakan sebagai string yang dikodekan JSON tunggal untuk categorical_column_names, classes, feature_metadata input.

Komponen konstruktor memiliki satu output bernama rai_insights_dashboard. Ini adalah dasbor kosong, tempat setiap komponen alat beroperasi. Semua hasil dirakit oleh Gather RAI Insights dashboard komponen di akhir.

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

Menambahkan Kausal ke dasbor RAI Insights

Komponen ini melakukan analisis kausal pada himpunan data yang disediakan. Komponen ini memiliki port input tunggal, yang menerima output dari RAI Insights dashboard constructor. Komponen ini juga menerima parameter berikut:

Nama Parameter Deskripsi Ketikkan
treatment_features Daftar nama fitur di himpunan data, yang berpotensi "dapat dirawat" untuk memperoleh hasil yang berbeda. Daftar string2.
heterogeneity_features Daftar nama fitur dalam himpunan data, yang mungkin memengaruhi perilaku fitur "dapat dirawat". Secara default, semua fitur akan dipertimbangkan. Daftar string opsional2.
nuisance_model Model yang digunakan untuk memperkirakan hasil perubahan fitur perawatan. String opsional. Harus linear atau AutoML, default ke linear.
heterogeneity_model Model yang digunakan untuk memperkirakan efek fitur heterogenitas pada hasil. String opsional. Harus linear atau forest, default ke linear.
alpha Tingkat keyakinan dari interval keyakinan. Angka titik mengambang opsional, default ke 0,05.
upper_bound_on_cat_expansion Ekspansi maksimum fitur kategoris. Bilangan bulat opsional, default ke 50.
treatment_cost Biaya perawatan. Jika 0, semua perawatan akan memiliki biaya nol. Jika daftar diteruskan, setiap elemen diterapkan ke salah satu treatment_features.

Setiap elemen dapat menjadi nilai skalar untuk menunjukkan biaya konstan untuk menerapkan perawatan atau array yang menunjukkan biaya untuk setiap sampel. Jika perawatan adalah perawatan diskret, maka array untuk fitur tersebut harus berupa dua dimensi, dengan dimensi pertama yang mewakili sampel dan yang kedua mewakili perbedaan biaya antara nilai non-default dan nilai default.
Daftar atau bilangan bulat opsional2.
min_tree_leaf_samples Jumlah minimum sampel per daun di pohon kebijakan. Bilangan bulat opsional, default ke 2.
max_tree_depth Kedalaman maksimum pohon kebijakan. Bilangan bulat opsional, default ke 2.
skip_cat_limit_checks Secara default, fitur kategoris harus memiliki beberapa instans dari setiap kategori agar model sesuai dengan kuat. Mengaturnya ke True akan melewati pemeriksaan ini. Boolean opsional, default ke False.
categories Kategori yang akan digunakan untuk kolom kategoris. Jika auto, kategori akan disimpulkan untuk semua kolom kategoris. Jika tidak, argumen ini harus memiliki entri sebanyak kolom kategoris.

Setiap entri harus berupa auto untuk menyimpulkan nilai untuk kolom tersebut atau daftar nilai untuk kolom. Jika nilai eksplisit disediakan, nilai pertama diperlakukan sebagai nilai "kontrol" untuk kolom tersebut yang dibandingkan dengan nilai lain.
Opsional, auto atau daftar2.
n_jobs Tingkat paralelisme untuk digunakan. Bilangan bulat opsional, default ke 1.
verbose Mengekpsresikan apakah akan memberikan output mendetail selama komputasi. Bilangan bulat opsional, default ke 1.
random_state Nilai awal untuk generator nomor pseudorandom (PRNG). Bilangan bulat opsional.

2 Untuk parameter list: Beberapa parameter menerima daftar jenis lain (string, angka, bahkan daftar lainnya). Untuk meneruskan ini ke dalam komponen, mereka harus terlebih dahulu dienkodekan JSON ke dalam satu string.

Komponen ini memiliki port output tunggal, yang dapat dihubungkan ke salah insight_[n] satu port Gather RAI Insights Dashboard input komponen.

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

Menambahkan Kontrafaktual ke dasbor RAI Insights

Komponen ini menghasilkan titik kontrafaktual untuk himpunan data pengujian yang disediakan. Ini memiliki port input tunggal, yang menerima output konstruktor dasbor RAI Insight. Komponen ini juga menerima parameter berikut:

Nama Parameter Deskripsi Jenis
total_CFs Jumlah titik kontrafaktual yang dihasilkan untuk setiap baris dalam himpunan data pengujian. Bilangan bulat opsional, default ke 10.
method Penjelas dice-ml yang akan digunakan. String opsional. Baik random, genetic, maupun kdtree. Default ke random.
desired_class Indeks yang mengidentifikasi kelas kontrafaktual yang diinginkan. Untuk klasifikasi biner, ini harus diatur ke opposite. String atau bilangan bulat opsional. Default ke 0.
desired_range Untuk masalah regresi, identifikasi rentang hasil yang diinginkan. Daftar opsional dua angka3.
permitted_range Kamus dengan nama fitur sebagai kunci dan rentang yang diizinkan dalam daftar sebagai nilai. Diatur default ke rentang yang disimpulkan dari data pelatihan. Daftar3 atau string opsional3.
features_to_vary String all atau daftar nama fitur bervariasi. Daftar3 atau string opsional3.
feature_importance Beri bendera untuk mengaktifkan komputasi kepentingan fitur menggunakan dice-ml. Boolean opsional. Default ke True.

3 Untuk parameter non-skalar: Parameter yang merupakan daftar atau kamus harus diteruskan sebagai string tunggal yang dienkodekan JSON.

Komponen ini memiliki port output tunggal, yang dapat dihubungkan ke salah insight_[n] satu port Gather RAI Insights dashboard input komponen.

 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]" 

Menambahkan Analisis Kesalahan ke dasbor RAI Insights

Komponen ini menghasilkan analisis kesalahan untuk model. Komponen ini memiliki port input tunggal, yang menerima output dari RAI Insights Dashboard Constructor. Komponen ini juga menerima parameter berikut:

Nama Parameter Deskripsi Jenis
max_depth Kedalaman maksimum pohon analisis kesalahan. Bilangan bulat opsional. Default ke 3.
num_leaves Jumlah maksimum daun di pohon kesalahan. Bilangan bulat opsional. Default ke 31.
min_child_samples Jumlah minimum titik data yang diperlukan untuk menghasilkan daun. Bilangan bulat opsional. Default ke 20.
filter_features Daftar satu atau dua fitur yang akan digunakan untuk filter matriks. Daftar opsional, yang akan diteruskan sebagai satu string yang dienkodekan JSON.

Komponen ini memiliki port output tunggal, yang dapat dihubungkan ke salah insight_[n] satu port Gather RAI Insights Dashboard input komponen.

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

Menambahkan Penjelasan ke Dasbor RAI Insights

Komponen ini menghasilkan penjelasan untuk model. Komponen ini memiliki port input tunggal, yang menerima output dari RAI Insights Dashboard Constructor. Ini menerima string komentar opsional tunggal sebagai parameter.

Komponen ini memiliki port output tunggal, yang dapat disambungkan ke salah satu port input insight_[n] komponen dasbor Gather RAI Insights.

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

Mengumpulkan dasbor RAI Insights

Komponen ini merakit wawasan yang dihasilkan ke dalam dasbor Responsible AI tunggal. Ini memiliki lima port input:

  • Port constructor yang harus tersambung ke komponen konstruktor dasbor RAI Insight.
  • Empat port insight_[n] yang dapat disambungkan ke output komponen alat. Setidaknya salah satu port ini harus tersambung.

Ada dua port output:

  • Port dashboard berisi objek RAIInsights yang telah selesai.
  • Port ux_json berisi data yang diperlukan untuk menampilkan dasbor minimal.
  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}} 

Cara menghasilkan kartu skor AI yang Bertanggung Jawab (pratinjau)

Tahap konfigurasi mengharuskan Anda menggunakan keahlian domain Anda seputar masalah untuk menetapkan nilai target yang Anda inginkan pada metrik performa model dan kewajaran.

Seperti komponen dasbor AI Bertanggung Jawab lainnya yang dikonfigurasi dalam alur YAML, Anda dapat menambahkan komponen untuk menghasilkan kartu skor di alur 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 

Di mana pdf_gen.json adalah file json konfigurasi pembuatan kartu skor, dan predifined_cohorts_json ID file json definisi kohor bawaan.

Berikut adalah contoh file JSON untuk definisi kohor dan konfigurasi pembuatan kartu skor:

Definisi kohor:

[ 
  { 
    "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" 
      } 
    ] 
  } 
] 

Berikut adalah file konfigurasi pembuatan kartu skor sebagai contoh regresi:

{ 
  "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" 
  ]  
} 

Berikut adalah file konfigurasi pembuatan kartu skor sebagai contoh klasifikasi:

{
  "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"
  }
}

Definisi input komponen kartu skor Responsible AI

Bagian ini menentukan daftar parameter yang diperlukan untuk mengonfigurasi komponen kartu skor Responsible AI.

Model

ModelName Nama model
ModelType Nilai dalam ['classification', 'regression'].
ModelSummary Masukkan teks yang meringkas kegunaan model tersebut.

Catatan

Untuk klasifikasi multikelas, Anda harus terlebih dahulu menggunakan strategi One-vs-Rest untuk memilih kelas referensi Anda, dan karenanya, bagi model klasifikasi multikelas Anda menjadi masalah klasifikasi biner untuk kelas referensi yang Anda pilih vs kelas lainnya.

Metrik

Metrik performa Definisi Jenis model
accuracy_score Pecahan poin data diklasifikasikan dengan benar. Klasifikasi
precision_score Pecahan poin data diklasifikasikan dengan benar di antara mereka yang diklasifikasikan sebagai 1. Klasifikasi
recall_score Pecahan poin data diklasifikasikan dengan benar di antara mereka yang label benarnya adalah 1. Nama alternatif: tingkat positif benar, sensitivitas. Klasifikasi
f1_score F-measure adalah rata-rata harmonik presisi dan pengenalan. Klasifikasi
error_rate Proporsi instans yang salah diklasifikasikan di seluruh set instans. Klasifikasi
mean_absolute_error Rata-rata nilai absolut kesalahan. Lebih kuat untuk outlier daripada mean_squared_error. Regresi
mean_squared_error Rata-rata kesalahan kuadrat. Regresi
median_absolute_error Median kesalahan kuadrat. Regresi
r2_score Pecahan varians dalam label yang dijelaskan oleh model. Regresi

Ambang: Ambang yang diinginkan untuk metrik yang dipilih. Token matematika yang diizinkan adalah >, <, >=, dan <= diikuti dengan angka riil. Misalnya, >= 0,75 berarti bahwa target untuk metrik yang dipilih lebih besar dari atau sama dengan 0,75.

Kepentingan fitur

top_n: Jumlah fitur yang akan ditampilkan dengan maksimum 10. Bilangan bulat positif hingga 10 diizinkan.

Keadilan

Metric Definisi
metric Metrik utama untuk kewajaran evaluasi.
sensitive_features Daftar nama fitur dari himpunan data input yang akan ditetapkan sebagai fitur sensitif untuk laporan kewajaran.
fairness_evaluation_kind Nilai dalam [‘difference’, ‘ratio’].
threshold Nilai target yang diinginkan dari evaluasi kewajaran. Token matematika yang diizinkan adalah >, <, >=, dan <= diikuti dengan angka real.
Misalnya, metric="accuracy", fairness_evaluation_kind="difference".
<= 0,05 berarti target selisih akurasi kurang dari atau sama dengan 0,05.

Catatan

Pilihan fairness_evaluation_kind Anda (memilih ‘difference’ vs ‘ratio) memengaruhi skala nilai target Anda. Perhatikan pilihan Anda untuk memilih nilai target yang bermakna.

Anda dapat memilih dari metrik berikut, dipasangkan dengan fairness_evaluation_kind, untuk mengonfigurasi komponen penilaian kewajaran Anda dari kartu skor:

Metric fairness_evaluation_kind Definisi Jenis model
accuracy_score difference Perbedaan maksimum dalam skor akurasi antara dua grup. Klasifikasi
accuracy_score ratio Rasio minimum dalam skor akurasi antara dua grup. Klasifikasi
precision_score difference Perbedaan maksimum dalam skor presisi antara dua grup. Klasifikasi
precision_score ratio Rasio maksimum dalam skor presisi antara dua grup. Klasifikasi
recall_score difference Perbedaan maksimum dalam skor pengenalan antara dua grup. Klasifikasi
recall_score ratio Rasio maksimum dalam skor pengenalan antara dua grup. Klasifikasi
f1_score difference Perbedaan maksimum dalam skor f1 antara dua grup. Klasifikasi
f1_score ratio Rasio maksimum dalam skor f1 antara dua grup. Klasifikasi
error_rate difference Perbedaan maksimum dalam tingkat kesalahan antara dua grup. Klasifikasi
error_rate ratio Rasio maksimum dalam tingkat kesalahan antara dua grup. Klasifikasi
Selection_rate difference Perbedaan maksimum dalam tingkat pemilihan antara dua grup. Klasifikasi
Selection_rate ratio Rasio maksimum dalam tingkat pemilihan antara dua grup. Klasifikasi
mean_absolute_error difference Perbedaan maksimum dalam kesalahan absolut rata-rata antara dua grup. Regresi
mean_absolute_error ratio Rasio maksimum dalam kesalahan absolut rata-rata antara dua grup. Regresi
mean_squared_error difference Perbedaan maksimum dalam kesalahan kuadrat rata-rata antara dua grup. Regresi
mean_squared_error ratio Rasio maksimum dalam kesalahan kuadrat rata-rata antara dua grup. Regresi
median_absolute_error difference Perbedaan maksimum dalam kesalahan absolut median antara dua grup. Regresi
median_absolute_error ratio Rasio maksimum dalam kesalahan absolut median antara dua grup. Regresi
r2_score difference Perbedaan maksimum dalam skor R2 antara dua grup. Regresi
r2_Score ratio Rasio maksimum dalam skor R2 antara dua grup. Regresi

Batasan input

Format dan ragam model apa yang didukung?

Model harus berada di direktori MLflow dengan ragam sklearn yang tersedia. Selain itu, model harus dapat dimuat di lingkungan yang digunakan oleh komponen AI yang Bertanggung Jawab.

Format data apa yang didukung?

Himpunan data yang disediakan harus mltable dengan data tabular.

Langkah berikutnya