tdd-ai / tdd-projects

4 stars 0 forks source link

Pretrained language models #6

Open alisafaya opened 3 years ago

alisafaya commented 3 years ago

Egitilmis dil modelleri

Guncel dil modellerinin train edilmesi, Huggingface’teki transformer tabanli language modellerin Turkce icin egitilmesi ve hem TDD hem Huggingface uzerinden paylasilmasi.

Train edilecek modeller

Generic: Bu siniftaki modeller genel Turkce icin kullanilacak modeller, bu sekilde zaten var olan modeller bulunuyor. Bu siniftaki modellerin egitilecegi data generic bir data olmali, benim onerim su sekilde (Turkish Wikipedia + Clean bir WebCrawl + Books) bir dili temsil etmek icin iyi bir kombinasyon olusturuyor. Ilk asamada Turkce RoBERTa train edilebilir.

Specific domain: Bu siniftaki modeller ozel bir domain icin egitilmis olacak, ornegin, User generated noisy data (facebook, twitter gibi) icin modeller. Haberler icin modeller..

Tokenizers

Oncelikle tokenizer icin en iyi konfigurasyonu (vocab size/encoding method) bulmak icin, farkli turdeki tokenizerlari egitim karsilastirma yapmak iyi olacak.

Benchmarking data

Intrinsic evaluation platform

Data modellerini/tokenizerlari evaluate etmek icin kullanacagimiz bir dataseti belirlenmesi gerekiyor. Bu data cok buyuk olmak zorunda degil. Bunun train/dev/test halinde bolunmesi lazim, ve karsilastirma yapacagimiz metrigi modele gore sececegiz MLM modelleri icin accuracy, Autoregressive modeller icin perplexity.

Ornek dataset wiki-103

Extrinsic evaluation platform

Data modellerini birkac downstream datasi uzerinde performansinin olculmesi icin gerekli framework'u hazirlamak. Ornek benchmark GLUE

alisafaya commented 3 years ago

@akalieren Buraya su ana kadar yaptiklarinin/bulduklarinin detaylarini ve yorumlarini yazabilir misin?

alierenak commented 3 years ago

Şu ana kadar BERT base cased ve uncased modelleri eğittim. Bu hafta BERT-Large'ı başlatmayı planlıyorum. BERT-Large ile birlikte vocabulary ve record'ları daha düzenli elde etmek için BERT-base'i tekrar eğiteceğim. Şu ana kadar eğittiğim modelleri sadece 27GB'lık OSCAR datasını kullanarak eğittim. Wikipedia ve ek generic dataset'er karşılaştırma elde etmek için eklenebilir. Benchmark için NER fine-tunning kullanmıştım. Hali hazırda HF'deki Electra-Large ve BERTurk ile karşılaştırdım sonuçlar ortalama aynıydı. Bu hafta hepsini tekrar eğittikten sonra, buraya ekleyeceğim.

BERT özelinde, orijinal BERT 16GB büyüklüğünde bir dataset ile eğitilmiş. Benim araştırdığım kadarıyla modelin büyüklüğünü arttırmadan dataset'i arttırmak çok verim sağlamıyor. Bu konuda elinizde experiment varsa tekrar gözden geçirebiliriz. Lakin Roberta-Large, XLNet, GPT2 gibi modelleri daha fazla datayla beslemek mantıklı olabilir. Orijinal Roberta-Large 200GB dataset ile eğitilmiş.

Roberta'yı küçük bir datasette eğittim lakin 27GB'lık dataset için şu anda hafıza problemini çözmek ile uğraşıyorum. TFRC'in sağladığı TPU VM'ler, modeli eğitmemiz için gereken tüm datayı hafızada yeterli alan olmadığı için yazamıyor. Dolayısıyla orijinal BERT repository'sinde olduğu gibi HF Datasets'in Google Cloud'tan datayı okuyacağı bir çözüm üzerinde çalışıyorum. Bu konuda başka bir öneriniz varsa değerlendirebiliriz.

alisafaya commented 3 years ago

Tesekkurler! yorumlarimi asagida bulabilirsin.

Şu ana kadar BERT base cased ve uncased modelleri eğittim. Bu hafta BERT-Large'ı başlatmayı planlıyorum. BERT-Large ile birlikte vocabulary ve record'ları daha düzenli elde etmek için BERT-base'i tekrar eğiteceğim. Şu ana kadar eğittiğim modelleri sadece 27GB'lık OSCAR datasını kullanarak eğittim. Wikipedia ve ek generic dataset'er karşılaştırma elde etmek için eklenebilir. Benchmark için NER fine-tunning kullanmıştım. Hali hazırda HF'deki Electra-Large ve BERTurk ile karşılaştırdım sonuçlar ortalama aynıydı. Bu hafta hepsini tekrar eğittikten sonra, buraya ekleyeceğim.

Dataset distribution hakkinda benim yorumum soyle; normalde OSCAR cok noisy bir dataset ozellikle de "deduplicated" versiyonudur, cunku hep tek satirlik metinler var, uzun context icin noisy oluyor. Onerim soyle: (Turkish Wikipedia + Clean bir WebCrawl + Books). Elimizde Turkish-Wiki yeni clean bir dump'i var, WebCrawl olarak OPUS/OSCAR kullanilabilir. Turkish Books icin @reyyanyeniterzi hocam ve @denizyuret hocam sizde oyle bir corpus var mi ?

BERT özelinde, orijinal BERT 16GB büyüklüğünde bir dataset ile eğitilmiş. Benim araştırdığım kadarıyla modelin büyüklüğünü arttırmadan dataset'i arttırmak çok verim sağlamıyor. Bu konuda elinizde experiment varsa tekrar gözden geçirebiliriz. Lakin Roberta-Large, XLNet, GPT2 gibi modelleri daha fazla datayla beslemek mantıklı olabilir. Orijinal Roberta-Large 200GB dataset ile eğitilmiş.

Data 100 GB uzerinde olursa bir epoch tamamlayabilmek icin bile cok fazla computation harcariz. O yuzden final size 30-50GB range'inde olabilir.

Roberta'yı küçük bir datasette eğittim lakin 27GB'lık dataset için şu anda hafıza problemini çözmek ile uğraşıyorum. TFRC'in sağladığı TPU VM'ler, modeli eğitmemiz için gereken tüm datayı hafızada yeterli alan olmadığı için yazamıyor. Dolayısıyla orijinal BERT repository'sinde olduğu gibi HF Datasets'in Google Cloud'tan datayı okuyacağı bir çözüm üzerinde çalışıyorum. Bu konuda başka bir öneriniz varsa değerlendirebiliriz.

Bunun icin bir cozum olarak, batchleri onceden preprocess ederek google bucket'ine yukleyebiliriz. Ondan sonra TPU'lara dogrudan oradan veririz. Arabic BERT/ALBERT'i o sekilde train ettim.

Ayrica, tokenizer'in configuration'ini neye gore belirledin? default settings kullanarak mi ? yoksa Turkce'ye ozel bir arastirma mi yaptin? Bir de model/tokenizer config'lerini karsilastirirken yukarida yazdigim gibi intrinsic evaluation yaparak tek bir dataset uzerinden gidelim.

alisafaya commented 2 years ago

Progress plan

Models

MLM:
    - BERT
    - DeBERTa
    - RoBERTa

CLM:
    - GPT-2

Encoder-Decoder:
    - BART

Language modeling benchmark:

Create a benchmark similar to wiki-103, This will include a clean text.

Tokenization configuration:

Decide on few options:

32K  | Unigram | Wordpiece
48K  | Byte    | SentencePiece
64K  |         | BPE

TODO:

alisafaya commented 2 years ago

We created a language modeling benchmarking dataset based on a recent Turkish wikipedia dump. This dataset contains 67M words. We named it trwiki-67. more details can be found here.