Share via


Azure Databricks AutoML Python API'siyle ML modellerini eğitin

Bu makalede, API kullanarak Azure Databricks AutoML ile bir modelin nasıl eğitilmiş olduğu gösterilmektedir. AutoML nedir? hakkında daha fazla bilgi edinin. Python API'sinde sınıflandırma, regresyon ve AutoML çalıştırmalarını tahmin etmeye yönelik işlevler sağlanır. Her işlev çağrısı bir model kümesi eğitir ve her model için bir deneme not defteri oluşturur.

Aşağıdaki adımlar genel olarak API'yi kullanarak AutoML denemesinin nasıl ayarlandığını açıklar:

  1. Bir not defteri oluşturun ve Databricks Runtime ML çalıştıran bir kümeye ekleyin.
  2. Mevcut veri kaynağınızdan kullanmak istediğiniz tabloyu belirleyin veya DBFS'ye veri dosyası yükleyip bir tablo oluşturun.
  3. AutoML çalıştırmasını başlatmak için tablo adını uygun API belirtimine geçirin: sınıflandırma, regresyon veya tahmin.
  4. AutoML çalıştırması başladığında, konsolunda bir MLflow deneme URL'si görüntülenir. Çalıştırmanın ilerleme durumunu izlemek için bu URL'yi kullanın. Denemeler tamamlandıktan sonra görmek için MLflow denemesini yenileyin.
  5. AutoML çalıştırması tamamlandıktan sonra:
    • MLflow denemesine veya en iyi sonuçları oluşturan not defterine gitmek için çıkış özetindeki bağlantıları kullanın.
    • AutoML'ye geçirilen veriler hakkında bazı içgörüler elde etmek için veri araştırma not defterinin bağlantısını kullanın. Ayrıca bu not defterini aynı kümeye ekleyebilir ve sonuçları yeniden oluşturmak veya ek veri çözümlemesi yapmak için not defterini yeniden çalıştırabilirsiniz.
    • Denemeler hakkında daha fazla ayrıntı keşfetmek veya belirli bir deneme sürümü tarafından eğitilen bir modeli yüklemek için AutoML çağrısından döndürülen özet nesnesini kullanın. AutoMLSummary nesnesi hakkında daha fazla bilgi edinin.
    • Denemelerden oluşturulan tüm not defterlerini kopyalayın ve sonuçları yeniden oluşturmak için not defterini aynı kümeye ekleyerek yeniden çalıştırın. Ayrıca ek modelleri eğitmek ve bunları aynı denemede günlüğe kaydetmek için gerekli düzenlemeleri yapabilir ve bunları yeniden çalıştırabilirsiniz.

Gereksinimler

Bkz . AutoML denemeleri için gereksinimler .

Sınıflandırma belirtimi

Aşağıdaki kod örneği, sınıflandırma modelini eğiten bir AutoML çalıştırmasını yapılandırıyor. AutoML çalıştırmanızı daha fazla özelleştirmeye yönelik ek parametreler için bkz . Sınıflandırma ve regresyon parametreleri.

Not

max_trials Parametresi Databricks Runtime 10.4 ML'de kullanım dışıdır ve Databricks Runtime 11.0 ML ve üzeri sürümleri için desteklenmez. AutoML çalıştırmasının süresini denetlemek için kullanın timeout_minutes .

databricks.automl.classify(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  pos_label: Optional[Union[int, bool, str] = None,                 # <DBR> 11.1 ML and above
  primary_metric: str = "f1",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

Regresyon belirtimi

Aşağıdaki kod örneği, regresyon modelini eğitme amacıyla bir AutoML çalıştırması yapılandırılır. AutoML çalıştırmanızı daha fazla özelleştirmeye yönelik ek parametreler için bkz . Sınıflandırma ve regresyon parametreleri.

Not

max_trials Parametresi Databricks Runtime 10.4 ML'de kullanım dışıdır ve Databricks Runtime 11.0 ML ve üzeri sürümleri için desteklenmez. AutoML çalıştırmasının süresini denetlemek için kullanın timeout_minutes .

databricks.automl.regress(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  data_dir: Optional[str] = None,
  exclude_cols: Optional[List[str]] = None,                      # <DBR> 10.3 ML and above
  exclude_frameworks: Optional[List[str]] = None,                   # <DBR> 10.3 ML and above
  experiment_dir: Optional[str] = None,                             # <DBR> 10.4 LTS ML and above
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 11.3 LTS ML and above
  imputers: Optional[Dict[str, Union[str, Dict[str, Any]]]] = None, # <DBR> 10.4 LTS ML and above
  max_trials: Optional[int] = None,                                 # <DBR> 10.5 ML and below
  primary_metric: str = "r2",
  time_col: Optional[str] = None,
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

Tahmin belirtimi

Aşağıdaki kod örneği, tahmin modelini eğiten bir AutoML çalıştırmasını yapılandırıyor. AutoML çalıştırmanızın parametreleri hakkında daha fazla ayrıntı için bkz . Parametreleri tahmin etme. Otomatik ARIMA'yı kullanmak için zaman serisinin düzenli bir sıklığı olmalıdır (diğer bir ifadeyle, iki nokta arasındaki aralık zaman serisi boyunca aynı olmalıdır). Sıklık, API çağrısında belirtilen sıklık birimiyle eşleşmelidir. AutoML, bu değerleri önceki değerle doldurarak eksik zaman adımlarını işler.

databricks.automl.forecast(
  dataset: Union[pyspark.sql.DataFrame, pandas.DataFrame, pyspark.pandas.DataFrame, str],
  *,
  target_col: str,
  time_col: str,
  country_code: str = "US",                                         # <DBR> 12.0 ML and above
  data_dir: Optional[str] = None,
  exclude_frameworks: Optional[List[str]] = None,
  experiment_dir: Optional[str] = None,
  experiment_name: Optional[str] = None,                            # <DBR> 12.1 ML and above
  feature_store_lookups: Optional[List[Dict]] = None,               # <DBR> 12.2 LTS ML and above
  frequency: str = "D",
  horizon: int = 1,
  identity_col: Optional[Union[str, List[str]]] = None,
  output_database: Optional[str] = None,                            # <DBR> 10.5 ML and above
  primary_metric: str = "smape",
  timeout_minutes: Optional[int] = None,
) -> AutoMLSummary

Sınıflandırma ve regresyon parametreleri

Not

Yalnızca sınıflandırma ve regresyon sorunları için şunları yapabilirsiniz:

  • Eğitime eklenecek sütunları belirtin.
  • Özel imputation yöntemlerini seçin.
Alan Adı Type Açıklama
veri kümesi str pandas. DataFrame pyspark. DataFrame pyspark.sql.DataFrame Eğitim özellikleri ve hedefi içeren giriş tablosu adı veya DataFrame.

Tablo adı ".." biçiminde olabilir veya "." Unity Kataloğu olmayan tablolar için
target_col Str Hedef etiketin sütun adı.
data_dir biçim str'i
dbfs:/<folder-name>
(İsteğe bağlı) Eğitim veri kümesini depolamak için kullanılan DBFS yolu. Bu yol hem sürücü hem de çalışan düğümleri tarafından görülebilir.

Databricks, AutoML'nin eğitim veri kümesini MLflow yapıtı olarak kaydedebilmesi için bu alanı boş bırakmanızı önerir.

Özel bir yol belirtilirse, veri kümesi AutoML denemesinin erişim izinlerini devralmaz.
exclude_cols Liste[str] (İsteğe bağlı) AutoML hesaplamaları sırasında yoksayılan sütunların listesi.

Varsayılan: []
exclude_ çerçeveleri Liste[str] (İsteğe bağlı) AutoML'nin model geliştirirken dikkate almaması gereken algoritma çerçevelerinin listesi. Olası değerler: boş liste veya bir veya daha fazla "sklearn", "lightgbm", "xgboost".

Varsayılan: [] (tüm çerçeveler dikkate alınır)
experiment_dir Str (İsteğe bağlı) Oluşturulan not defterlerini ve denemeleri kaydetmek için çalışma alanında dizinin yolu.

Varsayılan: /Users/<username>/databricks_automl/
experiment_name Str (İsteğe bağlı) AutoML'nin oluşturduğu MLflow denemesinin adı.

Varsayılan: Ad otomatik olarak oluşturulur.
feature_store_ aramaları Liste[Dikte] (İsteğe bağlı) Veri artırma için Özellik Deposu'ndan özellikleri temsil eden sözlüklerin listesi. Her sözlükte geçerli anahtarlar şunlardır:

* table_name (str): Gerekli. Özellik tablosunun adı.
* lookup_key (liste veya str): Gerekli. Özellik tablosunu içinde geçirilen verilerle birleştirirken anahtar olarak kullanılacak sütun adları
dataset parametresini seçin. Sütun adlarının sırası, özellik tablosunun birincil anahtarlarının sırasıyla eşleşmelidir.
* timestamp_lookup_key (str): Belirtilen tablo bir zaman serisi özellik tablosuysa gereklidir. Parametrede geçirilen dataset verilerle özellik tablosunda belirli bir noktaya arama gerçekleştirirken kullanılacak sütun adı.

Varsayılan: []
imputers Dict[str, Union[str, Dict[str, Any]]] (İsteğe bağlı) Her anahtarın bir sütun adı olduğu ve her değerin imputation stratejisini açıklayan bir dize veya sözlük olduğu sözlük. Dize olarak belirtilirse, değer "ortalama", "ortanca" veya "most_frequent" olmalıdır. Bilinen bir değerle empute yapmak için değeri sözlük olarak belirtin
{"strategy": "constant", "fill_value": <desired value>}. Dize seçeneklerini sözlük olarak da belirtebilirsiniz, örneğin {"strategy": "mean"}.

Bir sütun için herhangi bir imputation stratejisi sağlanmazsa, AutoML sütun türüne ve içeriğine göre varsayılan bir strateji seçer. Varsayılan olmayan bir imputation yöntemi belirtirseniz, AutoML anlamsal tür algılaması gerçekleştirmez.

Varsayılan: {}
max_trials int (İsteğe bağlı) Çalıştırılacak en fazla deneme sayısı.

Bu parametre Databricks Runtime 10.5 ML ve altında kullanılabilir, ancak Databricks Runtime 10.3 ML'den başlayarak kullanım dışıdır. Databricks Runtime 11.0 ML ve üzerinde bu parametre desteklenmez.

Varsayılan: 20

timeout_minutes=Hiçbiri ise AutoML en fazla deneme sayısını çalıştırır.
pos_label Union[int, bool, str] (Yalnızca sınıflandırma) Pozitif sınıf. Bu, duyarlık ve geri çekme gibi ölçümleri hesaplamak için kullanışlıdır. Yalnızca ikili sınıflandırma sorunları için belirtilmelidir.
primary_metric Str Model performansını değerlendirmek ve derecelendirmek için kullanılan ölçüm.

Regresyon için desteklenen ölçümler: "r2" (varsayılan), "mae", "rmse", "mse"

Sınıflandırma için desteklenen ölçümler: "f1" (varsayılan), "log_loss", "duyarlık", "doğruluk", "roc_auc"
time_col Str Databricks Runtime 10.1 ML ve üzerinde kullanılabilir.

(İsteğe bağlı) Saat sütunu için sütun adı.

Sağlandıysa AutoML, eğitim verileri olarak en eski noktaları ve test kümesi olarak en son noktaları kullanarak veri kümesini kronolojik olarak eğitim, doğrulama ve test kümelerine bölmeye çalışır.

Kabul edilen sütun türleri zaman damgası ve tamsayıdır. Databricks Runtime 10.2 ML ve üzeri ile dize sütunları da desteklenir. Sütun türü dizeyse, AutoML anlam algılamayı kullanarak bunu zaman damgasına dönüştürmeye çalışır. Dönüştürme başarısız olursa AutoML çalıştırması başarısız olur.
timeout_minutes int (İsteğe bağlı) AutoML denemelerinin tamamlanmasını bekleme süresi üst sınırı. Daha uzun zaman aşımları AutoML'nin daha fazla deneme çalıştırmasına ve modeli daha iyi doğrulukla tanımlamasına olanak sağlar.

Varsayılan: 120 dakika

En düşük değer: 5 dakika

Zaman aşımı en az bir denemenin tamamlanmasına izin veremeyecek kadar kısaysa bir hata bildirilir.

Tahmin parametreleri

Alan Adı Type Açıklama
veri kümesi Str

Pandalar. DataFrame pyspark. DataFrame pyspark.sql.DataFrame
Eğitim özellikleri ve hedefi içeren giriş tablosu adı veya DataFrame.

Tablo adı ".." biçiminde olabilir veya "." Unity Kataloğu olmayan tablolar için
target_col Str Hedef etiketin sütun adı.
time_col Str Tahmin için zaman sütununun adı.
frequency Str Tahmin için zaman serisi sıklığı. Bu, olayların gerçekleşmesinin beklendiği dönemdir. Varsayılan ayar "D" veya günlük verilerdir. Verilerinizin farklı bir sıklığı varsa ayarı değiştirdiğinizden emin olun.

Olası değerler:

"W" (hafta)

"D" / "days" / "day"

"hours" / "hour" / "hr" / "h"

"m" / "minute" / "min" / "minutes" / "T"

"S" / "seconds" / "sec" / "second"

Aşağıdakiler yalnızca Databricks Runtime 12.0 ML ve üzeri sürümleriyle kullanılabilir:

"M" / "ay" / "aylar"

"Q" / "quarter" / "quarters"

"Y" / "year" / "years"

Varsayılan: "D"
Horizon int Geleceğe dönük tahminlerin döndürülmesi gereken dönem sayısı. Birimler zaman serisi sıklığıdır. Varsayılan: 1
data_dir biçim str'i
dbfs:/<folder-name>
(İsteğe bağlı) Eğitim veri kümesini depolamak için kullanılan DBFS yolu. Bu yol hem sürücü hem de çalışan düğümleri tarafından görülebilir.

Databricks, AutoML'nin eğitim veri kümesini MLflow yapıtı olarak kaydedebilmesi için bu alanı boş bırakmanızı önerir.

Özel bir yol belirtilirse, veri kümesi AutoML denemesinin erişim izinlerini devralmaz.
exclude_ çerçeveleri Liste[str] (İsteğe bağlı) AutoML'nin model geliştirirken dikkate almaması gereken algoritma çerçevelerinin listesi. Olası değerler: boş liste veya bir veya daha fazla "kahin", "arima". Varsayılan: [] (tüm çerçeveler dikkate alınır)
experiment_dir Str (İsteğe bağlı) Oluşturulan not defterlerini ve denemeleri kaydetmek için çalışma alanında dizinin yolu.

Varsayılan: /Users/<username>/databricks_automl/
experiment_name Str (İsteğe bağlı) AutoML'nin oluşturduğu MLflow denemesinin adı.

Varsayılan: Ad otomatik olarak oluşturulur.
feature_store_ aramaları Liste[Dikte] (İsteğe bağlı) Veri artırma için Özellik Deposu'ndan özellikleri temsil eden sözlüklerin listesi. Her sözlükte geçerli anahtarlar şunlardır:

* table_name (str): Gerekli. Özellik tablosunun adı.
* lookup_key (liste veya str): Gerekli. Özellik tablosunu içinde geçirilen verilerle birleştirirken anahtar olarak kullanılacak sütun adları
dataset parametresini seçin. Sütun adlarının sırası, özellik tablosunun birincil anahtarlarının sırasıyla eşleşmelidir.
* timestamp_lookup_key (str): Belirtilen tablo bir zaman serisi özellik tablosuysa gereklidir. Parametrede geçirilen dataset verilerle özellik tablosunda belirli bir noktaya arama gerçekleştirirken kullanılacak sütun adı.

Varsayılan: []
identity_col Union[str, list] (İsteğe bağlı) Çok serili tahmin için zaman serisini tanımlayan sütun... AutoML, bu sütunlara ve tahmin için zaman sütununa göre gruplandırın.
output_database Str (İsteğe bağlı) Sağlandıysa, AutoML en iyi modelin tahminlerini belirtilen veritabanındaki yeni bir tabloya kaydeder.

Varsayılan: Tahminler kaydedilmez.
primary_metric Str Model performansını değerlendirmek ve derecelendirmek için kullanılan ölçüm. Desteklenen ölçümler: "smape"(varsayılan) "mse", "rmse", "mae" veya "mdape".
timeout_minutes int (İsteğe bağlı) AutoML denemelerinin tamamlanmasını bekleme süresi üst sınırı. Daha uzun zaman aşımları AutoML'nin daha fazla deneme çalıştırmasına ve modeli daha iyi doğrulukla tanımlamasına olanak sağlar.

Varsayılan: 120 dakika

En düşük değer: 5 dakika

Zaman aşımı en az bir denemenin tamamlanmasına izin veremeyecek kadar kısaysa bir hata bildirilir.
country_code Str Databricks Runtime 12.0 ML ve üzerinde kullanılabilir. Yalnızca Peygamber tahmin modeli tarafından desteklenir.

(İsteğe bağlı) Tahmin modelinin hangi ülkenin tatillerini kullanması gerektiğini gösteren iki harfli ülke kodu. Tatilleri yoksaymak için bu parametreyi boş bir dize ("") olarak ayarlayın. Desteklenen ülkeler.

Varsayılan: ABD (Birleşik Devletler tatiller).

Döndürür

AutoMLSummary

Denemelerin her biri için ölçümleri, parametreleri ve diğer ayrıntıları açıklayan bir AutoML çalıştırmasının özet nesnesi. Ayrıca bu nesneyi belirli bir deneme sürümü tarafından eğitilen modeli yüklemek için de kullanırsınız.

Özellik Türü Açıklama
deneme mlflow.entities.Experiment Denemeleri günlüğe kaydetmek için kullanılan MLflow denemesi.
Deneme List[TrialInfo] Çalıştırılan tüm denemeler hakkında bilgi içeren bir liste.
best_trial TrialInfo Birincil ölçüm için en iyi ağırlıklı puanla sonuçlanan deneme sürümü hakkında bilgi.
metric_distribution Str Birincil ölçüm için ağırlıklı puanların tüm denemelerde dağılımı.
output_table_name Str Yalnızca tahminle ve yalnızca output_database sağlandığında kullanılır. modelin tahminlerini içeren output_database tablosunun adı.

TrialInfo

Her deneme için özet nesnesi.

Özellik Türü Açıklama
notebook_path İsteğe bağlı[str] Çalışma alanında bu deneme sürümü için oluşturulan not defterinin yolu. Sınıflandırma ve regresyon için bu değer yalnızca en iyi deneme için ayarlanırken diğer tüm denemelerde değeri olarak Noneayarlanır. Tahmin için bu değer tüm denemelerde mevcuttur
notebook_url İsteğe bağlı[str] Bu deneme sürümü için oluşturulan not defterinin URL'si. Sınıflandırma ve regresyon için bu değer yalnızca en iyi deneme için ayarlanırken diğer tüm denemelerde değeri olarak Noneayarlanır. Tahmin için bu değer tüm denemeler için mevcuttur
artifact_uri İsteğe bağlı[str] Oluşturulan not defteri için MLflow yapıt URI'si.
mlflow_run_id Str Bu deneme çalıştırmasıyla ilişkili MLflow çalıştırma kimliği.
metrics Dict[str, float] Bu deneme için MLflow'da günlüğe kaydedilen ölçümler.
params Dict[str, str] Bu deneme için kullanılan MLflow'da günlüğe kaydedilen parametreler.
model_path Str Bu deneme sürümünde eğitilen modelin MLflow yapıtı URL'si.
model_description Str Modelin ve bu modelin eğitimi için kullanılan hiper parametrelerin kısa açıklaması.
süre Str Dakika cinsinden eğitim süresi.
ön işlemciler Str Modeli eğitmeden önce çalıştırılacak ön işlemcilerin açıklaması.
evaluation_metric_score kayan noktalı sayı Doğrulama veri kümesi için değerlendirilen birincil ölçümün puanı.
Metot Açıklama
load_model() MLflow yapıtı olarak günlüğe kaydedilen bu denemede oluşturulan modeli yükleyin.

Not defterini içeri aktarma

MLflow yapıtı olarak kaydedilmiş bir not defterini içeri aktarmak için Python API'sini databricks.automl.import_notebook kullanın.

def import_notebook(artifact_uri: str, path: str, overwrite: bool = False) -> ImportNotebookResult:
    """
    Import a trial notebook, saved as an MLflow artifact, into the workspace.

    :param artifact_uri: The URI of the MLflow artifact that contains the trial notebook.
    :param path: The path in the Databricks workspace where the notebook should be imported. This must be an absolute path. The directory will be created if it does not exist.
    :param overwrite: Whether to overwrite the notebook if it already exists. It is `False` by default.

    :return: ImportNotebookResult contains two fields, `path` and `url`, referring to the imported notebook
    """

Kullanım örneği:

summary = databricks.automl.classify(...)
result = databricks.automl.import_notebook(summary.trials[5].artifact_uri, "/Users/you@yourcompany.com/path/to/directory")
print(result.path)
print(result.url)

Modeli kaydetme ve dağıtma

AutoML tarafından eğitilen modelinizi MLflow model kayıt defterindeki tüm kayıtlı modellerde olduğu gibi kaydedebilir ve dağıtabilirsiniz. Bkz . MLflow modellerini günlüğe kaydetme, yükleme, kaydetme ve dağıtma.

'pandas.core.indexes.numeric adlı modül yok

Model Sunma ile AutoML kullanılarak oluşturulmuş bir modele hizmet ederken şu hatayı alabilirsiniz: No module named 'pandas.core.indexes.numeric.

Bunun nedeni AutoML ile uç nokta ortamı sunan model arasındaki uyumsuz pandas bir sürümdür. add-pandas-dependency.py betiğini çalıştırarak bu hatayı çözebilirsiniz. Betik, günlüğe kaydedilen modelinizin uygun pandas bağımlılık sürümünü içerecek şekilde ve conda.yaml dosyasını düzenlerrequirements.txt: pandas==1.5.3.

  1. Betiği modelinizin günlüğe kaydedildiği MLflow çalıştırmasını içerecek run_id şekilde değiştirin.
  2. Modeli MLflow model kayıt defterine yeniden kaydetme.
  3. MLflow modelinin yeni sürümünü sunma işlemini deneyin.

Not defteri örnekleri

AutoML'yi kullanmaya başlamak için bu not defterlerini gözden geçirin.

Aşağıdaki not defteri AutoML ile sınıflandırmanın nasıl yapılacağını gösterir.

AutoML sınıflandırma örneği not defteri

Not defterini alma

Aşağıdaki not defteri AutoML ile regresyonun nasıl yapılacağını gösterir.

AutoML regresyon örneği not defteri

Not defterini alma

Aşağıdaki not defterinde AutoML ile tahmin gerçekleştirme işlemi gösterilmektedir.

AutoML tahmin örneği not defteri

Not defterini alma

Aşağıdaki not defteri, AutoML ve Özellik Deposu özellik tablolarıyla ML modelini eğitmeyi gösterir.

Özellik Deposu örnek not defteriyle AutoML denemesi

Not defterini alma