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
Azure aboneliği. Azure aboneliğiniz yoksa, Azure Machine Learning'in ücretsiz veya ücretli sürümünü denemek için bugün kaydolun.
GPU eğitim işlemli bir Azure Machine Learning çalışma alanı. Çalışma alanını oluşturmak için bkz. Çalışma alanı kaynakları oluşturma. Azure tarafından sağlanan GPU örneklerinin diğer ayrıntıları için bkz. GPU için iyileştirilmiş sanal makine boyutları .
Uyarı
İngilizce olmayan veri kümeleri ve daha uzun aralıklı belgeler gibi çeşitli NLP kullanım örnekleri için çok dilli modeller ve en uzun dizi uzunluğuna sahip modellerin kullanımı için destek gereklidir. Sonuç olarak, bu senaryolar model eğitiminin başarılı olması için NC_v3 serisi veya ND serisi gibi daha yüksek GPU belleği gerektirebilir.
Azure Machine Learning Python SDK'sı yüklüdür.
SDK'yı yüklemek için
SDK'yı otomatik olarak yükleyen ve ML iş akışları için önceden yapılandırılmış bir işlem örneği oluşturun. Daha fazla bilgi için bkz. Azure Machine Learning işlem örneği oluşturma ve yönetme .
SDK'nın
automl
varsayılan yüklemesini içeren paketi kendiniz yükleyin.
Önemli
Bu makaledeki Python komutları için en son
azureml-train-automl
paket sürümü gerekir.- En son
azureml-train-automl
paketi yerel ortamınıza yükleyin. - En son
azureml-train-automl
paketle ilgili ayrıntılar için sürüm notlarına bakın.
Bu makalede, otomatik makine öğrenmesi denemesi ayarlama konusunda biraz bilgi sahibi olduğunuz varsayılır. Ana otomatik makine öğrenmesi denemesi tasarım desenlerini görmek için öğreticiyi veya nasıl yapılır yönergelerini izleyin.
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 O ile 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 AutoMLConfig
tetiklenmiştir. Parametrelerin çoğunu , ve veri girişleri gibi bu denemelerde yaptığınız gibi task
compute_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=True
AutoMLConfig
uzun 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.
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 FeaturizationConfig
belirtebilirsiniz. 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
- Modelin nasıl ve nerede dağıtılacağı hakkında daha fazla bilgi edinin.
- Otomatik ML denemelerinin sorunlarını giderme.