Doğal dil işleme modelini eğitmek için AutoML'yi ayarlama
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)
Bu makalede, Azure Machine Learning'de otomatik ML ile doğal dil işleme (NLP) modellerini eğitmeyi öğreneceksiniz. Azure Machine Learning Python SDK v2 veya Azure Machine Learning CLI v2 aracılığıyla otomatik ML ile NLP modelleri oluşturabilirsiniz.
Otomatik ML, ML uzmanlarının ve veri bilimcilerinin kendi metin verilerini getirmesine ve NLP görevleri için özel modeller oluşturmasına olanak tanıyan NLP'yi destekler. NLP görevleri ç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) içerir.
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 sunar. Elde edilen model, Azure Machine Learning'in MLOps özellikleri kullanılarak uygun ölçekte kullanıma hazır hale getirilebilir.
Önkoşullar
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
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. Daha fazla bilgi için bkz . Azure tarafından sağlanan GPU örnekleri hakkında daha fazla ayrıntı için 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 modellerin desteklenmesi ve en uzun dizi uzunluğuna sahip modellerin kullanılması gerekir. 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 CLI v2 yüklü. En son sürümü güncelleştirme ve yükleme yönergeleri için bkz . CLI'yı (v2) yükleme ve ayarlama.
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 nasıl yapılır adımlarını 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 | AutoML işi söz dizimi | Açıklama |
---|---|---|
Çok sınıflı metin sınıflandırması | CLI v2: text_classification SDK v2: 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ı | CLI v2: text_classification_multilabel SDK v2: text_classification_multilabel() |
Birden çok olası sınıf vardır ve her örneğe 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" ya da "Komedi ve Romantik" olarak sınıflandırma. |
Adlandırılmış Varlık Tanıma (NER) | CLI v2:text_ner SDK v2: 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, sözleşmeler veya finansal belgeler gibi yapılandırılmamış metinlerden etki alanına özgü varlıkları ayıklama. |
Eşik
Eşik, kullanıcıların tahmin edilen olasılıkların pozitif bir etikete yol açacağı eşiği seçmesine olanak tanıyan çok etiketli özelliktir. Daha düşük değerler daha fazla etikete olanak sağlar ve kullanıcılar geri çağırmayı daha çok önemsediğinde daha iyidir, ancak bu seçenek daha fazla hatalı pozitif sonuç verebilir. Daha yüksek değerler daha az etiket sağlar ve bu nedenle duyarlık isteyen kullanıcılar için daha iyidir, ancak bu seçenek daha fazla hatalı negatife yol açabilir.
Verileri hazırlama
Otomatik ML'deki NLP denemeleri için verilerinizi .csv
çok sınıflı ve çok etiketli sınıflandırma görevleri için biçiminde 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çimine ilişkin 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ı olacaktır, 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ütunu 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 kabul edilir.
Ö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 çok etiketli ö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 biçiminde çok etiketli ö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ğrulaması
Modeli eğitmeden ö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çerlidirken, diğerleri yalnızca eğitim kümesi için geçerlidir. Test veri kümesi veri doğrulamasını 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.
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 göreve özgü automl
tür işleri aracılığıyla tetiklenmiştir. Bu denemeler için yaptığınız gibi parametreler ayarlayabilirsiniz; örneğin experiment_name
, compute_name
ve veri girişleri.
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 %10'undan fazlası 128'den fazla belirteç içeriyorsa, bu uzun aralık olarak kabul edilir.
- Uzun aralıklı metin özelliğini kullanmak için GPU için NCv3 serisi veya ND serisi gibi bir NC6 veya üzeri/daha iyi SKU kullanmanız gerekir.
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
CLI v2 otomatik ml işleri için yaml dosyasında denemenizi aşağıdaki gibi yapılandırabilirsiniz.
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 olarak ayarlanmıştır.
Aşağıdaki tabloda, görev türüne ve diline göre hangi modelin uygulandığı özetlemektedir. Desteklenen dillerin ve kodlarının tam listesine bakın.
Görev türü | 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 |
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
Veri kümenizin dilini yapılandırma YAML dosyanızın özellik geliştirme bölümünde belirtebilirsiniz. BERT ayrıca otomatik ML denemesi eğitiminin özellik geliştirme sürecinde de kullanılır, OTOMATIK ML'de (SDK v1) BERT tümleştirmesi ve özellik kazandırma hakkında daha fazla bilgi edinin.
featurization:
dataset_language: "eng"
Dağıtılmış eğitim
Dağıtılmış eğitimle NLP denemelerinizi bir Azure Machine Learning işlem kümesinde de çalıştırabilirsiniz.
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
AutoML işini gönderme
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
AutoML işinizi göndermek için .yml dosyanızın, çalışma alanı adınızın, kaynak grubunuzun ve abonelik kimliğinizin yolu ile aşağıdaki CLI v2 komutunu çalıştırabilirsiniz.
az ml job create --file ./hello-automl-job-basic.yml --workspace-name [YOUR_AZURE_WORKSPACE] --resource-group [YOUR_AZURE_RESOURCE_GROUP] --subscription [YOUR_AZURE_SUBSCRIPTION]
Kod örnekleri
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
Her NLP görevi için aşağıdaki örnek YAML dosyalarına bakın.
Model süpürme ve hiper parametre ayarlama (önizleme)
Ö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 Ek Kullanım Koşulları.
AutoML NLP, yapılandırmadaki hiper parametre arama alanı aracılığıyla modellerin ve hiper parametre birleşimlerinin listesini sağlamanıza olanak tanır. Hyperdrive, sağlanan arama alanına göre seçilen ve süpürülen belirli bir NLP modeli ve hiper parametre değerleri kümesi için ince ayar çalıştırması olan birkaç alt çalıştırma oluşturur.
Desteklenen model algoritmaları
Şu anda AutoML NLP'de ince ayar için kullanılabilen önceden eğitilmiş tüm metin DNN modelleri aşağıda listelenmiştir:
- bert-base-cased
- bert-large-uncased
- bert-base-multilingual-cased
- bert-base-german-cased
- bert-large-cased
- distilbert-base-cased
- distilbert-base-uncased
- roberta-base
- roberta-large
- distilroberta-base
- xlm-roberta-base
- xlm-roberta-large
- xlnet-base-cased
- xlnet-large-cased
Büyük modellerin temel karşılıklarından daha büyük olduğunu unutmayın. Genellikle daha performanslıdırlar, ancak eğitim için daha fazla GPU belleği ve zaman alır. Bu nedenle, SKU gereksinimleri daha sıkıdır: En iyi sonuçlar için ND serisi VM'lerde çalıştırmanızı öneririz.
Desteklenen model algoritmaları - HuggingFace (önizleme)
Azure Machine Learning işlem hatlarında çalışan yeni arka uçla, transformatör kitaplığının bir parçası olan Metin Sınıflandırması, Belirteç Sınıflandırması için HuggingFace Hub'dan herhangi bir metin/belirteç sınıflandırma modelini de kullanabilirsiniz (örneğin, microsoft/deberta-large-mnli). Azure Machine Learning model kayıt defterinde işlem hattı bileşenleriyle doğrulanmış modellerin seçilmiş bir listesini de bulabilirsiniz.
Herhangi bir HuggingFace modeli kullanıldığında işlem hattı bileşenleri kullanılarak çalıştırmalar tetiklenir. Hem eski hem de HuggingFace modelleri kullanılıyorsa, tüm çalıştırmalar/denemeler bileşenler kullanılarak tetiklenir.
Desteklenen hiper parametreler
Aşağıdaki tabloda AutoML NLP'nin desteklediği hiper parametreler açıklanmaktadır.
Parametre adı | Açıklama | Sözdizimi |
---|---|---|
gradient_accumulation_steps | İyileştiricinin adım işlevini çağırarak bir adım gradyan azalma gerçekleştirmeden önce gradyanları toplanacak geriye dönük işlemlerin sayısı. Bu, GPU'ya uyan maksimum boyuttan gradient_accumulation_steps kat daha büyük olan etkili bir toplu iş boyutu kullanmaktır. |
Pozitif bir tamsayı olmalıdır. |
learning_rate | İlk öğrenme oranı. | Aralıktaki bir float olmalıdır (0, 1). |
learning_rate_scheduler | Öğrenme oranı zamanlayıcı türü. | arasından linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup seçim yapmalıdır. |
model_name | Desteklenen modellerden birinin adı. | arasından bert_base_cased, bert_base_uncased, bert_base_multilingual_cased, bert_base_german_cased, bert_large_cased, bert_large_uncased, distilbert_base_cased, distilbert_base_uncased, roberta_base, roberta_large, distilroberta_base, xlm_roberta_base, xlm_roberta_large, xlnet_base_cased, xlnet_large_cased seçim yapmalıdır. |
number_of_epochs | Eğitim dönemlerinin sayısı. | Pozitif bir tamsayı olmalıdır. |
training_batch_size | Eğitim toplu iş boyutu. | Pozitif bir tamsayı olmalıdır. |
validation_batch_size | Doğrulama toplu iş boyutu. | Pozitif bir tamsayı olmalıdır. |
warmup_ratio | 0'dan learning_rate doğrusal ısınma için kullanılan toplam eğitim adımlarının oranı. | [0, 1] aralığında bir float olmalıdır. |
weight_decay | İyileştirici sgd, adam veya adamw olduğunda ağırlık bozulmasının değeri. | [0, 1] aralığında bir float olmalıdır. |
Tüm ayrık hiper parametreler yalnızca tamsayı türündeki ve dize model_name
türündeki training_batch_size
hiper parametreler gibi seçim dağıtımlarına izin verir. Gibi learning_rate
tüm sürekli hiper parametreler tüm dağıtımları destekler.
Süpürme ayarlarınızı yapılandırma
Süpürmeyle ilgili tüm parametreleri yapılandırabilirsiniz. Her hiper parametre ayarlama örneğinde görüldüğü gibi, ilgili modele koşullu hiper parametrelerle birden çok model alt alanı oluşturulabilir.
Genel HyperDrive işleri için kullanılabilen aynı ayrık ve sürekli dağıtım seçenekleri burada desteklenir. Modelin hiper parametre ayarlaması için dokuz seçeneğin tümünü görme
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
limits:
timeout_minutes: 120
max_trials: 4
max_concurrent_trials: 2
sweep:
sampling_algorithm: grid
early_termination:
type: bandit
evaluation_interval: 10
slack_factor: 0.2
search_space:
- model_name:
type: choice
values: [bert_base_cased, roberta_base]
number_of_epochs:
type: choice
values: [3, 4]
- model_name:
type: choice
values: [distilbert_base_cased]
learning_rate:
type: uniform
min_value: 0.000005
max_value: 0.00005
Süpürme için örnekleme yöntemleri
Hiper parametreleri süpürürken, tanımlanan parametre alanını süpürmek için kullanılacak örnekleme yöntemini belirtmeniz gerekir. Şu anda parametresiyle sampling_algorithm
aşağıdaki örnekleme yöntemleri desteklenmektedir:
Örnekleme türü | AutoML İşi söz dizimi |
---|---|
Rastgele Örnekleme | random |
Kılavuz Örnekleme | grid |
Bayes örneklemesi | bayesian |
Deneme bütçesi
İsteğe bağlı olarak AutoML NLP eğitim işiniz için deneme bütçesini, denemenin sonlandırılabilmesi için dakika cinsinden dakika cinsinden parametresini limits
kullanarak timeout_minutes
belirtebilirsiniz. Belirtilmezse, varsayılan deneme zaman aşımı yedi gündür (en fazla 60 gün).
AutoML NLP ayrıca, tek bir denemenin sonlandırılmadan önce kaç dakika içinde çalışabileceğini ve max_nodes
iş için kullanılacak yedekleme işlem kümesinden düğüm sayısı üst sınırını da desteklertrial_timeout_minutes
. Bu parametreler de bölümüne aittir limits
.
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
limits:
timeout_minutes: 60
trial_timeout_minutes: 20
max_nodes: 2
Erken sonlandırma ilkeleri
Kötü performans gösteren çalıştırmaları otomatik olarak erken sonlandırma ilkesiyle sonlandırabilirsiniz. Erken sonlandırma işlem verimliliğini artırarak daha az umut verici yapılandırmalar için harcanabilecek işlem kaynaklarının tasarrufunu sağlar. AutoML NLP parametresini early_termination
kullanarak erken sonlandırma ilkelerini destekler. Sonlandırma ilkesi belirtilmezse, tüm yapılandırmalar tamamlanmak üzere çalıştırılır.
Hiper parametre taramanız için erken sonlandırma ilkesini yapılandırma hakkında daha fazla bilgi edinin.
Süpürme için kaynaklar
Süpürme için ve değerini belirterek hiper parametre süpürmenize harcanan max_trials
max_concurrent_trials
kaynakları denetleyebilirsiniz.
Parametre | Ayrıntı |
---|---|
max_trials |
Süpürme için en fazla yapılandırma sayısı parametresi. 1 ile 1000 arasında bir tamsayı olmalıdır. Belirli bir model algoritması için yalnızca varsayılan hiper parametreleri keşfederken bu parametreyi 1 olarak ayarlayın. Varsayılan değer 1 şeklindedir. |
max_concurrent_trials |
Eşzamanlı olarak çalışabilecek en fazla çalıştırma sayısı. Belirtilirse, 1 ile 100 arasında bir tamsayı olmalıdır. Varsayılan değer 1 şeklindedir. NOT: max_concurrent_trials dahili olarak eşlenir max_trials . Örneğin, kullanıcı ayarlarsamax_concurrent_trials=4 max_trials=2 , değerler dahili olarak max_concurrent_trials=2 olarak max_trials=2 güncelleştirilir. |
Süpürmeyle ilgili tüm parametreleri bu örnekte gösterildiği gibi yapılandırabilirsiniz.
ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)
sweep:
limits:
max_trials: 10
max_concurrent_trials: 2
sampling_algorithm: random
early_termination:
type: bandit
evaluation_interval: 2
slack_factor: 0.2
delay_evaluation: 6
Bilinen Sorunlar
Düşük puanlar veya daha yüksek kayıp değerleriyle ilgilenme:
NLP görevinden bağımsız olarak bazı veri kümelerinde, üretilen puanlar çok düşük, hatta bazen sıfır olabilir. Bu puana, sinir ağının yakınsayamadığı anlamına gelen daha yüksek kayıp değerleri eşlik eder. Bu puanlar belirli GPU SKU'larında daha sık gerçekleşebilir.
Bu tür durumlar yaygın olmasa da mümkündür ve bunu işlemenin en iyi yolu hiper parametre ayarlamasını kullanmak ve özellikle öğrenme hızları gibi hiper parametreler için daha geniş bir değer aralığı sağlamaktır. Hiper parametre ayarlama özelliğimiz üretim ortamında kullanıma sunulana kadar bu sorunları yaşayan kullanıcıların NC6 veya ND6 işlem kümelerini kullanmalarını öneririz. Bu kümeler genellikle oldukça kararlı eğitim sonuçlarına sahiptir.