14 คะแนน โดย GN⁺ 2024-04-02 | 2 ความคิดเห็น | แชร์ทาง WhatsApp

ความเร็วที่ดีขึ้นของ 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 ความคิดเห็น

 
savvykang 2024-04-02

ดูเหมือนว่ายังไม่มีข้อมูลของเครื่องระดับกลางอย่าง Intel 14600 หรือ Ryzen 5600 เลยครับ เหมือนตั้งใจจะสื่อว่าแม้แต่ Raspberry Pi ก็ยังรันได้ แต่ถ้าจะใช้งานจริงก็ดูน่าจะฝืนอยู่พอสมควร ถึงอย่างนั้นก็อยากมองในแง่ดีว่า สเปกฮาร์ดแวร์ที่จำเป็นสำหรับการรัน LLM แบบโลคัลกำลังค่อย ๆ ลดลงเรื่อย ๆ

 
GN⁺ 2024-04-02
ความคิดเห็นบน Hacker News
  • ความเห็นเกี่ยวกับการทำ SGEMM ด้วย Fortran:

    • คอมไพเลอร์ Fortran สมัยใหม่สามารถใช้การปรับแต่ง AVX และ FMA ได้โดยไม่ต้องแก้ไขเพิ่มเติม
    • การปรับแต่งแบบคลายลูป (loop unrolling) ทำได้ผ่านแฟลกของคอมไพเลอร์ (-funroll-all-loops)
    • คอมไพเลอร์ Intel ทำการคลายลูปได้แม้ผู้ใช้จะไม่ได้ร้องขออย่างชัดเจน
    • การเพิ่มการประมวลผลแบบขนานให้ซอร์ส Fortran 77 อาจทำได้ยาก แต่สามารถเพิ่มไวยากรณ์ OpenMP หรือใช้โครงสร้างขนานของ Fortran สมัยใหม่ได้
    • อย่าประเมินฟังก์ชัน Fortran 77 ต่ำเกินไป จุดประสงค์ของ Fortran คือปลดปล่อยนักพัฒนาจากรายละเอียดเฉพาะแพลตฟอร์มและให้คอมไพเลอร์จัดการงานนั้น
  • ความเห็นเกี่ยวกับการมาแทนที่ cuBLAS:

    • ดูเหมือนเป็นความพยายามจะเขียน cuBLAS ขึ้นใหม่ภายใน CUDA
    • ขั้นต่อไปอาจเป็นการลบการพึ่งพา CUDA และหันไปใช้ Vulkan หรือ Metal compute shader โดยตรง
  • ความเห็นเกี่ยวกับการรัน LLM (Local Language Model):

    • ทุกคนควรสามารถดาวน์โหลดและรัน LLM ในเครื่องได้ แม้มีความต้องการขั้นต่ำ
    • สิ่งนี้อาจทำหน้าที่เป็นการสำรององค์ความรู้ส่วนใหญ่ของมนุษยชาติได้
  • ความเห็นเกี่ยวกับการวัดประสิทธิภาพ:

    • ชอบใช้ C++ ในการกำหนดซับรูทีน เพราะ C++ เร็วกว่า Python มากกว่าสามลำดับขั้น
    • ชอบแนวคิดการวัดความต่างของประสิทธิภาพเป็น "จำนวนปีตามกฎของมัวร์"
  • ลิงก์ที่เกี่ยวข้อง:

    • สำหรับข้อมูลเกี่ยวกับการปรับปรุงประสิทธิภาพ ดู UTexas LAFF และ Gist ของ Nadav Rotem
  • ความเห็นเกี่ยวกับพาดหัว:

    • พาดหัวทำให้งง ตอนแรกอาจเข้าใจผิดว่าอ้างว่าโมเดลบน CPU เร็วกว่า GPU
    • พาดหัวที่ชัดเจนกว่าน่าจะเป็น "การปรับปรุงประสิทธิภาพของ LLaMA บน CPU"
  • ความเห็นเกี่ยวกับการปรับปรุงประสิทธิภาพเมื่อเทียบกับ MKL-DNN:

    • เคยพยายามทำให้เหนือกว่า MKL-DNN สำหรับขนาดเมทริกซ์ที่จำกัด แต่ไม่สำเร็จ
    • ประสิทธิภาพด้านพลังงานแบบนี้บน CPU เป็นไปไม่ได้ในทางฟิสิกส์
  • ความเห็นเกี่ยวกับการรัน LLM:

    • สามารถรัน large language model ได้โดยไม่ต้องมีคอมพิวเตอร์ขนาดใหญ่
    • การรันโมเดลที่มีพารามิเตอร์ขนาดเล็กก็นับว่าเป็นการรัน language model ในทางเทคนิค แต่ก็อาจไม่ถึงเกณฑ์ที่คนส่วนใหญ่มองว่ามีประโยชน์
  • ความเห็นเกี่ยวกับการใช้ CPU ของ Pixar:

    • สตูดิโอขนาดใหญ่อย่าง Pixar ใช้ CPU สำหรับเรนเดอร์ภาพยนตร์เพราะความคุ้มค่าด้านต้นทุน/ประสิทธิภาพและการเข้าถึง RAM ที่มากกว่า
    • มี ลิงก์ข่าวที่เกี่ยวข้อง
  • ความเห็นเกี่ยวกับ AMD Zen4 และ AVX512:

    • x86 ISA ของ 7995WX มีราคาแพงกว่า ARM ISA ของ M2 Ultra สองเท่า แต่ให้พลังประมวลผลดิบมากกว่าถึง 7 เท่า และความเร็วในการสร้างโทเคนก็แทบเท่ากัน
    • นี่อาจเป็นเพราะ L3 cache ขนาด 384MB
    • มีการทำงานที่ทำให้ LLaMA รันบน Zen4 ได้เร็วกว่าเดิม 2.8 เท่า