- สร้าง AI คลัสเตอร์มูลค่าราว 3,000 ดอลลาร์ โดยใช้ Compute Blade ของ Raspberry Pi 10 ตัว และโมดูล CM5 แต่ผลลัพธ์ด้านประสิทธิภาพและความคุ้มค่าต่ำกว่าที่คาดไว้
- ในการทดสอบ HPC ได้ประสิทธิภาพเพิ่มขึ้น 10 เท่าเมื่อเทียบกับ Pi เดี่ยว (325 Gflops) แต่ยัง ช้ากว่า Framework desktop cluster ถึง 4 เท่า
- ในการทดสอบ AI ไม่รองรับการเร่งความเร็วด้วย GPU จึงต้องพึ่งพา การทำ inference บน CPU และเมื่อรัน โมเดล Llama 70B ความเร็วสร้างโทเค็นอยู่เพียงราว 0.85 t/s ซึ่งต่ำมาก
- อย่างไรก็ตาม ด้วยข้อดีเรื่อง กินไฟต่ำ เสียงเงียบ และความหนาแน่นสูง จึงอาจยังมีความหมายสำหรับงานเฉพาะทาง เช่น งาน CI, การติดตั้ง edge ที่ต้องการความปลอดภัยสูง, หรือโหนด Tor relay
- โดยรวมแล้ว แม้จะสนุกในแง่ การเรียนรู้และการทดลอง แต่ผู้เขียนย้ำว่าไม่เหมาะกับการใช้งาน AI/HPC ทั่วไป และเป็นกรณีที่สะท้อนข้อจำกัดของ blade server
บทนำและภาพรวมของคลัสเตอร์
- เมื่อ 2 ปีก่อนในเดือนเมษายน 2023 ผู้เขียนได้สั่ง Compute Blade จำนวน 10 ตัว และเพิ่งได้รับครบทั้งหมดในช่วงหลังจนประกอบคลัสเตอร์เสร็จ
- ระหว่างนั้น Raspberry Pi ได้ อัปเกรดจาก CM4 เป็น CM5 ผู้เขียนจึงสั่งโมดูล 16GB CM5 Lite เพิ่มอีก 10 ตัว ทำให้ได้ระบบที่มี หน่วยความจำรวม 160GB
- ต้นทุนรวมอยู่ที่ 3,000 ดอลลาร์ (รวมค่าจัดส่ง) และเป็น Pi cluster ที่ใหญ่ที่สุดที่ผู้เขียนเคยสร้างเอง
- ในกลุ่มคอมพิวเตอร์ blade ที่ใช้ Pi ยังมี Xerxes Pi ด้วย แต่มีโอกาสเลื่อนเปิดตัวและส่งมอบสูง และผู้เขียนก็สนับสนุนโครงการนั้นด้วยความอยากรู้อยากเห็นเช่นกัน
- ผู้เขียนสงสัยว่า Pi cluster ยังมีคุณค่าอยู่หรือไม่ จึงพยายามตรวจสอบว่าคุ้มค่าต่อการลงทุนหรือไม่ โดยเปรียบเทียบด้านประสิทธิภาพ ความหนาแน่น และประสิทธิภาพการใช้พลังงานกับ Framework desktop cluster
การประกอบคลัสเตอร์และงานที่ต้องทำซ้ำหลายรอบ
- เกิดปัญหา ความเข้ากันได้ของ SSD และปัญหาความร้อนหลายครั้ง จนต้องรื้อประกอบคลัสเตอร์ใหม่ถึงสามรอบ
- การรื้อประกอบรอบแรก: ทดลองใช้ NVMe SSD หลายรุ่น แต่เกิดปัญหา ด้านความเข้ากันได้และความน่าเชื่อถือ จึงเปลี่ยนทั้งหมดเป็น Patriot P300 SSD แล้วความเสถียรดีขึ้น
- การรื้อประกอบรอบที่สอง: เกิด thermal throttling จากความร้อน จึงแก้ปัญหาการจัดการความร้อนด้วยการ ยึดฮีตซิงก์ให้แน่นหนา
ผลการทดสอบเบนช์มาร์ก HPC (High Performance Computing)
- ใช้ เบนช์มาร์ก High Performance Linpack (Top500) ในการวัดสมรรถนะระดับซูเปอร์คอมพิวเตอร์
- ก่อนติดตั้งฮีตซิงก์ทำได้ 275 Gflops และหลังจากนั้นเพิ่มขึ้นสูงสุดเป็น 325 Gflops
- ตัวเลขนี้คือประสิทธิภาพ 10 เท่าเมื่อเทียบกับโหนดเดี่ยว CM5 8GB โดยใช้พลังงาน 130W
- แต่เมื่อเทียบกับ Framework Desktop แบบคลัสเตอร์ 4 โหนดราคา 8,000 ดอลลาร์ แล้ว Pi cluster ยังช้ากว่า 4 เท่า
- ในด้านประสิทธิภาพพลังงาน (Gflops/W) อาจดีกว่าเล็กน้อย แต่ ด้านประสิทธิภาพต่อราคายังสู้ Framework cluster ไม่ได้
- จึงไม่ใช่โซลูชันที่เหมาะกับงาน HPC ขนาดใหญ่
การทดสอบความเหมาะสมสำหรับ AI และข้อจำกัด
- แม้จะคาดหวังว่าจะเป็น AI cluster ด้วยหน่วยความจำ 160GB แต่ iGPU ของ Pi 5 ไม่สามารถใช้การเร่งความเร็วผ่าน Vulkan ได้
- การทำ AI inference จึง จำกัดอยู่บน CPU และด้วยข้อจำกัดของ Arm Cortex A76 ทำให้สมรรถนะลดลงมาก
- สำหรับโมเดล Llama 3.2:3B โหนดหนึ่งตัวประมวลผลได้เพียง 6 โทเค็นต่อวินาที (ถือว่าค่อนข้างช้า)
- แม้จะใช้ทั้งคลัสเตอร์เพื่อกระจายงานของโมเดลขนาดใหญ่ (Llama 3.3:70B) ก็ยังทำได้เพียง 0.28~0.85 โทเค็น/วินาที (ช้ากว่า Framework cluster อย่างน้อย 5~25 เท่า)
- เครื่องมือ AI แบบกระจายอื่น ๆ เช่น Exo และ distributed-llama ก็ยังไม่เสถียรพอสำหรับใช้งานจริงหรือมีประสิทธิภาพไม่เพียงพอ
- โดยรวมแล้วไม่เหมาะกับเวิร์กโหลดด้าน AI
บทสรุปและข้อเสนอการใช้งานที่สมจริง
- Pi blade cluster เป็นตัวเลือกที่แข่งขันได้ยากในแง่ประสิทธิภาพและความคุ้มค่า และนอกเหนือจากจุดประสงค์ด้าน การเรียนรู้ การทดลอง และงานอดิเรก ก็แนะนำได้ยาก
- ในทางกลับกัน มันมีข้อดีด้านการดูแลง่าย เสียงเงียบ ขนาดกะทัดรัด และ ความหนาแน่นของโหนดรวมถึงการแยกโหนดออกจากกันได้
- ในทางปฏิบัติอาจพิจารณาใช้ได้อย่างจำกัดสำหรับ งาน CI (continuous integration) หรือสภาพแวดล้อมที่ต้องการ การแยกส่วนแบบปลอดภัยสูงหรือ edge computing
- ที่ Unredacted Labs มีการใช้งานเพื่อ สภาพแวดล้อมที่มีโหนดจำนวนมาก เช่น Tor exit relay เพื่อเพิ่มประสิทธิภาพและความหนาแน่นของโหนดให้สูงสุด
- แต่สำหรับผู้ใช้ส่วนใหญ่ โดยใช้งบใกล้เคียงกันยังมี ทางเลือกอื่นที่ให้ประสิทธิภาพและความคุ้มค่าสูงกว่า
- ผู้ผลิตอย่าง Gateworks เองก็เคยขาย GBlade สำหรับงานอุตสาหกรรม แต่ไม่ประสบความสำเร็จในเชิงตลาดและเลิกผลิตไปแล้ว
- แม้จะดูแลง่ายและใช้งานจริงไม่ซับซ้อนเท่าการดูแลคลัสเตอร์ขนาดใหญ่ แต่ก็ยังเป็น สภาพแวดล้อมที่ยากจะแนะนำหากไม่มีเหตุผลเฉพาะจริง ๆ
รายการชิ้นส่วนที่ใช้
- (ผู้เขียนได้แนะนำรายการชิ้นส่วนที่ใช้แยกไว้ แต่ก็ระบุว่าไม่แนะนำให้คัดลอกชุดประกอบลักษณะนี้ตามแบบตรง ๆ)
5 ความคิดเห็น
พูดให้แม่นยำในประเด็นที่เกี่ยวกับ Vulkan ก็คือ 'Vulkan API ที่ iGPU ของ Pi 5 รองรับนั้น llama.cpp ยังไม่รองรับ' นั่นเองนะครับ ถ้ารองรับได้แล้ว ประสิทธิภาพจะออกมาได้แค่ไหนก็น่าชวนสงสัยเหมือนกันครับ
ความคิดเห็นบน Hacker News
สำหรับคนที่สนใจระบบกระจาย แนะนำอย่างยิ่งให้ลองรัน VM 8 ตัวบนเครื่องเดียวที่ใช้ CPU AMD 16 คอร์รุ่นใหม่ โดยจัดสรร 4 hyperthread ให้แต่ละ VM พร้อม RAM 1/8 ของทั้งระบบ และสร้างเครือข่ายเสมือนในซอฟต์แวร์ virtualization อย่าง Proxmox เพื่อสัมผัสประสบการณ์แบบคลัสเตอร์ได้เลย แถมยังทดสอบความทนทานได้จริงด้วยการกดหยุด VM ทีละตัวแล้วกู้คืนกลับมา วิธีนี้เหนือกว่าคลัสเตอร์ Pi มากทั้งด้าน Perf/W และความสะดวก ไม่ต้องปวดหัวกับการประกอบชิ้นส่วน แค่มี CPU, เมนบอร์ด, m.2 SSD และ RAM สองแถวก็พอ แน่นอนว่าถ้ารันตรงบนเครื่องคอร์เยอะโดยไม่ใช้ virtualization จะได้ Perf/W สูงสุด แต่สิ่งที่มักถูกมองข้ามในการ benchmark คือการกินไฟตอน idle ซึ่งสำคัญมากถ้าจะเปิดคลัสเตอร์ทิ้งไว้ตลอดแต่ใช้งานไม่บ่อย
ผมว่าไม่จำเป็นต้องใช้ CPU แรงขนาดนั้น เครื่อง quad-core รุ่นเก่าก็พอแล้ว
พูดถึงเรื่องใกล้เคียงกัน ผมเคยคิดว่าการรันโปรแกรม MPI รุ่นเก่าในสภาพแวดล้อมอย่างเวิร์กสเตชัน AMD แบบ multi-chip น่าจะเป็นเรื่องที่ใหญ่กว่านี้ แต่กลับไม่เป็นแบบนั้น จึงค่อนข้างแปลกใจ
จริง ๆ ก็สงสัยว่าเราต้องใช้พลัง CPU ระดับนี้ไหม ถ้าเป็นการฝึกระบบกระจาย แค่เครื่อง Linux เก่าหรือ Raspberry Pi สักตัว ลง Erlang แล้วตั้งไม่กี่โหนดก็ทดลองได้เพียงพอแล้ว
ตอนช่วง Raspberry Pi ขาดตลาดเมื่อหลายปีก่อน ผมเสียดายที่คนพยายามหามันมาทำคลัสเตอร์ของเล่นแบบนี้กันหนักมาก Pi เดิมทีมีไว้เพื่อการศึกษา แต่ในความเป็นจริงผมคิดว่ามันมักถูกใช้อย่างสิ้นเปลือง ผมเองรัน "คลัสเตอร์" K8s หนึ่งชุดด้วย xcp-ng แต่จริง ๆ ทำให้ง่ายกว่านี้ได้อีก Docker Machine ก็เคยสั่งบรรทัดเดียวให้สร้างหลายโฮสต์ได้เหมือนกัน ตอนนี้เหมือนโปรเจกต์จะยุติไปแล้ว แต่ถ้าเป็น Docker Swarm ก็ยังปรับสเกลบริการได้ง่ายโดยไม่ต้องมี hypervisor
ผมใช้วิธีนี้ฝึก Postgres hot standby และ read replica แล้วก็เรียนรู้คลัสเตอร์ Hadoop กับ Cassandra ด้วยวิธีเดียวกัน การที่ผมเล่าประสบการณ์การตั้งค่าและจำลองการกู้คืนของระบบพวกนี้ได้ ช่วยให้ผมได้งานใหม่ที่เงินเดือนเพิ่มเป็นสองเท่า สามเท่า ถ้าเป็นนักพัฒนาที่มีทักษะระดับใช้งานจริงอยู่บ้าง ผมแนะนำอย่างจริงจังให้ลองฝึกแบบนี้ มันช่วยยกระดับสายอาชีพได้มาก
ทำให้นึกถึงเซสชัน NormConf ที่ชื่อ “Just use one big machine for model training and inference.” ขอแนะนำวิดีโอที่เกี่ยวข้อง และบทความคลาสสิกเก่า “Scalability! But at what COST?” (ลิงก์) ก็ชวนสนใจมาก ถ้าจะสรุปสั้น ๆ ก็คือ ประสิทธิภาพของการประมวลผลแบบขนานมีปัจจัยให้กังวลมากกว่าแค่ Amdahl's Law ระบบ scale-out ต้องมีงานประกอบอีกมากที่ไม่มีในโหนดเดี่ยว จริง ๆ แล้ว multithread ก็มีงานที่โค้ดแบบลำดับไม่มีเพิ่มเข้ามาเยอะเหมือนกัน เคล็ดลับของประสิทธิภาพที่แท้จริงคือ “การคำนวณที่ไม่ต้องรันคือการคำนวณที่เร็วที่สุด”
benchmark แรกที่ผมรันคือ top500 High Performance Linpack cluster benchmark ผมชอบมันเพราะเป็นวิธีวัดสมรรถนะซูเปอร์คอมพิวเตอร์แบบดั้งเดิม หลังแก้ปัญหาเรื่องความร้อนแล้ว ใช้ไฟราว 130W และได้ 325 Gflops รายชื่อบนเว็บ top500 มีตั้งแต่ปี 1993 ผมเลยหวังว่าคลัสเตอร์ Pi จะพอไปอยู่ในประวัติศาสตร์สุดเพี้ยนของยุค 70 ได้ไหม แต่กลายเป็นว่ามันใหม่กว่านั้นพอสมควร ช่วงปี 1993 (อันดับ 1 = 131 Gflop/s, อันดับ 10 = 15.24Gflop/s) ถึงปี 1997 (อันดับ 1 = 1,830,40, อันดับ 10 = 326.4) และดูเหมือนจะหลุด top500 ไปแถวปี 2002~2003 ถ้าจะให้แม่นจริงควรจัดเรียงใหม่ตาม Rmax เพราะตัวเลขที่อ้างอิงคือ Rpeak แต่ผมคงไม่ไล่ทำทั้งหมด สำหรับคลัสเตอร์ของเล่นแบบนี้ ผมว่ามันทำได้ดีทีเดียว ผมคุ้นกับมุกแนว “Apple Watch เรายังแรงกว่าคอมพิวเตอร์ Apollo” เลยคิดว่ามันน่าจะย้อนไปได้เก่ากว่านี้
RPI มีประสิทธิภาพ CPU แย่มาตลอดแต่แรกอยู่แล้ว จุดประสงค์ของ Pi ก็คือใช้ชิป Broadcom ราคาถูกมาทำอุปกรณ์ “เพื่อการศึกษา” เด็ก ๆ เอา Raspberry Pi ไปหัดให้ LED กระพริบและเรียนวงจรไฟฟ้า ความคิดที่จะเอาคลัสเตอร์ Pi มาทำงานคำนวณสมรรถนะสูงจึงไม่สมเหตุสมผลตั้งแต่ต้น
ไม่ควรรับเนื้อหาในบทความนี้แบบตรงตัวเกินไป ผู้เขียนเป็น tech influencer ที่ประสบความสำเร็จ ซื้ออุปกรณ์แพงมาอวด แล้วก็บ่นว่าราคามันโหดเพื่อหาเงินต่อ มุมมองเรื่องการเงินของเขาไม่จำเป็นต้องเหมือนของผม
นั่นก็จริง แต่ประเด็นสำคัญจริง ๆ คือ ถ้าตอนนี้คุณกำลังจะทำอะไรบางอย่าง คำตอบก็มักไม่ใช่ Raspberry Pi ราคาต่อสเปกไม่คุ้มเอาเลย และตลาดก็หยุดนิ่งด้วย
ถึงอย่างนั้นผมก็คิดว่าวิดีโอของ Jeff ยังสดใหม่ดี ยูทูบเบอร์คนอื่นมักวนอยู่กับคอนเทนต์เปรียบเทียบ “เวลาเรนเดอร์สำหรับวิดีโอ YouTube, ความแม่นยำของสี, คุณภาพกล้อง, คุณภาพเสียง” ซ้ำ ๆ แต่เขาไม่เหมือนกัน
อยากให้ Dan Luu หันมาทำคอนเทนต์แบบนี้บ้าง
ถ้าเป็นคนที่ทำของเองได้ ก็รู้อยู่แล้วว่า GPU ตัวเดียวให้พลังประมวลผลมากขึ้นเป็น 10 เท่า
พาดหัวอาจดูเรียกความสนใจไปหน่อย แต่ดูเหมือนผู้เขียนจะสนุกกับการทดลองและการประกอบอุปกรณ์มากจริง ๆ อย่างไรก็ตาม ประโยคเปิดที่ว่า “ผมสั่งชุด Compute Blades 10 ชุดไปตั้งแต่เดือนเมษายน 2023 และเพิ่งมาถึงตอนนี้” ก็น่าผิดหวังไม่น้อย
ถ้าคลัสเตอร์ Pi คุ้มค่าด้านราคาต่อประสิทธิภาพจริง ดาต้าเซ็นเตอร์ก็คงเต็มไปด้วย Pi ไปนานแล้ว
มันคล้ายมุกเศรษฐศาสตร์เรื่อง “ทำไมไม่มีใครเก็บธนบัตร 20 ดอลลาร์ที่ตกอยู่บนพื้น” ประสิทธิภาพของตลาดแบบสมบูรณ์อาจใช้ได้ในระยะยาว แต่ในระยะสั้นสิ่งที่ครองเกมคือความเคยชินและสัญชาตญาณจากประสบการณ์
อย่าลืมว่าคนก็พูดแบบเดียวกันกับ PlayStation เหมือนกัน
คลัสเตอร์ Pi ดูเหมือนจะ... ไม่ได้มีความสามารถในการแข่งขันด้านราคาสำหรับงานไหนจริง ๆ เลย
มีบริษัทชื่อ Mythic Beasts ที่ให้บริการเช่าเซิร์ฟเวอร์ rpi (ลิงก์). ในตลาดเฉพาะทางขนาดเล็กมาก ๆ มันก็ยังพอมีที่ใช้อยู่บ้าง
มีเหตุผลที่ซูเปอร์คอมพิวเตอร์ใช้ GPU กันตลอด 10 ปีที่ผ่านมา เพราะ GPU มีประสิทธิภาพกว่ามาก ถ้าต้องการงานขนานแบบ 32bit ก็ซื้อ GPU ฝั่งผู้บริโภคทั่วไปมาใช้ได้เลย ถ้าต้องการ 64bit ก็แค่ใส่ GPU ระดับ prosumer อย่าง RTX 6000 Pro ตอนนี้ไม่มีใครสร้างคลัสเตอร์ CPU กันแล้ว
น่าเสียดายที่ RTX 6000 Pro ก็ยังมีประสิทธิภาพ double precision แค่ 2 TFLOPS ซึ่งช้ากว่า single precision ถึง 64 เท่า ขณะที่ EPYC 9755 ทำได้ราว 10 TFLOPS และใช้ไฟน้อยกว่าด้วย A100 ก็คล้ายกัน ถ้าทำ HPC เป็นงานอดิเรกแล้วต้องการงาน DP การ์ด AMD รุ่นเก่าอาจคุ้มกว่า ทุกวันนี้ทั้ง AMD และ NVIDIA ต่างก็รู้แล้วว่าลูกค้าสายวิทยาศาสตร์ยอมจ่ายหนักเพื่อประสิทธิภาพความแม่นยำสูง
ซูเปอร์คอมพิวเตอร์ El Capitan ก็ใช้ AMD CPU (ที่มี GPU ในตัว) และติดอันดับต้น ๆ ล่าสุด ส่วน Frontier ก็เป็นแนวทางคล้ายกัน การมี GPU แยกที่แต่ละตัวมี data bus และหน่วยความจำของตัวเอง อาจไม่ใช่รูปแบบที่เหมาะที่สุดเสมอไป
ที่จริงแล้วคลัสเตอร์ Pi ไม่ได้มีไว้เพื่อไล่ล่าประสิทธิภาพสูง แต่เป็นอุปกรณ์งานอดิเรกสายเพี้ยนที่สนุกมากกว่า แทบไม่มีใครคาดหวังว่ามันจะคุ้มต้นทุนอยู่แล้ว ดูเหมือนเป็นกรณีที่พาดหัวสไตล์ YouTube แพร่มาถึงบล็อก ถ้าจุดประสงค์จริงคือฝึก Linux cluster การลง hypervisor บน CPU เดสก์ท็อปแล้วสร้าง VM จะคุ้มกว่ามาก ถ้าไม่ได้ต้องการอารมณ์ร่วมจากการเสียบสายหลายเส้น สุดท้ายวิธีนี้ก็มีประสิทธิภาพกว่ามากทั้งด้านการใช้ทรัพยากรระบบและความยืดหยุ่น
ถ้าจะฝึกแบบคุ้มเงินจริง ๆ ใช้คลาวด์ก็พอ ปกติพอฝึกเสร็จคนก็มักหมดความสนใจอย่างรวดเร็ว ดังนั้นมีโอกาสสูงที่ค่าใช้งานคลาวด์จะจบก่อนราคาซื้อเครื่องเดสก์ท็อปด้วยซ้ำ
ผมลองคำนวณดูแล้ว การซื้อ Mac Studio พร้อมโปรเซสเซอร์ Mx Ultra รุ่นล่าสุดและหน่วยความจำสูงสุด คือวิธีที่คุ้มค่าที่สุดในการทดลองโมเดลขนาด 100B+ พารามิเตอร์
ในงานคอมพิวเตอร์แบบดั้งเดิม มันเสียเปรียบแค่เรื่องพื้นที่ แต่ชนะด้านพลังงานและต้นทุน อย่างไรก็ตาม ในงาน AI มันใช้ GPU ไม่ได้ และซอฟต์แวร์ clustering ของ llama.cpp ก็ยังไม่โตพอจะสรุปอะไรที่มีนัยสำคัญได้ ถ้าซอฟต์แวร์ดีขึ้น เรื่องนี้ก็อาจเปลี่ยนไปได้
ผมว่าการถกเถียงแบบนี้ ต่อให้ไม่มีพื้นฐานเทคนิคก็ยังสรุปได้ชัด แค่มองความจริงที่ว่าทุกคนใช้ GPU กับ AI และราคาหุ้น NVIDIA ก็พุ่งแรง ก็เห็นคำตอบแล้ว ผมสงสัยจริง ๆ ว่า OP คิดหรือว่าทั้งโลกแค่ยังไม่รู้ว่าควรเสียบ Raspberry Pi แทนทุกอย่าง
Raspberry Pi บางรุ่นขายแบบขาดทุน ดังนั้นจุดนี้อาจทำให้เกิดความเข้าใจผิดได้ว่า “มันอาจแข่งขันด้านราคาได้”
คำพูดของผู้เขียนที่ว่า “ถ้าคุณเข้ามาอ่านบล็อกนี้ ก็น่าจะชอบตัวหนังสือมากกว่าวิดีโอ งั้นผมขอข้ามไปเลย” ทำให้รู้สึกขอบคุณ
ทั้งที่เล่นสนุกมากแท้ ๆ ยังจะบอกว่าเสียดายอีก 555 ก็ไม่ต่างอะไรกับการเล่นเกมเกิน 1000 ชั่วโมงแล้วบอกว่าไม่สนุกนั่นแหละ
เปรียบเทียบได้เห็นภาพมากเลย 555
55555555555