35 คะแนน โดย GN⁺ 2024-05-20 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • สร้าง 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 ความคิดเห็น

 
2147483647 2024-05-23

อันยาน่ารักจังเลย