การเพิ่มประสิทธิภาพความเร็วในการสร้างสำหรับ pytorch และ pytorch/xla เกี่ยวข้องกับกลยุทธ์หลายประการ:
การเพิ่มประสิทธิภาพ pytorch build ความเร็ว
1. ใช้ไบนารีที่สร้างไว้ล่วงหน้า: แทนที่จะสร้างจากแหล่งที่มาให้ใช้ไบนารีที่สร้างไว้ล่วงหน้าจากเว็บไซต์ทางการของ Pytorch ไบนารีเหล่านี้ได้รับการปรับให้เหมาะสมกับห้องสมุดเช่น MKL และแมกมาซึ่งมีความสำคัญต่อประสิทธิภาพ [5]
2. เพิ่มประสิทธิภาพกระบวนการสร้าง: หากคุณต้องสร้างจากแหล่งที่มาให้ใช้เครื่องมือเช่น `ccache` เพื่อแคชไฟล์ที่รวบรวม สิ่งนี้จะช่วยลดเวลาในการสร้างใหม่อย่างมีนัยสำคัญหลังจากทำการเปลี่ยนแปลงเล็กน้อยกับรหัส [7]
3. การรวบรวมแบบขนาน: ใช้โปรเซสเซอร์หลายคอร์โดยการตั้งค่าจำนวนงานสร้างเพื่อให้ตรงกับจำนวนคอร์ CPU ที่มีอยู่ สิ่งนี้สามารถทำได้โดยใช้ธงเช่น `-j` ด้วยตัวเลือก` Make` หรือตัวเลือกที่คล้ายกันในระบบบิลด์ของคุณ
ประสิทธิภาพการทำงานของ pytorch/xla
1. ใช้การดำเนินการขี้เกียจ: Pytorch/XLA ใช้การดำเนินการเทนเซอร์ Lazy ซึ่งบันทึกการดำเนินงานในกราฟก่อนการดำเนินการ สิ่งนี้ช่วยให้การเพิ่มประสิทธิภาพโดยการหลอมรวมการดำเนินการหลายอย่างเข้ากับการดำเนินการที่ดีที่สุดครั้งเดียว [4] [6]
2. ข้อมูลล่วงหน้า: ใช้ `mpdeviceloader` เพื่อโหลดข้อมูลล่วงหน้าลงบนอุปกรณ์ XLA ลดค่าใช้จ่ายการสื่อสารระหว่างซีพียูโฮสต์และอุปกรณ์ [8]
3. ลดการสื่อสารแบบ CPU-hevice: ลดหรือลบการดำเนินการที่ต้องการการซิงโครไนซ์ระหว่างอุปกรณ์ CPU และ XLA เช่นการพิมพ์คำสั่งหรือการบันทึกการโทรกลับ [8]
4. ใช้อุปสรรคในการเพิ่มประสิทธิภาพ: แทรกอุปสรรคเช่น `xm.mark_step ()` เพื่อทำลายกราฟการคำนวณขนาดใหญ่ให้เป็นขนาดเล็กลงทำให้คอมไพเลอร์ XLA สามารถปรับให้เหมาะสมได้อย่างมีประสิทธิภาพมากขึ้น [8]
5. การยกระดับคลาวด์ TPUs: สำหรับการฝึกอบรมขนาดใหญ่ใช้ประโยชน์จากคลาวด์ TPUs กับ Pytorch/XLA เพื่อให้ได้การฝึกอบรมประสิทธิภาพสูงและคุ้มค่า [2] [9]
การอ้างอิง:[1] https://www.reddit.com/r/machinelearning/comments/kvs1ex/d_here_are_17_ways_of_making_pytorch_training/
[2] https://www.youtube.com/watch?v=PSPMRTWUMS8
[3] https://sebastianraschka.com/blog/2023/pytorch-faster.html
[4] https://pytorch.org/xla/release/r2.4/index.html
[5] https://discuss.pytorch.org/t/is-building-from-source-really-speed-peed-peed-peed/91057
[6] https://pytorch.org/xla/release/2.2/index.html
[7] https://discuss.pytorch.org/t/any-tips-for-peeding-up-the-source-build-process/184558
[8] https://pytorch.org/xla/master/learn/xla-overview.html
[9] https://cloud.google.com/blog/topics/developers-practitioners/scaling-deep-learning-workloads-pytorch-xla-and-cloud-tpu-vm