- เฟรมเวิร์กวิจัยอัตโนมัติแบบครบในตัวที่บีบอัดแกนการฝึก LLM ของ nanochat ให้อยู่ใน GPU เดียว·ไฟล์เดียวประมาณ 630 บรรทัด โดย AI เอเจนต์จะวนทำการทดลองฝึก LLM แบบอัตโนมัติตลอดทั้งคืน
- มนุษย์แก้ไข
พรอมป์ต์ และ AI เอเจนต์จะ แก้ไข โค้ดการฝึก → ฝึกภายใต้งบเวลาคงที่ 5 นาที → เปรียบเทียบผลลัพธ์ → วนลูปเก็บไว้หรือทิ้ง
- เอเจนต์ทำงานในลูปอัตโนมัติบน git feature branch และจะสะสม git commit ลงในสคริปต์การฝึกทุกครั้งที่ทำค่า validation loss ให้ต่ำลงได้ เช่น จากสถาปัตยกรรมโครงข่ายประสาท, optimizer, hyperparameter เป็นต้น
- เป้าหมายคือออกแบบเอเจนต์ที่สร้างความก้าวหน้าด้านวิจัยได้เร็วที่สุดโดยไม่ต้องมีมนุษย์เข้ามาแทรกแซง
ภาพรวมโปรเจกต์
- โครงสร้างนี้อิงจาก implementation แบบย่อของ nanochat ที่ใช้ GPU เดียว โดยให้ AI เอเจนต์ปรับแก้และทดลองโค้ดการฝึกได้อย่างอัตโนมัติ
- เอเจนต์จะวนลูป แก้โค้ด → ฝึก 5 นาที → ตรวจผลลัพธ์ → เก็บไว้/ทิ้ง และผู้ใช้มาตรวจดูล็อกการทดลองกับโมเดลที่ปรับปรุงแล้วในตอนเช้า
- สามารถเชื่อมต่อเอเจนต์ที่ต้องการ เช่น Claude, Codex เข้ากับเรโปนี้ ให้มันอ่าน
program.md แล้วเริ่มการทดลองได้
โครงสร้างไฟล์หลัก (สำคัญแค่ 3 ไฟล์)
prepare.py - มีค่าคงที่ตายตัว, การเตรียมข้อมูล (ดาวน์โหลดข้อมูลฝึก, ฝึก BPE tokenizer) และยูทิลิตีรันไทม์ (data loader, evaluation); ไม่ใช่เป้าหมายในการแก้ไข
train.py - ไฟล์เดียวที่เอเจนต์จะแก้ไข; มีทั้งโมเดล GPT ทั้งหมด, optimizer (Muon + AdamW), ลูปการฝึก; ปรับได้ทุกอย่างตั้งแต่สถาปัตยกรรม, hyperparameter, optimizer, batch size ฯลฯ
program.md - ไฟล์คำสั่งพื้นฐานสำหรับเอเจนต์; มนุษย์เป็นผู้แก้ไข และทำหน้าที่เป็น สกิลแบบเบา ที่กำหนดทิศทางการวิจัยอัตโนมัติของเอเจนต์
หลักการออกแบบ
- แก้ไขไฟล์เดียว: เอเจนต์แก้เฉพาะ
train.py เพื่อให้จัดการขอบเขตการเปลี่ยนแปลงได้และตรวจ diff ได้ง่าย
- งบเวลาคงที่: รันครั้งละ 5 นาทีแบบแม่นยำเสมอไม่ขึ้นกับแพลตฟอร์ม → ได้ประมาณ 12 รอบต่อชั่วโมง และราว 100 การทดลองระหว่างนอนหลับ
- ทำให้เปรียบเทียบผลการทดลองกันได้โดยตรง ไม่ว่าจะเปลี่ยนขนาดโมเดล, batch size, สถาปัตยกรรม หรือปัจจัยอื่นใด
- ข้อเสีย: ไม่สามารถเปรียบเทียบกับผลการรันของคนอื่นที่ใช้แพลตฟอร์มต่างกันได้
- ความเป็นระบบครบในตัว: ไม่มี dependency ภายนอกนอกจาก PyTorch และแพ็กเกจจำนวนน้อย; ไม่มี distributed training; ไม่มีการตั้งค่าซับซ้อน
ความต้องการและการรัน
- ความต้องการ: NVIDIA GPU เดียว (ทดสอบบน H100), Python 3.10+, ตัวจัดการแพ็กเกจ
uv
- ขณะนี้รองรับเฉพาะ NVIDIA GPU และยังไม่ใส่การรองรับแพลตฟอร์มอื่นอย่าง CPU/MPS เพื่อหลีกเลี่ยงการทำให้โค้ดบวม
- หากต้องการรองรับแพลตฟอร์มที่กว้างขึ้น แนะนำให้อ้างอิงเรประดับบนของ nanochat; ปัจจุบันมี macOS fork (
miolini/autoresearch-macos) อยู่แล้ว
- เมื่อต้องการรันเอเจนต์ ให้รัน Claude/Codex ฯลฯ ภายในเรโป ปิดการจำกัดสิทธิ์ทั้งหมด แล้วพรอมป์ต์ให้มันอ่าน
program.md และเริ่มการทดลอง
เจตนาในการออกแบบ program.md เริ่มต้น
program.md เริ่มต้นถูกตั้งใจให้เป็น baseline ขั้นต่ำ
- สามารถใช้ในลักษณะปรับปรุงซ้ำไปเรื่อย ๆ ตามเวลา เพื่อค้นหา “โค้ดขององค์กรวิจัย” ที่สร้างความก้าวหน้าทางวิจัยได้เร็วที่สุด
- เป็นโครงสร้างที่ขยายได้ชัดเจน ทั้งการเพิ่มเอเจนต์หรือทำคำสั่งให้เฉพาะเจาะจงขึ้น
3 ความคิดเห็น
ช่วยทำ Amd ROCm ด้วย
ทวีตแนะนำของ Karpathy
> เตรียมไว้ให้สำหรับคนที่อยากลองใช้ช่วงสุดสัปดาห์ครับ
> เป็นงานที่ผสมโค้ด ไซไฟ และความเพี้ยนอยู่นิดหน่อย :)
ทำไมถึงทำอะไรแบบนี้ในวันหยุดล่ะครับอาจารย์
ดูเหมือนว่าเขากำลังรีบทำสื่อการสอนไม่ให้ล้าสมัย เพื่อจะได้ปล่อยคอร์ส EurekaLab อยู่เรื่อย ๆ ครับ T_T
ps. เมื่อ 7 ชั่วโมงก่อนก็เพิ่งทำอีกอันชื่อ AgentHub แล้วเอาขึ้นมาอีกแล้ว 🫢