2 คะแนน โดย GN⁺ 2025-08-21 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Gemma 3 270M มีตัวอย่างโค้ดสำหรับให้สามารถนำไปสร้างขึ้นเองได้โดยใช้ PyTorch เท่านั้น
  • รีโปซิทอรีนี้มีเป้าหมายด้านการเรียนรู้ เพื่อช่วยทำความเข้าใจ โครงสร้างและกระบวนการฝึกของ LLM พร้อมลงมือปฏิบัติจริง
  • โค้ดสามารถทำงานได้โดยไม่ต้องพึ่ง เฟรมเวิร์ก LLM ภายนอกเพิ่มเติม และสามารถรันได้แม้ใน สภาพแวดล้อมโน้ตบุ๊กทั่วไป
  • มี ตัวอย่างเสริมและสื่อฝึกปฏิบัติ ที่หลากหลาย ช่วยให้เกิดประโยชน์จริงต่อการเรียนรู้ของนักพัฒนาและนักวิจัย
  • หากมีเพียง พื้นฐาน Python ทุกคนก็สามารถค่อย ๆ เรียนรู้หลักการและรายละเอียดการสร้าง LLM ได้ทีละขั้น

ความสำคัญและจุดแตกต่างของโครงการโอเพนซอร์ส

รีโปซิทอรีนี้ให้โค้ดครบชุดที่จำเป็นสำหรับการสร้าง, pretrain และ fine-tune โมเดลภาษาขนาดใหญ่ ตระกูล GPT ด้วยตนเอง ต่างจากตัวอย่างโมเดลภาษาขนาดใหญ่ส่วนใหญ่ที่มักต้องพึ่งไลบรารีเฉพาะทางเพิ่มเติม โดยที่นี่ใช้ PyTorch เพียงอย่างเดียว ทำให้สามารถทดลองและฝึกบนเครื่องโลคัลได้โดยตรง นอกจากนี้ยังมีการให้ตัวอย่างโมเดลขนาดเล็กอย่าง Gemma 3 270M พร้อมโค้ดแบบละเอียด จึงเป็นข้อได้เปรียบเชิงปฏิบัติที่ช่วยให้นักวิจัยหรือนักพัฒนามือใหม่สามารถไล่ตามโครงสร้างการทำงานจริงและเรียนรู้หลักการได้อย่างลึกซึ้ง

เนื้อหาหลักและโครงสร้างของรีโปซิทอรี

  • มีรีโปซิทอรี โค้ดทางการของหนังสือ "Build a Large Language Model (From Scratch)"
  • มีตัวอย่างโค้ดแบบเป็นขั้นตอน ครอบคลุมทุกช่วงตั้งแต่ การสร้าง LLM สไตล์ GPT ด้วยตนเอง, pretraining และ fine-tuning
  • อธิบายตรรกะการสร้างโมเดลภาษาขนาดใหญ่อย่างละเอียด พร้อมเสนอแนวทางที่ผู้เริ่มต้นทำตามได้ง่ายผ่าน คำอธิบายที่ชัดเจน แผนภาพ และโค้ดตัวอย่าง ในแต่ละขั้น
  • อธิบายทั้ง วิธีวิทยาการฝึกโมเดลขนาดใหญ่ และกระบวนการสร้างจริงอย่างละเอียด ทำให้สามารถเรียนรู้โดยสัมผัสแนวทางที่ถูกนำไปใช้ในบริการจริงอย่าง ChatGPT เป็นต้น
  • มีตัวอย่างเกี่ยวกับ การโหลดน้ำหนักโมเดลที่ pretrain แล้ว / การ fine-tune

คำแนะนำเกี่ยวกับโครงสร้างรีโปซิทอรี

  • มีลิงก์สำหรับการฝึกและอ้างอิง เช่น ที่เก็บซอร์สโค้ดทางการ ข้อมูลหนังสือ และ ISBN
  • ในแต่ละบทมีทั้ง Jupyter notebook และสคริปต์ Python ทำให้สามารถอ้างอิงได้ถึง แบบฝึกทีละขั้น แบบฝึกหัด และสื่อเสริม
  • ในส่วนสื่อเสริมและตัวอย่างโบนัส มีคอนเทนต์ฝึกปฏิบัติที่นำไปใช้ได้จริงในงาน เช่น Attention mechanism, Tokenizer, การเพิ่มประสิทธิภาพ, การวิเคราะห์ FLOPS, การปรับแต่งไฮเปอร์พารามิเตอร์, การแปลงโมเดล Llama และอื่น ๆ

ความรู้พื้นฐานและข้อกำหนดด้านฮาร์ดแวร์

  • หากมีเพียง ความเข้าใจพื้นฐานเกี่ยวกับการเขียนโปรแกรม Python ก็สามารถเรียนรู้หลักการและการปฏิบัติของ LLM ได้
  • ไม่จำเป็นต้องคุ้นเคยกับ PyTorch มาก่อนมากนัก แค่รู้ไวยากรณ์พื้นฐานก็เพียงพอ
  • สามารถรันตัวอย่างได้บน โน้ตบุ๊กทั่วไปโดยไม่ต้องมีอุปกรณ์สเปกสูงโดยเฉพาะ
  • หากมี GPU ระบบจะตรวจจับอัตโนมัติ เพื่อช่วยเพิ่มความเร็วในการฝึก

สื่อเสริมและคอนเทนต์สำหรับเสริมการฝึกปฏิบัติ

  • ในแต่ละบทมีโค้ดสำหรับฝึกปฏิบัติและ notebook แบบฝึกหัด
  • มี สมุดควิซ PDF ฟรี 170 หน้า (ระดับประมาณ 30 ข้อต่อบท) เพื่อสนับสนุนการเรียนรู้ด้วยตนเอง
  • มีวิดีโอคอร์ส (17 ชั่วโมง 15 นาที บนแพลตฟอร์มสำนักพิมพ์ Manning) ที่ผู้เขียนอธิบายเนื้อหาสำคัญของทุกบทพร้อมสาธิตการเขียนโค้ดด้วยตนเอง

แนวทางสำหรับการวิจัยและการมีส่วนร่วมกับชุมชน

  • มีการแลกเปลี่ยน คำถาม ความคิดเห็น และการอภิปราย อย่างคึกคักใน Manning forum และ GitHub Discussions
  • เพื่อรักษาความสอดคล้องระหว่างหนังสือกับโค้ด โค้ดหลักของรีโปมีการจำกัดการมีส่วนร่วมจากภายนอก และแนะนำให้หารือแยกต่างหากสำหรับข้อเสนอการปรับปรุงหรือแก้ไข

แนวทางการอ้างอิงและการใช้งาน

  • โครงการและโค้ดนี้สามารถนำไปใช้โดยตรงในการ พัฒนาและทดลองวิจัย LLM
  • หากต้องการอ้างอิงในงานวิจัยหรือบล็อกเทคนิค มีตัวอย่างการอ้างอิงแบบ Chicago style และ BibTeX ให้

สรุป

รีโปซิทอรีนี้ เปิดโอกาสให้สร้างและทดลองใช้งานโมเดลภาษาขนาดใหญ่อย่าง Gemma 3 270M ด้วย PyTorch เพียงอย่างเดียว จุดเด่นที่สุดเมื่อเทียบกับโอเพนซอร์ส LLM แบบเดิมคือสามารถ เรียนรู้และทดลองหลักการแกนกลางรวมถึงภาพรวมทั้งหมดได้ในสภาพแวดล้อมที่เรียบง่ายที่สุด พร้อมโครงสร้าง ตัวอย่าง สื่อเสริม และแบบฝึกหัดที่ออกแบบมาอย่างเหมาะสมสำหรับ นักพัฒนาและนักวิจัยมือใหม่ ที่ต้องการทำความเข้าใจ LLM และลงมือปฏิบัติจริง

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

 
GN⁺ 2025-08-21
ความคิดเห็นจาก Hacker News
  • สวัสดีครับ ผมเป็นหนึ่งในทีมหลักที่สร้างโมเดลนี้ขึ้นมา ตอนที่โมเดลนี้ขึ้นหน้าแรกเมื่อสัปดาห์ก่อน ผมได้ตอบคำถามไว้หลายข้อ และถ้ามีคำถามเพิ่มเติมที่นี่ก็ยินดีจะตอบเช่นกัน โดยส่วนตัวผมตื่นเต้นมากที่ตอนนี้ทุกคนเข้าถึงโมเดลนี้ได้แล้ว หวังว่าทุกคนจะนำไปใช้กันได้อย่างดี ลองดู ลิงก์ Q&A ครั้งก่อน
    • อยากรู้ว่าคุณคิดอย่างไรกับการใช้พารามิเตอร์ถึง 2/3 ทั้งหมดไปกับ embedding ในโมเดลขนาดเล็กแบบนี้ ถ้าใช้ vocabulary ระดับไบต์แล้วเอาพารามิเตอร์ไปลงที่ transformer แทน แม้ความเร็วในการประมวลผลโทเค็นจะลดลง แต่ความแม่นยำน่าจะดีขึ้นหรือเปล่า
    • เป็นคำถามพื้นฐานมาก แต่สงสัยว่าทำไมในแอป AI edge gallery พอรันโมเดล tflite บน GPU แล้วมันพิมพ์ออกมาแค่ '[multimodal][multimodal]' แต่ถ้ารันบน CPU กลับทำงานได้ปกติ
    • ผมไม่ได้เป็น MLE (Machine Learning Engineer) เลยอยากรู้ว่าข้อดีข้อเสียของการ reimplement ด้วย PyTorch ของ OP คืออะไร
    • เป็น LM ขนาดเล็กที่น่าทึ่งมาก อยากทราบว่าฝึกด้วยฮาร์ดแวร์อะไร และใช้เวลาฝึกนานแค่ไหน พอจะแชร์ได้ไหม
    • ขอบคุณที่ทำสิ่งนี้ขึ้นมา ผมเคยทำแชตบอต Discord ด้วย BERT มาก่อน การได้อัปเกรดเป็น 270M พารามิเตอร์นี่น่าตื่นเต้นจริงๆ
  • สงสัยว่ามีใครสักคน (หรือ OP) พอจะบอกสูตรสำหรับ fine-tuning โมเดลนี้เพื่อนำไปใช้กับงานภาษาธรรมชาติอย่าง NER ระดับซับซ้อนได้ไหม สัปดาห์ก่อนตอน Gemma3 270M ออก ผมลองทำตามทิวทอเรียลแล้วแต่ไม่สำเร็จ ทิวทอเรียลส่วนใหญ่เน้นงานแชตหรือ roleplaying แต่งานหลักของผมคือดึงและทำความสะอาดเอนทิตีจาก PDF เลยหาคำแนะนำที่เจาะจงกับกรณีใช้งานแบบนี้ได้ยาก คิดว่าโมเดลนี้น่าจะเหมาะกับงานประเภทนั้น
    • ถ้าเป็นงาน NER แบบดั้งเดิมจริงๆ (ดึงเอนทิตีจากช่วงโทเค็นที่ไม่ซ้อนกัน) ผมคิดว่าใช้โมเดล encoder-only (เช่น bert-large-NER) หรือ encoder-decoder (เช่น t5-base-conll03-english) จะเหมาะกว่า แม้ช่วงหลังโมเดลเข้ารหัสแบบนี้จะได้รับความสนใจน้อยลง แต่สำหรับงาน NLP ที่นิ่งแล้วและไม่ต้องการการ generate มันยังมีข้อดีมาก และถ้าเทียบที่จำนวนพารามิเตอร์เท่ากัน ความแม่นยำของ NER ก็น่าจะสูงกว่าโมเดล decoder-only อย่างชัดเจน
    • มีวิธีใช้ไลบรารี Python ชื่อ gemma-llm (อิง JAX) อยู่ ลองดู ทิวทอเรียลที่เกี่ยวข้อง
    • ไม่แน่ใจว่าคุณได้ลอง โมเดล NER นี้ แล้วหรือยัง อยากฟังความเห็นว่ามันเหมาะกับงานแบบไหนเป็นพิเศษ
  • สงสัยว่านี่อยู่ในบริบทเดียวกับสิ่งที่คนเคยทำกันในอดีตอย่าง '<โมเดล> inference written in vanilla Go, Python, Java, etc' หรือเปล่า
  • จากประสบการณ์ของผม ผมเป็น dev ที่เคยใช้แต่โมเดลเชิงพาณิชย์ขนาดใหญ่อย่าง sonnet, ChatGPT ฯลฯ เลยสงสัยว่าโมเดล local ขนาดเล็กแบบนี้เอาไปใช้ทำอะไรได้บ้าง มี use case ที่หยิบไปใช้ได้ทันทีไหม หรือสุดท้ายก็ต้องมี post-processing / training เพิ่มอยู่ดี ช่องว่างระหว่างผู้ใช้เครื่องมือเชิงพาณิชย์กับคนที่เชี่ยวชาญโมเดลดูห่างกันมาก เลยไม่ค่อยแน่ใจว่าจะเชื่อมช่วงกลางนี้อย่างไรดี
    • กรณีใช้งานที่พบบ่อยที่สุด (ไม่นับด้านการศึกษา) มีดังนี้:
      • โมเดลส่วนตัวแบบ on-device (latency ต่ำกว่าเว็บ API และทำ edge processing ได้)
      • การวิจัยเชิงอัลกอริทึม (ทำ prototype ได้เร็วและถูก)
      • งานจัดหมวดหมู่/จำแนกราคาถูก (ไม่จำเป็นต้องใช้ decoder LLM แต่บางครั้งการตอบแบบอิสระก็มีประโยชน์), ตรวจ sanity ของไวยากรณ์, ตัว router (เช่นแนวทางแบบ GPT-5) เป็นต้น
    • เป็นคำถามที่ดีมาก ผมเขียนคำตอบยาวไว้แล้ว ลองดู ลิงก์คำตอบแบบละเอียด
    • มีประโยชน์มากกับงานสรุปความ และการใช้เครื่องมือแบบง่ายมากๆ รันที่ edge ได้โดยไม่ต้องวิ่งออกอินเทอร์เน็ต ต้นทุนเป็นศูนย์
    • น่าจะใช้กับงานที่ต้องการการเก็บความลับและความเป็นส่วนตัวได้ด้วย
  • น่าแปลกใจที่บน Mac CPU พอใช้ KV cache + compiler แล้วกลับเร็วกว่า A100 GPU
    • อาจเป็นเพราะโมเดลมีขนาดเล็กเกินไปจนดึงสมรรถนะของ GPU ออกมาใช้ได้ไม่เต็มที่ เช่น Qwen3 0.6B นั้น A100 GPU เร็วกว่า และดูได้จาก ลิงก์อ้างอิง
    • จากที่เวอร์ชันที่คอมไพล์แล้วบน A100 ช้ากว่า eager ก็ดูเหมือนจะมีบางส่วนที่ยัง optimize ไม่ได้แน่ๆ
    • บน Mac นั้น CPU กับ GPU ใช้หน่วยความจำร่วมกัน ขณะที่ A100 ถ้ามีบางการคำนวณที่ GPU ไม่รองรับก็อาจต้องย้ายข้อมูลกลับไปที่ RAM/CPU เลยเดาว่าน่าจะเกี่ยวกับจุดนี้
    • สงสัยว่าเป็นเพราะ GPU เติม waveform ได้ไม่เต็ม เลยซ่อน memory latency ไม่ได้หรือเปล่า
  • อยากรู้ว่า embedding 270M จะเอาไปใช้ทำอะไรได้บ้าง การใช้ embedding ระดับโทเค็นเหมาะสมหรือไม่ หรือมันให้ค่า embedding ระดับประโยค/เอกสารที่ดีด้วยไหม ถ้าจะเอา embedding ระดับประโยค/เอกสารไปใช้อย่างมีความหมาย จำเป็นต้อง fine-tune แยกหรือเปล่า
  • ถ้าจะฝึกทั้งโมเดลใหม่ตั้งแต่ต้น อยากรู้ว่าจะใช้เวลาประมาณเท่าไรบนชุด GPU ที่ถือว่าสมเหตุสมผล
    • สำหรับอ้างอิง โมเดล 124M ตอนฝึกบน 3090 GPU ทำได้ประมาณ 500,000 โทเค็นต่อแบตช์ และใช้เวลาราว 10 วินาทีต่อ forward+backward ถ้าจะฝึกครบทั้ง 6 ล้านล้านโทเค็น (ปริมาณที่โมเดลนี้ใช้ฝึก) จะกินเวลาราว 4 ปี สรุปสั้นๆ คือ "นานเกินไป"
    • คำว่า "สมเหตุสมผล" ก็ขึ้นอยู่กับนิยาม แต่โดยทั่วไปถ้าจะเทรนจาก scratch แบบล้วนๆ ในสภาพแวดล้อมระดับบ้านก็คงใช้เวลานานมาก นี่ก็เป็นหนึ่งในเหตุผลที่ปล่อยโมเดลนี้ออกมา เพราะตอนนี้ทำให้ได้ผลลัพธ์ที่ใช้งานได้จริงบนฮาร์ดแวร์หลากหลายแบบด้วยการ fine-tuning โดยไม่ต้องฝึกจากศูนย์แล้ว
  • สงสัยว่าโมเดลเล็กมากๆ แบบนี้มีที่ทางในโลกจริงไหม (ไม่นับเรื่องการเรียนรู้หรือวิชาการ)
    • มีแน่นอน! มันไม่ใช่แค่สื่อการสอนหรืองานเล่น แต่มีคุณค่าในการใช้งานจริงทั้งกับงานซ้ำๆ หรือเป็นโมเดลสำหรับนักพัฒนาที่ต้องการความเร็วในองค์กร/เครื่อง local ตัวอย่างหนึ่งได้แรงบันดาลใจจากประสบการณ์ที่เคยต้องประมวลผลข้อความแบบเรียลไทม์ ลองดู ทิวทอเรียล streaming ML ที่ทำด้วย Gemma รุ่นก่อน และ วิดีโอเดโม ตามทฤษฎีตอนนี้น่าจะทำซ้ำสิ่งนี้ได้ด้วย Gemma 270M แล้ว
    • ถ้า fine-tune ด้วย LoRa ก็อาจทำผลงานได้ยอดเยี่ยมมากในโดเมนที่เฉพาะเจาะจง เช่น:
      • ตอบกลับเฉพาะใน JSON schema ที่กำหนด หรือพูดด้วยคาแรกเตอร์เสียงแบบหนึ่งโดยเฉพาะ
      • จัดประเภทข้อความ (เช่น อีเมล, สแปม ฯลฯ)
      • สรุปข้อความปริมาณมาก (อีเมล→ชื่อเรื่อง/slug)
      • จัดแท็กหรือจำแนกตามกฎที่กำหนดไว้ล่วงหน้า, content marketing ฯลฯ
      • ตรวจจับสแปม/ข้อมูลซ้ำ/แฟล็กต่างๆ
      • โมเดลเล็ก "ไม่ฉลาด" แบบนี้กลับมีข้อดีตรงที่มีความรู้เกี่ยวกับโลกน้อยกว่า จึงมักแต่งเรื่องเหลวไหลน้อยกว่า และเหมาะกับงานโดเมนแคบในหลายกรณี
    • มักให้ผลลัพธ์ที่ถูกต้องบ่อยในการแปลหลายภาษาโดยยึดตามข้อความต้นฉบับ (เช่น ใช้กับบทสนทนาสำหรับนักเดินทาง) ตัวอย่าง:
      (ต้นฉบับภาษายูเครน) Rochechouart는 프랑스의 도시, 누벨아키텐 지방의 오트비엔주에 위치… 인구 3637명(2022), 파리 기준 약 360km 남쪽, 리모주에서 34km 서쪽에 위치.
      (ผลลัพธ์แปลจากโมเดล) Rochechouart는 프랑스의 도시로, 누벨아키텐 지역 오트비엔 주에 위치. 인구 3637명(2022). 파리로부터 약 360km, 리옹에서 34km 거리.
      (นโยบายสนับสนุนโซลาร์รูฟเพื่อที่อยู่อาศัยของเวียดนามก็แปลได้ค่อนข้างแม่นยำเช่นกัน)
      
      แหล่งที่มาจากวิกิ: วิกิพีเดียภาษายูเครน, ข่าวเวียดนาม
    • มีประโยชน์กับงานที่โต้ตอบด้วยภาษาธรรมชาติ แต่ไม่คาดหวังให้โมเดลมีความรู้ภายในจำนวนมาก เช่น tool use, embedding หรือกรณีที่ข้อมูลถูกตรวจสอบ/ดึงมาจากภายนอก
  • กดเข้ามานึกว่าเป็นสินค้าใหม่ของอินเทอร์เฟซ 3270 เสียอีก แต่ไม่ใช่อย่างที่คิด
  • เก่งจริงๆ