เราใช้ OpenAI Triton ในการสร้างเคอร์เนลของ GPU บางส่วน Triton อนุญาตให้สร้างเคอร์เนล GPU ที่รวดเร็วสำหรับฟิวชันบางอย่าง แต่เราต้องปรับแต่งพารามิเตอร์บางอย่างสำหรับฟิวชันแต่ละรายการดังกล่าว
ซึ่งอาจใช้เวลานานหากมีฟิวชันจำนวนมาก เราจึงมีวิธีโหลดผลลัพธ์การปรับแต่งอัตโนมัติเหล่านั้น ในขณะที่ยังคงเรียกใช้ขั้นตอนการรวบรวมอื่นๆ ตามปกติ แคชจากการปรับแต่งอัตโนมัติยังคงมีประโยชน์หากเราทำการเปลี่ยนแปลงบางอย่าง ได้แก่ ฟิวชันที่อยู่ในแคชจะใช้แคช ส่วนแคชอื่นๆ จะมีการปรับแต่งอัตโนมัติตามปกติ
ผลลัพธ์ของการปรับแต่งอัตโนมัติสามารถถ่ายโอน/โหลดได้โดยใช้พารามิเตอร์ต่อไปนี้
--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=
หากเราระบุไฟล์ .txt หรือ .text Pro แล้ว แคชจะถูกทิ้งในรูปแบบ textโปรโตคอล หรือในรูปแบบไบนารี โพรโทบูฟ
อยู่ระหว่างการทดสอบ
การปรับแต่งอัตโนมัติแบบต่อเนื่องยังใช้ในการทดสอบได้ด้วย ขอแนะนําให้ใช้หากการทดสอบมีขนาดใหญ่มาก โดยเฉพาะอย่างยิ่งหากสภาพแวดล้อมการทดสอบมีประสิทธิภาพจํากัด
โดยจะทำงานได้ดีก็ต่อเมื่อแคชการปรับแต่งอัตโนมัติมีผลลัพธ์ที่สร้างขึ้นด้วย GPU ประเภทเดียวกันที่มีการทำการทดสอบ
การทดสอบการใช้งานการปรับแต่งอัตโนมัติอย่างต่อเนื่อง
สำหรับตอนนี้ ให้สมมติว่าการทดสอบที่เป็นปัญหาใช้ GPU ประเภทเดียวกันเสมอ
เราต้องส่งออกผลการปรับแต่งอัตโนมัติจากการทดสอบ เช่น การระบุพารามิเตอร์เหล่านี้ลงในคำสั่งทดสอบ
--test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto --test_sharding_strategy=disabled
ต้องปิดใช้ชาร์ดเพื่อให้ได้รับแคชการปรับแต่งอัตโนมัติรายการเดียวสำหรับการทดสอบทั้งหมดอย่างถูกต้อง
จากนั้นเราต้องอัปโหลดแคชนั้นไปยังที่เก็บโค้ดของเรา
จากนั้นเราจะต้องเพิ่มแคชไปยังทรัพยากร Dependency ของเป้าหมายทดสอบ และโหลดโดยใช้ตัวแปรสภาพแวดล้อม
data = ["test_autotune_cache.textproto"], env = {"XLA_FLAGS": "--xla_gpu_load_autotune_results_from=" + "$(execpath test_autotune_cache.textproto)"},
(คุณสามารถใช้ชาร์ดดิ้งในการทดสอบที่โหลดผลการปรับแต่งอัตโนมัติได้)
ดูตัวอย่างการทดสอบใน xla/service/gpu/tests/BUILD ได้อีกด้วย
- load_autotune_results_using_execpath_test
- load_autotune_results_from_test_workspace_test
- dump_autotune_results_to_test_outputs_test
แคชที่ล้าสมัย
หากมีการเปลี่ยนแปลงจำนวนมากกับโมเดล แคชอาจไม่มีฟิวชันทั้งหมดอีกต่อไป ดังนั้นการทดสอบจะช้าลง ในกรณีนี้ เราจะต้องสร้างแคชการปรับแต่งอัตโนมัติใหม่
หากเราเริ่มใช้ GPU ประเภทใหม่สำหรับทำการทดสอบ ก็จะใช้เช่นเดียวกัน
นอกจากนี้ แคชอาจล้าสมัยหากคอมไพเลอร์ XLA มีการพัฒนาและสร้างการเชื่อมต่อที่แตกต่างกัน