สิ่งที่ต้องมีจริง ๆ เพื่อรันโค้ดบนซูเปอร์คอมพิวเตอร์มูลค่า 200 ล้านยูโร
(towardsdatascience.com)- MareNostrum V ของมหาวิทยาลัยเทคนิคคาตาลุญญา บาร์เซโลนา เป็นหนึ่งใน 15 ซูเปอร์คอมพิวเตอร์ชั้นนำของโลก และเป็นโครงสร้างพื้นฐานการวิจัยสาธารณะมูลค่า 200 ล้านยูโรที่ทำการประมวลผลแบบกระจายข้าม 8,000 โหนด
- มันไม่ใช่คอมพิวเตอร์สมรรถนะสูงเครื่องเดียว แต่เป็นระบบแบบกระจายที่เชื่อมคอมพิวเตอร์อิสระหลายพันเครื่องเข้าด้วยกันด้วย InfiniBand NDR200 fat-tree topology ทำให้โหนดใดก็สื่อสารกันได้ด้วยค่าหน่วงต่ำสุดเท่ากัน
- การส่งงานทำผ่าน SLURM workload manager โดยใช้แบตช์สคริปต์ที่ระบุการขอใช้ทรัพยากร เวลาจำกัด และงบประมาณโครงการ เพื่อคิวงานให้ตัวจัดตาราง
- ระบบทำงานใน สภาพแวดล้อมแบบ air-gapped ที่ตัดการเชื่อมต่ออินเทอร์เน็ตภายนอก ดังนั้นต้องเตรียมไลบรารีและชุดข้อมูลที่จำเป็นล่วงหน้า และบางครั้งการดึงผลลัพธ์ออกมากลับเป็นคอขวดมากกว่าการคำนวณ
- เป็นทรัพยากรสาธารณะที่เปิดให้ใช้งานฟรีสำหรับนักวิจัย โดยหน่วยงานในสเปนเข้าถึงได้ผ่าน RES และทั่วทั้งยุโรปเข้าถึงได้ผ่านการเปิดรับข้อเสนอเป็นรอบของ EuroHPC Joint Undertaking
สถาปัตยกรรม: เครือข่ายก็คือตัวคอมพิวเตอร์
- ความเข้าใจผิดที่ใหญ่ที่สุดในโลก HPC คือคิดว่าเป็นการเช่าคอมพิวเตอร์ทรงพลังเพียงเครื่องเดียว แต่ความจริงคือเป็นโครงสร้างที่ ส่งงานแบบกระจาย ไปยังคอมพิวเตอร์อิสระหลายพันเครื่อง
- เพื่อป้องกันไม่ให้ GPU ว่างงานเพราะรอการส่งข้อมูลในระบบประมวลผลแบบกระจาย MareNostrum V จึงสร้าง fabric InfiniBand NDR200 ในรูปแบบ fat-tree topology
- ในเครือข่ายทั่วไป เมื่อคอมพิวเตอร์หลายเครื่องแชร์สวิตช์เดียวกัน มักเกิดคอขวดด้านแบนด์วิดท์
- fat-tree topology เพิ่มแบนด์วิดท์ของลิงก์เมื่อไล่ขึ้นไปยังชั้นบนของเครือข่าย เพื่อรับประกัน แบนด์วิดท์แบบ non-blocking
- จากทั้งหมด 8,000 โหนด โหนดใดก็สามารถสื่อสารกันได้ด้วยค่าหน่วงต่ำสุดเท่ากัน
องค์ประกอบของพาร์ทิชันประมวลผล
- General Purpose Partition (GPP): ออกแบบมาสำหรับงาน CPU แบบขนานระดับสูง มี 6,408 โหนด แต่ละโหนดติดตั้ง Intel Sapphire Rapids 112 คอร์ รวมสมรรถนะสูงสุด 45.9 PFlops
- Accelerated Partition (ACC): ออกแบบมาสำหรับงานเฉพาะทาง เช่น การฝึก AI และ molecular dynamics มี 1,120 โหนด แต่ละโหนดติดตั้ง NVIDIA H100 SXM GPU 4 ตัว ให้สมรรถนะสูงสุด 260 PFlops
- หากอิงราคาขายปลีกของ H100 ราว 25,000 ดอลลาร์ต่อชิ้น ต้นทุนเฉพาะ GPU ก็เกิน 110 ล้านดอลลาร์แล้ว
- Login Nodes: จุดแรกที่เข้าใช้งานเมื่อเชื่อมต่อผ่าน SSH ใช้สำหรับงานเบา ๆ เช่น ย้ายไฟล์ คอมไพล์โค้ด และส่ง job script เท่านั้น ไม่ใช่สำหรับการประมวลผล
โครงสร้างพื้นฐานควอนตัม
- MareNostrum 5 ได้ผสาน คอมพิวเตอร์ควอนตัม เครื่องแรกของสเปนไว้ทั้งในเชิงกายภาพและเชิงตรรกะ
- รวมทั้งระบบควอนตัมแบบ digital gate และ quantum annealer ที่ใช้ superconducting qubit ชื่อ MareNostrum-Ona
- หน่วยประมวลผลควอนตัม (QPU) ไม่ได้มาแทนที่ซูเปอร์คอมพิวเตอร์แบบคลาสสิก แต่ทำหน้าที่เป็น ตัวเร่งเฉพาะทาง
- ปัญหาการหาค่าเหมาะที่สุดหรือการจำลองเคมีควอนตัมที่แม้แต่ H100 GPU ก็จัดการได้ยาก สามารถ offload ไปยังฮาร์ดแวร์ควอนตัมเพื่อสร้างขุมพลังของ การประมวลผลไฮบริดแบบคลาสสิก-ควอนตัมขนาดใหญ่
Air gap, โควตา และความจริงของการใช้งาน HPC
- Air gap: แม้จะ SSH เข้าจากภายนอกได้ แต่ compute node ไม่สามารถเข้าถึงอินเทอร์เน็ตภายนอกได้
- จึงไม่สามารถทำ
pip install,wgetหรือเชื่อมต่อกับ external HuggingFace repository ได้ - ทุกอย่างที่สคริปต์ต้องใช้จำเป็นต้องดาวน์โหลดและคอมไพล์ล่วงหน้า แล้วเตรียมไว้ใน storage directory
- ผู้ดูแลระบบจะจัดเตรียมไลบรารีและซอฟต์แวร์ส่วนใหญ่ผ่านระบบ
module
- จึงไม่สามารถทำ
- การย้ายข้อมูล: รับส่งข้อมูลผ่าน login node ด้วย
scpหรือrsync- เพราะการคำนวณจริงเร็วมาก ขั้นตอนดึงผลลัพธ์ที่เสร็จแล้วกลับมายังเครื่องโลคัลจึงอาจกลายเป็น คอขวด ได้
- ข้อจำกัดและโควตา: แต่ละโครงการจะได้รับการจัดสรร งบเวลา CPU จำนวนหนึ่ง และมี hard limit สำหรับจำนวนงานที่ผู้ใช้คนเดียวจะรันพร้อมกันหรือรอคิวได้
- ทุกงานต้องระบุ wall-time limit อย่างเข้มงวด
- หากใช้เวลาเกินแม้เพียง 1 วินาที ตัวจัดตารางจะยุติโปรเซสทันที
- การบันทึก log: หลังส่งงานแล้วจะไม่มี live terminal output โดย
stdoutและstderrทั้งหมดจะถูก redirect อัตโนมัติไปยังไฟล์ log (เช่นsim_12345.out,sim_12345.err)- หลังงานเสร็จหรือแครช ผู้ใช้ต้องตรวจไฟล์ข้อความเพื่อดูผลลัพธ์และดีบัก
- สามารถติดตามสถานะงานที่ส่งไปแล้วได้ด้วย
squeueหรือtail -f
SLURM Workload Manager
- เมื่อได้รับอนุมัติ allocation สำหรับงานวิจัยและล็อกอินผ่าน SSH แล้ว สิ่งที่เห็นคือ Linux terminal prompt ที่ธรรมดามาก
- เพราะมีนักวิจัยหลายพันคนใช้งานพร้อมกัน หากรันสคริปต์หนัก ๆ จากเทอร์มินัลโดยตรง login node อาจล่ม และคุณอาจได้รับอีเมลเตือนจากผู้ดูแลระบบ
- SLURM (Simple Linux Utility for Resource Management): ซอฟต์แวร์จัดตารางงานโอเพนซอร์ส ที่ให้ผู้ใช้ระบุฮาร์ดแวร์ สภาพแวดล้อมซอฟต์แวร์ และโค้ดที่จะรันไว้ใน bash script จากนั้นระบบจะนำงานเข้าคิว รอจนมีฮาร์ดแวร์พร้อมจึงรัน และปล่อยโหนดคืนเมื่อเสร็จ
#SBATCHdirective หลัก ๆ ได้แก่--nodes: จำนวนเครื่องจริงที่ต้องใช้--ntasks: จำนวนรวมของ MPI process (task) ที่จะสร้าง โดย SLURM จะจัดกระจายให้ข้ามโหนดเอง--time: ขีดจำกัด wall-clock time แบบเข้มงวด หากเกินจะถูกยุติทันที--account: project ID ที่จะถูกหักเวลา CPU--qos: ระบุ Quality of Service หรือคิวเฉพาะ (เช่น debug queue ที่เข้าถึงได้เร็วกว่า แต่จำกัดเวลารันสั้น)
ตัวอย่างใช้งานจริง: orchestration ของ OpenFOAM sweep
- เพื่อทำนาย aerodynamic downforce ด้วยโมเดล ML surrogate จำเป็นต้องรัน CFD (computational fluid dynamics) simulation ความละเอียดสูง 50 ครั้ง บน 3D mesh ที่แตกต่างกัน 50 ชุด
- ตัวอย่าง SLURM job script สำหรับเคส OpenFOAM CFD เดียวบน general-purpose partition:
- ระบุทรัพยากรด้วย
--nodes=1,--ntasks=6,--time=00:30:00เป็นต้น - โหลดสภาพแวดล้อมด้วย
module load OpenFOAM/11-foss-2023a - ใช้
srun --mpi=pmixเพื่อรันsurfaceFeatureExtract,blockMesh,decomposePar,snappyHexMesh,potentialFoam,simpleFoam,reconstructParตามลำดับ
- ระบุทรัพยากรด้วย
- แทนที่จะส่งทั้ง 50 งานด้วยมือ สามารถใช้ SLURM dependency เพื่อเชื่อมแต่ละงานต่อจากงานก่อนหน้า
- ใช้
sbatch --dependency=afterany:$PREV_JOB_IDเพื่อลงทะเบียนงานทั้ง 50 รายการเข้าคิวภายในไม่กี่วินาที - ภายในเช้าวันถัดไป การประเมินอากาศพลศาสตร์ทั้ง 50 ครั้งจะประมวลผลและบันทึก log เสร็จ พร้อมสำหรับแปลงเป็นเทนเซอร์เพื่อฝึก ML
- ใช้
ขีดจำกัดของการทำงานขนาน: กฎของ Amdahl
- เหตุผลที่ขอเพียง 6 task สำหรับ CFD simulation ทั้งที่หนึ่งโหนดมี 112 คอร์ ก็เพราะ กฎของ Amdahl
- ทุกโปรแกรมมี ส่วนที่เป็นลำดับ (serial fraction) ซึ่งไม่สามารถทำงานขนานได้ และการเพิ่มความเร็วเชิงทฤษฎีก็ถูกจำกัดอย่างเข้มงวดด้วยสัดส่วนนี้
- สมการ: S = 1 / ((1−p) + p/N) โดย S คือการเพิ่มความเร็วรวม, p คือสัดส่วนที่ทำงานขนานได้, N คือจำนวนคอร์ประมวลผล
- ต่อให้โค้ดมีส่วนที่เป็นลำดับเพียง 5% การใช้ทุกคอร์ของ MareNostrum V ก็ยังให้การเพิ่มความเร็วเชิงทฤษฎีได้สูงสุดเพียง 20 เท่า
- หากแบ่ง task ไปยังคอร์จำนวนมากเกินไป จะทำให้ communication overhead ผ่านเครือข่าย InfiniBand เพิ่มขึ้น
- หากใช้เวลาส่งต่อ boundary condition ระหว่างคอร์มากกว่าการคำนวณจริง การเพิ่มฮาร์ดแวร์จะยิ่งทำให้ช้าลงแทน
- ในการจำลองระบบขนาดเล็ก (N=100) runtime กลับเพิ่มขึ้นหลังเกิน 16 เธรด และฮาร์ดแวร์จะให้ประสิทธิผลเต็มที่เฉพาะกับงานขนาดใหญ่ (N=10k+) เท่านั้น
- การเขียนโค้ดสำหรับซูเปอร์คอมพิวเตอร์จึงเป็นการฝึกบริหาร อัตราส่วนระหว่าง compute กับ communication
วิธีเข้าถึง
- แม้ฮาร์ดแวร์จะมีต้นทุนสูง แต่การเข้าถึง MareNostrum V สำหรับนักวิจัยนั้น ฟรี และเวลาในการประมวลผลถือเป็นทรัพยากรทางวิทยาศาสตร์ที่ได้รับทุนจากภาครัฐ
- นักวิจัยจากสถาบันในสเปนสามารถสมัครผ่าน Spanish Supercomputing Network (RES)
- นักวิจัยทั่วทั้งยุโรปสามารถสมัครผ่านรอบเปิดรับการเข้าถึงตามปกติของ EuroHPC Joint Undertaking
- แทร็ก "Development Access" ออกแบบมาสำหรับโครงการอย่างการพอร์ตโค้ดหรือการทำ benchmark โมเดล ML ทำให้นักวิทยาศาสตร์ข้อมูลเข้าถึงได้ง่ายขึ้น
ยังไม่มีความคิดเห็น