การปรับแต่งอัตโนมัติอย่างต่อเนื่อง (GPU เท่านั้น)

เราใช้ OpenAI Triton ในการสร้างเคอร์เนลของ GPU บางส่วน Triton อนุญาตให้สร้างเคอร์เนล GPU ที่รวดเร็วสำหรับฟิวชันบางอย่าง แต่เราต้องปรับแต่งพารามิเตอร์บางอย่างสำหรับฟิวชันแต่ละรายการดังกล่าว

ซึ่งอาจใช้เวลานานหากมีฟิวชันจำนวนมาก เราจึงมีวิธีโหลดผลลัพธ์การปรับแต่งอัตโนมัติเหล่านั้น ในขณะที่ยังคงเรียกใช้ขั้นตอนการรวบรวมอื่นๆ ตามปกติ แคชจากการปรับแต่งอัตโนมัติยังคงมีประโยชน์หากเราทำการเปลี่ยนแปลงบางอย่าง ได้แก่ ฟิวชันที่อยู่ในแคชจะใช้แคช ส่วนแคชอื่นๆ จะมีการปรับแต่งอัตโนมัติตามปกติ

ผลลัพธ์ของการปรับแต่งอัตโนมัติสามารถถ่ายโอน/โหลดได้โดยใช้พารามิเตอร์ต่อไปนี้

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

หากเราระบุไฟล์ .txt หรือ .text Pro แล้ว แคชจะถูกทิ้งในรูปแบบ textโปรโตคอล หรือในรูปแบบไบนารี โพรโทบูฟ

อยู่ระหว่างการทดสอบ

การปรับแต่งอัตโนมัติแบบต่อเนื่องยังใช้ในการทดสอบได้ด้วย ขอแนะนําให้ใช้หากการทดสอบมีขนาดใหญ่มาก โดยเฉพาะอย่างยิ่งหากสภาพแวดล้อมการทดสอบมีประสิทธิภาพจํากัด

โดยจะทำงานได้ดีก็ต่อเมื่อแคชการปรับแต่งอัตโนมัติมีผลลัพธ์ที่สร้างขึ้นด้วย GPU ประเภทเดียวกันที่มีการทำการทดสอบ

การทดสอบการใช้งานการปรับแต่งอัตโนมัติอย่างต่อเนื่อง

สำหรับตอนนี้ ให้สมมติว่าการทดสอบที่เป็นปัญหาใช้ GPU ประเภทเดียวกันเสมอ

  1. เราต้องส่งออกผลการปรับแต่งอัตโนมัติจากการทดสอบ เช่น การระบุพารามิเตอร์เหล่านี้ลงในคำสั่งทดสอบ

    --test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto
    --test_sharding_strategy=disabled
    

    ต้องปิดใช้ชาร์ดเพื่อให้ได้รับแคชการปรับแต่งอัตโนมัติรายการเดียวสำหรับการทดสอบทั้งหมดอย่างถูกต้อง

  2. จากนั้นเราต้องอัปโหลดแคชนั้นไปยังที่เก็บโค้ดของเรา

  3. จากนั้นเราจะต้องเพิ่มแคชไปยังทรัพยากร 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 มีการพัฒนาและสร้างการเชื่อมต่อที่แตกต่างกัน