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

เราใช้ 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 ประเภทเดียวกันเสมอ

  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 มีการพัฒนาและสร้างฟิวชันที่แตกต่างกัน