เครื่องมือสถิติการดําเนินการของ HLO
คุณสามารถใช้สถิติการดำเนินการ HLO เพื่อดูสถิติประสิทธิภาพของการดำเนินการของเครื่องมือเพิ่มประสิทธิภาพระดับสูง (HLO) ที่ดำเนินการในระหว่างเซสชันการโปรไฟล์ เครื่องมือนี้มีประโยชน์ในการระบุเป้าหมายที่เป็นไปได้สําหรับการเพิ่มประสิทธิภาพ โดยไฮไลต์การดำเนินการที่ใช้เวลานานที่สุดในกราฟ HLO ในช่วงที่โปรไฟล์
แพลตฟอร์มที่รองรับ
TPU: รองรับ
GPU: รองรับ
สําหรับ GPU การดำเนินการ HLO จะมีความสัมพันธ์แบบ N:M กับเคอร์เนลที่ดำเนินการจริง ดูสถิติที่ระดับเคอร์เนลได้ที่เครื่องมือสถิติเคอร์เนล GPU
คอมโพเนนต์เครื่องมือสถิติการดําเนินการของ HLO
เครื่องมือสถิติการดําเนินการของ HLO มีองค์ประกอบหลักๆ ดังนี้
- ตารางสถิติการดำเนินการ HLO: คอมโพเนนต์หลักที่แสดงรายละเอียดการดำเนินการ HLO ทั้งหมดที่ดำเนินการระหว่างเซสชันการโปรไฟล์ในรูปแบบตาราง โดยจะมี 1 แถวสําหรับการดำเนินการ HLO ที่ไม่ซ้ำกันแต่ละรายการ และคอลัมน์ที่บันทึกรายละเอียดต่างๆ เกี่ยวกับการดําเนินการนั้น
- ตัวเลือกแบบเลื่อนลงช่วยให้คุณเลือกคอลัมน์ที่ต้องการแสดงเป็นภาพสำหรับการดำเนินการ HLO แต่ละรายการได้
- นอกจากนี้ คุณยังกรองแถวตามหมวดหมู่การดำเนินการ HLO ผ่านตัวเลือกแบบเลื่อนลงที่ 2 ได้อีกด้วย
- ช่องค้นหาช่วยให้คุณกรองตามรหัสโปรแกรม การดำเนินการ HLO ข้อความการดำเนินการ HLO หรือชื่อการดำเนินการของเฟรมเวิร์กได้ โดยตัวกรองจะเลือกสตริงที่ระบุซึ่งปรากฏที่ใดก็ได้ในคอลัมน์ที่เกี่ยวข้อง
- ส่วนแผนภูมิแบบสรุป: ส่วนนี้มีแผนภูมิที่สรุปตารางการดำเนินการแบบละเอียด ดังนี้
- แผนภูมิวงกลมแสดงเศษส่วนของเวลาที่ใช้ในการดำเนินการ HLO หมวดหมู่ต่างๆ
- แผนภูมิวงกลมแสดงเศษส่วนของเวลาที่ใช้ในการดำเนินการ HLO แต่ละรายการ (ตัดให้เหลือการดำเนินการ N รายการแรก โดยจัดประเภทการดำเนินการที่เหลือเป็น "อื่นๆ" เพื่อปรับปรุงความสามารถในการอ่าน)
- แผนภูมิวงกลมแสดงเศษส่วนของเวลาทั้งหมดที่ใช้กับการดำเนินการที่เป็นส่วนหนึ่งของการสร้างใหม่ XProf ได้รับข้อมูลจากข้อมูลเมตาของคอมไพเลอร์ที่เชื่อมโยงกับโปรไฟล์
- แผนภูมิวงกลมที่แสดงหมวดหมู่การดำเนินการ HLO ที่ใช้เวลาในการทำให้เป็นรูปธรรมอีกครั้ง (หากมี)
- เวลาที่ใช้ในการคอมไพล์ภายนอก: การคอมไพล์ภายนอกเป็นฟีเจอร์ TensorFlow ที่ช่วยให้การดำเนินการบางอย่างภายในการคํานวณ XLA ทำงานได้อย่างโปร่งใสใน CPU ของโฮสต์แทนอุปกรณ์เร่งความเร็ว (เช่น tf.summary หรือ tf.print ที่ต้องใช้การเข้าถึง I/O ซึ่งอุปกรณ์ไม่มี)
- แผนภูมิที่แสดง GFLOPS/s สําหรับการดำเนินการ HLO ทั้งหมด โดยจัดเรียงตามเวลาดำเนินการทั้งหมด
- สำหรับ TPU เท่านั้น เวลาต่อ HLO ตามกลุ่มการจำลอง: เมนูแบบเลื่อนลงให้คุณเลือกจากการดำเนินการแบบรวมต่างๆ ที่ดำเนินการในระหว่างเซสชันการโปรไฟล์ อินสแตนซ์ต่างๆ ของการดำเนินการแบบรวมนั้นอาจดำเนินการในกลุ่มรีพลิคาที่แตกต่างกัน (เช่น AllGather) ส่วนแผนภูมิวงกลมจะแสดงการกระจายเวลาระหว่างอินสแตนซ์ต่างๆ เหล่านี้
รายละเอียดตารางสถิติการดำเนินการ HLO
คุณสามารถคลิกส่วนหัวของคอลัมน์ใดก็ได้เพื่อจัดเรียงตารางสถิติการดำเนินการ HLO ลําดับเริ่มต้นจะอิงตามเวลาทั้งหมดที่ดำเนินการเองของการดำเนินการ (มีป้ายกำกับว่า "อันดับ" ในตาราง)
ตารางมีข้อมูลต่อไปนี้สําหรับการดำเนินการ HLO แต่ละรายการ
- ชื่อการดำเนินการ: ชื่อที่ไม่ซ้ำกันซึ่งคอมไพเลอร์ XLA กำหนดให้กับการดำเนินการ HLO
- รหัสโปรแกรม: ตัวระบุสำหรับข้อบังคับ HLO ของการดำเนินการนี้
- หมวดหมู่การดำเนินการ HLO: หมวดหมู่เหล่านี้ส่วนใหญ่จะกำหนดโดยคอมไพเลอร์ XLA นอกจากนี้ XProf ยังใช้วิธีการหาค่าประมาณเพื่อระบุและจัดหมวดหมู่การดำเนินการบางอย่าง (เช่น การผสานการกรองเชิงกรวย)
- ข้อความการดำเนินการ HLO: มาจากคอมไพเลอร์ XLA และมีรายละเอียด เช่น ประเภทและรูปแบบของอินพุต/พารามิเตอร์
- ชื่อการดำเนินการของเฟรมเวิร์ก: การดำเนินการที่ระดับเฟรมเวิร์ก (เช่น JAX) ที่ส่งผลให้เกิดการดำเนินการ HLO นี้
- การเกิด: จํานวนครั้งที่ดำเนินการ HLO ที่เฉพาะเจาะจงนี้ดำเนินการในระหว่างระยะเวลาการสร้างโปรไฟล์
- เวลาทั้งหมด (μs): เวลาสะสมที่ใช้ดำเนินการนี้ในเหตุการณ์ทั้งหมด หากการดำเนินการนี้มีการดำเนินการย่อย (เช่น ภายในการผสาน) เวลานี้รวมเวลาที่ใช้ในการดำเนินการย่อยเหล่านั้นด้วย
- เวลาเฉลี่ย (μs): เวลาเฉลี่ยต่อการดำเนินการของ HLO นี้ ซึ่งรวมถึงเวลาที่ใช้ในการดำเนินการย่อย (หากมี)
- เวลาทั้งหมดที่ใช้เอง (μs): เวลาสะสมที่ใช้ภายในเนื้อหาของการดำเนินการ HLO นี้เท่านั้น โดยไม่รวมเวลาที่ใช้ในการดำเนินการย่อย
- เวลาดำเนินการเองโดยเฉลี่ย (μs): เวลาเฉลี่ยต่อการดำเนินการของ HLO นี้ โดยไม่รวมเวลาที่ใช้ในการดำเนินการย่อย
- เวลาดำเนินการเองทั้งหมด (%): เวลาดำเนินการเองของการดำเนินการเป็นเปอร์เซ็นต์ของเวลาทั้งหมดในอุปกรณ์สำหรับการดำเนินการทั้งหมด
- เวลารวมทั้งหมดของกิจกรรมเดียว (%): ผลรวมของเวลารวมทั้งหมดของกิจกรรมเดียว (%) สำหรับวิดีโอทั้งหมดที่ปรากฏก่อนหน้านี้ตามลําดับ "อันดับ"
- การหยุดทำงานของ DMA (%): เปอร์เซ็นต์ของเวลาทั้งหมดที่การดำเนินการหยุดชะงักเนื่องจากการเข้าถึงหน่วยความจำโดยตรง (DMA)
- การใช้แบนด์วิดท์ (การใช้งาน/วินาที) สำหรับ FLOP, HBM และหน่วยความจำภายในของ TPU (หากมี) CMEM มีอยู่ใน TPU v4 เท่านั้น) ข้อมูลทั้งหมดนี้คำนวณโดยใช้การวิเคราะห์ต้นทุนแบบคงที่ (ตัวส่วนเพิ่ม) ของคอมไพเลอร์ และเวลาดำเนินการ (ตัวส่วนหาร) ที่โปรไฟล์ไว้
- GFLOPS/s ของโมเดล: คอมไพเลอร์ XLA จะคํานวณต้นทุน GFLOPs และโปรไฟล์จะวัดเวลา
- GFLOPS/s ที่ปรับมาตรฐานแล้ว: ปรับมาตรฐาน FLOP ที่คอมไพเลอร์คำนวณต่อการดำเนินการ 1 ครั้งตามความแม่นยำเชิงตัวเลข และ FLOP สูงสุดที่อุปกรณ์รองรับสำหรับความแม่นยำที่แตกต่างกัน ตัวอย่างเช่น TPU v6e รองรับ FLOP สูงสุดที่ int8 ได้มากกว่าที่ bf16 2 เท่า โดย XProf จะปรับให้เป็น bf16 โดยค่าเริ่มต้น
- แบนด์วิดท์หน่วยความจำ: จำนวนไบต์/วินาทีที่การดำเนินการใช้จากหน่วยความจำใดก็ตาม (เช่น VMEM และ HBM ของ TPU ในชิป) คอมไพเลอร์ XLA จะแสดงจํานวน "ไบต์" และระยะเวลาจะวัดในโปรไฟล์
- แบนด์วิดท์ HBM: จำนวนไบต์/วินาทีที่ใช้จาก HBM โดยเฉพาะ
- ระดับการทํางาน: คํานวณเป็นอัตราส่วน FLOPS ต่อไบต์ ตามที่กําหนดไว้สําหรับการวิเคราะห์ Roofline
- ขีดจำกัดของการคำนวณ/หน่วยความจำ: คอลัมน์นี้แสดงข้อมูลว่าประสิทธิภาพของการดำเนินการถูกจำกัดโดยความสามารถของการคำนวณหรือแบนด์วิดท์ของหน่วยความจำเป็นหลักหรือไม่ โดยอิงตามรูปแบบ Roofline
- การสร้างใหม่: ระบุว่าการดำเนินการเป็นส่วนหนึ่งของการสร้างใหม่หรือไม่
- การคอมไพล์ภายนอก: ระบุว่าการดำเนินการทำงานบน CPU ของโฮสต์โดยใช้เครื่องมือคอมไพล์ภายนอกของ TensorFlow หรือไม่
- ปรับอัตโนมัติ: ระบุว่า XLA ปรับออปโดยอัตโนมัติหรือไม่ ดูข้อมูลเพิ่มเติมได้ที่การปรับอัตโนมัติและการปรับอัตโนมัติแบบถาวร