- LLM โอเพนซอร์สของ OpenAI อย่าง GPT-OSS-120B ถูกปรับแต่งให้ทำงานในสภาพแวดล้อม NVIDIA GPU ได้ด้วยประสิทธิภาพการประมวลผล มากกว่า 500 โทเค็นต่อวินาที
- ทดสอบเฟรมเวิร์ก TensorRT-LLM, vLLM, SGLang และเฟรมเวิร์ก การอนุมาน อื่นๆ แบบขนานพร้อมกัน และรองรับสถาปัตยกรรม Hopper กับ Blackwell
- แก้ไขบั๊กความเข้ากันได้ และเพิ่มการรวมรูปแบบการตอบสนองใหม่อย่าง Harmony, KV cache-aware routing และการถอดรหัสแบบคาดการณ์บนพื้นฐาน Eagle ลงในงานปรับแต่งประสิทธิภาพ
- เปรียบเทียบ Tensor Parallelism และ Expert Parallelism แล้วพบว่าเพื่อความหน่วงต่ำให้เลือกการกระจายงานแบบเทนเซอร์ และใช้ TensorRT-LLM MoE Backend ใน Blackwell
- มีแผนปรับปรุงเพิ่มเติมต่อไป โดยรวมถึง Speculative Decoding ที่ใช้โมเดล "draft" ขนาดเล็กเพื่อเพิ่มประสิทธิภาพการทำงาน
ภาพรวม
- เมื่อ GPT-OSS-120B ซึ่งเป็นโมเดลภาษาขนาดใหญ่โอเพนซอร์สล่าสุดของ OpenAI ถูกเผยแพร่พร้อมกัน Baseten ก็ท้าทายเป้าหมายในการสร้างประสิทธิภาพสูงสุด
- Baseten เป็นพันธมิตรเปิดตัวอย่างเป็นทางการของ OpenAI
- จากข้อมูลใช้งานจริงที่เผยแพร่บน OpenRouter แสดงให้เห็นประสิทธิภาพที่เหนือกว่าคู่แข่งในสภาพแวดล้อม NVIDIA GPU
- ด้วยความเชี่ยวชาญของ Flexible Inference Stack และทีมวิศวกรโมเดล ทำให้สามารถปรับปรุงแพตช์ประสิทธิภาพตามเวลาได้อย่างรวดเร็ว
- ภายในเวลาไม่กี่ชั่วโมงระหว่างการเขียนบล็อก ยังเพิ่ม throughput ได้อีก 100 โทเค็นต่อวินาทีและรักษา uptime ที่ 100%
ความพยายามในการเพิ่มประสิทธิภาพการอนุมาน
- ทำการทดสอบและ benchmark กับเฟรมเวิร์กการอนุมานหลากหลาย เช่น TensorRT-LLM, vLLM, SGLang
- ทำงานควบคู่กับการรองรับสถาปัตยกรรม GPU Hopper และ Blackwell
- ผสานเข้ากับส่วนประกอบสำคัญต่างๆ ได้แก่ Baseten Flexible Inference Stack และ NVIDIA Dynamo
- นำเทคนิคการเพิ่มประสิทธิภาพที่ผ่านการตรวจสอบมาใช้ต่อเนื่อง เช่น KV cache-aware routing และ Speculative decoding (Eagle-based)
ด้านล่างคือขั้นตอนสำคัญเพื่อให้ได้ทั้งประสิทธิภาพระดับ SOTA และรองรับ context window แบบครบถ้วนพร้อมกัน
Step 1: การรัน inference ครั้งแรก
- จุดเริ่มต้นคือการรัน baseline inference ให้เร็วที่สุดในวิธีใดก็ได้
- นักวิศวกรหลายคนทำการทดลอง vLLM, SGLang, TensorRT-LLM พร้อมๆ กันบนพื้นฐานการออกแบบจาก GPU
- ปรับระบบให้ TensorRT-LLM ซึ่งมีประสิทธิภาพดีที่สุดสามารถทำงานได้อย่างรวดเร็ว
- ได้รับการรองรับ TensorRT-LLM ทั้งบน Hopper (มี H100 GPU มากที่สุด) และ Blackwell (B200 GPU ที่มีความเร็วสูงกว่า)
- ความยืดหยุ่นของ Baseten Inference Runtime ทำให้รองรับสถาปัตยกรรมแบบใหม่และการสลับเครื่องมือในสแตกได้อย่างรวดเร็ว
Step 2: การแก้บั๊กความเข้ากันได้
- การกำเนิดสถาปัตยกรรมโมเดลใหม่มักมาพร้อมบั๊กที่เกิดจากการผสานเข้ากับเฟรมเวิร์กบ่อยครั้ง
- GPT OSS มีการเพิ่มเทคโนโลยีใหม่ เช่น รูปแบบการตอบกลับ Harmony จึงเกิดบั๊กเมื่อรวมกับเฟรมเวิร์กเดิม
- เพื่อคงความเร็วและความแม่นยำไว้พร้อมกัน มีการแก้ไขและทดสอบซ้ำอย่างต่อเนื่อง และการปรับปรุงที่มีประสิทธิผลถูกส่งกลับเป็นโอเพนซอร์ส
- ผ่านความร่วมมือของชุมชนโอเพนซอร์สทั่วโลก ทำให้เส้นทางการเพิ่มประสิทธิภาพและการแก้บั๊กที่หลากหลายเกิดขึ้นได้อย่างรวดเร็ว
Step 3: การปรับแต่งโมเดล
- แม้ OpenAI จะระบุว่า GPT OSS 120B ทำงานได้บน H100 ตัวเดียว แต่ในการปฏิบัติก็พบว่าการขนานด้วย GPU 4~8 ตัว ให้ผลการทำงานดีกว่า
- Tensor Parallelism มีข้อได้เปรียบด้าน latency ในขณะที่ Expert Parallelism มีข้อได้เปรียบด้าน throughput ของระบบ
- เนื่องจาก Baseten ตั้งเป้าหมายที่การปรับแต่งความหน่วง จึงเลือกใช้ Tensor Parallelism
- บน Blackwell มีการใช้ TensorRT-LLM MoE Backend เพื่อยกระดับประสิทธิภาพ CUDA kernel เมื่อเทียบกับ Triton backend เดิม
- เปิดเผยการตั้งค่าสำหรับ Hopper และ Blackwell โดยแยกตามสภาพแวดล้อม และใน Model API ใช้การตั้งค่าที่อิง Blackwell
การปรับแต่งประสิทธิภาพเพิ่มเติม
- แม้ว่าการปรับแต่งรอบแรกจะทำให้ได้ throughput และ latency ระดับ SOTA แล้ว แต่ยังมีช่องว่างในการพัฒนาปรับปรุงอย่างมาก
- แผนอัปเดตสำคัญถัดไปคือการนำ Speculative Decoding มาใช้
- วิธีนี้ใช้โมเดล "draft" ขนาดเล็กที่เร็วกว่าในการสร้างโทเค็นคาดเดา และให้โมเดลหลักทำการตรวจสอบ
- Baseten แนะนำ Eagle 3 แต่ภายในสแตก inference มีการใช้งานอัลกอริทึมมากกว่า 10 แบบที่ปรับได้ตามสถานการณ์
- Speculative decoding ช่วยเพิ่มความเร็วอย่างมีประสิทธิภาพ โดยประมวลผลการอนุมานหลายโทเค็นในครั้งเดียว
2 ความคิดเห็น
ก็อยากมี H100 ตัวเล็ก ๆ น่ารักตัวเดียวให้ฉันสักคนมอบให้สักหน่อยนะ...
ความคิดเห็นจาก Hacker News
ผมเลยไปค้นลิ้นชักอะไหล่ที่บ้านดู แต่ไม่ว่าจะหายังไงก็ไม่เจอว่าทำไมจึงไม่มี GPU H100 ราคา 25,000 ดอลลาร์
ผมลองใช้ GPT-OSS-120B บน MacBook Pro (M4, 128GB RAM) ระหว่างเดินทางด้วยเครื่องบินข้ามมหาสมุทรแอตแลนติก เร็วเฉพาะเมื่อหน้าต่างบริบทเล็กและโทเคนรวมไม่มาก เมื่อเกิน 10,000 โทเคน จะมีการประมวลผลเกือบทั้งหมดที่ช้าลงและคิวยาว MCPs, การค้นเว็บ และการ patch URL กลายเป็นสิ่งสำคัญมากแล้วในการใช้งาน LLM หากไม่มีฟีเจอร์พวกนี้ utility ของ LLM ก็ลดลงมาก เครื่องมือโค้ดดิ้งแบบ CLI/TUI สำหรับสภาพแวดล้อมออฟไลน์ที่ผมตั้งไว้ล่วงหน้า (เช่น opencode) ทำงานร่วมกับโมเดลได้ไม่ค่อยน่าเชื่อถือ โมเดล OSS ยังมีไฮไลต์อื่น ๆ อีกด้วย นอกเหนือจากเรื่องที่ถูกพูดถึงเยอะในคอมเมนต์ก่อน ๆ
iogpu.wired_limit_mbอย่างไร ค่าเริ่มต้นทำให้ GPU core ใช้ RAM ได้แค่ประมาณ 70% หรือราว 90GB เท่านั้น ถ้าจะใช้เพิ่มกว่านั้นต้องปรับค่าหลายวิศวกรรัน vLLM, SGLang, TensorRT-LLM ควบคู่กันไป ตอนนี้ TensorRT-LLM ได้ยินกันว่าเร็วสุด แต่โดยปกติเป็นตัวที่ตั้งค่ายากที่สุด รองรับสถาปัตยกรรมใหม่ ๆ ไม่ค่อยทัน และต้องคอมไพล์โมเดลตรงบนสแต็กฮาร์ดแวร์-ไดรเวอร์-ไลบรารีที่ตรงกับ production เลยใช้เวลามาก มัลติโมดัลช่วงหนึ่งแทบเป็นไปไม่ได้ และโมเดลมัลติโมดัลตัวอย่างของ LLaMA เองก็ยังไม่ทำงานอย่างถูกต้อง ในมุมมองคุ้มค่าหรือไม่ยังน่าสงสัย อย่างเช่นถ้ารัน GPT-OSS-120B บน H100 ด้วย vLLM มันทำงานได้ดีมากและคงที่ที่ 130~140 t/s จากชื่อดูเหมือน GPU ตัวเดียวจะได้ 500 t/s แต่จริง ๆ แล้วเป็น tensor parallel setup การมีแพ็กเกจ TensorRT-LLM แยกไว้ให้ gpt-oss ก็รู้สึกแปลก ๆ สักหน่อย และตัว TRT-LLM เองก็เป็นเครื่องมือที่ค่อนข้างหงุดหงิดมาก
GPT-OSS 20B ติดตั้งง่ายมาก ขอบคุณ Llama ที่ช่วยให้รันบน Mac ได้ใน 5 นาที ถ้ามี CPU พอ ก็รัน 120B ได้ไม่ยาก ที่บ้านเพียงโหลดไฟล์ GGUF ลงเซิร์ฟเวอร์ inference ของ LLM,
git pull, แล้ว rebuild llama-server ก็จบ ได้ 40 t/s โดยไม่แตะตั้งค่า และ 50 t/s เมื่อจูนเล็กน้อย น่าเสียดายว่า 120B ตอนนี้มีโมเดลที่ดีกว่าออกมาแล้วหลายตัว จึงไม่จำเป็นต้องรันเสียมากนัก งานของ ggerganov และทีม llama.cpp ที่ทำให้ LLM ใช้ได้ในเครื่องคอมพิวเตอร์ส่วนบุคคลได้จริง ๆ ถือว่าทำได้ยอดเยี่ยมจากที่อ่านมานี้ ผมได้รู้ว่าเพื่อให้โมเดลทำงานดีจริง ๆ ต้องการการ preprocessing และ tuning ปริมาณมาก ซึ่งผมไม่เคยรู้มาก่อน คิดว่าเฉพาะดีฟอลต์ค่านั้นพอ
ในแผน AI Action ของสหรัฐฯ ข้อ “ส่งเสริม AI แบบโอเพ่นซอร์สและ open-weight” อยู่ถัดจากข้อ “ให้ frontier AI ปกป้องเสรีภาพในการแสดงความคิดเห็นและคุณค่าของสหรัฐฯ” ทันที ทั้งที่ความสัมพันธ์ไม่ค่อยสมเหตุสมผล แต่การอ่าน OSS model ของ OpenAI ในจังหวะนี้ก็รู้สึกไม่ค่อยสบายใจเหมือนกัน อย่างไรก็ตาม ผมชอบที่ผู้พัฒนาโมเดล OSS พูดถึงเรื่องฮาร์ดแวร์ เพราะสำหรับนักพัฒนาส่วนใหญ่ ฮาร์ดแวร์คืออุปสรรคเข้าถึงที่สำคัญ การได้อ่านเรื่องนี้ทำให้ยินดี
มีคนรู้จักเว็บไซต์ที่บอกได้ชัด ๆ ว่า LLM ตัวไหนทำงานได้กับ OS อะไรและ GPU อะไรบ้างหรือไม่ โดยที่การคาดคำนวณ VRAM ที่น่าเชื่อถือที่สุดที่เคยเจอคือ จำนวนพารามิเตอร์ × (Precision/8) × 1.2 (อ้างอิง)
ผมอยากจะบอกว่าการหาเลขที่ชัดเจนอย่างขนาด array จริงของ GPT-OSS-120B นั้นยากกว่าที่คิด ถ้าภาษาเป็น static typed ก็น่าจะมองขนาด array ได้ง่าย แต่ผมอยากรู้ว่าข้อมูลจริง (ไม่ใช่เฉพาะน้ำหนัก) ไหลผ่านอย่างไร และ output stream กว้างขนาดไหน กำลังค้นหาใน repo GitHub ของ gpt-oss เพื่อดูว่าบน gigabit Ethernet อัตราแบนด์วิธการส่งออกโทเคนสูงสุดเป็นเท่าไร แต่ไม่ค่อยพบข้อมูล
GPT-OSS รันเร็วขึ้นบนชิป Blackwell ด้วยการรองรับ fp4 ตอนนี้ผมกำลังพัฒนา training/inference engine ด้วย Rust และเพิ่มการรองรับ fp8, fp4 ให้กับ cudarc และ candle ผ่าน PRs (cudarc PR, candle PR) เพื่อรองรับโมเดลเหล่านี้ใน engine ของ Mixlayer