- Mixtral 8x7B เป็นโมเดล Sparse Mixture of Experts (SMoE) ที่คงโครงสร้างพื้นฐานของ Mistral 7B ไว้ แต่เปลี่ยนบล็อกฟีดฟอร์เวิร์ดของแต่ละเลเยอร์ให้เป็นผู้เชี่ยวชาญ 8 ตัว และเผยแพร่แบบ open weights ภายใต้ไลเซนส์ Apache 2.0
- ในแต่ละโทเคน เราเตอร์จะเลือกคำนวณเฉพาะ ผู้เชี่ยวชาญ 2 ตัวจากทั้งหมด 8 ตัว ดังนั้นแม้จะเข้าถึงพารามิเตอร์ 47B ต่อโทเคน แต่พารามิเตอร์ที่ใช้งานจริงระหว่าง inference จะถูกจำกัดไว้ที่ 13B
- ฝึกด้วยขนาดบริบท 32k โทเคน และในภาพรวมของ benchmark ที่ประเมินไว้ มีประสิทธิภาพเหนือกว่าหรือใกล้เคียงกับ Llama 2 70B และ GPT-3.5 โดยเฉพาะงานคณิตศาสตร์ การสร้างโค้ด และงานหลายภาษา
- Mixtral 8x7B – Instruct เป็นโมเดลแชตที่เรียนรู้การทำตามคำสั่งด้วย supervised fine-tuning และ Direct Preference Optimization (DPO) โดยในการประเมินโดยมนุษย์ทำผลงานเหนือกว่า GPT-3.5 Turbo, Claude-2.1, Gemini Pro และ Llama 2 70B-chat
- โครงสร้างผู้เชี่ยวชาญแบบ sparse ช่วยเพิ่มจำนวนพารามิเตอร์รวมของโมเดล พร้อมควบคุมปริมาณการคำนวณต่อโทเคน ทำให้คาดหวัง inference ที่เร็วเมื่อ batch size ต่ำ และ throughput สูงเมื่อ batch size ใหญ่
โมเดลที่เผยแพร่และประสิทธิภาพบน benchmark
- Mixtral 8x7B เป็นโมเดล open weights แบบ Sparse Mixture of Experts (SMoE) และสามารถใช้งานได้ทั้งเชิงวิชาการและเชิงพาณิชย์ภายใต้ไลเซนส์ Apache 2.0
- มีการเผยแพร่ทั้งโมเดลพื้นฐานและ Mixtral 8x7B – Instruct สำหรับการทำตามคำสั่ง
- มีโค้ดและเว็บเพจให้ใช้งาน
- ในหลาย benchmark ทำคะแนนเหนือกว่าหรืออยู่ในระดับเทียบเท่า Llama 2 70B และ GPT-3.5
- ในงานที่ต้องใช้คณิตศาสตร์ การสร้างโค้ด และความเข้าใจหลายภาษา แสดงประสิทธิภาพที่แข็งแกร่งกว่า Llama 2 70B
- ได้รับการยืนยันว่าสามารถค้นคืนข้อมูลใน context window 32k โทเคนได้ โดยไม่ขึ้นกับตำแหน่งของข้อมูลหรือความยาวของซีเควนซ์
โครงสร้าง Sparse Mixture of Experts
- Mixtral เป็น transformer แบบ decoder-only และแทนที่ บล็อกฟีดฟอร์เวิร์ด ของ transformer ทั่วไปด้วยเลเยอร์ Mixture-of-Experts
- เครือข่ายเราเตอร์ของแต่ละเลเยอร์จะเลือก ผู้เชี่ยวชาญ 2 ตัว จากผู้เชี่ยวชาญ 8 ตัวสำหรับแต่ละโทเคน
- เอาต์พุตของผู้เชี่ยวชาญที่ถูกเลือกจะถูกนำมารวมกันแบบ weighted sum
- การเลือกผู้เชี่ยวชาญอาจเปลี่ยนไปในแต่ละ timestep
- โทเคนหนึ่งตัวสามารถเข้าถึงพารามิเตอร์ 47B ได้ แต่ พารามิเตอร์ที่ active ซึ่งใช้จริงในการ inference คือ 13B
- โครงสร้างนี้เป็นวิธีเพิ่มจำนวนพารามิเตอร์รวมของโมเดล พร้อมควบคุมต้นทุนและ latency ในการประมวลผลโทเคน
วิธีคำนวณของเลเยอร์ MoE
- เอาต์พุตของโมดูล MoE คำนวณเป็น weighted sum ของเอาต์พุตจากเครือข่ายผู้เชี่ยวชาญ โดยค่าน้ำหนักกำหนดจากเครือข่าย gating
- หากเวกเตอร์ gating เป็นแบบ sparse ก็ไม่จำเป็นต้องคำนวณเอาต์พุตของผู้เชี่ยวชาญที่มีค่า gate เป็น 0
- Mixtral ใช้ softmax กับค่า logit อันดับบนสุด K ตัวจากเลเยอร์เชิงเส้น
- K เป็นไฮเปอร์พารามิเตอร์ที่กำหนดจำนวนผู้เชี่ยวชาญที่จะใช้ต่อโทเคน
- ใน Mixtral ตั้งค่าไว้เป็น K = 2
- เมื่อเพิ่มจำนวนผู้เชี่ยวชาญ n และตรึงค่า K ไว้ จะสามารถเพิ่มจำนวนพารามิเตอร์รวมได้ ขณะที่ปริมาณการคำนวณต่อโทเคนคงที่ในทางปฏิบัติ
- ดังนั้นจำนวนพารามิเตอร์ sparse รวมจึงแยกออกจากจำนวน พารามิเตอร์ที่ active ซึ่งใช้ในการประมวลผลโทเคนแต่ละตัว
การใช้งานจริงและประสิทธิภาพ inference
- เลเยอร์ MoE สามารถรันได้อย่างมีประสิทธิภาพแม้บน GPU เดี่ยว ผ่าน kernel เฉพาะทาง
- Megablocks แสดงการคำนวณ FFN ของเลเยอร์ MoE เป็นการคูณเมทริกซ์ sparse ขนาดใหญ่เพื่อเพิ่มความเร็วในการรัน และรองรับกรณีที่จำนวนโทเคนที่ถูกจัดสรรให้ผู้เชี่ยวชาญแต่ละตัวแตกต่างกัน
- เลเยอร์ MoE สามารถกระจายไปยังหลาย GPU ได้ด้วย model parallelism มาตรฐานและ Expert Parallelism
- โทเคนที่ผู้เชี่ยวชาญเฉพาะตัวต้องประมวลผลจะถูก route ไปยัง GPU นั้น
- เอาต์พุตของผู้เชี่ยวชาญจะถูกส่งกลับไปยังตำแหน่งโทเคนเดิม
- ใน expert parallelism จำเป็นต้องมี load balancing เพราะต้องแบ่งภาระงานระหว่าง GPU ให้สม่ำเสมอ
- เพื่อให้สามารถรัน Mixtral บนสแตกโอเพนซอร์สเต็มรูปแบบได้ มีการส่งการเปลี่ยนแปลงเพื่อรวม Megablocks CUDA kernel เข้ากับโปรเจกต์ vLLM และ Skypilot รองรับการ deploy endpoint ของ vLLM บน cloud instance
โมเดล Instruct และลักษณะการประเมิน
- Mixtral 8x7B – Instruct เป็นโมเดลแชตที่เรียนรู้การทำตามคำสั่งด้วย supervised fine-tuning และ Direct Preference Optimization (DPO)
- ใน benchmark การประเมินโดยมนุษย์ แสดงประสิทธิภาพสูงกว่า GPT-3.5 Turbo, Claude-2.1, Gemini Pro และ Llama 2 70B-chat
- ใน benchmark อย่าง BBQ และ BOLD พบว่า bias ลดลง และมี โปรไฟล์ด้านอารมณ์ ที่สมดุลมากขึ้น
- ด้วยโครงสร้างแบบ sparse จึงคาดหวังได้ว่า inference จะเร็วขึ้นเมื่อ batch size ต่ำ และมี throughput สูงขึ้นเมื่อ batch size ใหญ่
- แตกต่างเชิงโครงสร้างจาก GShard ซึ่งเปลี่ยนเฉพาะบางบล็อก เพราะ Mixtral เปลี่ยน FFN sub-block ทั้งหมดเป็นเลเยอร์ MoE
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
บทความนี้เจาะลึกโมเดลที่ถูกเผยแพร่และมีคนใช้งานกันมาตั้งแต่ประมาณหนึ่งเดือนก่อน Mixtral 8x7B นั้นยอดเยี่ยมจริง ๆ และแม้จะมีขนาดคร่าว ๆ ระดับ 13B แต่กลับได้คะแนนสูงกว่าโมเดลขนาดใกล้เคียงกันมากในอันดับอย่าง https://www.reddit.com/r/LocalLLaMA/comments/1916896/llm_com...
Ravenwolf บอกว่าโมเดลนี้ทำผลงานจริงได้ดีกว่าคะแนน benchmark บางส่วนเล็กน้อย และจากประสบการณ์ของผมก็เป็นแบบนั้นเหมือนกัน สำหรับโมเดลขนาดนี้ถือว่าดีจนน่าทึ่ง และดีพอสำหรับใช้งานทุกวันบน Mac ทั้งแชต ป้อนโค้ด และงานอื่น ๆ
สิ่งที่เห็นชัดหลังจากเปิดเผย weights คือมีความเป็นไปได้ค่อนข้างสูงว่า expert ทั้ง 8 ตัวเริ่ม seed มาจาก Mistral 7B ทั้งหมด แล้วจึงค่อยแยกทางกันไป ด้วยเหตุนี้ในชุมชน local LLM จึงมีการทดลองจำนวนมากเกี่ยวกับการ clone โมเดลเพื่อสร้าง expert แบบประหยัด
โดยทั่วไปเคยคิดกันว่าการเทรนเครือข่าย 8x7B จะต้องใช้ปริมาณงานเทียบเท่ากับการเทรนเครือข่าย 7B จำนวน 8 ตัว แต่ดูเหมือนว่าสำหรับ Mistral จะไม่เป็นเช่นนั้น จึงน่าสนใจมาก
มีบทความอย่าง Calm ของ DeepMind และการทดลองรวมเลเยอร์แบบเฉพาะหน้าอย่าง Goliath-120b ออกมาเรื่อย ๆ ทำให้ดูมีความเป็นไปได้สูงว่าปีนี้ฝั่ง LLM จะมี การปรับปรุงสถาปัตยกรรม ที่น่าสนใจไม่น้อย Calm ดูเหมือนจะชี้ไปยังขั้นถัดไปหลัง MoE ส่วนโมเดลอย่าง Goliath แสดงให้เห็นว่าการทำ Calm แบบขี้เกียจมาก ๆ คือแค่สลับใช้เลเยอร์ weights ทั้งชุดโดยไม่ต้องรวมเลเยอร์เชิงเส้น ก็อาจให้ผลลัพธ์ที่ใหญ่ได้
โดยรวมแล้วในปี 2024 อาจเป็นภายในครึ่งปีแรก เราน่าจะได้เห็นโมเดลทรงพลังที่รันได้ดีบนฮาร์ดแวร์สำหรับผู้บริโภค
เท่าที่ผ่านมา แพลตฟอร์มผู้บริโภคหลักที่รันได้โดยไม่ต้องใช้ quantization สูงจนทำลายคุณภาพ output น่าจะเป็น Apple Silicon Mac รุ่นใหม่ที่มี unified memory โดยมากคือ 48GB ขึ้นไป มีคนบอกว่า 32GB หรือ 36GB ก็ทำได้ แต่แทบไม่มี headroom
อย่างที่ coder543 ชี้ไว้ ถ้าเป็นระบบ multi-GPU ที่มี VRAM รวมกันเพียงพอ ก็สามารถรันได้โดยไม่ต้องใช้ quantization ที่สูญเสียมากกว่า
dataset contamination เป็นปัญหา แต่การที่คนใน subreddit ถามหา tip แล้วประเมิน LLM แบบพื้นบ้าน ๆ ไม่ได้ช่วยแก้ปัญหานั้น
สิ่งที่เด่นของโมเดลนี้คือพารามิเตอร์ที่ใช้งานจริงต่ำในระดับ 13B จึงรันบน 3090 ได้อย่างลื่นไหลด้วยคุณภาพสูง ขณะเดียวกันก็ชนะ GPT-3.5 ใน HumanEval และยังให้ context 32k ด้วย
3090 อยู่ในระดับผู้บริโภคและพบได้ทั่วไปในพีซีเกมมิง หวังว่านักพัฒนาเกมจะเริ่มทดลองใส่ Mixtral แบบ deploy local เข้าไปในเกม เช่น ให้ผู้นำแต่ละคนในเกมอย่าง Civilization ขับเคลื่อนด้วย LLM
บน M2 Pro ของผม ความเร็ว token และความฉลาดให้ความรู้สึกเหมือน GPT-3.5 Turbo นี่เป็นโมเดลแรกที่ผมเริ่มใช้จริงแทน GPT-3.5 ไม่ใช่แค่ลองเล่นเพราะเทคโนโลยีมันดี
Apple M2 Pro ที่มี RAM 32GB อยู่ในช่วงราคาใกล้เคียงกับพีซีเกมมิงที่ใส่ 3090 และเป็นอีกตัวอย่างหนึ่งที่คนทั่วไปซึ่งมีระบบประสิทธิภาพค่อนข้างดี “บังเอิญ” สามารถรันโมเดลที่เทียบเคียง GPT-3.5 ได้
ถ้าคุณมีอุปกรณ์ Apple ที่ตรงเงื่อนไขนี้และอยากทดลอง LLM Studio เป็นโอเพนซอร์สและช่วยให้เริ่มต้นได้ง่าย: https://lmstudio.ai/
หวังว่า Mixtral และโมเดลรุ่นต่อ ๆ ไปจะทำให้มี hobby hacking มากขึ้นมาก
เงินจำนวนนั้นซื้อพีซีได้ทั้งเครื่องเลย จึงยากจะเชื่อว่า GPU แพงขนาดนั้นเป็น “สำหรับผู้บริโภค” และ “พบได้ทั่วไป”
มี GPU ตัวไหนที่ดีสำหรับ LLM หรือ generative AI อื่น ๆ แต่ไม่แพงเว่อร์บ้างไหม? หรือมีผลิตภัณฑ์ที่ออกแบบมาเฉพาะสำหรับ AI ไม่ใช่กราฟิกเกมหรือเปล่า?
ตัวอย่างเช่น actor ที่วางแผนล่วงหน้าอาจถูกกำหนดให้ตอบคำถามใดก็ได้สามข้อจาก 5W แต่ปล่อยให้เขียนได้อย่างอิสระภายในค่า string ของ JSON เพื่อใช้เป็น context สำหรับการเลือกชุดการกระทำที่จำกัดในภายหลัง หรือโมเดลอาจขอเวลาคิดเพิ่มเติมที่ท้ายคำตอบได้ แต่ถ้าไม่ขอ ก็ต้องระบุการกระทำถัดไป
เท่าที่ผมเห็น ไม่มีผลต่อความเร็วในการ generate และใช้ได้อย่างสร้างสรรค์มาก อย่างไรก็ดี หาก output ถูกตัดขาดอาจต้อง regenerate และผมต้องเขียนฟังก์ชันแยกเพื่อหยุดทันทีที่ JSON object ที่ถูกต้องถูกปิด หรือเมื่อมีการสร้างบรรทัดใหม่ต่อเนื่องเกินห้าครั้ง อาจแตกต่างกันไปในแต่ละโมเดล
ถ้าอยากลองใช้โมเดลนี้ น่าจะเป็นหนึ่งในตัวที่ Mozilla/jart แจกจ่ายในรูปแบบ Llamafile
chmod +x mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile./mixtral-8x7b-instruct-v0.1.Q5_K_M.llamafile[0] https://hacks.mozilla.org/2023/11/introducing-llamafile/
[1] https://github.com/Mozilla-Ocho/llamafile#quickstart
บน Mac Silicon ใช้ผ่าน Ollama ได้
https://ollama.ai/
ollama pull mixtralถ้าต้องการเว็บ UI คล้าย ChatGPT ให้ใช้ https://github.com/ollama-webui/ollama-webui
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v ollama-webui:/app/backend/data --name ollama-webui --restart always ghcr.io/ollama-webui/ollama-webui:mainเข้าใช้งานได้ที่ http://localhost:3000 Ollama ยังใช้กับ LangChain ได้ด้วย
บทความที่เกี่ยวข้องล่าสุด
Mixtral of experts - https://news.ycombinator.com/item?id=38598559 - ธันวาคม 2023, 300 ความคิดเห็น
Mistral-8x7B-Chat - https://news.ycombinator.com/item?id=38594578 - ธันวาคม 2023, 69 ความคิดเห็น
Mistral "Mixtral" 8x7B 32k model [magnet] - https://news.ycombinator.com/item?id=38570537 - ธันวาคม 2023, 239 ความคิดเห็น
โดยเฉพาะ Mixtral เหนือกว่า Llama 2 70B อย่างมากใน benchmark ด้านคณิตศาสตร์ การสร้างโค้ด และหลายภาษา
อยากรู้ว่าจะทำผลงานด้านคณิตศาสตร์ได้แค่ไหน คณิตศาสตร์ดูเหมือนเป็นจุดอ่อนที่ชัดเจนมาตลอด และดูเหมือนยังไม่มีใครแก้ได้อย่างมีประสิทธิภาพ
ไม่น่าจะ “แก้” ปัญหานี้ได้ด้วย LLM ที่ดีขึ้นเพียงอย่างเดียว แต่น่าจะทำได้ผ่านโมเดลมัลติโมดัลที่เข้าถึงการรันโปรแกรมและเครื่องคิดเลขได้เท่านั้น
ผมไม่ได้อ่าน paper เกี่ยวกับ LLM มามากนัก แต่คิดว่า paper นี้ค่อนข้างอ่อนและขาดรายละเอียด หมายถึง ตัว paper เอง ไม่ใช่ผลลัพธ์ของ LLM
ถ้ามันมาอยู่บนโต๊ะผมเพื่อให้รีวิว ผมคงส่งกลับไปด้วยเหตุผลนี้อย่างเดียวแล้ว เช่น ไม่ได้อธิบายอย่างเหมาะสมว่าฝึกผู้เชี่ยวชาญอย่างไร หรือใช้ dataset ใดบ้าง
นี่คือมาตรฐานปัจจุบันของวงการนี้หรือ?
โค้ดและสถาปัตยกรรมทำซ้ำได้ง่าย ดังนั้นที่ไหนมีเงินพอ ก็ “ทำ” โมเดลคู่แข่งได้ค่อนข้างง่าย
OpenAI เป็นผู้เริ่มกระแสนี้ และทำให้มันฝังแน่นด้วย “รายงานทางเทคนิค” ของ GPT-4 ที่ไม่แม้แต่จะระบุจำนวนพารามิเตอร์ของโมเดล ส่วนเรื่อง dataset นั้นคลุมเครือมาตั้งแต่นานกว่านั้นมากแล้ว
ผมไม่ใช่ผู้เชี่ยวชาญด้าน LLM เลย แต่คงน่าสนใจถ้าได้รู้ว่าโดยเฉพาะ การตั้งค่าการฝึก ที่แตกต่างกันส่งผลต่อประสิทธิภาพอย่างไร
สงสัยว่า โมเดลมัลติโมดัล ที่เข้าถึงได้สาธารณะจะเริ่มออกมาเมื่อไร
ความก้าวหน้าของโมเดลแบบข้อความล้วนถือว่าน่าทึ่ง แต่พฤติกรรม “เกิดขึ้นเอง” หลายอย่างของ GPT-4 อาจไม่ได้มาจาก MoE หรือจำนวนพารามิเตอร์เท่านั้น แต่อาจมาจากการเรียนรู้แบบมัลติโมดัลด้วย
อยากรู้ว่าในโมเดลมัลติโมดัลที่เล็กกว่าจะเห็นการก้าวกระโดดแบบคล้ายกันหรือไม่
Meta ก็เปิดโมเดลมัลติโมดัลข้าม 6 รูปแบบภายใต้ไลเซนส์ไม่เชิงพาณิชย์ด้วย: https://ai.meta.com/blog/imagebind-six-modalities-binding-ai...
น้ำหนักโมเดลเป็นไลเซนส์ไม่เชิงพาณิชย์ จึงดูเหมือนไม่ใช่โอเพนซอร์สแท้ ๆ แต่ก็เข้าข่าย “เข้าถึงได้สาธารณะ” ตามที่ถาม
อยากให้มีใครสักคนฝึกโมเดลที่เข้ากันได้กับ CogVLM ตั้งแต่ต้นภายใต้ไลเซนส์โอเพนซอร์ส
สงสัยว่าจะรันโมเดลนี้ด้วยเครื่องมือ LLM ของ Simon Willison ได้ไหม หาไม่เจอว่ามีการกล่าวถึง Mixtral ใน issue หรือ discussion
นอกจากนี้มีวิธีง่าย ๆ ไหมที่จะลองใช้โมเดลนี้จาก command line?
LM Studio ก็เป็นอีกตัวเลือกหนึ่ง
บน command line ใช้ Ollama: https://ollama.ai/library/mixtral
ถ้าต้องการ UI ใช้ GPT4All: https://gpt4all.io/index.html แต่ตอนนี้ยังไม่รองรับ Mixtral
ภายในแอปใช้ superagent.sh: https://github.com/homanp/superagent
ในสัมภาษณ์พอดแคสต์ A16Z ล่าสุด ผู้ก่อตั้ง Mistral บอกว่าภายในบริษัทมีโมเดลหลายตัวที่มี คุณภาพอยู่ระหว่าง ChatGPT กับ GPT-4
ดูจากการเปิดเผยโมเดลคุณภาพสูงที่ผ่านมาแล้ว น่าจะเป็นช่วงเวลาที่น่าสนใจสำหรับ LLM โอเพนซอร์ส