Shakespearegpt
การสร้างและการฝึกอบรม GPT ตั้งแต่เริ่มต้นจาก Andrej Karpathy: Let's Build GPT: จากศูนย์ในรหัสสะกดออกมา การสอน
ชุดข้อมูล Tiny-Shakespeare: ต้นฉบับมีการดัดแปลงเล็กน้อย
TutorialGpt (ติดตามวิดีโอ)
- MASIC_BIGRAMLM.PY: สร้างโมเดล Bigram ขั้นพื้นฐานที่มีการสร้างเพื่อให้สิ่งต่างๆกลิ้ง
- Tutorial.ipynb: เข้าใจกลไกความสนใจขั้นพื้นฐานโดยใช้ tril, masked_fill, softmax + หมายเหตุเกี่ยวกับความสนใจ
- lmwithattention.py: ยังคงเป็นแบบจำลอง แต่ตอนนี้มีหัวความสนใจเพียงครั้งเดียว, การฝังโทเค็น, การฝังตำแหน่ง
- atternestblock.py: สร้างหัวความสนใจเพียงครั้งเดียว
- lm_multihead_attention_ffwd.ipynb: ยังคงรูปแบบต่อไปในขณะนี้มีหัวความสนใจหลายอย่างที่ concantenated และเลเยอร์ฟีดไปข้างหน้าแยกต่างหากก่อนที่ LM_HEAD
- tutorialgpt.ipynb: สร้างบล็อกหม้อแปลง, เลเยอร์, การเชื่อมต่อที่เหลือ, การประเมินการสูญเสียที่ดีขึ้น, การออกกลางคัน, Layernorm
ระดับตัวละคร GPT
ใช้โทเค็นระดับอักขระ ได้รับการฝึกฝนสองเวอร์ชันด้วยการกำหนดค่าที่แตกต่างกันเพื่อให้เข้าใจถึงผลกระทบของพารามิเตอร์ไฮเปอร์พารามิเตอร์เช่น n_embeds, num_heads
ลอง Kaggle
V1:
- สมุดบันทึก
- โมเดลที่บันทึกไว้
- ผลลัพธ์
v2:
- สมุดบันทึก
- โมเดลที่บันทึกไว้
- ผลลัพธ์
Shakespearegpt
ใช้ tokenizer เข้ารหัสไบต์คู่
ลอง Kaggle
- gpt.py: รุ่น GPT เต็มรูปแบบ
- dataSet.py: ชุดข้อมูลคบเพลิง
- build_tokenizer.py: bpe tokenizer โดยใช้
huggingface tokenizers ตั้งแต่เริ่มต้นคล้ายกับ GPT-2 ที่บันทึกไว้ที่ tokenizer - Train.py: สคริปต์การฝึกอบรมประกอบด้วย Optimizer, Config, ฟังก์ชั่นการสูญเสีย, Loop รถไฟ, การตรวจสอบความถูกต้อง, การบันทึกแบบจำลอง
- generate.py: สร้างข้อความโดยการโหลดโมเดลบน CPU
รุ่น
V1
n_embed = 384
n_heads = 12
head_size = 32
n_layers = 4
lr = 6e-4
attn_dropout = 0.1
block_dropout = 0.1
Train Loss: 4.020419597625732
Valid Loss: 6.213085174560547
- สมุดบันทึก
- โมเดลที่บันทึกไว้
- ผลลัพธ์
V2
n_embed = 384
n_heads = 6
head_size = 64
n_layers = 3
lr = 5e-4
attn_dropout = 0.2
block_dropout = 0.2
Train Loss: 3.933095216751099
Valid Loss: 5.970513820648193
- สมุดบันทึก
- โมเดลที่บันทึกไว้
- ผลลัพธ์
เช่นเคยการสอนที่เหลือเชื่อโดย Andrej!