- nanochat ของ Andrej karpathy เป็นโปรเจกต์โอเพนซอร์สที่ให้คุณสร้าง LLM แบบสนทนาคล้าย ChatGPT ได้ด้วยงบประมาณ $100
- ไปป์ไลน์ทั้งหมด (tokenize, pretraining, midtraining, finetuning, evaluation, inference, web service) ถูกทำไว้อย่างกระชับและแฮ็กต่อได้ง่าย
- บนโหนด GPU 8XH100 เพียงเครื่องเดียวสามารถเทรนเสร็จภายใน 4 ชั่วโมงด้วยสคริปต์เดียว และโมเดล d26 ที่ตั้งเป้าประสิทธิภาพระดับ GPT-2 ใช้เวลาประมาณ 12 ชั่วโมงที่ราคาราว 300 ดอลลาร์ ส่วนระดับ 1000 ดอลลาร์ใช้เวลา 41.6 ชั่วโมง
- โค้ดเบสที่กระชับอย่างยิ่งประกอบด้วย 8,300 บรรทัด, 44 ไฟล์ ขนาด 330KB ไม่มีออบเจ็กต์คอนฟิกซับซ้อนหรือ model factory จึงเป็นเบสไลน์ที่ทรงพลัง อ่านง่าย และ fork ได้ง่าย
- กำลังพัฒนาเป็นโปรเจกต์ capstoneของคอร์ส LLM101n จาก Eureka Labs โดยมีเป้าหมายเพื่อยกระดับ state of the art ของไมโครโมเดลที่เข้าถึงได้ด้วยงบต่ำกว่า 1000 ดอลลาร์
ภาพรวมโปรเจกต์ nanochat
- nanochat เป็นโปรเจกต์โอเพนซอร์สสำหรับนักพัฒนาที่อยากสร้าง LLM แบบสนทนาคล้าย ChatGPT ด้วยต้นทุน $100
- โค้ดเบสทั้งหมดถูกเขียนให้เป็นหนึ่งเดียว อ่านง่าย พึ่งพา dependency น้อย และกระชับ ทำให้แก้ไขและทดลองได้สะดวก
- มีสภาพแวดล้อมที่จัดการได้ครบทุกขั้นตอนตั้งแต่ pretraining, finetuning, evaluation, inference, ไปจนถึง เว็บ UI
- สามารถใช้สคริปต์ speedrun.sh เพื่อรันทั้งไปป์ไลน์แบบอัตโนมัติได้ ทำให้ผู้เริ่มต้นก็เริ่มใช้งานได้ง่าย
- ออกแบบด้วยdependency ขั้นต่ำและโครงสร้างที่แฮ็กได้ง่าย จึงเหมาะอย่างยิ่งสำหรับวัตถุประสงค์ด้านการเรียนรู้ที่ต้องการความเข้าใจและการปรับแก้ได้ง่าย
- โปรเจกต์นี้จะถูกใช้เป็นโปรเจกต์ capstone ของคอร์ส LLM101n ที่กำลังพัฒนาโดย Eureka Labs
เริ่มต้นอย่างรวดเร็ว (Quick Start)
- ในสภาพแวดล้อม GPU (โดยเฉพาะ โหนด 8XH100) หากรัน speedrun.sh จะตั้งค่ากระบวนการเทรนและ inference ใช้เวลาประมาณ 4 ชั่วโมง
- สำหรับโหนด 8XH100 คิดค่าใช้งาน 24 ดอลลาร์ต่อชั่วโมง รวมใช้เวลา 4 ชั่วโมง
- แนะนำให้รันภายใน screen session เพื่อให้ติดตามการทำงานได้อย่างเสถียรระหว่างการเทรนระยะยาว
- ใช้คำสั่ง
screen -L -Logfile speedrun.log -S speedrun bash speedrun.sh
- แยก session ด้วย
Ctrl-a d แล้วตรวจสอบความคืบหน้าด้วย tail speedrun.log
- เมื่อเทรนเสร็จแล้ว สามารถถาม LLM ได้อย่างอิสระผ่านเว็บ UI แบบง่าย และดูผลลัพธ์ในหน้าต่างแชต
python -m scripts.chat_web
- โมเดลระดับ 4e19 FLOPs ให้ความสามารถด้านการสนทนาระดับเด็กอนุบาล
- ขอให้แต่งเรื่อง/บทกวีได้
- สังเกตอาการหลอน (hallucination) ได้
- ตอบคำถามพื้นฐานอย่างเช่นทำไมท้องฟ้าจึงเป็นสีฟ้าได้
- ผลการเทรนและตัวชี้วัดประสิทธิภาพหลายรายการจะถูกบันทึกไว้ใน report.md
รายงานผลการเทรน
- ไฟล์ report.md มี "สมุดพก" ของการรันเทรนรวมอยู่
- มีตัวชี้วัดและเมตริกประเมินหลายประเภท
- ตารางสรุปสุดท้ายแสดงประสิทธิภาพแยกตามขั้น BASE, MID, SFT, RL
- สถิติของโค้ดเบส
- จำนวนอักขระ: 333,989
- จำนวนบรรทัด: 8,304
- จำนวนไฟล์: 44
- จำนวนโทเค็น (โดยประมาณ): 83,497
- dependency (จำนวนบรรทัดใน uv.lock): 2,004
- ตัวอย่างประสิทธิภาพบนเบนช์มาร์ก
- CORE: 0.2219 (BASE)
- ARC-Challenge: 0.2875 (MID), 0.2807 (SFT)
- GSM8K: 0.0250 (MID), 0.0455 (SFT), 0.0758 (RL)
- HumanEval: 0.0671 (MID), 0.0854 (SFT)
- เวลารวมที่ใช้: 3 ชั่วโมง 51 นาที
- แม้ประสิทธิภาพของโมเดลจะต่ำกว่า ChatGPT แต่ให้ความสำคัญกับประสบการณ์การสร้าง LLM ด้วยงบต่ำ
โมเดลที่ใหญ่ขึ้น (Bigger Models)
- ด้วยงบ 100 ดอลลาร์ ไม่สามารถเทรน ChatGPT clone ประสิทธิภาพสูงได้ และ LLM จริงเป็นที่รู้กันว่าใช้เงินลงทุนระดับหลายล้านดอลลาร์
- มีสเกลเพิ่มเติมอีกสองระดับที่น่าสนใจ
- โมเดล d26 ระดับราว 300 ดอลลาร์ (depth=26): เทรนประมาณ 12 ชั่วโมง และได้คะแนน CORE สูงกว่า GPT-2 เล็กน้อย
- ระดับ 1000 ดอลลาร์: ใช้เวลาประมาณ 41.6 ชั่วโมง เป็นตัวเลขกลมสวย
- การแก้ไข speedrun.sh เพื่อเทรนโมเดล d26
- ต้องดาวน์โหลด data shard เพิ่มเติม
- คำนวณจำนวนโทเค็นโดยนำจำนวนพารามิเตอร์คูณ 20
- คำนวณจำนวนอักขระโดยคูณ 4.8
- คำนวณจำนวน shard โดยหารด้วย 250 ล้าน (ต้องใช้ประมาณ 450 shard)
- ใช้ออปชัน --depth=26 และลด device_batch_size จาก 32 เป็น 16 เพื่อป้องกัน OOM
- ในขั้น midtraining ก็ต้องใช้ device_batch_size เดียวกัน
ข้อกำหนดด้านสภาพแวดล้อมการคอมพิวต์
- สามารถรันบน โหนด 8XA100 GPU ได้เช่นกัน แต่จะช้าลงเล็กน้อย
- สามารถรันบน GPU เดี่ยว ได้ด้วย
- หากไม่ใช้ torchrun จะได้ผลลัพธ์แทบไม่ต่างกัน
- จะสลับไปใช้ gradient accumulation โดยอัตโนมัติ
- ใช้เวลานานขึ้น 8 เท่า
- สำหรับ GPU ที่มี VRAM น้อยกว่า 80GB ต้องปรับ hyperparameter
- ลด
--device_batch_size จาก 32 (ค่าปริยาย) เป็น 16, 8, 4, 2, 1 เพื่อเพิ่มพื้นที่หน่วยความจำ
- หากต้องตั้งให้ต่ำกว่า 1 ต้องใช้วิธีที่สร้างสรรค์กว่านี้
- ด้วยการอิงบน vanilla PyTorch จึงรองรับสภาพแวดล้อมหลากหลายอย่าง xpu, mps ได้
- ไม่ได้รองรับมาให้ทันที จึงอาจต้องแก้ไขเล็กน้อย
การใช้งานและการเข้าถึง
- จุดเด่นที่สุดของ nanochat คือสามารถแพ็กไฟล์ทั้งหมดในครั้งเดียวเพื่อนำไปถามกับ LLM อื่น ๆ หรือบริการค้นหาเอกสารได้ง่าย
- ตัวอย่างการใช้ยูทิลิตี files-to-prompt
- รวมไฟล์ py, md, rs, html, toml, sh
- ยกเว้นโฟลเดอร์ rustbpe/target
- เลือกรูปแบบผลลัพธ์เป็น cxml
- แพ็กเป็นโค้ด 8 พันบรรทัด 45 ไฟล์ ขนาดราว 330KB (ประมาณต่ำกว่า 1 แสนโทเค็น)
- แนะนำให้ใช้ DeepWiki
- เปลี่ยน github.com ใน GitHub URL เป็น deepwiki.com เพื่อถามเกี่ยวกับรีโพซิทอรีนั้นได้
- ให้บริการโดย Devin/Cognition
การมีส่วนร่วมและทิศทางของโปรเจกต์
- nanochat ยังเป็นโปรเจกต์ที่ยังไม่เสร็จสมบูรณ์
- เป้าหมายคือยกระดับ state of the art ของไมโครโมเดลที่ทำงานได้ครบตั้งแต่ต้นจนจบด้วยงบต่ำกว่า 1000 ดอลลาร์
- การเข้าถึงไม่ได้หมายถึงแค่ต้นทุน แต่รวมถึงความซับซ้อนเชิงการรับรู้ด้วย
- ไม่มีออบเจ็กต์คอนฟิกขนาดมหึมา, model factory, หรือโค้ด if-then-else สุดพันกัน
- ไม่ใช่ "เฟรมเวิร์ก" LLM ที่คอนฟิกได้ทุกอย่างอย่างละเอียด
- เป็นโค้ดเบสแบบหนึ่งเดียว สอดคล้องกัน มินิมัล อ่านง่าย แฮ็กได้ และ fork ได้ง่ายที่สุดเท่าที่ทำได้ ในฐานะ "เบสไลน์ที่ทรงพลัง"
- ออกแบบมาให้รันได้ตั้งแต่ต้นจนจบเพื่อสร้าง ChatGPT clone ที่เป็นรูปธรรมพร้อมสมุดพกผลลัพธ์
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
เป็นการแชร์ประสบการณ์ใช้งานเครื่องมือเขียนโค้ดด้วย AI ที่น่าสนใจ
เคยถาม Karpathy เพราะสงสัยว่าเขาเขียนโค้ดเองมากแค่ไหน
Karpathy: ขอบคุณสำหรับคำถาม และจริง ๆ แล้วผมเขียนโค้ดเกือบทั้งหมดด้วยตัวเอง (ใช้ tab autocomplete)
เคยลองใช้เอเจนต์ claude/codex อยู่บ้าง แต่ความแม่นยำยังต่ำเลยไม่ค่อยช่วยเท่าไร
น่าจะเป็นเพราะ repo ที่ผมสร้างมันห่างจาก data distribution มากเกินไป
ลิงก์บทสนทนาต้นฉบับ
คำว่า “repo ห่างจาก data distribution มากเกินไป” อธิบายได้เลยว่าทำไมเวลาผมใช้โมเดล AI มันถึงไม่ค่อยช่วย
งานที่ผมทำทั้งหมดมันเฉพาะทางเกินไปจนอยู่นอก distribution
ดีใจที่มีคนที่น่าเชื่อถืออย่าง Karpathy พูดแบบนั้น
คนที่คิดว่า AGI จะมาในเร็ว ๆ นี้คงควรลดความคาดหวังลงหน่อย
ผมเองก็ชอบ Claude Code
มีบางช่วงที่ต้องเขียนโค้ดเว็บเป็นระยะ ๆ และฝั่งเว็บนี่ coverage ของข้อมูลฝึกดีมากจน Claude เป็นนักพัฒนาเว็บที่เก่งกว่าผมมาก
แต่ถ้าต้องลงลึกไปที่แกนอัลกอริทึมของเครื่องมือ automation ที่ผมทำ Claude จะมีข้อมูลให้ใช้น้อยกว่าและพลาดมากขึ้น
ถึงอย่างนั้นโดยรวมก็ยังเป็นบวก เลยยอมจ่ายเพื่อใช้อย่างเต็มใจ
ต่อให้จบแค่เป็นผู้ช่วยพัฒนาเว็บก็ถือว่าช่วยมากแล้ว
ผมว่ามันเป็นปรากฏการณ์ที่ธรรมชาติมากกว่า
นี่คือสถานการณ์ที่กำลังเขียนโค้ดแบบใหม่และสร้างสรรค์จริง ๆ
หลายคนวิจารณ์คำตอบของ Karpathy แต่ในทางกลับกัน แค่เขาลองใช้ claude/codex ก็เป็นหลักฐานแล้วว่าในอดีตเครื่องมือเหล่านี้เคยช่วยได้จริง
ลิงก์มิเรอร์อีกอันของทวีต Karpathy อยู่ที่นี่
น่าสนใจที่ nanochat ได้แรงบันดาลใจจาก modded-nanoGPT
ลำดับสายคือ nano-GPT ของ Karpathy → modded-nanoGPT ของ Keller Jordan (เวอร์ชันที่ฝึกโมเดลได้เร็ว) → NanoChat
จุดเด่นของ modded-nanoGPT คือฝึก GPT ขนาดเล็กได้เร็วมาก
โดยเฉพาะการใช้ Muon optimizer (ผู้เขียนพัฒนาเอง) กับ linear layer แทน AdamW
modded-nanoGPT, แนะนำ Muon optimizer
Muon เป็น optimizer ที่ Keller Jordan สร้างขึ้นสำหรับการแข่งขันฝึกโมเดลแบบเร็วนี้ และยังมีการปรับปรุงเพิ่มเติมจากคนอื่น ๆ
ในเวลาไม่ถึงปี มันก็ถูกใช้อย่างแพร่หลายในฐานะ SOTA สำหรับการฝึกโมเดลแล้ว
ค่อนข้างช็อกที่รัน inference node เดียวด้วย 8xH100
สงสัยว่า frontier LLM ที่ใช้งานจริงก็รันประมาณนี้หรือเปล่า หรือใช้ VRAM/พลังประมวลผลมากกว่านี้อีก
ถ้าคิดเป็นประมาณ $8 ต่อชั่วโมง และสมมติว่าคำขอหนึ่งใช้เวลา 5 วินาที ก็จะรองรับได้ราว 700 คำขอ
เท่ากับประมาณ 1 เซ็นต์ต่อคำขอ
อยากรู้ว่าผมคำนวณพลาดตรงไหนไหม
ตอนนี้ก็ยังฝึกอยู่จริง ๆ (เริ่มเมื่อ 20 นาทีที่แล้ว)
เปิด log การทดลองให้ดู
อีก 4 ชั่วโมงเมื่อโมเดลเสร็จแล้ว จะเปิดให้ทุกคนลองทดสอบ inference ได้
อัปโหลดโมเดลที่เสร็จแล้วไปไว้บน Hugging Face
ผลลัพธ์ยังไม่ดีเท่า Karpathy (ดวงเรื่อง seed ไม่ดีหรือเปล่า?)
แต่ก็สนุกดีที่จะลองเล่น
ตัวอย่างเช่น ถามว่า “สุนัขมีกี่ขา?”
ผู้ช่วยตอบว่า “เป็นคำถามที่น่าสนใจมาก และเป็นประเด็นที่ถกเถียงกันในหมู่คนรักสุนัขมาหลายศตวรรษ ไม่มี ‘คำตอบที่ถูกต้อง’ เพียงหนึ่งเดียว (...)”
ในคอมเมนต์ข้างกราฟแรก
“ตัวชี้วัดหลักของความคืบหน้า Bits per byte ตามที่ Karpathy บอกไว้ว่า ‘เป็นตัวชี้วัดที่ดีกว่า cross-entropy loss ทั่วไปมาก เพราะมัน normalize loss ด้วยจำนวนไบต์ของแต่ละโทเค็น ทำให้เปรียบเทียบกันได้โดยไม่ขึ้นกับ tokenizer’”
เป็นคำอธิบายที่ชัดมากจนผมรู้สึกเขินที่ตอนทดลอง tokenizer ของตัวเองกับ tinystories ไม่ได้นึกถึงเรื่องนี้
อยากกลับไปวิเคราะห์ใหม่ว่า tokenizer ของผมจริง ๆ แล้วดีแค่ไหน
ถ้ามี 'howto' สั้น ๆ เรื่องวิธีรัน repo นี้พร้อมฝึกผ่าน W&B ก็คงดีมาก
สงสัยว่าจะช่วยแชร์เป็นขั้นตอนสำหรับโปรแกรมเมอร์ที่ไม่เคยทำ workflow การฝึกโมเดลมาก่อนได้ไหม
สนุกดี!
ตัวสร้าง Shakespeare ของ Karpathy เป็นโปรเจ็กต์แรกที่ผมลองเล่นหลังจาก ollama
จุดประสงค์คืออยากเข้าใจหลักการทำงานของ LLM
ตั้งแต่สัปดาห์ก่อนผมหมกมุ่นกับ LLM และกำลังสร้างระบบฝึก/อนุมานจากศูนย์ที่มีสองแบ็กเอนด์
ผมไม่ชอบ rocm/pytorch เพราะมันยุ่งยาก
Vulkan ดีมาก llama-cpp ก็ใช้แบบนั้น
สัปดาห์ก่อนผมทำให้ทั้งแบ็กเอนด์ CPU/GPU ใช้งานได้ และโฟกัสแก้บั๊กในแบ็กเอนด์ GPU
รีแฟกเตอร์โค้ด WGSL และเพิ่มประสิทธิภาพมัน
ในกระบวนการนี้ผมใช้ LLM หนักมาก และมันเป็นจุดเปลี่ยนครั้งใหญ่แบบน่าทึ่ง
ถ้าใช้พรอมป์ต์สำหรับรีแฟกเตอร์ มันช่วยไล่แก้ข้อผิดพลาดทีละขั้นจนสุดท้ายได้โค้ดที่เช็ก type ผ่านด้วย astral ty
ไม่น่าจะมีตัวเลือกที่ไม่มีประสิทธิภาพไปกว่านี้แล้วนะ
สุดสัปดาห์นี้ลองใช้ nanoGPT(ลิงก์)
เป็นโปรเจ็กต์ค่อนข้างเก่าแล้ว แต่ก็เป็นการทดลองที่ยอดเยี่ยมในการสร้างและฝึก Shakespeare GPT ขนาดเล็กด้วยตัวเอง
ผมรันบน CPU ด้วยพารามิเตอร์ราว 0.8M
ผลลัพธ์ออกมา ‘ไม่ค่อยดี’ ตามที่คาดไว้
แต่ก็ยังให้ความรู้สึกเหมือนเวทมนตร์
สำหรับคนที่ไม่ได้เรียนสาย deep learning โดยตรง แต่ชอบลองของและชอบแฮ็กอะไรเล่น นี่คือจุดเริ่มต้นที่ยอดเยี่ยมที่สุด
เสียดายที่ยังเขียนบล็อกเล่าประสบการณ์ nanoGPT สุดสัปดาห์นี้ไม่เสร็จ... ถ้าเสร็จแล้วคงเอามาแปะไว้ที่นี่
เป็นการทดลองที่มีประโยชน์ เพราะงานวิจัย ML ที่ดีสามารถพิสูจน์ได้ในสเกลเล็ก
ตัวอย่างใหม่นี้ยิ่งก้าวหน้าไปอีก เพราะครอบคลุมทั้ง instruction following, tool use SFT, และ RLVR
ทำให้ได้ baseline ที่ใช้งานได้จริงมากขึ้น
ถ้าปรับแต่งโค้ด Shakespeare นิดหน่อยแล้วเอาไปฝึกกับข้อมูลอื่น ก็ใช้สร้างเด็ค Magic The Gathering commander ได้ค่อนข้างดี
“ได้รับคำแนะนำจาก chief LLM whisperer Alec Radford”
ถ้ามีพอดแคสต์ของ Alec กับ Andrej ออกมาจริง โลกคงสะเทือนแน่
จากยุครุ่งเรืองของ GPT1 มาถึงตอนนี้ที่สร้าง GPT3 ได้ใน 4 ชั่วโมง
Eureka Labs: ลิงก์ Github
Andrej เป็นคนที่สร้างผลงานได้มากอย่างน่าทึ่งจริง ๆ
แค่ได้ตามงานของเขาก็เป็นประสบการณ์ที่ยอดเยี่ยมแล้ว
ผมคิดมาตลอดว่าวิธีสร้างคุณูปการสูงสุดต่อมนุษยชาติ
คือผลคูณของการช่วยคนได้มากแค่ไหนและลึกแค่ไหน
งานโอเพนซอร์สที่ Karpathy ทำเป็นแนวทางที่มี leverage สูงมากในความหมายนี้
โลกทุกวันนี้ก็ถูกสร้างขึ้นบนโปรเจ็กต์โอเพนซอร์ส
เพราะใคร ๆ ทั่วโลกก็เรียนเขียนโค้ดและสร้างซอฟต์แวร์ได้ฟรี
หวังว่าวงการ AI/LLM จะเดินตามทิศทางเชิงบวกแบบนี้ด้วย
ผมชอบธรรมเนียมการให้ฟรี/การแบ่งปันแบบนี้ในโลกซอฟต์แวร์มาก
แต่สำหรับ LLM ดูเหมือนจะรักษากระแสนี้ไว้ได้ยาก เพราะต้นทุนการฝึกสูงมากและต้องใช้ฮาร์ดแวร์แรง ๆ
ต่อไปการพัฒนาซอฟต์แวร์ก็คงกลายเป็นการจ่าย ‘ค่าเช่า’ ให้โฮสต์ LLM เพื่อจะตามให้ทัน
อาจมีวิธีทำให้สภาพแวดล้อม inference แบบ on-prem (local) กลับมาเข้าถึงได้สำหรับทุกคนอีกครั้ง
แต่ตอนนี้ด้วยต้นทุนการฝึกที่สูง มันยังดูไม่ชัดเจน
และยิ่งพึ่งพา LLM มากขึ้นเท่าไร
ผมก็ยิ่งกังวลว่าเนื้อหาแบบ ‘ทำมือ’ อย่างบทสอนสำหรับผู้เริ่มต้นเขียนโปรแกรมจะยิ่งลดลง
(ยาวไปนิด แต่ทั้งหมดมาจากความหวังให้โลกดีขึ้นจริง ๆ)
มุมมองนี้ต่างจากอารมณ์ ‘ต่อต้าน AI’ กระแสหลักอยู่พอสมควร
แนวคิดเรื่องทรัพย์สินทางปัญญาเป็นโครงสร้างที่เน้นการสะสมการครอบครองข้อมูลไว้กับคนบางกลุ่ม แล้วปล่อยเช่าให้มนุษยชาติ มากกว่าจะเป็นการมีส่วนร่วมโดยตรงต่อมนุษยชาติ
แต่ในขณะเดียวกันก็จำเป็นอย่างยิ่งที่ผู้สร้างสรรค์แต่ละคนจะต้องสามารถเลี้ยงชีพได้
ไม่ใช่แค่สิ่งที่ Karpathy ทำเท่านั้น ผมคิดว่าครีเอเตอร์บน YouTube อีกหลายพันคนก็มีส่วนช่วยสังคมอย่างมากในสาขาของตัวเอง
เพียงแต่การที่หลายคนต้องพึ่งพาสปอนเซอร์ก็ทำให้รู้สึกขมขื่นนิดหน่อย
Patreon ก็มี แต่ก็ยังไม่ใช่คำตอบที่สมบูรณ์แบบ
ผมเห็นด้วยว่าความพยายามทั้งหมดนี้เป็นรูปแบบของการมีส่วนร่วมต่อสังคมอย่างยิ่ง
ไม่นานมานี้ Jon Stewart ใน Daily Show พูดว่าการฝึก AI คือการ strip mining ความรู้ของมนุษยชาติ
บางครั้งการฝึก AI ถูกมองแบบเหมารวมว่าเป็นการขโมย แต่จริง ๆ แล้วมีมุมมองที่หลากหลายมาก
กระแสนี้อาจลงเอยด้วยการตอกย้ำโครงสร้างการถือครองความรู้แบบ超ทุนนิยม
จนความเป็นเจ้าของไอเดียยิ่งกระจุกตัวอยู่กับคนส่วนน้อย
ปรากฏการณ์นี้ไม่ได้ช่วยโลกโดยรวมมากนัก แต่กลับเอื้อประโยชน์ให้บางกลุ่ม
แม้แต่การซื้อขายทรัพย์สินทางปัญญาเอง สุดท้ายเมื่อเวลาผ่านไปก็มักจะยิ่งกระจุกตัวมากขึ้น
ผมคิดว่าเราจำเป็นต้องมีการถกเถียงและการตีความใหม่ที่เหมาะกับสังคมสมัยใหม่จริง ๆ
น่าเสียดายที่ความพ่ายแพ้ล่วงหน้าแบบ ‘คนข้างบนคงห้ามอยู่ดี ถกไปก็ไม่มีประโยชน์’ มักขัดขวางการถกเถียง
การเปิดพื้นที่ถกกันอย่างเสรีว่าควรทำอย่างไรถึงจะได้ทางออกที่ดีกว่าเป็นเรื่องสำคัญ
ผมมักแนะนำซีรีส์วิดีโอ ANN/LLM from scratch ของเขา
เนื้อหาสอนชัดมาก และสไตล์การเขียนโค้ดก็เป็น Pythonic กระชับแต่ยังอ่านง่าย
(ส่วนการ vectorize ใน pytorch ซับซ้อนอยู่แล้ว อันนั้นเป็นเรื่องยากโดยตัวมันเอง)
แค่ดูวิดีโอก็ได้เรียนรู้สไตล์ไปพร้อมกัน ซึ่งช่วยคนได้มากจริง ๆ
ผมสงสัยว่าจะฝึกโมเดลด้วยหนังสือจิตวิทยา เอกสาร รายงาน และงานวิจัยทั้งหมดที่ผมมีอยู่จริง
แล้วใช้ 1xH100 node(ลิงก์) สำหรับทำ inference เวลาอยากถามคำถามเฉพาะทางได้ไหม
ทำได้จริง แต่ประสิทธิภาพจะแย่มาก
ในกรณีแบบนี้ เอาโมเดลเล็กที่ pretrain มาแล้วมาทำ fine-tune กับข้อมูลของตัวเอง
หรือใช้ workflow แบบ RAG (Retrieval Augmented Generation) หรือผสมทั้งสองแบบ จะดีกว่ามาก
ทำได้
แต่การใช้โมเดลแบบทั่วไป แล้วเอาเอกสารของคุณเข้าไปใน working context ด้วยวิธีต่าง ๆ (เช่น RAG, hierarchical memories ของ Apple เป็นต้น ลิงก์บทความ) อาจให้ผลลัพธ์ที่ดีกว่า
ทำได้ แต่เพราะ dataset ของคุณเล็กมาก ประสิทธิภาพจะด้อยกว่าการใช้โมเดลที่ pretrain มาแล้ว+fine-tune หรือโมเดลเล็ก+RAG มาก
ไม่ได้
โปรเจ็กต์นี้กระตุ้นแรงบันดาลใจมาก!
ถ้ารู้ตัวอย่างประสิทธิภาพจากพรอมป์ต์จริงหรือผลทดสอบก็คงดี
มีการชี้ว่าที่นี่มีภาพหน้าจอของพรอมป์ต์จริง