- สร้าง Llama3 ขึ้นใหม่ตั้งแต่ต้นด้วยเทนเซอร์เดียวและการคูณเมทริกซ์
- โหลดเทนเซอร์โดยตรงจากไฟล์โมเดล Llama3 ที่ Meta จัดเตรียมไว้
สรุปการสร้างโมเดล LLaMA-3 แบบสแครตช์
การตั้งค่าโทเค็นไนเซอร์
- ใช้ไลบรารี Tiktoken เพื่อตั้งค่าโทเค็นไนเซอร์
- กำหนดโทเค็นพิเศษและเพิ่มเข้าไปในโทเค็นไนเซอร์
การอ่านไฟล์โมเดล
- ใช้ PyTorch โหลดไฟล์โมเดล(
consolidated.00.pth)
- อ่านการตั้งค่าของโมเดลจากไฟล์
params.json
- รวมข้อมูล เช่น จำนวนมิติ (
dim), จำนวนเลเยอร์ (n_layers), จำนวนเฮด (n_heads)
การแปลงข้อความเป็นโทเค็น
- แปลงข้อความพรอมป์ต์เป็นลำดับโทเค็นด้วยโทเค็นไนเซอร์
- แปลงแต่ละโทเค็นเป็น embedding ที่สอดคล้องกัน
- ทำ normalization ให้ embedding ด้วย RMS
การติดตั้งใช้งาน attention
- โหลดเมทริกซ์ query (
wq), key (wk), value (wv), และ output (wo) จากโมเดล
- คำนวณเวกเตอร์ query, key และ value สำหรับแต่ละโทเค็น
- เพิ่มข้อมูลตำแหน่งด้วย RoPE(Rotary Positional Embedding)
- คำนวณคะแนน attention จาก inner product ของ query และ key
- มาสก์คะแนน attention สำหรับโทเค็นในอนาคต
- ใช้ฟังก์ชัน Softmax เพื่อคำนวณการกระจายของ attention
- คูณการกระจายของ attention กับเวกเตอร์ value เพื่อคำนวณผลลัพธ์ของ attention
Multi-head attention
- คำนวณ attention สำหรับทุก attention head
- เชื่อมต่อ(concatenate)ผลลัพธ์ของแต่ละ head เพื่อสร้างผลลัพธ์ attention สุดท้าย
Feedforward network
- สร้าง feedforward network โดยใช้ฟังก์ชันกระตุ้น SwiGLU(Swish Gated Linear Unit)
- นำผลลัพธ์ของ attention มาบวกกับเอาต์พุตของ feedforward network เพื่อสร้าง embedding สุดท้าย
การวนซ้ำทุกเลเยอร์
- ทำซ้ำการคำนวณ attention และ feedforward network สำหรับทุกเลเยอร์ของทรานส์ฟอร์เมอร์
- ทำ RMS normalization กับ embedding สุดท้าย
การทำนายโทเค็น
- คูณ embedding สุดท้ายกับเมทริกซ์เอาต์พุตเพื่อคำนวณ logits
- ทำนายโทเค็นถัดไปจากโทเค็นที่มีค่าสูงสุดใน logits
- ถอดรหัสโทเค็นที่ทำนายได้และแสดงผล
ความเห็นของ GN⁺
- บทความนี้มีประโยชน์มากสำหรับการทำความเข้าใจโครงสร้างภายในและวิธีการทำงานของโมเดล Llama3 โดยเฉพาะการลงมือสร้างตั้งแต่ต้นช่วยให้เห็นชัดว่าองค์ประกอบแต่ละส่วนของโมเดลทำงานร่วมกันอย่างไร
- อาจค่อนข้างซับซ้อนสำหรับวิศวกรซอฟต์แวร์ระดับเริ่มต้น แต่มีการอธิบายเป็นขั้นตอนอย่างดี จึงค่อย ๆ ตามไปทำความเข้าใจได้
- สามารถเรียนรู้วิธีเพิ่มประสิทธิภาพของโมเดลด้วยแนวคิดขั้นสูงอย่าง RoPE(การฝังตำแหน่งแบบหมุน) ซึ่งมีประโยชน์เมื่อจะสร้างหรือปรับปรุงโมเดล NLP อื่น ๆ
- บทความนี้ช่วยให้เข้าใจโครงสร้างภายในและการทำงานของโมเดลดีปเลิร์นนิงได้ลึกขึ้น ซึ่งจะเป็นประโยชน์มากเมื่อทำการปรับแต่งประสิทธิภาพหรือดีบักโมเดล
1 ความคิดเห็น
อันยาน่ารักจังเลย