Python ile doğal dil işleme modelini eğitmek için AutoML'yi ayarlama (önizleme)

ŞUNLAR IÇIN GEÇERLIDIR:Python SDK azureml v1

Önemli

Bu özellik şu anda genel önizlemededir. Bu önizleme sürümü hizmet düzeyi sözleşmesi olmadan sağlanır ve üretim iş yükleri için bu sürümü önermeyiz. Bazı özellikler desteklenmiyor olabileceği gibi özellikleri sınırlandırılmış da olabilir.

Daha fazla bilgi için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.

Bu makalede, Azure Machine Learning Python SDK'sındaotomatik ML ile doğal dil işleme (NLP) modellerini eğitmeyi öğreneceksiniz.

Otomatik ML, ML uzmanlarının ve veri bilimcilerinin kendi metin verilerini getirmesine ve çok sınıflı metin sınıflandırması, çok etiketli metin sınıflandırması ve adlandırılmış varlık tanıma (NER) gibi görevler için özel modeller oluşturmasına olanak tanıyan NLP'yi destekler.

Metin verilerinizi etiketlemek veya mevcut etiketlenmiş verilerinizi getirmek için Azure Machine Learning veri etiketleme özelliğiyle sorunsuz bir şekilde tümleştirebilirsiniz. Otomatik ML, daha hızlı model eğitimi için çok GPU'lu işlem kümelerinde dağıtılmış eğitimi kullanma seçeneği sağlar. Elde edilen model, Azure Machine Learning'in MLOps özelliklerinden yararlanılarak büyük ölçekte kullanıma hazır hale getirilebilir.

Önkoşullar

NLP görevinizi seçin

Hangi NLP görevini gerçekleştirmek istediğinizi belirleyin. Şu anda otomatik ML aşağıdaki derin sinir ağı NLP görevlerini destekler.

Görev AutoMLConfig söz dizimi Description
Çok sınıflı metin sınıflandırması task = 'text-classification' Birden çok olası sınıf vardır ve her örnek tam olarak bir sınıf olarak sınıflandırılabilir. Görev, her örnek için doğru sınıfı tahmin etmektir.

Örneğin, bir film betiğini "Komedi" veya "Romantik" olarak sınıflandırma.
Çok etiketli metin sınıflandırması task = 'text-classification-multilabel' Birden çok olası sınıf vardır ve her örne herhangi bir sayıda sınıf atanabilir. Görev, her örnek için tüm sınıfları tahmin etmektir

Örneğin, bir film betiğini "Komedi" veya "Romantik" veya "Komedi ve Romantik" olarak sınıflandırma.
Adlandırılmış Varlık Tanıma (NER) task = 'text-ner' Sıralı belirteçler için birden çok olası etiket vardır. Görev, her dizi için tüm belirteçlerin etiketlerini tahmin etmektir.

Örneğin, anlaşmalar veya finansal belgeler gibi yapılandırılmamış metinden etki alanına özgü varlıkları ayıklama

Verileri hazırlama

Otomatik ML'deki NLP denemeleri için, çok sınıflı ve çok etiketli sınıflandırma görevleri için biçime sahip .csv bir Azure Machine Learning veri kümesi getirebilirsiniz. NER görevleri için ayırıcı olarak boşluk kullanan ve CoNLL biçimine bağlı olan iki sütunlu .txt dosyalar desteklenir. Aşağıdaki bölümlerde, her görev için kabul edilen veri biçimi için ek ayrıntılar sağlanır.

Çok sınıflı

Çok sınıflı sınıflandırma için veri kümesi birkaç metin sütunu ve tam olarak bir etiket sütunu içerebilir. Aşağıdaki örnekte yalnızca bir metin sütunu vardır.


text,labels
"I love watching Chicago Bulls games.","NBA"
"Tom Brady is a great player.","NFL"
"There is a game between Yankees and Orioles tonight","MLB"
"Stephen Curry made the most number of 3-Pointers","NBA"

Çok etiketli

Çok etiketli sınıflandırma için, veri kümesi sütunları çok sınıflı sütunlarla aynı olabilir, ancak etiket sütunundaki veriler için özel biçim gereksinimleri vardır. Kabul edilen iki biçim ve örnek aşağıdaki tabloda verilmiştir.

Etiket sütun biçimi seçenekleri Birden çok etiket Bir etiket Etiket yok
Düz metin "label1, label2, label3" "label1" ""
Tırnak işaretleri içeren Python listesi "['label1','label2','label3']" "['label1']" "[]"

Önemli

Bu biçimlerdeki etiketleri okumak için farklı ayrıştırıcılar kullanılır. Düz metin biçimini kullanıyorsanız, yalnızca alfabetik, sayısal ve '_' etiketlerinizde kullanın. Diğer tüm karakterler etiketlerin ayırıcısı olarak tanınır.

Örneğin, etiketiniz ise "cs.AI"ve "AI"olarak "cs" okunur. Python liste biçimindeyken etiket "['cs.AI']"olarak "cs.AI" okunan olur.

Düz metin biçiminde çoklu etiket için örnek veriler.

text,labels
"I love watching Chicago Bulls games.","basketball"
"The four most popular leagues are NFL, MLB, NBA and NHL","football,baseball,basketball,hockey"
"I like drinking beer.",""

Python listesinde tırnak işareti biçiminde çoklu etiket için örnek veriler.

text,labels
"I love watching Chicago Bulls games.","['basketball']"
"The four most popular leagues are NFL, MLB, NBA and NHL","['football','baseball','basketball','hockey']"
"I like drinking beer.","[]"

Adlandırılmış varlık tanıma (NER)

Biçim veri kümelerini alan .csv çok sınıflı veya çok etiketliden farklı olarak, adlandırılmış varlık tanıma coNLL biçimi gerektirir. Dosya tam olarak iki sütun içermelidir ve her satırda belirteç ve etiket tek bir boşlukla ayrılır.

Örneğin,

Hudson B-loc
Square I-loc
is O
a O
famous O
place O
in O
New B-loc
York I-loc
City I-loc

Stephen B-per
Curry I-per
got O
three O
championship O
rings O

Veri doğrulama

Eğitimden önce otomatik ML, verilerin doğru şekilde işlenebilir olduğundan emin olmak için giriş verilerine veri doğrulama denetimleri uygular. Bu denetimlerden herhangi biri başarısız olursa, çalıştırma ilgili hata iletisiyle başarısız olur. Her görev için veri doğrulama denetimlerini geçirme gereksinimleri aşağıdadır.

Not

Bazı veri doğrulama denetimleri hem eğitim hem de doğrulama kümesi için geçerlidir, diğerleri ise yalnızca eğitim kümesi için geçerlidir. Test veri kümesi veri doğrulamayı geçemezse bu, otomatik ML'nin bunu yakalayamadığı ve model çıkarımı hatası veya model performansında düşüş olasılığı olduğu anlamına gelir.

Görev Veri doğrulama denetimi
Tüm görevler - Hem eğitim hem de doğrulama kümeleri sağlanmalıdır
- En az 50 eğitim örneği gereklidir
Çok sınıflı ve Çok etiketli Eğitim verileri ve doğrulama verilerinin sahip olması gerekir
- Aynı sütun kümesi
- Soldan sağa aynı sütun sırası
- Aynı ada sahip sütunlar için aynı veri türü
- En az iki benzersiz etiket
- Her veri kümesindeki benzersiz sütun adları (Örneğin, eğitim kümesinin Age adlı birden çok sütunu olamaz)
Yalnızca çok sınıflı Hiçbiri
Yalnızca çoklu etiket - Etiket sütunu biçimi kabul edilen biçimde olmalıdır
- En az bir örnek 0 veya 2+ etikete sahip olmalıdır, aksi takdirde bu bir multiclass görev olmalıdır
- Tüm etiketler örtüşme olmadan veya int biçiminde olmalıdırstr. Hem etiket hem de etikete 1 sahip olmamalıdır '1'
Yalnızca NER - Dosya boş bir satırla başlamamalıdır
- Her satır boş bir satır olmalı veya biçiminde {token} {label}olmalıdır; burada belirteçle etiket arasında tam olarak bir boşluk vardır ve etiket sonrasında boşluk yoktur
- Tüm etiketler , B-veya tam olarak Oile I-başlamalıdır. Büyük/Küçük harfe duyarlı
- İki örnek arasında tam olarak bir boş çizgi
- Dosyanın sonunda tam olarak bir boş satır

Denemeyi yapılandırma

Otomatik ML'nin NLP özelliği, sınıflandırma, regresyon ve tahmin görevleri için otomatik ML denemeleri göndermek için aynı iş akışı olan aracılığıyla AutoMLConfigtetiklenmiştir. Parametrelerin çoğunu , ve veri girişleri gibi bu denemelerde yaptığınız gibi taskcompute_target ayarlayabilirsiniz.

Ancak önemli farklar vardır:

  • yalnızca raporlama amacıyla olduğundan yoksayabilirsiniz primary_metric. Şu anda otomatik ML, NLP için çalıştırma başına yalnızca bir model eğitir ve model seçimi yoktur.
  • label_column_name parametresi yalnızca çok sınıflı ve çok etiketli metin sınıflandırma görevleri için gereklidir.
  • Veri kümenizdeki örneklerin çoğunluğu 128'den fazla sözcük içeriyorsa, uzun aralık olarak kabul edilir. Bu senaryo için, içinde parametresiyle enable_long_range_text=TrueAutoMLConfiguzun aralıklı metin seçeneğini etkinleştirebilirsiniz. Bunu yapmak, model performansını iyileştirmeye yardımcı olur, ancak daha uzun eğitim süreleri gerektirir.
    • Uzun aralıklı metni etkinleştirirseniz NCv3 serisi veya ND serisi gibi daha yüksek belleğe sahip bir GPU gerekir.
    • enable_long_range_text parametresi yalnızca çok sınıflı sınıflandırma görevleri için kullanılabilir.
automl_settings = {
    "verbosity": logging.INFO,
    "enable_long_range_text": True, # # You only need to set this parameter if you want to enable the long-range text setting
}

automl_config = AutoMLConfig(
    task="text-classification",
    debug_log="automl_errors.log",
    compute_target=compute_target,
    training_data=train_dataset,
    validation_data=val_dataset,
    label_column_name=target_column_name,
    **automl_settings
)

Dil ayarları

NLP işlevinin bir parçası olarak otomatik ML, BERT model ailesi gibi dile özgü ve çok dilli önceden eğitilmiş metin DNN modellerinden yararlanan 104 dili destekler. Şu anda dil seçimi varsayılan olarak İngilizce'yi kullanır.

Aşağıdaki tabloda, görev türüne ve dile göre hangi modelin uygulandığı özetlemektedir. Desteklenen dillerin ve kodlarının tam listesine bakın.

Görev türü için söz dizimi dataset_language Metin modeli algoritması
Çok etiketli metin sınıflandırması 'eng'
'deu'
'mul'
İngilizce BERT uncased
Almanca BERT
Çok Dilli BERT

Diğer tüm diller için otomatik ML çok dilli BERT uygular
Çok sınıflı metin sınıflandırması 'eng'
'deu'
'mul'
İngilizce BERT cased
Çok Dilli BERT

Diğer tüm diller için otomatik ML çok dilli BERT uygular
Adlandırılmış varlık tanıma (NER) 'eng'
'deu'
'mul'
İngilizce BERT cased
Almanca BERT
Çok Dilli BERT

Diğer tüm diller için otomatik ML çok dilli BERT uygular

veri kümesi dilinizi içinde FeaturizationConfigbelirtebilirsiniz. BERT ayrıca otomatik ML denemesi eğitiminin özellik geliştirme sürecinde de kullanılır, OTOMATIK ML'de BERT tümleştirmesi ve özellik kazandırma hakkında daha fazla bilgi edinin.

from azureml.automl.core.featurization import FeaturizationConfig

featurization_config = FeaturizationConfig(dataset_language='{your language code}')
automl_config = AutomlConfig("featurization": featurization_config)

Dağıtılmış eğitim

Ayrıca bir Azure Machine Learning işlem kümesinde dağıtılmış eğitimle NLP denemelerinizi çalıştırabilirsiniz. Bu, parametreler max_concurrent_iterations = number_of_vms otomatik ML tarafından otomatik olarak işlenir ve enable_distributed_dnn_training = True deneme kurulumu sırasında sizin AutoMLConfig için sağlanır.

max_concurrent_iterations = number_of_vms
enable_distributed_dnn_training = True

Bunu yaptığınızda, NLP modellerinin dağıtılmış eğitimini zamanlar ve sanal makinenizdeki veya sanal makine kümenizdeki her GPU'ya otomatik olarak ölçeklendirilir. İzin verilen maksimum sanal makine sayısı 32'dir. Eğitim, iki güçte olan sanal makine sayısıyla zamanlanır.

Örnek not defterleri

Her NLP görevi için ayrıntılı kod örnekleri için örnek not defterlerine bakın.

Sonraki adımlar