เราใช้ OpenAI Triton ในการสร้างเคอร์เนล GPU บางรายการ Triton อนุญาตให้สร้างเคอร์เนล GPU ที่รวดเร็วสำหรับการผสานบางอย่าง แต่เราต้องปรับแต่งพารามิเตอร์บางอย่างสำหรับการผสานแต่ละรายการดังกล่าว
ซึ่งอาจใช้เวลานานหากมีการผสานหลายรายการ เราจึงมีวิธีโหลดผลการจูนอัตโนมัติเหล่านั้นขณะที่ยังคงเรียกใช้ขั้นตอนการคอมไพล์อื่นๆ ต่อไปตามปกติ แคชการปรับอัตโนมัติจะยังคงมีประโยชน์หากเราทําการเปลี่ยนแปลง 2-3 อย่าง โดยฟิวชันที่อยู่ในแคชจะใช้แคชนั้น ส่วนฟิวชันอื่นๆ จะได้รับการปรับอัตโนมัติตามปกติ
แนะนำ: ไดเรกทอรีแคช
--xla_gpu_per_fusion_autotune_cache_dir=your/directory
ใช้และดูแลรักษาแคชการปรับแต่งอัตโนมัติต่อฟิวชันในไดเรกทอรีที่ระบุ โดยจะมี 1 ไฟล์ต่อฟิวชันที่แตกต่างกัน
ข้อดีหลักๆ ของวิธีการนี้คือ คุณสามารถใช้ไดเรกทอรีแคชเดียวกันกับการเรียกใช้ XLA หลายครั้ง (ของโมเดลต่างๆ) และแคชจะเพิ่มขึ้นตามการพบการผสานใหม่แต่ละครั้ง ซึ่งจะช่วยเร่งการเรียกใช้ครั้งต่อๆ ไป นอกจากนี้ยังมีการรองรับพื้นฐานสําหรับการเรียกใช้อินสแตนซ์ XLA หลายรายการที่มีไดเรกทอรีแคชเดียวกันพร้อมกัน
XLA จะอ่านผลลัพธ์ที่มีอยู่เมื่อจำเป็นและเขียนผลลัพธ์ใหม่หลังจากกำหนดแล้ว
- ไดเรกทอรีต้องมีอยู่ก่อนเรียกใช้ XLA และต้องเขียนได้
- ผู้ใช้ต้องจัดการการลบข้อมูลแคชออก ดังนี้
- โปรดใช้ไดเรกทอรีว่างหากต้องการเริ่มต้นด้วยแคชว่าง
- ผู้ใช้ต้องตรวจสอบเวอร์ชัน XLA โดยทำดังนี้
- ถ้าต้องการใช้แคชแยกต่างหากสำหรับ XLA เวอร์ชันต่างๆ โปรดใช้ไดเรกทอรีอื่น
ระบบจะปิดแคชไว้โดยค่าเริ่มต้น (เมื่อคุณไม่ได้ระบุพารามิเตอร์)
ข้อจำกัด: เราไม่รับประกันว่าจะทำงานได้ดีเมื่อใช้ร่วมกับวิธีการแคชอื่นๆ ที่อธิบายไว้ด้านล่าง
ทางเลือก: โหลดหรือส่งออกผลลัพธ์ทั้งหมดจาก HLO หนึ่งๆ ไปยังไฟล์เดียว
คุณสามารถบันทึก/โหลดผลลัพธ์การปรับอัตโนมัติได้โดยใช้พารามิเตอร์ต่อไปนี้
--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=
หากเราระบุไฟล์ .txt หรือ .textproto ระบบจะถ่ายโอนแคชในรูปแบบ textproto หรือในรูปแบบ protobuf แบบไบนารี
อยู่ระหว่างการทดสอบ
นอกจากนี้ คุณยังใช้การปรับอัตโนมัติแบบถาวรในการทดสอบได้ด้วย เราขอแนะนําให้ใช้ในกรณีที่การทดสอบมีขนาดใหญ่มาก โดยเฉพาะอย่างยิ่งหากประสิทธิภาพของสภาพแวดล้อมการทดสอบถูกจํากัด
แต่จะได้ผลดีก็ต่อเมื่อแคชการปรับอัตโนมัติมีผลการทดสอบที่สร้างขึ้นจาก 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 มีการพัฒนาและสร้างฟิวชันที่แตกต่างกัน