18 คะแนน โดย xguru 2024-04-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • โค้ดฝึก LLM แบบเรียบง่ายที่ Andrej Karpathy สร้างด้วย C/CUDA ล้วน ๆ
  • ไม่ต้องใช้ PyTorch/cPython
  • สามารถฝึก GPT-2 (CPU, fp32) ได้ด้วยไฟล์เดียวขนาดประมาณ 1000 บรรทัด
    • เหตุผลที่เลือก GPT-2 เป็นตัวอย่างแรกที่ใช้งานได้ เพราะมันเป็นเหมือนคุณปู่ของ LLM ที่สแต็กสมัยใหม่ถูกรวมเข้าด้วยกันเป็นครั้งแรก
  • คอมไพล์และรันได้ทันที และให้ผลตรงกับ PyTorch reference implementation อย่างแม่นยำ
  • สิ่งที่กำลังทำอยู่ในตอนนี้
    • การทำ implementation แบบ CUDA โดยตรงที่เร็วขึ้นมาก และอาจเข้าใกล้ PyTorch มากขึ้น
    • เพิ่มความเร็วเวอร์ชัน CPU ด้วยคำสั่ง SIMD, AVX2 บน x86 / NEON บน ARM (เช่น Apple Silicon)
    • รองรับสถาปัตยกรรมที่ทันสมัยกว่า (เช่น Llama2, Gemma เป็นต้น)

1 ความคิดเห็น

 
xguru 2024-04-09

ความคิดเห็นบน Hacker News

  • แสดงความทึ่งต่อโปรเจกต์นี้ พร้อมชี้ว่าตอนนี้ส่วนของ CUDA ยังไม่ได้ถูกทำขึ้นมา โดยโค้ด GPU ยังไม่มีอยู่ในรีโพซิทอรี

    คาดหวังว่าเมื่อโปรเจกต์มีความเสถียรมากขึ้น จะมีการทำวิดีโอแบบละเอียดเกี่ยวกับวิธีสร้างสิ่งนี้ออกมา

  • หลังจากได้เห็น nano GPT ที่ทำด้วย JAX ก็อยากเห็นเวอร์ชันที่ทำด้วย C/CUDA บ้าง และสงสัยว่า nano GPT จะทำบน Mojo ได้หรือไม่ พร้อมยอมรับว่า Python มีความสะดวกหลายอย่างเมื่อเทียบกับภาษาอื่น

  • แสดงความคาดหวังว่าการเขียน CUDA โดยตรงจะเร็วกว่าการใช้ PyTorch มาก และเมื่อพิจารณาราคา GPU-RAM ก็สงสัยว่าความเร็วฝั่ง CPU จะดีขึ้นได้มากแค่ไหน อีกทั้งถามว่ามีข้อจำกัดทางเทคนิคหรือไม่ในการเพิ่มสล็อต SO-DIMM ให้ซีรีส์ RTX เพื่อขยาย RAM ได้ตามต้องการ

  • ถามว่ามีตัวอย่างการนำ GPT-2 ไปใช้กับข้อมูลอนุกรมเวลาหรือไม่ โดยเฉพาะกรณีที่มีตัวแปรร่วม (covariates) ด้วย เพราะมองว่าการที่ LLM ทำนายโทเค็นถัดไปจากโทเค็นก่อนหน้า คล้ายกับการพยากรณ์อนุกรมเวลา

  • คิดว่าชื่อน่าจะได้แรงบันดาลใจมาจากโปรเจกต์ llm.f90 ของตนเอง ซึ่งอิงจาก llama2.c ของ Karpathy และเปลี่ยนชื่อเพื่อรองรับสถาปัตยกรรมอื่น ๆ แต่ก็น่าจะเป็นเรื่องบังเอิญ

  • เล่าว่าตอนที่ Lex คุยกับ Andre, Andre มีความหมกมุ่นเชิงบวกกับปัญหาและพูดว่า "สิ่งนี้ต้องมีอยู่ให้ได้" และโปรเจกต์นี้ก็น่าจะเป็นหนึ่งในผลลัพธ์จากแนวคิดแบบนั้น

  • ถามว่าถ้าจะเริ่มจากศูนย์ ควรดูแหล่งข้อมูลอะไรเพื่อค่อย ๆ สร้างความเข้าใจว่าโค้ดนี้ทำอะไรและควรอ่านอย่างไร เพราะตนมีความรู้เรื่อง LLM จำกัดมาก และยังสงสัยว่าการใช้ชื่อตัวแปรสั้น ๆ เป็นมาตรฐานในวงการ LLM หรือไม่

  • เห็นว่าน่าจะดีหากมีการทำทิวทอเรียลอธิบายโปรเจกต์นี้และวิธีรันการฝึกทดสอบ แม้ว่าการฝึกโมเดลแบบ "จริงจัง" บนฮาร์ดแวร์ส่วนตัวจะไม่ค่อยเป็นไปได้ แต่ก็ต้องการประสบการณ์การเรียนรู้แบบลงมือปฏิบัติ

  • แสดงความสงสัยว่า CUDA ยังเป็นตัวเลือกเดียวสำหรับงาน AI อยู่หรือไม่ หรือว่าการรองรับ AMD/Intel/วิธีการรันงาน AI แบบอื่น ๆ กำลังเพิ่มขึ้นแล้ว