AWS Türkçe Blog
Amazon SageMaker’da Hugging Face ile dil çeşitliliği için dönüştürücü dil modellerinde ince ayar yapın
Orijinal makale: Link (Arnav Khare, Hasan Basri AKIRMAK ve Heiko Hotz)
Bugün yaklaşık 7.000 dil kullanılmaktadır. 19. yüzyılın sonlarında Volapük veya Esperanto gibi inşa edilmiş diller icat etme girişimlerine rağmen, hiçbir birleşme belirtisi yoktur. İnsanlar hala yeni diller yaratmayı seçiyor (Klingonca, Dothraki veya Elfçe konuşan en sevdiğiniz film karakterini düşünün).
Bugün, doğal dil işleme (Natural Language Processing – NLP) örneklerine, insan nüfusunun yalnızca %5’inin ana dili olan ve yalnızca %17’sinin konuştuğu İngilizce dili hakimdir.
Dijital bölünme, dijital teknolojilere erişebilenlerle erişemeyenler arasındaki boşluk olarak tanımlanmaktadır. Dil engelleri nedeniyle bilgiye veya eğitime erişim eksikliği, yalnızca İngilizce bilmeyen insanlar arasında değil, aynı zamanda İngilizce konuşan ve İngilizce olmayan içeriğe erişimi olmayan İngilizce konuşan insanlar için de dijital bölünmeye katkıda bulunur, bu da düşünce ve bilgi çeşitliliğini azaltır. Karşılıklı öğrenecek çok şey var.
Bu gönderide, düşük kaynaklı dillerin zorluklarını özetliyoruz ve Amazon SageMaker’da Hugging Face dönüştürücülerini kullanarak 100’den fazla dili kapsayan farklı çözüm yaklaşımlarını deniyoruz.
Bir soru ve yanıtlama görevi için önceden eğitilmiş çeşitli dönüştürücü tabanlı dil modellerinde ince ayar yapıyoruz. Örneğimizde Türkçe kullanıyoruz, ancak bu yaklaşımı desteklenen diğer dillere de uygulayabilirsiniz. Odak noktamız BERT [1] türevleri üzerindedir, çünkü BERT’in harika bir özelliği, farklı görevlerde birleşik mimarisidir.
Amazon SageMaker‘da Hugging Face dönüştürücülerini kullanmanın çeşitli faydalarını, örneğin geniş ölçekte eğitim ve deneme, artan üretkenlik ve maliyet verimliliğini gösteriyoruz.
NLP’ye Genel Bakış
2017’den bu yana NLP’de birkaç önemli gelişme olmuştur. Dönüştürücüler [2] gibi derin öğrenme mimarilerinin ortaya çıkışı, bu tür modelleri son derece büyük veri kümeleri üzerinde eğitmek için denetimsiz öğrenme teknikleri ve aktarım öğrenimi, doğal dil anlayışında mevcut durumu önemli ölçüde iyileştirmiştir. Önceden eğitilmiş model merkezlerinin gelişi, NLP topluluğunun toplu bilgisine erişimi daha da demokratikleştirdi ve sıfırdan başlama ihtiyacını ortadan kaldırdı.
Bir dil modeli, bir sıradaki sonraki kelimeyi (veya herhangi bir maskelenmiş kelimeyi) tahmin etmeyi öğrenen bir NLP modelidir. Başlangıç noktası olarak dil modellerinin gerçek güzelliği üç bölümden oluşur: Birincisi, araştırmalar, büyük bir metin bütünü verileri üzerinde eğitilen dil modellerinin, önceki yöntemlere göre kelimelerin daha karmaşık anlamlarını öğrendiğini göstermiştir. Örneğin, bir cümledeki bir sonraki kelimeyi tahmin edebilmek için dil modelinin bağlamı, semantiği ve ayrıca dilbilgisini anlamada iyi olması gerekir. İkincisi, bir dil modelini eğitmek için, ön eğitim sırasında kıt ve pahalı olan etiketli verilere gerek yoktur. Bu önemlidir, çünkü çok büyük miktarda etiketlenmemiş metin verisi web’de birçok dilde herkese açıktır. Üçüncüsü, dil modeli herhangi bir cümle için bir sonraki kelimeyi tahmin etmek için yeterince akıllı olduğunda, çok az etiketlenmiş veri ile duygu analizi veya soru cevaplama gibi diğer NLP görevlerini gerçekleştirmenin nispeten kolay olduğu gösterilmiştir, çünkü ince ayar, önceden eğitilmiş bir dil modelinden gelen temsilleri yeniden kullanır [3].
Tam olarak yönetilen NLP hizmetleri, NLP’nin benimsenmesini de hızlandırdı. Amazon Comprehend, metin analitiğinin belgelerin içeriğinden öngörüler çıkarmasını sağlayan tam olarak yönetilen bir hizmettir ve çeşitli dilleri destekler. Amazon Comprehend, özel sınıflandırmayı ve özel varlık tanımayı destekler ve herhangi bir ML uzmanlığına ihtiyaç duymadan gereksinimlerinize spesifik olarak özel NLP modelleri oluşturmanıza olanak tanır.
Düşük kaynaklı diller için zorluklar ve çözümler
Çok sayıda dil için temel zorluk, eğitim için nispeten daha az veriye sahip olmalarıdır. Bunlara düşük kaynaklı diller denir. m-BERT belgesi [4] ve XLM-R belgesi [7], Urduca ve Swahili dillerine düşük kaynaklı diller olarak atıfta bulunur.
Aşağıdaki şekil, 80’den fazla dilin ISO kodlarını ve iki ana ön eğitim arasındaki boyut farkını (log ölçeğinde) belirtir [7]. Wikipedia’da (turuncu), 1 milyondan fazla makale içeren sadece 18 dil ve 1.000’den fazla makale içeren 52 dil, ancak yalnızca 1–10.000 makale içeren 164 dil vardır [9]. CommonCrawl corpus (mavi), düşük kaynaklı diller için veri miktarını iki büyüklük sırası artırır. Bununla birlikte, İngilizce, Rusça veya Almanca gibi yüksek kaynaklı dillere kıyasla hala nispeten küçüktürler.
Wikipedia makale sayısı açısından Türkçe, Urduca (54.) ile birlikte 100.000’den fazla makaleden oluşan (28.) aynı gruptaki diğer bir dildir. Urduca ile karşılaştırıldığında, Türkçe orta kaynak bir dil olarak kabul edilecektir. Türkçe, dilbilim ve tokenize etmede belirli zorluklar yaratarak dil modellerini daha güçlü hale getirebilecek bazı ilginç özelliklere sahiptir. Sondan eklemeli bir dildir. Çok özgür bir kelime düzenine, karmaşık bir morfolojiye veya İngilizce eşdeğerleri olmayan zamanlara sahiptir. İngilizce gibi dillerde birkaç kelimeden oluşan ifadeler, aşağıdaki örnekte gösterildiği gibi tek bir kelime formuyla ifade edilebilir.
Türkçe | İngilizce |
Kedi | Cat |
Kediler | Cats |
Kedigiller | Family of cats |
Kedigillerden | Belonging to the family of cats |
Kedileştirebileceklerimizdenmişçesineyken | When it seems like that one is one those we can make cat |
İki ana çözüm yaklaşımı dile özgü modeller veya çok dilli modellerdir (diller arası denetimli veya denetimsiz):
- Tek dilli dil modelleri – İlk yaklaşım, belirli bir hedef dile bir BERT varyantı uygulamaktır. Eğitim verileri ne kadar fazlaysa, model performansı o kadar iyi olur.
- Çok dilli maskeli dil modelleri – Diğer yaklaşım, büyük dönüştürücü modellerini birçok dilde önceden eğitmektir. Çok dilli dil modelleme, bir dilden öğrenilen NLP görevlerinin diğer dillere aktarılabilmesi için çok sayıda dilde ön eğitim vererek düşük kaynaklı diller için veri sorununu çözmeyi amaçlar. Çok dilli maskeli dil modelleri (Multilingual masked language models – MLM), en son teknolojiyi diller arası anlama görevlerine itmiştir. İki örnek:
- Çok dilli BERT – Çok dilli BERT modeli, Wikipedia korpusu kullanılarak 104 farklı dilde eğitilmiştir. Bununla birlikte, yalnızca benzer dil yapıları ve tipolojik özellikler (örneğin, benzer kelime sırasına sahip diller) arasında iyi bir genelleme yaptığı gösterilmiştir. Özellikle farklı kelime dizilimlerine sahip dillerde (örneğin özne/nesne/fiil) çok dillilik azalır [4].
- XLM-R – Diller arası dil modelleri (Cross-lingual language models – XLM’ler), paralel veri kümeleri (iki farklı dilde aynı metin) kullanılarak diller arası bir hedefle veya tek dilli veri kümeleri kullanılarak diller arası bir hedef olmadan eğitilir [6]. Araştırmalar, düşük kaynaklı dillerin daha fazla dile ölçeklendirmeden fayda sağladığını gösteriyor. XLM-RoBERTa, RoBERTa’dan [5] ilham alan dönüştürücü tabanlı bir modeldir ve başlangıç noktası, çok dilli BERT ve XLM’in yetersiz ayarlandığı önermesidir. Hem Wikipedia hem de CommonCrawl corpus kullanılarak 100 dilde eğitilmiştir, bu nedenle düşük kaynaklı diller için eğitim verilerinin miktarı, m-BERT’e kıyasla yaklaşık iki büyüklük sırası daha fazladır [7].
Düşük kaynaklı diller için çok dilli dil modellerinin bir başka zorluğu da kelime boyutu ve tokenize etmedir. Tüm diller çok dilli dil modellerinde aynı ortak kelime dağarcığını kullandığından, kelime dağarcığı boyutunu artırma (bu, hesaplama gereksinimlerini artırır) ile azaltma (kelime dağarcığında bulunmayan kelimeler bilinmeyen olarak işaretlenir veya belirteç olarak kelimeler yerine karakterlerin kullanılması herhangi bir yapıyı görmezden gelir) arasında bir denge vardır. Kelime parçası tokenizasyon algoritması, her iki yaklaşımın faydalarını birleştirir. Örneğin, kelime dağarcığında bulunana veya bireysel karaktere ulaşılana kadar kelimeyi alt kelimelere bölerek kelime dağarcığı dışındaki kelimeleri etkili bir şekilde işler. Karakter tabanlı tokenleştirme, Çince gibi belirli diller dışında pek kullanışlı değildir. Belirli dağılımlarla örnekleme gibi düşük kaynaklı diller için zorlukların üstesinden gelmek için teknikler mevcuttur [6].
Aşağıdaki tablo, üç farklı belirtecin “kedileri” kelimesi için nasıl davrandığını göstermektedir. Belirli diller ve NLP görevleri için bu bir fark yaratacaktır. Örneğin, soru yanıtlama görevi için model, başlangıç belirteci dizini ve bitiş belirteç dizininin yayılımını döndürür; “kediler” veya “kedileri” döndürmek, bazı bağlamları kaybedecek ve belirli metrikler için farklı değerlendirme sonuçlarına yol açacaktır.
Önceden eğitilmiş Model | Kelime dağarcığı boyutu | “Kedileri” için Tokenizasyon | |||||
dbmdz/bert-base-turkish-uncased | 32,000 | Tokens | [CLS] | kediler | ##i | [SEP] | |
Input IDs | 2 | 23714 | 1023 | 3 | |||
bert-base-multilingual-uncased | 105,879 | Tokens | [CLS] | ked | ##iler | ##i | [SEP] |
Input IDs | 101 | 30210 | 33719 | 10116 | 102 | ||
deepset/xlm-roberta-base-squad2 | 250,002 | Tokens | <s> | ▁Ke | di | leri | </s> |
Input IDs | 0 | 1345 | 428 | 1341 | . |
Bu nedenle, düşük kaynaklı diller çok dilli dil modellerinden yararlansa da, paylaşılan bir kelime dağarcığında tokenize etme gerçekleştirmek, belirli diller için bazı dil özelliklerini göz ardı edebilir.
Bir sonraki bölümde, Türkçe için bir QA veri seti kullanarak bir soru cevaplama görevi için ince ayar yaparak üç yaklaşımı karşılaştırıyoruz: BERTurk [8], çok dilli BERT [4] ve XLM-R [7].
Çözüme genel bakış
İş akışımız aşağıdaki gibidir:
- Veri kümesini bir Amazon SageMaker Studio notebook ortamında hazırlayın ve Amazon Simple Storage Service‘e (Amazon S3) yükleyin.
- İnce ayar komut dosyasını sağlayarak SageMaker eğitim derin öğrenme konteynerlerinde paralel eğitim işleri başlatın.
- Her deneyden meta veri toplayın.
- Sonuçları karşılaştırın ve en uygun modeli belirleyin.
Aşağıdaki diyagram, çözüm mimarisini göstermektedir.
Studio notebook’ları hakkında daha fazla bilgi için Amazon SageMaker Studio Notebooks mimarisine derinlemesine bakın. Hugging Face’in SageMaker ile nasıl entegre edildiği hakkında daha fazla bilgi için Doğal Dil İşleme modellerinin benimsenmesini basitleştirmek ve hızlandırmak için AWS ve Hugging Face işbirliği‘ne bakın.
Veri kümesini hazırlama
Hugging Face Veri Kümeleri kitaplığı, bir derin öğrenme modelinde bir veri kümesini eğitime hızlı bir şekilde hazırlamak için güçlü veri işleme yöntemleri sağlar. Aşağıdaki kod, Türkçe QA veri setini yükler ve içindekileri araştırır:
Yaklaşık 9000 örnek var.
Girdi veri kümesi, önceden eğitilmiş modellerin beklediği bir biçime biraz dönüştürülür ve aşağıdaki sütunları içerir:
İnce ayar komut dosyası
Hugging Face Transformers kitaplığı, run_qa.py adlı bir soru yanıtlama görevi için bir modelde ince ayar yapmak için örnek bir kod sağlar. Aşağıdaki kod, eğiticiyi başlatır:
Yapı taşlarını üst düzeyde gözden geçirelim.
Tokenizer
Komut dosyası, AutoTokenizer
sınıfını kullanarak bir tokenizer yükler. AutoTokenizer
sınıfı, modele karşılık gelen doğru tokenizer’ı döndürmekle ilgilenir:
Aşağıda tokenizer’ın nasıl çalıştığına dair bir örnek verilmiştir:
Model
Komut dosyası bir model yükler. AutoModel
sınıfları (örneğin, AutoModelForQuestionAnswering
), önceden eğitilmiş modelin adı ve yolu verilen ilgili mimarinin ağırlıkları, konfigürasyonu ve sözlüğü ile doğrudan bir sınıf oluşturur. Hugging Face ile yapılan soyutlama sayesinde, sadece modelin adını vererek aynı kodu kullanarak farklı bir modele kolayca geçiş yapabilirsiniz. Aşağıdaki örnek koda bakın:
Ön işleme ve eğitim
prepare_train_features()
ve prepare_validation_features()
yöntemleri sırasıyla eğitim veri kümesini ve doğrulama veri kümelerini önceden işler. Kod, giriş veri kümesi üzerinde yinelenir ve doğru modele özgü token türü ID’leri (token’ların sayısal temsilleri) ve dikkat maskeleriyle bağlamdan ve geçerli sorudan bir dizi oluşturur. Dizi daha sonra modelden geçirilir. Bu, aşağıdaki tabloda gösterildiği gibi hem başlangıç hem de bitiş konumları için bir dizi puan verir.
Veri Kümesi Alanları Girdileri | QuestionAnsweringTrainer için Önceden İşlenmiş Eğitim Veri Kümesi Alanları |
id | input_ids |
title | attention_mask |
context | start_positions |
question | end_positions |
Answers { answer_start, answer_text } | . |
Değerlendirme
compute_metrics()
yöntemi, metrikleri hesaplamakla ilgilenir. Soru yanıtlama görevleri için aşağıdaki popüler metrikleri kullanıyoruz:
- Tam eşleşme (Exact match) – Kesin referans yanıtlarından herhangi biriyle tam olarak eşleşen tahminlerin yüzdesini ölçer.
- F1 skoru – Tahmin ve kesin referans yanıtı arasındaki ortalama örtüşmeyi ölçer. F1 skoru, kesinlik ve hatırlamanın harmonik ortalamasıdır:
- Kesinlik (Precision) – Tahminde paylaşılan kelime sayısının toplam kelime sayısına oranı.
- Geri çekme (Recall) – Kesin referansta paylaşılan kelime sayısının toplam kelime sayısına oranı.
SageMaker’da yönetilen eğitim
Özel makine öğrenimi (ML) ortamlarını kurmak ve yönetmek zaman alıcı ve zahmetli olabilir. AWS Deep Learning Container (DLC’ler) for Hugging Face Transformers kitaplıklarıyla, önceden paketlenmiş ve optimize edilmiş derin öğrenme çerçevelerine erişimimiz var, bu da komut dosyamızı minimum ek kodla birden çok eğitim işinde çalıştırmayı kolaylaştırıyor.
SageMaker Python SDK’da bulunan Hugging Face Estimator‘ı aşağıdaki girdilerle kullanmamız yeterli:
Sonuçları değerlendirme
Türkçe soru cevaplama görevi için ince ayar işleri tamamlandığında, üç yaklaşımın model performansını karşılaştırırız:
- Tek dilli dil modeli – Türkçe soru cevaplama metnine ince ayar yapılmış önceden eğitilmiş modele bert-base-turkish-cased adı verilir [8]. Sadece iki evrede ve 9.000 etiketli öğeyle 75.63 F1 skoru ve 56.17 tam eşleşme skoru elde ediyor. Bununla birlikte, önceden eğitilmiş bir dil modeli olmadığında veya sıfırdan eğitim için çok az veri olduğunda, bu yaklaşım düşük kaynaklı bir dil için uygun değildir.
- Çok dilli BERT ile çok dilli dil modeli – Önceden eğitilmiş modele bert-base-multilingual-uncased denir. Çok dilli BERT belgesi [4], bunun diller arasında iyi bir genelleme yaptığını göstermiştir. Tek dilli modelle karşılaştırıldığında, daha kötü bir performans sergiliyor (F1 puanı 71.73, tam eşleşme 50:45), ancak bu modelin 100’den fazla dili ele aldığını ve Türkçeyi temsil etmek için daha az yer bıraktığını unutmayın.
- XLM-R ile çok dilli dil modeli – Önceden eğitilmiş modele xlm-roberta-base-squad2 adı verilir. XLM-R belgesi, dil başına performanstan ödün vermeden 100’den fazla dil için tek bir büyük modele sahip olmanın mümkün olduğunu göstermektedir [7]. Türkçe soru cevaplama görevi için, çok dilli BERT ve tek dilli BERT F1 skorlarını sırasıyla %5 ve %2 oranında geride bırakmaktadır (F1 skoru 77.14, tam eşleşme 56.39).
Karşılaştırmamız, model kapasitesi, kullanılan eğitim veri kümeleri, önceden eğitilmiş NLP görevleri, kelime boyutu veya tokenize etme gibi modeller arasındaki diğer farklılıkları dikkate almaz.
Ek deneyler
Sağlanan notebook ek deney örnekleri içerir.
SageMaker, çok çeşitli eğitim örneği türleri sağlar. XLM-R modelinde p3.2xlarge (GPU: Nvidia V100 GPU, GPU mimarisi: Volta (2017)), p3.16xlarge (GPU: 8 Nvidia V100 GPU) ve g4dn.xlarge (GPU: Nvidia T4 GPU, GPU mimarisi: Turing (2018)) üzerinde ince ayar yaptık ve şunları gözlemledik:
- Eğitim süresi – Deneyimize göre, XLM-R modelinin p3.2xlarge üzerinde eğitilmesi yaklaşık 24 dakika ve g4dn.xlarge üzerinde 30 dakika (yaklaşık %23 daha uzun) sürdü. Ayrıca iki p3.16xlarge örneği üzerinde dağıtılmış ince ayar yaptık ve eğitim süresi 10 dakikaya indirildi. SageMaker’da dönüştürücü tabanlı bir modelin dağıtılmış eğitimi hakkında daha fazla bilgi için Amazon SageMaker’da Hugging Face Transformers kullanarak Soru Yanıtlama Görevi için BERT Büyük modelin Dağıtılmış ince ayarına bakın.
- Eğitim maliyetleri – AWS Fiyatlandırma API’sini kullanarak anında hesaplamak üzere SageMaker isteğe bağlı fiyatlarını getirdik. Deneyimize göre, eğitimin maliyeti p3.2xlarge üzerinde yaklaşık 1,58$ ve g4dn.xlarge üzerinde yaklaşık dört kat daha az (0,37$). 16 GPU kullanan iki p3.16xlarge bulut sunucusunda dağıtılmış eğitimin maliyeti 9,68 ABD dolarıdır.
Özetlemek gerekirse, g4dn.xlarge en ucuz makine olmasına rağmen, aynı zamanda eğitilmesi, denediğimiz en güçlü örnek türünden (iki p3.16xlarge) yaklaşık üç kat daha uzun sürdü. Proje önceliklerinize bağlı olarak, çok çeşitli SageMaker eğitim örneği türleri arasından seçim yapabilirsiniz.
Sonuç
Bu yazıda, bir orta kaynak dil (bu örnekte Türkçe) için bir soru yanıtlama görevi için önceden eğitilmiş dönüştürücü tabanlı dil modellerinin ince ayarını araştırdık. Bu yaklaşımı tek bir model kullanarak 100’den fazla dile uygulayabilirsiniz. Bunu yazarken, bir modelin ölçeğini dünyanın tüm 7.000 dilini kapsayacak şekilde büyütmek hâlâ yasak, ancak NLP alanı ufkumuzu genişletmek için bir fırsat sunuyor.
Dil, insan iletişiminin başlıca yöntemidir ve değerleri iletmenin ve kültürel mirasın güzelliğini paylaşmanın bir aracıdır. Dilsel çeşitlilik, kültürlerarası diyaloğu güçlendirir ve kapsayıcı toplumlar inşa eder.
ML oldukça yinelemeli bir süreçtir; tek bir proje boyunca, veri bilimcileri maksimum doğruluk arayışı içinde yüzlerce farklı model, veri kümesi ve parametreyi eğitir. SageMaker, makine öğrenimi ve derin öğrenmenin gücünden yararlanmak için en eksiksiz araç setini sunar. ML deneylerini geniş ölçekte düzenlemenize, izlemenize, karşılaştırmanıza ve değerlendirmenize olanak tanır.
Hugging Face, veri bilimcilerin son teknoloji NLP modellerini daha hızlı ve kolay bir şekilde geliştirmesine, eğitmesine ve ayarlamasına yardımcı olmak için SageMaker ile entegre edilmiştir. Amazon SageMaker’da Hugging Face dönüştürücülerini kullanmanın geniş ölçekte eğitim ve deneme, artan üretkenlik ve maliyet verimliliği gibi çeşitli yararlarını gösterdik.
SageMaker’ın kullanıma sunulduğu tüm AWS Bölgelerinde SageMaker’da tercih ettiğiniz dilde NLP görevlerini deneyebilirsiniz. Örnek notebook kodu GitHub‘da mevcuttur.
Amazon SageMaker Training Compiler’ın derin öğrenme modellerinin eğitimini %50’ye kadar nasıl hızlandırabileceğini öğrenmek için New – Introducing SageMaker Training Compiler bölümüne bakın.
Yazarlar, taslakları gözden geçirdikleri ve tavsiyelerde bulundukları için Mariano Kamp ve Emily Webber’e en derin takdirlerini ifade etmek isterler.
Referanslar
- J. Devlin et al., “BERT: Pre-Training of Deep Bidirectional Transformers for Language Understanding”, (2018).
- A. Vaswani et al., “Attention Is All You Need”, (2017).
- J. Howard and S. Ruder, “Universal Language Model Fine-Tuning for Text Classification”, (2018).
- T. Pires et al., “How multilingual is Multilingual BERT?”, (2019).
- Y. Liu et al., “RoBERTa: A Robustly Optimized BERT Pretraining Approach”, (2019).
- G. Lample, and A. Conneau, “Cross-Lingual Language Model Pretraining”, (2019).
- A. Conneau et al., “Unsupervised Cross-Lingual Representation Learning at Scale”, (2019).
- Stefan Schweter. BERTurk – BERT models for Turkish (2020).
- Multilingual Wiki Statistics https://en.wikipedia.org/wiki/Wikipedia:Multilingual_statistics