Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pretrained language models #6

Open
1 of 7 tasks
alisafaya opened this issue Feb 21, 2021 · 5 comments
Open
1 of 7 tasks

Pretrained language models #6

alisafaya opened this issue Feb 21, 2021 · 5 comments
Assignees
Labels

Comments

@alisafaya
Copy link
Member

alisafaya commented Feb 21, 2021

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

  • Generic domain icin datalarin toplanmasi
  • Benchmarking datanin olusturmasi
  • Var olan modellerin Benchmark uzerinde performansinin olculmesi
  • Turkish RoBERTa modelinin egitilmesi
  • GPT-2/SHALSTM gibi Autoregressive bir modelin egitilmesi
  • TDD'de ve Huggingface'te paylasilmasi
  • Specific domain modellerinin egitilmesi
@alisafaya
Copy link
Member Author

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

@alierenak
Copy link

Ş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
Copy link
Member Author

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
Copy link
Member Author

alisafaya commented Jul 27, 2021

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:

  • Creating benchmarking data (train/val/test split)
  • Collecting training data (cleaning, download, collection...) @alisafaya
  • Building different tokenizers @alisafaya @akalieren
  • GPT-2 Small ile tokenizer benchmarking

@alisafaya
Copy link
Member Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

5 participants