- RustGPT คือ โมเดลภาษาแบบทรานส์ฟอร์เมอร์ ที่พัฒนาด้วย Rust ล้วนและ
ndarray เท่านั้น โดยไม่พึ่งเฟรมเวิร์กแมชชีนเลิร์นนิงภายนอก
- ถูกออกแบบให้เรียนรู้ความรู้เชิงข้อเท็จจริงและรูปแบบการสนทนาผ่าน pre-training และ instruction tuning
- โครงสร้างเป็นไปตาม สถาปัตยกรรม LLM แบบทั่วไป คือ tokenizer → embedding → transformer block → output projection
- มี โครงสร้างซอร์สโค้ดแบบแยกโมดูล และ โค้ดทดสอบ ที่ช่วยให้เข้าใจกระบวนการฝึก การอนุมาน และการปรับแต่งได้อย่างละเอียด
- เป็นแหล่งอ้างอิงสำคัญสำหรับนักพัฒนาหรือผู้เรียนที่อยาก สร้าง LLM ตั้งแต่ต้นในระบบนิเวศ Rust โดยไม่พึ่งเฟรมเวิร์ก
ภาพรวมโปรเจกต์
- RustGPT เป็นโปรเจกต์โอเพนซอร์สที่สร้าง LLM ด้วย ภาษา Rust ล้วนและไลบรารีคณิตศาสตร์เชิงเส้น (
ndarray) โดยไม่ใช้เฟรมเวิร์กแมชชีนเลิร์นนิงภายนอกหรือ dependency ที่ซับซ้อน
- เป้าหมายหลักคือการลงมือสร้างองค์ประกอบแกนหลักของ LLM สมัยใหม่ด้วยตัวเอง เช่น ทรานส์ฟอร์เมอร์ attention embedding และการปรับแต่งค่า เพื่อทำความเข้าใจกระบวนการฝึกอย่างลึกซึ้ง
- ต่างจาก LLM กระแสหลักอื่น ๆ ตรงที่ออกแบบทั้ง โครงสร้างทรานส์ฟอร์เมอร์, backpropagation, tokenizer และ optimizer ด้วยโค้ด Rust ทั้งหมด ทำให้นักพัฒนาและนักวิจัยสาย Rust สามารถเข้าใจและต่อยอดหลักการของดีปเลิร์นนิงได้ตั้งแต่พื้นฐาน
- จุดต่างสำคัญคือใช้ ndarray สำหรับการคำนวณเมทริกซ์ และไม่พึ่งแพ็กเกจแมชชีนเลิร์นนิงภายนอกอย่าง PyTorch หรือ TensorFlow
- ด้วยความเป็นโมดูลาร์และมี test coverage ที่แข็งแรง จึงเหมาะกับการทดลองและการปรับปรุงหลากหลายรูปแบบ รวมถึงเหมาะสำหรับการเรียนการสอนแนว "LLM ที่สร้างเองตั้งแต่ต้น (From Scratch)"
คุณสมบัติหลักและแนวทางการพัฒนา
- สถาปัตยกรรมทรานส์ฟอร์เมอร์: ข้อความนำเข้า → tokenization → embedding → transformer block → การพยากรณ์ผลลัพธ์สุดท้าย
- ข้อความนำเข้าจะผ่านกระบวนการแยกโทเคนแล้วแปลงเป็นเวกเตอร์ embedding
- embedding จะถูกส่งผ่าน Transformer Block (multi-head attention + feedforward network)
- สุดท้าย Output Projection Layer จะสร้างการกระจายความน่าจะเป็นของคำศัพท์เพื่อใช้ในการพยากรณ์
โครงสร้างการพัฒนา
main.rs: pipeline การฝึก การเตรียมข้อมูล และการรันโหมด interactive
llm.rs: ลอจิกการทำ feedforward, backpropagation และการฝึกของ LLM โดยรวม
transformer.rs, self_attention.rs, feed_forward.rs: บล็อกทรานส์ฟอร์เมอร์หลัก
embeddings.rs, output_projection.rs: embedding และชั้นเอาต์พุตสุดท้าย
adam.rs: การพัฒนา Adam optimizer
- แต่ละโมดูลมี โค้ดทดสอบ ที่สอดคล้องกัน (
tests/) เพื่อใช้ตรวจสอบการทำงานได้
วิธีฝึก ทดสอบ และการไหลของข้อมูล
- กระบวนการฝึก
- สร้าง vocabulary → pre-training (100 epoch, ข้อมูลประโยคข้อเท็จจริง) → instruction tuning (100 epoch, ข้อมูลบทสนทนา)
- ตัวอย่าง pre-training: "The sun rises in the east and sets in the west"
- ตัวอย่าง instruction tuning: "User: How do mountains form? Assistant: ..."
- รองรับโหมด interactive
- หลังฝึกเสร็จ สามารถทดสอบบทสนทนาแบบ prompt-response ได้
- ตัวอย่าง: "How do mountains form?" → "Mountains are formed through tectonic forces or volcanism..."
องค์ประกอบทางเทคนิคโดยละเอียด
- ขนาด vocabulary: กำหนดแบบไดนามิกจากข้อมูลฝึก
- มิติ embedding: 128, hidden layer: 256
- ความยาวลำดับสูงสุด: 80 โทเคน
- สถาปัตยกรรม: transformer block 3 ชุด + embedding + ชั้นเอาต์พุต
- อัลกอริทึมการฝึก: Adam optimizer, gradient clipping (จำกัด L2 norm ที่ 5.0)
- อัตราการเรียนรู้: pre-training 0.0005, instruction tuning 0.0001
- ฟังก์ชัน loss: cross-entropy loss
จุดเด่นของโมเดลและโค้ด
- tokenizer แบบปรับแต่งเอง (รองรับการจัดการเครื่องหมายวรรคตอน)
- การสร้างข้อความแบบ greedy decoding
- โครงสร้างชั้นแบบโมดูลาร์ และอินเทอร์เฟซที่ชัดเจน
- test coverage: มีโค้ดทดสอบรายชั้นและรายฟังก์ชัน
- dependency: ใช้เพียง ndarray (คำนวณเมทริกซ์), rand / rand_distr (กำหนดค่าเริ่มต้นแบบสุ่ม) เท่านั้น (ไม่ใช้ ML ภายนอกอย่าง PyTorch/TensorFlow)
- คุณค่าด้านการเรียนรู้: เหมาะอย่างยิ่งสำหรับศึกษาหลักการฝึกและโครงสร้างภายในของ LLM สมัยใหม่
ความเป็นไปได้ในการพัฒนาต่อ
- เพิ่มสถาปัตยกรรมขั้นสูง: multi-head attention, RoPE, positional encoding เป็นต้น
- ปรับแต่งประสิทธิภาพ: SIMD, การฝึกแบบขนาน, การปรับปรุงประสิทธิภาพหน่วยความจำ
- รองรับการบันทึก/โหลดโมเดล
- เพิ่มการสุ่มตัวอย่างที่ดีขึ้น (beam search, Top-k/Top-p) และตัวชี้วัดการประเมินผล
ความสำคัญ
- เป็นโปรเจกต์เพื่อการเรียนรู้และทดลองที่แสดงให้เห็นว่า สามารถสร้าง LLM ได้โดยตรงด้วย Rust เพียงอย่างเดียว โดยไม่ต้องพึ่งเฟรมเวิร์กอย่าง PyTorch หรือ TensorFlow ที่อยู่บน Python
- เป็นแหล่งอ้างอิงที่มีประโยชน์สำหรับนักพัฒนาที่ต้องการเข้าใจกลไกภายในของ LLM และสร้างระบบ ML ในสภาพแวดล้อม Rust
ยังไม่มีความคิดเห็น