Implementasi transformer full-attention yang ringkas namun lengkap dengan berbagai fitur eksperimental relevan dari berbagai paper penelitian.
CrossFormers adalah implementasi arsitektur Transformer dengan mekanisme full-attention yang menggabungkan beberapa fitur eksperimental relevan dari berbagai paper penelitian terkini. Model ini dirancang untuk berbagai tugas NLP seperti machine translation, text summarization, dan language modeling.
Model CrossFormers terdiri dari beberapa komponen utama:
-
Encoder: Memproses sequence input dan menghasilkan representasi kontekstual
- Embedding layer untuk mengubah token menjadi vektor
- Positional encoding untuk menambahkan informasi posisi
- Stack dari N TransformerBlock untuk pemrosesan deep
-
Decoder: Menghasilkan sequence output berdasarkan input encoder
- Embedding dan positional encoding untuk token target
- Stack dari N DecoderBlock yang terdiri dari:
- Masked multi-head self-attention
- Cross-attention dengan output encoder
- Feed-forward network
-
Attention: Implementasi multi-head attention dengan operasi query, key, value
- Mendukung masked attention untuk decoder
-
Normalization: Mendukung LayerNorm standar dan implementasi custom Dynamic Tanh (DyT)
Anda dapat menjalankan model dengan script main.py dan berbagai argumen:
python main.py --dimensi_embedding 512 --ukuran_vocab_sumber 10000 --ukuran_vocab_target 10000 --panjang_sekuens 100 --jumlah_block 6 --heads 8 --dropout 0.1 --norm_type layernormAtau Anda bisa menggunakan uv jika diinstall:
uv run main.py --dimensi_embedding 512 --ukuran_vocab_sumber 10000 --ukuran_vocab_target 10000 --panjang_sekuens 100 --jumlah_block 6 --heads 8 --dropout 0.1 --norm_type layernorm--dimensi_embedding: Dimensi representasi embedding (default: 512)--ukuran_vocab_sumber: Ukuran kosakata input (default: 10000)--ukuran_vocab_target: Ukuran kosakata output (default: 10000)--panjang_sekuens: Panjang maksimum sequence (default: 100)--jumlah_block: Jumlah blok encoder/decoder (default: 6)--faktor_ekspansi: Faktor ekspansi untuk feed forward network (default: 4)--heads: Jumlah attention heads (default: 8)--dropout: Nilai dropout untuk regularisasi (default: 0.1)--norm_type: Jenis normalisasi, pilih 'layernorm' atau 'dyt' (default: 'layernorm')
CrossFormer juga dilengkapi dengan script train_enwik8.py untuk melatih model pada dataset kompresi Enwik8:
python train_enwik8.pyScript ini akan:
- Melatih model pada 100.000 batch
- Menggunakan CrossFormer dengan Dynamic Tanh normalization
- Mengevaluasi pada validation set setiap 100 batch
- Menghasilkan sample text setiap 500 batch
CrossFormer mendukung layer normalisasi alternatif bernama Dynamic Tanh (DyT), yang dapat menjadi alternatif untuk LayerNorm standar. Untuk menggunakan DyT, atur parameter norm_type ke "dyt":
python main.py --norm_type dytDyT menggunakan fungsi aktivasi tanh dengan parameter yang dapat dilatih untuk meningkatkan fleksibilitas normalisasi.
Sebelum menjalankan proyek ini, pastikan Anda telah menginstal:
- PyTorch
- NumPy
- tqdm (untuk training progress bar)
- Attention Is All You Need
- An Introduction to Transformers
- Transformers without Normalization
- Direct Preference Optimization: Your Language Model is Secretly a Reward Model
Kode ini merupakan modifikasi dan pengembangan lebih lanjut dari implementasi dasar Transformer oleh WargaSlowy. Kami telah menambahkan fitur-fitur baru seperti Dynamic Tanh (DyT) normalization dan dukungan untuk dataset Enwik8.
Kamu juga bisa berkontribusi di repositori ini, tapi dengan syarat kamu harus membaca panduan dan pedoman kontribusi ya.