รายละเอียดของ GPT-4 หลุดออกมา?
(archive.md)- เป็นโมเดลภาษาขนาดมหึมาที่ประกอบด้วยพารามิเตอร์ประมาณ 1.8 ล้านล้านตัว และ 120 เลเยอร์ มีขนาดใหญ่กว่า GPT-3 มากกว่า 10 เท่า
- ใช้สถาปัตยกรรม Mixture of Experts(MoE) ที่มี expert 16 ตัว โดยจะเปิดใช้งานเพียง 2 expert ในแต่ละ forward pass เพื่อลดต้นทุน
- ฝึกด้วยข้อมูลประมาณ 13 ล้านล้านโทเค็น โดยใช้ข้อความ 2 epoch และโค้ด 4 epoch
- เป็น สถาปัตยกรรมมัลติโหมดัล ที่มี vision encoder แยกต่างหาก และหลัง pretrain ข้อความแล้วได้ทำ fine-tuning เพิ่มอีกประมาณ 2 ล้านล้านโทเค็น
- ฝึกด้วย A100 ราว 25,000 ตัวเป็นเวลา 90~100 วัน โดยมี ต้นทุนการฝึกที่ประเมินไว้ราว 63 ล้านดอลลาร์
จำนวนพารามิเตอร์และขนาดโมเดล
- คาดว่า GPT-4 มีขนาดใหญ่กว่า GPT-3 มากกว่า 10 เท่า โดยมี พารามิเตอร์รวมราว 1.8 ล้านล้านตัว กระจายอยู่ใน 120 เลเยอร์
- ในแต่ละ forward pass (การสร้างโทเค็น 1 ตัว) ใช้พารามิเตอร์จริงเพียงประมาณ 280B และประมาณ 560 TFLOPs
- ต่างจากกรณีที่เป็น dense model ล้วน ๆ ซึ่งจะต้องใช้พารามิเตอร์ราว 1.8 ล้านล้านตัวและประมาณ 3,700 TFLOP
- พารามิเตอร์ร่วมสำหรับ attention อยู่ที่ระดับ ประมาณ 55B
สถาปัตยกรรม Mixture of Experts(MoE)
- OpenAI ใช้ โมเดล MoE เพื่อควบคุมต้นทุนให้อยู่ในระดับสมเหตุสมผล
- ภายในโมเดลมี expert 16 ตัว โดยแต่ละ expert มีพารามิเตอร์ประมาณ 111B หากอิงตาม MLP
- ในแต่ละ forward pass จะมีการ route ไปยัง expert 2 ตัว
-
การ route ของ MoE
- ในแวดวงวิชาการมีการพูดถึงอัลกอริทึม route ขั้นสูงสำหรับเลือก expert ตามแต่ละโทเค็นอยู่มาก แต่มีข้อมูลว่า routing ของ GPT-4 ในปัจจุบันนั้น ค่อนข้างเรียบง่าย
-
trade-off ของการเลือกจำนวน expert
- ใน MoE ไม่ได้มีทุกส่วนถูกใช้ตอนสร้างทุกโทเค็น จึงทำให้การประมวลผล inference ยุ่งยากมาก
- บางส่วนจะว่างงานอยู่ ส่งผลให้การใช้ทรัพยากรตอนให้บริการผู้ใช้ลดลง
- งานวิจัยพบว่า expert 64~128 ตัวให้ loss ต่ำกว่า 16 ตัว แต่เป็นผลในเชิงวิจัยล้วน ๆ
- หากมีจำนวน expert มากขึ้น จะทั่วไปข้ามงานหลากหลายได้ยากขึ้นและคอนเวอร์จก็ยากขึ้นด้วย
- ด้วยเหตุนี้ OpenAI จึงเลือกใช้ expert 16 ตัวแบบค่อนข้างอนุรักษ์นิยม
- ใน MoE ไม่ได้มีทุกส่วนถูกใช้ตอนสร้างทุกโทเค็น จึงทำให้การประมวลผล inference ยุ่งยากมาก
ชุดข้อมูล
- GPT-4 ฝึกด้วยข้อมูล ประมาณ 13 ล้านล้านโทเค็น ซึ่งไม่ใช่จำนวนโทเค็นไม่ซ้ำ แต่เป็นตัวเลขที่นับรวมการวนซ้ำตาม epoch
- ใช้ข้อมูลข้อความ 2 epoch และข้อมูลโค้ด 4 epoch
- รวม ข้อมูล instruction fine-tuning หลายล้านแถวที่ได้มาจาก ScaleAI และภายในองค์กร
-
องค์ประกอบการผสมชุดข้อมูล
- จาก 13 ล้านล้านโทเค็นนั้น CommonCrawl และ RefinedWeb มีอย่างละ 5 ล้านล้านโทเค็น
- เมื่อตัดการซ้ำจาก epoch ออก จะยังเหลือข้อมูลลับที่ ไม่ทราบแหล่งที่มา
- มีข่าวลือว่าบางส่วนมาจาก twitter, reddit และ youtube
- แหล่งที่คาดกัน ได้แก่ LibGen (หนังสือมากกว่า 4 ล้านเล่ม), Sci-Hub (งานวิจัยมากกว่า 80 ล้านฉบับ), และ GitHub ทั้งหมด
- มีความเห็นว่าข้อมูลที่หายไปคือ ชุดข้อมูลตำรามหาวิทยาลัยที่เก็บด้วยมือ
- เมื่แปลงเป็น txt แล้วก็สามารถนำไปจัดเป็นรูปแบบ instruction ด้วย self-instruct ได้ง่าย
- สิ่งนี้ทำให้เกิดความรู้สึกว่า GPT-4 “ฉลาด” แม้ในสาขาที่ไม่เกี่ยวกับวิชาเอก
- ยังมีงานวิจัยที่พยายามดึงหนังสือบางส่วนที่ GPT-4 จำได้ออกมาแบบบังคับ เพื่อระบุข้อมูลฝึก
- บางเล่มโมเดลรู้รายละเอียดดีมากจนแทบยืนยันได้ว่าใช้ฝึกจริง และยังจำ id เฉพาะของโจทย์ Project Euler ได้ด้วย
GPT-4 32K context
- ในขั้น pretrain ใช้ ความยาว context 8k (seqlen)
- เวอร์ชัน 32k seqlen เป็นผลลัพธ์จากการนำโมเดล 8k ไป fine-tuning ต่อหลัง pretrain
ขนาดแบตช์
- มีการค่อย ๆ เพิ่มขนาดแบตช์ในคลัสเตอร์อย่างต่อเนื่องเป็นเวลาหลายวัน จนสุดท้ายใช้ batch size 60 ล้าน
- เนื่องจากไม่ใช่ทุก expert จะเห็นทุกโทเค็น จึงเทียบเป็นต่อ expert ได้ราว 7.5 ล้านโทเค็น
- ขนาดแบตช์จริงต้องนำตัวเลขนี้ไปหารด้วย seq len จึงจะคำนวณได้
กลยุทธ์การทำงานแบบขนาน
- ใช้ tensor parallelism แบบ 8-way เพื่อกระจายงานข้าม A100 GPU ทั้งหมด (ข้อจำกัดของ NVLink)
- จากนั้นจึงใช้ pipeline parallelism แบบ 15-way ในระดับที่ไกลกว่านั้น
- อาจใช้ ZeRO Stage 1 และก็มีความเป็นไปได้ว่าจะใช้ FSDP ระดับบล็อก
-
เหตุผลที่ไม่ใช้ FSDP
- ฮาร์ดแวร์อินฟราสตรักเจอร์บางส่วนที่มีอยู่อาจเป็นรุ่นเก่า
- ใน local computing cluster มักอัปเกรดอินฟราฯ เป็นหลาย “เฟส” เพื่อหลีกเลี่ยงการหยุดให้บริการ
- ฮาร์ดแวร์อินฟราสตรักเจอร์บางส่วนที่มีอยู่อาจเป็นรุ่นเก่า
ต้นทุนการฝึก
- GPT-4 ใช้ FLOPS สำหรับการฝึกราว 2.15e25 บน A100 ประมาณ 25,000 ตัวเป็นเวลา 90~100 วัน และมี MFU ราว 32~36%
- อัตราการใช้งานที่ต่ำมากนี้มีสาเหตุจากความขัดข้องจำนวนมากที่ทำให้ต้องรีสตาร์ต checkpoint
- หากสมมติว่า A100 มีค่าใช้จ่ายราว $1 ต่อชั่วโมง การฝึกครั้งนี้เพียงอย่างเดียวจะมีต้นทุนราว 63 ล้านดอลลาร์
- หากอิงปัจจุบัน สามารถ pretrain ได้ด้วย H100 จำนวน 8,192 ตัวในเวลาราว 55 วัน และถ้าคิด H100 ที่ $2 ต่อชั่วโมงจะมีต้นทุนราว 21.5 ล้านดอลลาร์
ต้นทุน inference ของ GPT-4
- GPT-4 มีต้นทุน สูงกว่า Davinci ขนาด 175B 3 เท่า
- มาจากการต้องใช้คลัสเตอร์ที่ใหญ่กว่าและมีอัตราการใช้งานต่ำกว่ามาก
- การประเมินต้นทุน: ใช้ A100 จำนวน 128 ตัวเพื่อทำ inference GPT-4 8k seqlen จะมีต้นทุน $0.0049 เซนต์ต่อ 1k โทเค็น และถ้าใช้ H100 จำนวน 128 ตัวจะอยู่ที่ $0.0021 เซนต์
- โดยตั้งอยู่บนสมมติฐานว่ารักษาอัตราการใช้งานให้สูงพอและคง batch size ขนาดใหญ่ได้
Multi-Query Attention(MQA)
- OpenAI เองก็ใช้ MQA เช่นเดียวกับที่อื่น
- ต้องใช้เพียง 1 head จึงลดการใช้หน่วยความจำของ KV cache ได้มาก
- ถึงอย่างนั้น GPT-4 แบบ 32k seqlen ก็ยังไม่สามารถรันบน A100 40GB ได้ และเวอร์ชัน 8k ก็มีข้อจำกัดด้าน batch size สูงสุด
Continuous Batching
- OpenAI ได้ทำทั้ง variable batch size และ continuous batching
- ทำให้บรรลุทั้งการยอมรับค่า latency สูงสุดในระดับหนึ่งและการเพิ่มประสิทธิภาพต้นทุน inference ไปพร้อมกัน
วิชันมัลติโหมดัล
- ใช้ vision encoder แยกจาก text encoder แล้วเชื่อมด้วย cross-attention เป็น สถาปัตยกรรมคล้าย Flamingo
- มีการเพิ่มพารามิเตอร์เพิ่มเติมบนโมเดล 1.8 ล้านล้านตัว
- หลัง pretrain เฉพาะข้อความแล้ว ได้ fine-tuning เพิ่มอีกประมาณ 2 ล้านล้านโทเค็น
- เดิมตั้งใจจะฝึก vision model ตั้งแต่ต้น แต่เนื่องจากความพร้อมยังไม่พอ จึงเริ่มจากข้อความเพื่อลดความเสี่ยง
- เป้าหมายหลักของความสามารถด้านภาพคือการสร้าง autonomous agent ที่อ่านหน้าเว็บและถอดความเนื้อหาในภาพและวิดีโอ
- ข้อมูลฝึกรวมถึงข้อมูล LaTeX/ข้อความที่เรนเดอร์แล้ว, สกรีนช็อตหน้าเว็บ, การสุ่มเฟรมจากวิดีโอ YouTube และทรานสคริปชันที่อิง Whisper
Speculative Decoding
- มีความเป็นไปได้ว่า GPT-4 ใช้ speculative decoding ในการ inference (ยังไม่แน่ชัด 100%)
- ใช้โมเดลที่เล็กและเร็วกว่าเพื่อถอดรหัสหลายโทเค็นล่วงหน้า แล้วค่อยป้อนเข้า oracle model ขนาดใหญ่ในแบตช์เดียว
- หากการคาดการณ์ของโมเดลเล็กถูกต้อง โมเดลใหญ่จะยอมรับและถอดรหัสหลายโทเค็นในแบตช์เดียว
- หากโมเดลใหญ่ปฏิเสธ แบตช์ที่เหลือจะถูกทิ้งและดำเนินต่อด้วยโมเดลใหญ่
- ทฤษฎีสมคบคิดช่วงหลังเรื่องคุณภาพ GPT-4 ลดลง อาจมีสาเหตุจาก oracle model ยอมรับลำดับความน่าจะเป็นต่ำจากโมเดล speculative decoding
สถาปัตยกรรม inference
- การ inference ทำงานบน คลัสเตอร์ 128 GPU และมีหลายคลัสเตอร์กระจายอยู่ตามดาต้าเซ็นเตอร์หลายแห่ง
- ทำงานด้วย tensor parallelism แบบ 8-way และ pipeline parallelism แบบ 16-way
- ต่อ 1 โหนด 8 GPU จะถือพารามิเตอร์ราว 130B
- โมเดลมี 120 เลเยอร์ จึงถูกกระจายโหลดไปยัง 15 โหนด
- โหนดแรกที่ต้องคำนวณ embedding ด้วย อาจมีจำนวนเลเยอร์น้อยกว่า
- จากตัวเลขเหล่านี้ หากทำตามค่าที่เหมาะสมแบบ chinchilla ก็ควรฝึกด้วยโทเค็นมากกว่านี้ 2 เท่า ซึ่งบ่งชี้ถึง ความยากในการจัดหาข้อมูลคุณภาพสูง
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ก่อนหน้านี้ก็เคยมีโพสต์ที่นี่ https://news.ycombinator.com/item?id=36671588 และที่นี่ https://news.ycombinator.com/item?id=36674905 แล้ว
แหล่งที่มาต้นทางคือ https://www.semianalysis.com/p/gpt-4-architecture-infrastruc... และโพสต์ฝั่ง Twitter ดูเหมือนแทบจะเป็นการถอดความจากบล็อกจริง ๆ เลย จึงดูเหมือนว่าทวีตถูกลบไปเพราะเหตุนี้
เรื่องที่ใช้ Mixture of Experts (MoE) นั้นใหม่และน่าสนใจมาก และอยากรู้เพิ่มเติมว่าพวกเขาทำให้มันทำงานได้อย่างไร ความแตกต่างในการนำไปใช้อาจอธิบายความแกว่งของคุณภาพเอาต์พุตที่ผู้คนสังเกตเห็นได้ ส่วน โมเดลวิชัน ที่กล่าวถึงตรงนี้ก็ยังมีข้อมูลน้อยมาก นอกจากเดโมไม่กี่ชิ้นเมื่อหลายเดือนก่อน เลยกำลังรอให้เปิดเผยอยู่
ในบริบทของปัญญาประดิษฐ์ “MoE” โดยทั่วไปหมายถึง “Mixture of Experts” และว่ากันว่าเป็นเทคนิคแมชชีนเลิร์นนิงที่แบ่งปัญหาออกเป็นปัญหาย่อย ให้ “ผู้เชี่ยวชาญ” (โมเดล) ที่เชี่ยวชาญเฉพาะด้านแก้แต่ละปัญหาย่อย แล้วนำเอาต์พุตมารวมกัน
ถ้าเรื่องที่ GPT-4 ใช้ MoE เป็นเรื่องใหม่จริง ก็อาจช่วยเพิ่มความน่าเชื่อถือให้คำอ้างนั้นได้ระดับหนึ่ง
สิ่งนี้แสดงให้เห็นว่าโมเดลภาษาขนาดใหญ่นั้นแตกต่างจากปัญญาประดิษฐ์ทั่วไปอย่างสิ้นเชิง การเอาเครื่องคิดเลขมาต่อพ่วงเป็นแค่ทางแก้เฉพาะหน้า และแม้จะเป็นทางแก้เฉพาะหน้าที่มีประโยชน์ แต่ผมไม่คิดว่ามันจะทำให้ทำวิทยาศาสตร์ได้
อย่างน้อยตอนนี้โพสต์นี้ก็อ่านได้ฟรี
ถ้านี่เป็นเรื่องจริง การฝึกใช้ไป 21 ยอตตาฟลอปส์ จำไม่ได้แล้วว่าครั้งสุดท้ายที่เห็นคำนำหน้า yotta- คือเมื่อไร
และต้นทุนการฝึก GPT-4 ก็เหลือราวหนึ่งในสามของเมื่อหนึ่งปีก่อน ความเร็วที่ราคาการฝึกโมเดลภาษาขนาดใหญ่ลดลงนั้นน่าทึ่งจริง ๆ และเป็นข่าวดีสำหรับโอเพนซอร์ส บันทึกของ Google ที่บอกว่าไม่มีคูเมืองนั้นถูกต้องแล้ว
ต่อให้ราคาข้าวขายส่งอยู่ที่ 0.001 ดอลลาร์ต่อกิโลกรัม ถ้าผมมี 1 ล้านดอลลาร์และคุณมี 1,000 ดอลลาร์ ผมก็ยังซื้อข้าวได้มากกว่าคุณ 1,000 เท่าอยู่ดี
อีกอย่าง ในหลายการใช้งาน ความฉลาดกว่าย่อมดีกว่า ถ้าจ่ายเพิ่มไม่กี่เซนต์แล้วได้คำตอบที่แม่นยำขึ้น เงินไม่กี่เซนต์นั้นก็คุ้มค่าที่จะจ่ายเสมอ ตราบใดที่สามารถฝึกโมเดลที่ใหญ่ขึ้นและดีขึ้นได้ด้วยฮาร์ดแวร์และข้อมูลที่มากขึ้น นั่นแหละคือคูเมือง
ผมทึ่งในเทคโนโลยีนี้ แต่ครั้งนี้รู้สึกกลัว เพราะจินตนาการได้ยากว่ามันจะหมายถึงอะไรในอนาคต บางทีนี่อาจเป็นสิ่งที่จะฆ่าเว็บแบบเปิด และจะมีกฎหมายที่เกี่ยวข้องผ่านออกมาเพื่อฝังเว็บแบบเปิดไปเลย
ประโยคที่ว่า “ทฤษฎีสมคบคิดที่ว่า GPT-4 รุ่นใหม่คุณภาพลดลง อาจเป็นเพราะโมเดล oracle ยอมรับลำดับความน่าจะเป็นที่ต่ำกว่าจากโมเดล speculative decoding” สุดท้ายแล้วก็เท่ากับยอมรับว่า การคาดเดานั้นอาจถูกต้อง และยังเสนอแม้กระทั่งกลไกเฉพาะ แต่ก็ยังดูหมิ่นคนที่ยกประเด็นนี้ขึ้นมาและทำ gaslighting ต่อไป
เพราะยังไม่ได้พิสูจน์จึงเป็นทฤษฎี และเพราะผู้คนคิดว่า OpenAI จงใจลดคุณภาพบริการของตัวเอง จึงเป็นทฤษฎีสมคบคิด
คนนี้ดูเหมือนไม่รู้ว่าตัวเองกำลังพูดอะไร เขาโพสต์ เรื่องไร้สาระ แบบนี้ลง Twitter อยู่เรื่อย ๆ โดยมากก็แค่คัดลอกมาแปะแล้วเติมสีสันเพิ่มนิดหน่อย
เช่น MoE ก็ว่าไปอย่าง แต่การบอกว่าเป็น ผู้เชี่ยวชาญ 16 ตัว ตัวละ 111,000 ล้านพารามิเตอร์ นั้นฟังไม่ขึ้น GPT-3 เองก็มี 175,000 ล้านพารามิเตอร์แล้ว และดูไม่น่าเป็นไปได้ที่พวกเขาจะลดขนาดโมเดลฐานลงในอนาคต ตัวเลขที่น่าเป็นไปได้กว่าคือราว 220,000 ล้านพารามิเตอร์ต่อโมเดล พร้อมโมเดลผู้เชี่ยวชาญ 8 ตัว โดยมีต้นทุนการอนุมานรวมเท่าเดิม
ตัวเลขข้อมูลฝึก 13 ล้านล้านโทเค็น ก็ดูเหมือนหยิบมาจากอากาศ
Google ได้ศึกษา Mixture of Experts เพื่อขยายโมเดลภาษาขนาดใหญ่ โมเดล GLaM ที่ประกาศในปี 2022 มี 1.7 ล้านล้านพารามิเตอร์และผู้เชี่ยวชาญ 64 ตัว
https://icml.cc/media/icml-2022/Slides/17378.pdf
“Sam Altman จะไม่บอกคุณหรอกว่า GPT-4 มี 220,000 ล้านพารามิเตอร์ และใช้ชุดน้ำหนัก 8 ชุดในโมเดลผสมแบบ 16 ทาง” George Hotz กล่าวไว้ในบทสัมภาษณ์กับ Lex Fridman เมื่อไม่นานมานี้
ดูจากปฏิกิริยาของ Lex แล้ว เขาก็ดูเหมือนจะรู้ว่านี่เป็นเรื่องจริง
เรื่องนี้ หลักฐานยังไม่เพียงพอ คนที่รู้ว่า GPT-4 ทำงานอย่างไรกันแน่มีแค่พนักงาน OpenAI เท่านั้น ที่เหลือก็ได้แต่คาดเดา
อย่างไรก็ตาม ซอสลับและคูเมืองอยู่ที่ ข้อมูล เคยได้ยินข่าวลือว่า OpenAI จ่ายเงินให้ผู้เข้าแข่งขัน competitive programming เขียนและใส่คอมเมนต์ในโค้ดที่มีข้อมูลอย่างเช่น complexity
ผมสงสัยมาตลอดว่า ทั้งที่ Twitter คิดค่าเข้าถึง API แพงเกินควรและมีมาตรการป้องกันการสแครป แต่ บริการฟรีแบบพรีเมียม อย่าง Thread Reader ยังดำเนินการอยู่ได้อย่างไร
แผน API ที่ถูกที่สุดซึ่งมีสิทธิ์อ่านได้อยู่ที่เดือนละ 100 ดอลลาร์ อ่านทวีตได้ 10,000 รายการ ดังนั้นจึงสร้างหน้าแบบ on-demand ได้แค่ราว 500 หน้าเท่านั้น
const puppeteer = require('puppeteer');บทความนี้มีจุดแปลก ๆ เมื่อเทียบกับความมั่นใจแบบ “รู้ตัวเลขทั้งหมด”
บอกว่า “การ pre-training ในปัจจุบันทำได้ด้วย H100 ประมาณ 8192 ตัว ใช้เวลาประมาณ 55 วัน ที่ราคา H100 ชั่วโมงละ 2 ดอลลาร์ รวม 21.5 ล้านดอลลาร์” แต่ไม่เข้าใจว่าทำไมถึงปรับทั้งขนาดระบบและเวลาเทรนด้วยตัวเลขที่ตั้งขึ้นเอง
อีกทั้งยังบอกว่า MoE จัดการยากในการ inference เพราะในการสร้างแต่ละ token ไม่ได้ใช้ทุกส่วนของโมเดล บางส่วนว่าง บางส่วนถูกใช้ จึงส่งผลเสียต่อ utilization ตอนให้บริการผู้ใช้ แต่ไม่ชัดว่าเป็น utilization ของอะไร หน่วยความจำหรือเปล่า? ถ้ากังวลเรื่อง utilization ใน inference ขนาดนั้น ก็แค่รัน โมเดลที่ไม่ใช่ MoE ก็ได้ไม่ใช่หรือ
ส่วนเรื่อง MQA ก็เขียนว่า “ด้วยเหตุนี้จึงต้องมี head เพียง 1 ตัว และลดความจุหน่วยความจำของ KV cache ได้อย่างมาก” ซึ่งใกล้เคียงแต่ผิด ต้องมี Key และ Value head เพียงหนึ่งตัว แต่จำนวน Query head ยังเท่าเดิม
ผมเดาว่าคนที่พอรู้เรื่องใช้สูตรจากงานวิจัย scaling ปี 2020 แล้วสร้าง ระบบในจินตนาการ ที่คณิตศาสตร์ถูกต้องขึ้นมา ผมเองก็อาจแต่งบทความคล้าย ๆ กันให้ดูน่าเชื่อได้ แต่เพราะมันเกินระดับความรู้ของผม ก็คงออกมาใกล้เคียงแต่ผิดชัดเจนเช่นกัน เลยรู้สึกน่าสงสัยมาก
ประเด็นหลักของ MQA คือการแชร์นี้ทำให้ KV cache เล็กกว่ากรณีทั่วไปตามจำนวน head ต่อให้มี Query head หลายตัวก็ไม่ส่งผลต่อขนาดแคช และในทั้งด้านความจุหน่วยความจำกับแบนด์วิดท์ ปัจจัยจำกัดของการถอดรหัสแบบ MHA ก็คือแคช