Transformers documentation
Terimler Sözlüğü
Terimler Sözlüğü
Bu sözlük, belgeleri daha iyi anlamanıza yardımcı olmak için genel makine öğrenimi ve 🤗 Transformers terimlerini tanımlar.
A
attention mask
Dikkat maskesi, dizilerin birlikte toplu işlenmesi (batching) sırasında kullanılan isteğe bağlı bir argümandır.
Bu argüman, modelin hangi jetonlara dikkat etmesi, hangilerine etmemesi gerektiğini belirtir.
Örneğin, şu iki diziyi ele alalım:
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "This is a short sequence."
>>> sequence_b = "This is a rather long sequence. It is at least longer than the sequence A."
>>> encoded_sequence_a = tokenizer(sequence_a)["input_ids"]
>>> encoded_sequence_b = tokenizer(sequence_b)["input_ids"]Kodlanmış sürümlerin uzunlukları farklıdır:
>>> len(encoded_sequence_a), len(encoded_sequence_b)
(8, 19)Dolayısıyla, bunları olduğu gibi aynı tensöre yerleştiremeyiz. İlk dizinin, ikincisinin uzunluğuna kadar dolgu (padding) ile uzatılması veya ikincisinin, ilkinin uzunluğuna kadar kısaltılması gerekir.
İlk durumda, kimlik listesi dolgu indeksleriyle genişletilir. Tokenizer'a bir liste geçirip şu şekilde dolgu yapmasını isteyebiliriz:
>>> padded_sequences = tokenizer([sequence_a, sequence_b], padding=True)İlk cümlenin sağ tarafına, ikinci cümleyle aynı uzunlukta olması için 0'ların eklendiğini görebiliriz:
>>> padded_sequences["input_ids"]
[[101, 1188, 1110, 170, 1603, 4954, 119, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [101, 1188, 1110, 170, 1897, 1263, 4954, 119, 1135, 1110, 1120, 1655, 2039, 1190, 1103, 4954, 138, 119, 102]]Bu, ardından PyTorch'ta bir tensöre dönüştürülebilir. Dikkat maskesi, modelin bu indekslere dikkat etmemesi için dolgulu indekslerin konumunu gösteren ikili bir tensördür. BertTokenizer için 1, dikkat edilmesi gereken bir değeri, 0 ise dolgulu bir değeri belirtir. Bu dikkat maskesi, tokenizer'ın döndürdüğü sözlükte “attention_mask” anahtarı altında bulunur:
>>> padded_sequences["attention_mask"]
[[1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]otomatik kodlama modelleri
encoder modelleri ve masked language modeling hakkında bilgi edinin
otoregresif modeller
neden dil modellemesi ve decoder modelleri hakkında bilgi edinin
B
backbone
Backbone, ham gizli durumları veya özellikleri üreten ağdır (gömlemeler ve katmanlar). Genellikle, girdi olarak bu özellikleri kabul edip bir tahminde bulunan bir head ile bağlantılıdır. Örneğin, ViTModel üstünde belirli bir head bulunmayan bir backbone'dur. Diğer modeller de DPT gibi ViTModel'i backbone olarak kullanabilir.
C
neden dil modellemesi
Modelin metinleri sırayla okuyup bir sonraki kelimeyi tahmin etmesini gerektiren bir ön eğitim görevi. Genellikle tüm cümle okunarak, ancak belirli bir zaman adımında gelecekteki jetonları gizlemek için model içinde bir maske kullanılarak yapılır.
kanal
Renkli görüntüler, kırmızı, yeşil ve mavi (RGB) olmak üzere üç kanalın değerlerinden oluşan bir kombinasyondan oluşur; gri tonlamalı görüntüler ise yalnızca bir kanala sahiptir. 🤗 Transformers'ta kanal, bir görüntünün tensörünün ilk veya son boyutu olabilir: [n_channels, height, width] veya [height, width, n_channels].
bağlantıcı zaman sınıflandırması (CTC)
Girdi ve çıktının tam olarak nasıl hizalandığını bilmeden bir modelin öğrenmesine olanak tanıyan bir algoritmadır; CTC, verilen bir girdi için olası tüm çıktıların dağılımını hesaplar ve bunlardan en olası çıktıyı seçer. CTC, konuşma hızlarındaki farklılıklar gibi çeşitli nedenlerle konuşmanın transkripsiyonla her zaman temiz bir şekilde hizalanmaması nedeniyle konuşma tanıma görevlerinde yaygın olarak kullanılır.
konvolüsyon
Sinir ağlarında bir katman türü; giriş matrisi, daha küçük bir matrisle (çekirdek veya filtre) eleman bazında çarpılır ve değerler yeni bir matriste toplanır. Bu, giriş matrisinin tamamı üzerinde tekrarlanan bir konvolüsyon işlemidir. Her işlem, giriş matrisinin farklı bir segmentine uygulanır. Konvolüsyonel sinir ağları (CNN'ler) bilgisayarla görüde yaygın olarak kullanılır.
D
DataParallel (DP)
Birden fazla GPU üzerinde eğitim için paralellik tekniği; aynı yapılandırma birden fazla kez kopyalanır ve her örnek farklı bir veri dilimi alır. İşleme paralel olarak yapılır ve tüm yapılandırmalar her eğitim adımının sonunda senkronize edilir.
DataParallel hakkında daha fazla bilgi edinin.
decoder girdi kimlikleri
Bu girdi, kodlayıcı-çözücü (encoder-decoder) modellerine özgüdür ve çözücüye (decoder) verilecek girdi kimliklerini (input IDs) içerir. Bu girdiler, çeviri veya özetleme gibi diziden-diziye (sequence to sequence) görevler için kullanılmalıdır ve genellikle her modele özgü bir şekilde oluşturulur.
Çoğu kodlayıcı-çözücü modeli (BART, T5), labels içinden kendi decoder_input_ids değerlerini oluşturur. Bu tür modellerde eğitim işlemini yönetmek için tercih edilen yöntem labels parametresini iletmektir.
Bu girdi kimliklerini (input IDs) diziden-diziye (sequence to sequence) eğitimde nasıl ele aldıklarını görmek için her modelin belgelerini kontrol edin.
decoder modeller
Ayrıca otoregresif modeller olarak da adlandırılan decoder modelleri, modelin metinleri sırayla okuyup bir sonraki kelimeyi tahmin etmesini gerektiren bir ön eğitim görevini (neden dil modellemesi olarak adlandırılır) içerir. Bu işlem genellikle, belirli bir zaman adımında gelecekteki jetonları gizlemek için bir maske kullanılarak tüm cümlenin okunmasıyla yapılır.
derin öğrenme (DL)
Birden fazla katmana sahip sinir ağlarını kullanan makine öğrenmesi algoritmaları.
E
encoder modeller
Ayrıca oto-kodlama modelleri olarak da bilinen kodlayıcı modeller, bir girdiyi (metin veya görüntüler gibi) alır ve bunları gömme (embedding) olarak adlandırılan sıkıştırılmış sayısal bir temsil biçimine dönüştürür. Kodlayıcı modeller, girdi dizisinin bir kısmını maskeleyerek ve modelin daha anlamlı temsiller oluşturmasını sağlayarak maskeli dil modelleme gibi tekniklerle önceden eğitilir.
F
özellik çıkarımı
Ham verilerin, makine öğrenmesi algoritmaları için daha bilgilendirici ve faydalı bir özellik kümesine dönüştürülmesi süreci. Özellik çıkarımına bazı örnekler, ham metni kelme gömmelelerine (word embeddings) dönüştürmek ve görüntü/video verilerinden kenarlar veya şekiller gibi önemli özellikleri çıkarmaktır.
feed forward parçalama
Transformers'taki her kalıntı dikkat bloğunda, öz-dikkat katmanının ardından genellikle 2 ileri beslemeli katman bulunur.
İleri beslemeli katmanların ara gömme boyutu, modelin gizli boyutundan genellikle daha büyüktür (örneğin, google-bert/bert-base-uncased için).
[batch_size, sequence_length] boyutundaki bir giriş için, ara feed forward gömme değerlerini [batch_size, sequence_length, config.intermediate_size] olarak saklamak için gereken bellek, toplam bellek kullanımının büyük bir kısmını oluşturabilir. Reformer: The Efficient Transformer makalesinin yazarları, hesaplamanın sequence_length boyutundan bağımsız olduğunu gözlemlemiş ve her iki feed forward katmanının çıktı gömme değerlerini [batch_size, config.hidden_size]_0, ..., [batch_size, config.hidden_size]_n şeklinde ayrı ayrı hesaplayıp ardından n = sequence_length olacak şekilde [batch_size, sequence_length, config.hidden_size] boyutunda birleştirmenin matematiksel olarak eşdeğer olduğunu belirtmiştir. Bu yöntem, artan hesaplama süresini azalan bellek kullanımıyla takas ederken matematiksel olarak eşdeğer bir sonuç verir.
apply_chunking_to_forward() fonksiyonunu kullanan modellerde chunk_size, paralel olarak hesaplanan çıktı gömme (embedding) sayısını belirler ve bu sayede bellek ile zaman karmaşıklığı arasındaki dengeyi tanımlar. chunk_size değeri 0 olarak ayarlanırsa, ileri besleme (feed forward) parçalama yapılmaz.
ince ayarlanmış modeller
Finetuning, önceden eğitilmiş bir modeli alıp ağırlıklarını dondurmak ve çıktı katmanını yeni eklenen bir model head ile değiştirmeyi içeren bir transfer öğrenme biçimidir. Model head, hedef veri setiniz üzerinde eğitilir.
Daha fazla ayrıntı için Fine-tune a pretrained model eğitim materyaline göz atın ve 🤗 Transformers ile modelleri nasıl ince ayar yapacağınızı öğrenin.
H
baş
Model başı, ham gizli durumları kabul eden ve bunları farklı bir boyuta yansıtan sinir ağındaki son katmanı ifade eder. Her görev için farklı bir model başı vardır. Örneğin:
- GPT2ForSequenceClassification, temel GPT2Model üzerinde bir dizi sınıflandırma başlığıdır; bir doğrusal katmandır.
- ViTForImageClassification, ViTModel tabanının üzerine eklenmiş bir görüntü sınıflandırma başlığıdır;
CLSjetonunun son gizli durumu üzerinde bir doğrusal katmandır. - Wav2Vec2ForCTC, temel Wav2Vec2Model üzerine CTC içeren bir dil modelleme başlığıdır.
I
görsel yaması
Görüntü tabanlı Transformers modelleri, bir görüntüyü daha küçük yamalara (patch) böler, bu yamaları doğrusal olarak gömme (embedding) yapar ve ardından bir dizi olarak modele iletir. Modelin patch_size değerini - yani çözünürlüğünü - yapılandırmasında bulabilirsiniz.
inference
Inference, eğitim tamamlandıktan sonra bir modelin yeni veriler üzerinde değerlendirilme sürecidir. 🤗 Transformers ile inference nasıl yapılacağını öğrenmek için Inference için Pipeline eğitimine göz atın.
girdi kimlikleri
Girdi kimlikleri, modele girdi olarak iletilmesi gereken tek zorunlu parametrelerdir. Bunlar, modelin girdi olarak kullanacağı dizileri oluşturan tokenların sayısal temsilleri olan token indeksleridir.
Her tokenizer farklı çalışır ancak altta yatan mekanizma aynı kalır. İşte WordPiece tokenizer'ı olan BERT tokenizer'ı kullanılarak verilen bir örnek:
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence = "A Titan RTX has 24GB of VRAM"Tokenizör, diziyi tokenizör sözlüğünde mevcut olan token'lara bölmekten sorumludur.
>>> tokenized_sequence = tokenizer.tokenize(sequence)Tokenler kelimeler veya kelime alt parçalarıdır. Burada örneğin “VRAM” model sözlüğünde yer almadığı için “V”, “RA” ve “M” olarak bölünmüştür. Bu tokenlerin ayrı kelimeler değil, aynı kelimenin parçaları olduğunu belirtmek için “RA” ve “M” için çift hash öneki eklenir:
>>> print(tokenized_sequence)
['A', 'Titan', 'R', '##T', '##X', 'has', '24', '##GB', 'of', 'V', '##RA', '##M']Bu jetonlar, ardından modelin anlayabileceği kimliklere dönüştürülebilir. Bu işlem, cümleyi doğrudan 🤗 Tokenizers'ın Rust uygulamasından yararlanarak en yüksek performansı sağlayan tokenizer'a verilerek yapılabilir.
>>> inputs = tokenizer(sequence)Tokenizer, ilgili modelin düzgün çalışması için gerekli tüm argümanları içeren bir sözlük döndürür. Token indeksleri input_ids anahtarı altındadır:
>>> encoded_sequence = inputs["input_ids"]
>>> print(encoded_sequence)
[101, 138, 18696, 155, 1942, 3190, 1144, 1572, 13745, 1104, 159, 9664, 2107, 102]Dikkat edin, tokenizer, ilgili model bunlara dayanıyorsa, modelin bazen kullandığı özel kimlikler olan “özel jetonları” (special tokens) otomatik olarak ekler.
Önceki kimlik dizisini çözersek,
>>> decoded_sequence = tokenizer.decode(encoded_sequence)göreceğiz
>>> print(decoded_sequence)
[CLS] A Titan RTX has 24GB of VRAM [SEP]çünkü bir BertModel girdilerini bu şekilde bekleyecektir.
L
etiketler
Etiketler, modelin kaybı kendisinin hesaplaması için geçirilebilen isteğe bağlı bir argümandır. Bu etiketler, modelin beklenen tahmini olmalıdır: model, tahminleri ile beklenen değer (etiket) arasındaki kaybı hesaplamak için standart kaybı kullanacaktır.
Bu etiketler, model başına göre farklılık gösterir, örneğin:
- Sınıflandırma modelleri için (BertForSequenceClassification), modelin boyutu
(batch_size)olan bir tensör beklenir ve bu tensördeki her değer, tüm dizinin beklenen etiketine karşılık gelir. - Token sınıflandırma modelleri için (BertForTokenClassification), modelin boyutu
(batch_size, seq_length)olan bir tensör beklenir; bu tensördeki her değer, ilgili tekil token'ın beklenen etiketine karşılık gelir. - Maskeli dil modellemesi için (BertForMaskedLM), modelin boyutu
(batch_size, seq_length)olan bir tensör beklenir; bu tensördeki her değer, ilgili token'ın beklenen etiketine karşılık gelir: maskelenmiş token için etiket, token'ın kimlik numarasıdır; diğer token'lar için ise yok sayılacak değerlerdir (genellikle -100). - Sıralıdan sıralıya (sequence to sequence) görevlerde (BartForConditionalGeneration, MBartForConditionalGeneration), model, her değerin ilgili girdi sırasıyla ilişkili hedef sıralara karşılık geldiği
(batch_size, tgt_seq_length)boyutunda bir tensör bekler. Eğitim sırasında hem BART hem de T5, uygundecoder_input_idsve decoder dikkat maskelerini dahili olarak oluşturur. Genellikle bunların sağlanmasına gerek yoktur. Bu durum, Encoder-Decoder çerçevesini kullanan modeller için geçerli değildir. - Görsel sınıflandırma modelleri için (ViTForImageClassification), modelin boyutu
(batch_size)olan bir tensör beklenir; bu tensördeki her değer, her bir görselin beklenen etiketine karşılık gelir. - Anlamsal segmentasyon modelleri için (SegformerForSemanticSegmentation), modelin
(batch_size, height, width)boyutunda bir tensör beklediği ve batch'in her bir değerinin, her bir pikselin beklenen etiketine karşılık geldiği varsayılır. - Nesne algılama modelleri için (DetrForObjectDetection), modelin, her bir değerinin partiye (batch) ait her bir bireysel görüntünün beklenen etiketine ve sınırlayıcı kutu (bounding box) sayısına karşılık geldiği,
class_labelsveboxesanahtarlarına sahip sözlüklerden oluşan bir liste beklenir. - Otomatik konuşma tanıma modelleri için (Wav2Vec2ForCTC), modelin boyutu
(batch_size, target_length)olan bir tensör beklenir ve bu tensördeki her değer, ilgili tekil token'ın beklenen etiketine karşılık gelir.
Her modelin etiketleri farklı olabilir, bu nedenle belirli etiketleri hakkında daha fazla bilgi için her zaman ilgili modelin dokümantasyonunu kontrol etmeniz önerilir!
Temel modeller (BertModel), temel transformer modelleri oldukları için etiketleri kabul etmez; yalnızca özellikleri (features) çıktılar.
büyük dil modelleri (LLM)
Dönüştürücü dil modellerine (GPT-3, BLOOM, OPT) atıfta bulunan genel bir terimdir; bu modeller büyük miktarda veri üzerinde eğitilmiştir. Bu modellerin ayrıca öğrenilebilir parametre sayısının da yüksek olma eğilimi vardır (ör. GPT-3 için 175 milyar).
M
maskeli dil modellemesi (MLM)
Modelin metinlerin bozulmuş bir sürümünü gördüğü, genellikle bazı token'ların rastgele maskelenmesiyle yapılan ve orijinal metni tahmin etmesi gereken bir ön eğitim görevi.
çok modlu
Metinleri başka türden girdilerle (örneğin görsellerle) birleştiren bir görev.
N
Doğal dil üretimi (NLG)
Metin üretimiyle ilgili tüm görevler (örneğin, Write With Transformers, çeviri).
Doğal dil işleme (NLP)
“Metinlerle uğraşmak” ifadesinin genel bir karşılığı.
Doğal dil anlama (NLU)
Bir metinde ne olduğunu anlama ile ilgili tüm görevler (örneğin, tüm metni veya bireysel kelimeleri sınıflandırma).
P
pipeline
🤗 Transformers'ta bir pipeline, belirli bir sırayla çalıştırılan ve verileri ön işlemeye dönüştürüp bir modelden tahmin döndüren bir dizi adımı ifade eden bir soyutlamadır. Bir pipeline'da bulunabilecek bazı örnek aşamalar veri ön işleme, özellik çıkarımı ve normalleştirmedir.
Daha fazla ayrıntı için Çıkarım için Hattlar bölümüne bakın.
PipelineParallel (PP)
Modelin birden fazla GPU üzerinde dikey olarak (katman düzeyinde) bölündüğü paralellik tekniği; bu sayede modelin yalnızca bir veya birkaç katmanı tek bir GPU'ya yerleştirilir. Her GPU, hattın farklı aşamalarını paralel olarak işler ve batch'in küçük bir dilimi üzerinde çalışır. PipelineParallel hakkında daha fazla bilgi edinin.
piksel değerleri
Bir modele iletilen bir görüntünün sayısal temsillerinden oluşan bir tensör. Piksel değerlerinin şekli [batch_size, num_channels, height, width] şeklindedir ve bir görüntü işleyicisinden (image processor) üretilir.
pooling
Bir matrisi, havuzlama boyut(lar)ının maksimum veya ortalamasını alarak daha küçük bir matrise indirgeyen bir işlemdir. Havuzlama katmanları, genellikle konvolüsyonel katmanlar arasında, özellik temsilini örneklemeyi azaltmak (downsample) için bulunur.
konum kimlikleri
Her tokenin konumunu kendi içinde barındıran RNN'lerin aksine, transformer'lar her tokenin konumundan habersizdir. Bu nedenle, model token listesindeki her tokenin konumunu belirlemek için konum kimliklerini (position_ids) kullanır.
Opsiyonel bir parametredir. Modele position_ids geçirilmezse, kimlikler otomatik olarak mutlak konumsal gömme olarak oluşturulur.
Mutlak konumsal gömme (embedding) değerleri [0, config.max_position_embeddings - 1] aralığında seçilir. Bazı modeller, sinüsoidal konum gömmeleri veya göreli konum gömmeleri gibi diğer konumsal gömme türlerini kullanır.
ön işleme
Ham verinin makine öğrenmesi modelleri tarafından kolayca tüketilebilecek bir formata dönüştürülmesi görevi. Örneğin, metin genellikle tokenizasyon ile ön işlenir. Diğer girdi türleri için ön işlemenin nasıl göründüğü hakkında daha iyi bir fikir edinmek için Preprocess eğitimine göz atın.
ön eğitilmiş model
Bazı veriler üzerinde (örneğin Wikipedia'nın tamamı) ön eğitilmiş bir model. Ön eğitim yöntemleri, kendiliğinden denetimli bir hedef içerir; bu hedef, metni okuyup bir sonraki kelimeyi tahmin etmeye (bkz. neden dil modellemesi) veya bazı kelimeleri maskeleyip onları tahmin etmeye (bkz. maskeli dil modellemesi) çalışmak olabilir.
Ses ve görü modellerinin kendi kendine ön eğitim amaçları vardır. Örneğin, Wav2Vec2, modelin “doğru” ses temsilini bir dizi “yanlış” ses temsilinden ayırt etmesini gerektiren bir kontrastif görev üzerinde ön eğitilmiş bir ses modelidir. Öte yandan, BEiT, bazı görüntü yamalarını maskeleyen ve modelin maskeleme yamalarını tahmin etmesini gerektiren (maskeleme dil modelleme amacına benzer) bir maskeleme görüntü modelleme görevi üzerinde ön eğitilmiş bir görü modelidir.
R
geri beslemeli sinir ağı (RNN)
Bir katman üzerinde döngü kullanarak metinleri işleyen bir model türü.
temsil öğrenimi
Ham verinin anlamlı temsillerini öğrenmeye odaklanan makine öğrenmesinin bir alt alanı. Temsil öğrenme tekniklerinin bazı örnekleri arasında kelme gömme (word embeddings), oto-kodlayıcılar (autoencoders) ve Üretken Düşman Ağları (GANs) yer alır.
S
örnekleme hızı
Saniyede alınan örnek (ses sinyali) sayısının hertz cinsinden ölçümüdür. Örnekleme hızı, konuşma gibi sürekli bir sinyalin ayrıklaştırılmasının bir sonucudur.
self-attention
Girdinin her öğesi, girdinin hangi diğer öğelerine dikkat etmesi gerektiğini belirler.
kendiliğinden denetimli öğrenme
Etiketli olmayan verilerden kendi öğrenme hedefini oluşturan bir makine öğrenimi teknikleri kategorisi. Öğrenme süreci denetimli olmakla birlikte kullanıcının açık yönlendirmesi olmadan gerçekleştiği için denetimsiz öğrenmeden ve denetimli öğrenmeden farklıdır.
Özdenetimli öğrenmenin bir örneği, maskeli dil modellemesidir; bu yöntemde modele, tokenlarının bir kısmı kaldırılmış cümleler verilir ve model eksik tokenları tahmin etmeyi öğrenir.
yarı-denetimli öğrenme
denetimli öğrenme ve denetimsiz öğrenme'den farklı olarak, bir modelin doğruluğunu artırmak için küçük miktarda etiketli veriyi daha büyük miktarda etiketsiz veriyle birleştiren geniş bir makine öğrenimi eğitim teknikleri kategorisi.
Yarı denetimli öğrenme yaklaşımının bir örneği, “self-training”dir; bu yöntemde bir model etiketli veriler üzerinde eğitilir ve ardından etiketsiz veriler üzerinde tahminler yapmak için kullanılır. Modelin en yüksek güvenle tahmin ettiği etiketsiz veri bölümü, etiketli veri setine eklenir ve modelin yeniden eğitilmesinde kullanılır.
diziden-diziye (seq2seq)
Çeviri modelleri veya özetleme modelleri gibi (örneğin Bart veya T5) bir girdiden yeni bir dizi üreten modeller.
Parçalı DDP
ZeRO'nun çeşitli diğer uygulamaları tarafından kullanılan temel ZeRO kavramının bir diğer adı.
stride
convolution veya pooling işlemlerinde stride, çekirdeğin (kernel) bir matris üzerinde kaydırıldığı mesafeyi ifade eder. Stride değeri 1 ise çekirdek her seferinde bir piksel, 2 ise her seferinde iki piksel kaydırılır.
denetimli öğrenme
Model performansını düzeltmek ve yönlendirmek için doğrudan etiketli verileri kullanan bir model eğitimi biçimi. Veriler, eğitilen modele beslenir ve tahminleri bilinen etiketlerle karşılaştırılır. Model, tahminlerinin ne kadar hatalı olduğuna göre ağırlıklarını günceller ve model performansını optimize etmek için süreç tekrarlanır.
T
Tensor Paralelliği (TP)
Birden fazla GPU üzerinde eğitim için kullanılan paralellik tekniğinde her tensör birden çok parçaya bölünür; böylece tensörün tamamı tek bir GPU üzerinde barındırılmak yerine, tensörün her shard'ı kendisine atanan GPU üzerinde barındırılır. Shard'lar farklı GPU'larda ayrı ayrı ve paralel olarak işlenir ve sonuçlar, işleme adımının sonunda senkronize edilir. Bölme işlemi yatay düzeyde gerçekleştiği için bu, bazen yatay paralellik olarak da adlandırılır. Tensor Parallelism hakkında daha fazla bilgiyi burada bulabilirsiniz.
token
Bir cümlenin parçası, genellikle bir kelime, ancak bazen bir alt kelime (yaygın olmayan kelimeler genellikle alt kelimelere bölünür) veya bir noktalama işaretidir.
token türü kimlikleri
Bazı modellerin amacı, cümle çiftleri üzerinde sınıflandırma yapmak veya soru yanıtlamaktır.
Bunlar, genellikle sınıflandırıcı ([CLS]) ve ayraç ([SEP]) gibi özel jetonların yardımıyla, iki farklı dizinin tek bir “input_ids” girdisinde birleştirilmesini gerektirir. Örneğin, BERT modeli iki dizilik girdisini şu şekilde oluşturur:
>>> # [CLS] SEQUENCE_A [SEP] SEQUENCE_B [SEP]İki diziyi tokenizer'a bir liste olarak değil, önceki gibi iki ayrı argüman olarak geçirerek (aşağıdaki gibi) tokenizer'ımızı kullanarak bu tür bir cümleyi otomatik olarak üretebiliriz:
>>> from transformers import BertTokenizer
>>> tokenizer = BertTokenizer.from_pretrained("google-bert/bert-base-cased")
>>> sequence_a = "HuggingFace is based in NYC"
>>> sequence_b = "Where is HuggingFace based?"
>>> encoded_dict = tokenizer(sequence_a, sequence_b)
>>> decoded = tokenizer.decode(encoded_dict["input_ids"])şu sonucu döndürür:
>>> print(decoded)
[CLS] HuggingFace is based in NYC [SEP] Where is HuggingFace based? [SEP]Bazı modellerin bir dizinin nerede bittiğini ve diğerinin nerede başladığını anlaması için bu yeterlidir. Ancak BERT gibi diğer modeller, token türü kimliklerini (aynı zamanda segment kimlikleri olarak da adlandırılır) de kullanır. Bunlar, modeldeki iki tür diziyi tanımlayan ikili bir maske olarak temsil edilir.
Tokenizer bu maskenin “token_type_ids” girdisi olarak döndürür:
>>> encoded_dict["token_type_ids"]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1]İlk dizi, soru için kullanılan “bağlam”, tüm token’ları 0 ile temsil edilirken, ikinci dizi, “soru”ya karşılık gelen dizi, tüm token’ları 1 ile temsil edilir.
XLNetModel gibi bazı modeller, 2 ile temsil edilen ek bir jeton kullanır.
transfer öğrenimi
Önceden eğitilmiş bir modeli alıp görevinize özgü bir veri setine uyarlamayı içeren bir tekniktir. Bir modeli sıfırdan eğitmek yerine, bir başlangıç noktası olarak mevcut bir modelden elde edilen bilgiden yararlanabilirsiniz. Bu, öğrenme sürecini hızlandırır ve gereken eğitim verisi miktarını azaltır.
transformer
Kendine-dikkat tabanlı derin öğrenme model mimarisi.
U
gözetimsiz öğrenme
Modeline sağlanan verilerin etiketlenmediği bir model eğitimi biçimi. Denetimsiz öğrenme teknikleri, eldeki görev için faydalı kalıpları bulmak üzere veri dağılımının istatistiksel bilgisinden yararlanır.
Z
Sıfır Artık Optimizör (ZeRO)
TensorParallel'e benzer bir şekilde tensörlerin parçalanmasını (sharding) gerçekleştiren paralellik tekniği; ancak tüm tensör, ileri veya geri hesaplama için zamanında yeniden oluşturulduğundan modelin değiştirilmesine gerek yoktur. Bu yöntem, sınırlı GPU belleğini telafi etmek için çeşitli boşaltma (offloading) tekniklerini de destekler. ZeRO hakkında daha fazla bilgi için buraya bakın.
Update on GitHub