ความเร็วที่ดีขึ้นของ LLaMA บน CPU
- โปรเจ็กต์ llamafile ของ Mozilla ได้เขียนเคอร์เนลคูณเมทริกซ์ใหม่ 84 ตัว
- เมื่อใช้เวต F16 และ Q8_0 บน CPU เวลาในการประเมินพรอมป์ต์เร็วกว่า
llama.cpp ตั้งแต่ 30% ถึง 500%
- การปรับปรุงที่เด่นชัดที่สุดเกิดขึ้นบนคอมพิวเตอร์ ARMv8.2+ (เช่น RPI 5), Intel (เช่น Alderlake) และ AVX512 (เช่น Zen 4)
- สำหรับเมทริกซ์ที่พอดีกับแคช L2 แสดงความเร็วได้มากกว่า MKL ถึง 2 เท่า
- การเพิ่มความเร็วทำงานได้ดีที่สุดกับพรอมป์ต์ที่มีโทเคนน้อยกว่า 1,000 ตัว
พื้นหลัง
- llamafile เป็นโปรเจ็กต์ LLM แบบโลคัลที่เริ่มต้นร่วมกับ Mozilla ในเดือนพฤศจิกายน 2023
- ใช้ Cosmopolitan Libc เพื่อแพ็กเกจ
llama.cpp ให้เป็นไบนารีข้ามแพลตฟอร์มแบบไฟล์เดียว
- ทำงานได้บน 6 ระบบปฏิบัติการสำหรับ AMD64 และ ARM64 พร้อมการปรับแต่งเล็กน้อย
- เชื่อว่าการปรับปรุงเทคโนโลยีหลักจะช่วยมอบประสบการณ์
llama.cpp ที่ดีที่สุดให้ผู้ใช้ และช่วยให้ทั้งสองโปรเจ็กต์เข้าถึงผู้ชมได้กว้างขึ้น
- Mozilla ได้จัดสรรทรัพยากรเพื่อสิ่งนี้มาโดยตลอด
ประสิทธิภาพที่ดีขึ้นบนฮาร์ดแวร์ระดับองค์กร
- ตอนที่เริ่มสนใจ LLM ครั้งแรก สภาพแวดล้อมการทำงานคือเครื่อง Hewlett Packard ประหยัดพลังงานที่ใช้ดิสก์หมุน, RAM ช้า, โปรเซสเซอร์ AVX2 และรัน Alpine โดยไม่มี GPU
- สิ่งที่ชอบเกี่ยวกับ
llama.cpp คือพวกเขาให้ความสำคัญกับคนแบบตนเองก่อนเป็นอันดับแรก
- จึงเริ่มอาสาทำงานเต็มเวลาและร่วมมือกับคนอย่าง Slaren เพื่อนำการรองรับ
mmap() เข้ามา ซึ่งช่วยลดการใช้ RAM ลงครึ่งหนึ่งพร้อมทำให้โหลดเวตได้ทันที
- ตอนนั้นถือเป็นก้าวกระโดดครั้งใหญ่สำหรับ LLM แบบโลคัล แต่แทบไม่ช่วยปรับปรุงความเร็วในการประเมินเลย
- โค้ดส่วนใหญ่ของการอนุมานเขียนโดย Georgi Gerganov เอง และยอดเยี่ยมมากจนต้องใช้เวลาอีก 1 ปีจึงจะปรับปรุงได้
- ตอนนี้เมื่อปรับปรุงได้แล้ว ก็ถึงเวลาดูว่าเครื่อง Hewlett Packard เครื่องเก่าเร็วขึ้นแค่ไหน
ประสิทธิภาพที่ดีขึ้นบนฮาร์ดแวร์สำหรับงานอดิเรก
- คุณสามารถรันโมเดลภาษาขนาดใหญ่ได้แม้ไม่มีคอมพิวเตอร์ขนาดใหญ่
- หนึ่งในคอมพิวเตอร์ส่วนบุคคลที่ดีที่สุดที่หาซื้อได้ตามร้านในปัจจุบันคือ Raspberry Pi
- ให้ประสิทธิภาพที่ยอดเยี่ยมในราคาถูก และใช้พลังงานน้อยมาก
- Raspberry Pi เพิ่งเปิดตัวรุ่นที่ 5 เมื่อไม่กี่วันก่อน ซึ่งเร็วกว่ารุ่นก่อนหน้าอย่างมาก
- ยังเพิ่มการรองรับ ISA สำหรับ ARMv8.2 dotprod และ fp16 arithmetic ซึ่งมีประโยชน์มากกับ LLM
- เพียงสองฟีเจอร์นี้ก็ทำให้เมื่อปีที่แล้ว
llama.cpp สามารถเพิ่มประสิทธิภาพของเวต f16 ได้ถึง 10 เท่า
- สัปดาห์นี้ยังต่อยอดเพิ่มอีก 2 เท่าด้วยการใช้เคอร์เนลที่เดิมตั้งใจทำไว้สำหรับ AVX512
- ไม่คิดว่าเคอร์เนลที่ออกแบบมาสำหรับอุปกรณ์ดาต้าเซ็นเตอร์จะเข้ากับ Raspberry Pi ตัวเล็กและเบาได้ดี แต่กลับลงตัวพอดีเพราะ CPU ทั้งสองแบบมีเวกเตอร์รีจิสเตอร์ 32 ตัวเหมือนกัน
ประสิทธิภาพที่ดีขึ้นบนฮาร์ดแวร์เกมมิง
- เกมเมอร์เป็นผู้บริโภคที่คาดหวังคุณภาพสูงมากที่สุดในกลุ่มผู้ซื้อที่เน้นความคุ้มค่า ดังนั้นฮาร์ดแวร์ที่ทำมาเพื่อเกมเมอร์จึงมักยอดเยี่ยมมาก
- อุตสาหกรรมแมชชีนเลิร์นนิงเติบโตมาหลายปีด้วยการนำฮาร์ดแวร์สำหรับเกมเมอร์มาประยุกต์ใช้
- หากไม่มีการมีส่วนร่วมสำคัญจากเกมเมอร์ ฤดูหนาวของ AI อาจต้องยืดเยื้อออกไปอีก 10 ปี
- เมื่อไม่กี่เดือนก่อน ได้ขอให้เกมเมอร์ช่วยประกอบคอมพิวเตอร์เพื่อมาแทน Hewlett Packard เครื่องเก่า
- คิดว่า Alderlake เป็น CPU ที่ยอดเยี่ยม แต่ดูเหมือนจะถูกเข้าใจผิดอย่างแพร่หลาย เพราะสามารถเพิ่มประสิทธิภาพ
float16 ได้ง่าย ๆ ถึง 5 เท่า
- ต่างจาก ARMv8.2 เคอร์เนลบน x86 ใช้ชนิดการคำนวณ
float32 ภายใน จึงทำได้โดยไม่ก่อให้เกิดข้อผิดพลาดจากการปัดเศษ
- นี่หมายความว่าสามารถสร้างตัวกรองสแปมที่ฉลาดขึ้นได้
- การรันเชลล์สคริปต์
spam.sh ใช้เวลาเพียง 420 มิลลิวินาที ซึ่งเร็วกว่า Raspberry Pi 5 ถึง 7 เท่า
- สำหรับงานขนาดเล็ก ชิปนี้สามารถทำเสร็จได้ก่อนที่ CUDA จะเริ่มทำงานเสียอีก
- เจ้าของ Alderlake สามารถคาดหวังได้ว่า llamafile จะระมัดระวังเป็นพิเศษไม่ให้รันบน efficiency core
- นี่เป็นหนึ่งในเหตุผลที่ทำให้ llamafile รันได้เร็วกว่า
llama.cpp
- อีกทั้งยังหมายความว่าแม้จะรัน LLM ตลอด 24 ชั่วโมง คอมพิวเตอร์ก็ยังมีทรัพยากรเพียงพอสำหรับโปรแกรมอื่น ๆ
llama.cpp จัดส่งเธรดแบบ lockstep ดังนั้นหาก 1 คอร์ใช้เวลาทำงานนานกว่าคอร์อื่น ทุกอีก n คอร์ที่เหลือจะต้อง busy loop รอจนกว่าจะเสร็จทั้งหมด
- จุดเด่นที่สุดของไมโครโปรเซสเซอร์นี้คือมันสามารถบิลด์โค้ด 2.6 ล้านบรรทัดของ Cosmopolitan monorepo ได้เร็วมาก
- Hewlett Packard ใช้เวลา 64 วินาทีเสมอ แต่คอมพิวเตอร์เกมมิงเครื่องนี้ใช้เพียง 20 วินาที
- เดิมใช้เวลา 35 วินาที แต่หลังจากใช้ liquid metal และ AI overclocking ก็เร็วขึ้นอีก
- อีกเหตุผลที่โค้ดระบบบน Alderlake เร็วมากคือในกระบวนการสร้าง CPU รุ่นนี้เคยมีการต่อสู้อย่างดุเดือดระหว่างแฮ็กเกอร์กับนักวิทยาศาสตร์ และฝ่ายแฮ็กเกอร์เป็นผู้ชนะ
- หวังว่าในอนาคตจะมีจุดประนีประนอมที่ดีกว่านี้สำหรับ AVX512 แต่โดยรวมยังพอใจกับชิปนี้มาก เพราะถือว่าก้าวหน้าอย่างมากเมื่อเทียบกับรุ่นก่อน
ประสิทธิภาพที่ดีขึ้นบนฮาร์ดแวร์ของ Apple
- ถ้าจะพูดถึงคอมพิวเตอร์ส่วนบุคคลระดับสูงสุด Mac Studio น่าจะเป็นตัวเลือกที่โดดเด่นที่สุด
- การจะชนะด้านประสิทธิภาพบนแพลตฟอร์มนี้ยากกว่าสำหรับฉัน เพราะเป็นแพลตฟอร์มฮาร์ดแวร์ที่นักพัฒนา
llama.cpp ใส่ใจมากที่สุด และจากการเลือกใช้คอมไพเลอร์ของ Stallman ทำให้ต้องทำงานแบบเสียเปรียบเมื่อเทียบกับเครื่องมือเฉพาะของ Apple
- จึงไม่น่าแปลกใจที่ไมโครโปรเซสเซอร์ M2 จะทำให้ llamafile กลายเป็นท่อส่งของคอนเทนต์สังเคราะห์
- กลเม็ดที่ Apple ใช้คือการอาศัยการบูรณาการแบบแนวดิ่ง
- หากคุณซื้อ Mac Studio แล้วเปิดดูข้างใน คุณจะพบว่า RAM DIMM ถูกย้ายเข้าไปอยู่ใน CPU
- เพราะ CPU ไม่จำเป็นต้องโทรทางไกลแบบนี้อีกต่อไป งานที่ไวต่อเวลาแฝงอย่างการสร้างโทเคนจึงเร็วขึ้นมาก
- อย่างไรก็ตาม ในแง่ flop ล้วน ๆ (วัดเป็นพรอมป์ต์ tok/sec) พบว่า ARM ISA ของ M2 Ultra ให้พลังคำนวณมากกว่าคอมพิวเตอร์ Intel ที่ถูกกว่ามากของฉันเพียง 30% เท่านั้น
- หากต้องการเข้าถึงพลังมากกว่านี้ จำเป็นต้องผ่านเฟรมเวิร์กปิดอย่าง Metal หรือ Accelerate เท่านั้น
- หากติดตั้ง
xcode ไว้ llamafile จะคอมไพล์โมดูลสตับขนาดเล็กโดยอัตโนมัติ เพื่อช่วยยืนอยู่หน้าบรรดาไลบรารีปิดซอร์สทั้งหมดที่คั่นอยู่ระหว่างคุณกับซิลิคอน
- หากกำลังพิจารณาซื้อ Mac Studio สิ่งสำคัญอย่างหนึ่งคือ XNU ก็เหมือนกับ Windows Executive ตรงที่ทำหน้าที่รักษาเดสก์ท็อปให้เสถียรได้ดีมาก ซึ่งหมายความว่ามันปกป้องระบบจากตัวคุณเอง
- ด้วยฟีเจอร์ด้านความปลอดภัยทั้งหมดนี้ การคอมไพล์ Cosmo monorepo บน Mac Studio จึงใช้เวลา 45 วินาที แต่ถึงจะปล่อย fork bomb ก็น่าจะยังดู Netflix ได้โดยไม่เฟรมตกแม้แต่เฟรมเดียว
- สคริปต์
spam.sh ก็รันใน 430ms ซึ่งช้ากว่า Intel
- แต่ทั้งหมดนี้ไม่ได้ทำให้ฉันกังวล เพราะได้เห็นแล้วว่า Asahi Linux สามารถปลดปล่อยศักยภาพของ M2 ได้เต็มที่อย่างไร
ประสิทธิภาพที่ดีขึ้นบนฮาร์ดแวร์ระดับมืออาชีพ
- llamafile ให้ความสำคัญอย่างมากกับการช่วยคนที่ไม่มี GPU แต่ก็ยังมอบประสบการณ์ระดับสูงสุดให้กับคนกลุ่มบน 1% เช่นกัน
- AMD Ryzen Threadripper PRO 7995WX เปิดตัวเมื่อไม่กี่เดือนก่อน และตอนนี้เป็น CPU ที่แพงที่สุดที่สามารถซื้อได้ด้วยเงิน
- มันมีราคา 10,000 ดอลลาร์ แต่คุณจะได้ AVX512 แบบ 96 คอร์บนสถาปัตยกรรม Zen4
- แม้ราคาจะแพงเป็นสองเท่า แต่ x86 ISA ของ 7995WX ให้พลังประมวลผลดิบมากกว่า ARM ISA ของ M2 Ultra ถึง 7 เท่า ขณะที่มีความเร็วในการสร้างโทเคนใกล้เคียงกัน
- เรื่องนี้อาจเป็นผลจากแคช L3 ขนาด 384MB
- ข้อดีอย่างหนึ่งของ AVX512 คือโมเดล Gemma ของ Google สามารถแก้โจทย์คณิตปริศนาบน AVX512 ได้ แต่ทำไม่ได้บน AVX2 เพราะเวกเตอร์ที่ใหญ่กว่ามักช่วยลดข้อผิดพลาดจากการปัดเศษได้ง่ายกว่า
- คำสั่ง
VDPBF16PS ช่วยในการทำ updot กับ bf16 คล้ายกับ VNNI และ ARM dotprod
- โมเดลอย่าง Mistral และ TinyLLaMA แจกจ่ายเวตในรูปแบบ bfloat16 อย่างเป็นทางการ จึงดีที่มีการรองรับ bf16 โดยตรง
- หากแปลง bf16 เป็น fp16 จะสามารถแทนค่าตัวเลขได้อย่างแม่นยำเพียง 13% ของจำนวนที่เป็นไปได้ทั้งหมด
- ในทางปฏิบัติแทบไม่สำคัญ เพราะ 99.71% ของตัวเลขที่ Mistral 7b ใช้อยู่ภายใน 13% นั้น
- อย่างไรก็ตาม llamafile พยายามส่งมอบจำนวนบิตตามที่อ้างไว้ให้ดีที่สุด
2 ความคิดเห็น
ดูเหมือนว่ายังไม่มีข้อมูลของเครื่องระดับกลางอย่าง Intel 14600 หรือ Ryzen 5600 เลยครับ เหมือนตั้งใจจะสื่อว่าแม้แต่ Raspberry Pi ก็ยังรันได้ แต่ถ้าจะใช้งานจริงก็ดูน่าจะฝืนอยู่พอสมควร ถึงอย่างนั้นก็อยากมองในแง่ดีว่า สเปกฮาร์ดแวร์ที่จำเป็นสำหรับการรัน LLM แบบโลคัลกำลังค่อย ๆ ลดลงเรื่อย ๆ
ความคิดเห็นบน Hacker News
ความเห็นเกี่ยวกับการทำ
SGEMMด้วย Fortran:-funroll-all-loops)ความเห็นเกี่ยวกับการมาแทนที่ cuBLAS:
ความเห็นเกี่ยวกับการรัน LLM (Local Language Model):
ความเห็นเกี่ยวกับการวัดประสิทธิภาพ:
ลิงก์ที่เกี่ยวข้อง:
ความเห็นเกี่ยวกับพาดหัว:
ความเห็นเกี่ยวกับการปรับปรุงประสิทธิภาพเมื่อเทียบกับ MKL-DNN:
ความเห็นเกี่ยวกับการรัน LLM:
ความเห็นเกี่ยวกับการใช้ CPU ของ Pixar:
ความเห็นเกี่ยวกับ AMD Zen4 และ AVX512: