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

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

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.

Dekont

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.

Görev Veri doğrulama denetimi
Tüm görevler En az 50 eğitim örneği gereklidir
Çok sınıflı ve Çok etiketli Eğitim verileri ve doğrulama verilerine sahip olmalıdır
- 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 çok etiketli - Etiket sütunu biçimi kabul edilmiş biçimde olmalıdır
- En az bir örnekte 0 veya 2+ etiket olmalıdır, aksi takdirde bu bir multiclass görev olmalıdır
- Tüm etiketler örtüşme olmadan veya biçiminde olmalıdır strint . Hem etiket hem de etiket 1 olmamalıdır '1'
Yalnızca NER - Dosya boş bir satırla başlamamalıdır
- Her satır boş bir çizgi olmalı veya biçimi {token} {label}izlemelidir; 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 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.

ŞUNUN 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

ŞUNUN 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.

ŞUNUN IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)

AutoML işini gönderme

ŞUNUN 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

ŞUNUN 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_warmupseç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_casedseç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

ŞUNUN 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_nodesiş 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 .

ŞUNUN 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_trialsmax_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:
  • Eş zamanlı çalıştırma sayısı, belirtilen işlem hedefinde kullanılabilen kaynaklara bağlıdır. İşlem hedefinin istenen eşzamanlılık için kullanılabilir kaynaklara sahip olduğundan emin olun.
  • max_concurrent_trials dahili olarak eşlenir max_trials . Örneğin, kullanıcı ayarlarsamax_concurrent_trials=4max_trials=2, değerler dahili olarak max_concurrent_trials=2olarak max_trials=2güncelleştirilir.
  • Süpürmeyle ilgili tüm parametreleri bu örnekte gösterildiği gibi yapılandırabilirsiniz.

    ŞUNUN 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.

    Sonraki adımlar