Aracılığıyla paylaş


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)

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şikleme

Eşik değeri, kullanıcıların tahmin edilen olasılıkların pozitif etiketle sonuçlanacağı değeri seçmesine olanak tanıyan çoklu etiketleme özelliğidir. 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. Yüksek ayar değerleri daha az etiket sağlar ve bu nedenle hassasiyet arayan kullanıcılar için daha iyidir ancak bu seçenek daha fazla yanlış negatif sonuca 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 "cs.AI" ise, "cs" ve "AI" olarak okunur. Python liste biçimindeyken etiket şu şekilde etiketlenir: "['cs.AI']", bu durumda "cs.AI" olarak okunur.

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.

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 verileri gereksinimleri karşılamalı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 çoklu sınıf Hiçbiri
Yalnızca çok etiket seçeneği - Etiket sütunu biçimi kabul edilmiş biçimde olmalıdır
- En az bir örnekte 0 veya 2 ya da daha fazla etiket olmalıdır, aksi takdirde bu multiclass görevi olmalıdır.
- Tüm etiketler str veya int formatında olmalı ve örtüşmemelidir. Her iki 1 etiketini ve '1' etiketini birden olmamalıdır.
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 , I-veya tam olarak B-ile Obaş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 yeteneği, sınıflandırma, regresyon ve tahmin görevleri için otomatik ML deneylerini göndermek ile aynı iş akışı kullanılarak göreve özgü automl tür işlerle tetiklenir. 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:

  • Yoksayabilirsiniz primary_metric, çünkü yalnızca raporlama amacıyla. Ş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 menzilli metin özelliğini kullanmak için GPU için bir NC6 veya daha iyi SKU kullanmanız gerekir; örneğin, NCv3 serisi veya ND serisi.

Ş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, otomatik ML denemesi eğitiminin özellik geliştirme sürecinde de kullanılır, AutoML'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 tarama ve hiperparametre ayarlaması (ö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ç ile, transformatör kitaplığının bir parçası olan HuggingFace Hub'dan herhangi bir metin/belirteç sınıflandırma modelini kullanabilir ve Metin Sınıflandırması, Belirteç Sınıflandırması yapabilirsiniz (ö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
gradyan birikimi adımları İ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.
öğrenme oranı İlk öğrenme oranı. Aralıktaki bir float olmalıdır (0, 1).
öğrenme oranı zamanlayıcı Öğrenme oranı zamanlayıcı türü. linear, cosine, cosine_with_restarts, polynomial, constant, constant_with_warmup arasından seçim yapmalıdır.
model_name Desteklenen modellerden birinin adı. 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 arasından 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 veri kümesi boyutu. Pozitif bir tamsayı olmalıdır.
doğrulama_dizi_boyutu Doğrulama toplu iş boyutu. Pozitif bir tamsayı olmalıdır.
ısınma_oranı 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.
ağırlık azaltma İ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 training_batch_size türündeki model_name 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
Izgara Ö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, deneyin sonlandırılmasından önceki süreyi dakika cinsinden belirterek, timeout_minutes parametresini limits içinde 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 trial_timeout_minutesiş için kullanılacak yedekleme işlem kümesinden düğüm sayısı üst sınırını da desteklermax_nodes. 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ışmaları, erken sonlandırma ilkesiyle otomatik olarak durdurabilirsiniz. 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 operasyonu için kaynaklar

Hiperparametre süpürmesine harcanan kaynakları, süpürme için max_trials ve max_concurrent_trials belirterek 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 max_trials ile sınırlandırılır. Ö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.

    Ş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 puanlarla veya daha yüksek kayıp değerleriyle baş etme.

    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ınsamadığını gösteren yüksek kayıp değerleri eşlik etmektedir. 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