Panduan Flag XLA

Panduan ini menawarkan pilihan kurasi tanda XLA utama untuk membantu pengguna menavigasi dan memanfaatkan kemampuan XLA secara efektif. Bagian berikut menjelaskan flag yang dapat memengaruhi performa runtime dan penggunaan memori secara signifikan. Jika ada masalah, seperti error, muncul setelah mengaktifkan flag, sebaiknya kembali ke setelan default dan buat masalah di GitHub.

Tanda Performa

Flag berikut berperan penting dalam meningkatkan performa runtime. Bereksperimen dengan setelan ini dapat menghasilkan peningkatan performa yang signifikan.

Bendera Deskripsi Nilai Default Nilai yang Disarankan Nilai Kandidat
Pipelining
1. xla_should_allow_loop_variant_parameter_in_chain
2. xla_should_add_loop_invariant_op_in_chain
3. xla_tpu_enable_ici_ag_pipelining
Ketiga tanda ini harus digunakan bersama-sama untuk mengaktifkan pipelining kolektif operasi pengumpulan semua ICI(Interchip-Interconnect), yang menciptakan lebih banyak peluang untuk eksekusi yang tumpang-tindih. 1. xla_should_allow_loop_variant_parameter_in_chain=kDisabled
2. xla_should_add_loop_invariant_op_in_chain=kDisabled
3. xla_tpu_enable_ici_ag_pipelining=false
1. xla_should_allow_loop_variant_parameter_in_chain=kEnabled
2. xla_should_add_loop_invariant_op_in_chain=kEnabled
3. xla_tpu_enable_ici_ag_pipelining=true
1. xla_should_allow_loop_variant_parameter_in_chain=kDisabled/kEnabled/kAuto
2. xla_should_add_loop_invariant_op_in_chain=kDisabled/kEnabled/kAuto
3. xla_tpu_enable_ici_ag_pipelining=true/false
v5e/Async
xla_enable_async_all_gather
xla_tpu_enable_async_collective_fusion
xla_tpu_enable_async_collective_fusion_fuse_all_gather
Ketiga tanda ini harus digunakan bersama untuk mengaktifkan operasi pengumpulan semua data asinkron di v5e. xla_enable_async_all_gather=kAuto
xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_gather=true
xla_enable_async_all_gather=kAuto
xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_gather=true
xla_enable_async_all_gather=kDisabled/kEnabled/kAuto
xla_tpu_enable_async_collective_fusion=true/false
xla_tpu_enable_async_collective_fusion_fuse_all_gather=true/false
v5e/Async
xla_tpu_enable_async_collective_fusion
xla_tpu_enable_async_collective_fusion_fuse_all_reduce
Kedua tanda ini harus digunakan bersama untuk mengaktifkan operasi all-reduce asinkron di v5e. xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_reduce=false
xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_reduce=true
xla_tpu_enable_async_collective_fusion=true/false
xla_tpu_enable_async_collective_fusion_fuse_all_reduce=true/false
Async
xla_tpu_enable_async_all_to_all
Flag ini mengaktifkan komunikasi semua-ke-semua asinkron. xla_tpu_enable_async_all_to_all=false xla_tpu_enable_async_all_to_all=true xla_tpu_enable_async_all_to_all=true/false
Terikat latensi (Latency-bound)
xla_all_gather_latency_bound_threshold_in_bytes
Flag ini ditujukan untuk operasi pengumpulan semua yang terikat latensi (yaitu, berukuran kecil). Mengaktifkan opsi ini akan memicu pengoptimalan tertentu yang dapat mengurangi waktu eksekusi untuk semua pengumpulan data yang terikat latensi. Biasanya digunakan dalam workload inferensi. xla_all_gather_latency_bound_threshold_in_bytes=-1
(yang tidak diaktifkan)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
Terikat latensi (Latency-bound)
xla_all_reduce_latency_bound_threshold_in_bytes
Flag ini ditujukan untuk operasi pengumpulan semua yang terikat latensi (yaitu, berukuran kecil). Mengaktifkan opsi ini akan memicu pengoptimalan tertentu yang dapat mengurangi waktu eksekusi untuk semua operasi reduce yang terikat latensi. Biasanya digunakan dalam workload inferensi. xla_all_reduce_latency_bound_threshold_in_bytes=-1
(yang tidak diaktifkan)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
Terikat latensi (Latency-bound)
xla_collective_permute_latency_bound_threshold_in_bytes
Flag ini ditujukan untuk operasi pengumpulan semua yang terikat latensi (yaitu, berukuran kecil). Mengaktifkan opsi ini akan memicu pengoptimalan tertentu yang dapat mengurangi waktu eksekusi untuk collective-permute yang terikat latensi. Biasanya digunakan dalam workload inferensi. xla_collective_permute_latency_bound_threshold_in_bytes=-1
(yang tidak diaktifkan)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
Terikat latensi (Latency-bound)
xla_all_to_all_latency_bound_threshold_in_bytes
Flag ini ditujukan untuk operasi pengumpulan semua yang terikat latensi (yaitu, berukuran kecil). Mengaktifkan opsi ini akan memicu pengoptimalan tertentu yang dapat mengurangi waktu eksekusi untuk semua-ke-semua yang terikat latensi. Biasanya digunakan dalam workload inferensi. xla_all_to_all_latency_bound_threshold_in_bytes=-1
(yang tidak diaktifkan)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
xla_enable_async_collective_permute Menulis ulang semua operasi collective-permute ke varian asinkronnya. Jika disetel ke auto, XLA dapat mengaktifkan kolektif asinkron berdasarkan konfigurasi atau kondisi lain secara otomatis. xla_enable_async_collective_permute=kAuto xla_enable_async_collective_permute=kAuto xla_enable_async_collective_permute=kAuto/kEnabled/kDisabled

Tanda Memori

Flag yang tercantum di bawah ini disediakan untuk mengatasi masalah terkait HBM. Setelan ini hanya boleh disesuaikan jika Anda mengalami error "kehabisan memori" HBM selama kompilasi model. Dalam semua skenario lainnya, nilai default direkomendasikan, karena mengubahnya dapat memengaruhi performa secara negatif.

Bendera Deskripsi Nilai Default Nilai yang Disarankan Nilai Kandidat
Scheduler
xla_latency_hiding_scheduler_rerun
Setelan ini menyesuaikan perilaku penjadwal penyembunyian latensi. Proses ini berfungsi dengan mengurangi batas memori yang dialokasikan untuk penjadwalan secara bertahap dengan setiap "penayangan ulang" proses. xla_latency_hiding_scheduler_rerun=1 xla_latency_hiding_scheduler_rerun=5 0~10(it doesn’t make much sense beyond 10 reruns)
Fusion
xla_tpu_rwb_fusion
Flag ini memungkinkan penggabungan jenis reduce+broadcast, dan dapat mengurangi penggunaan memori. xla_tpu_rwb_fusion=true xla_tpu_rwb_fusion=false xla_tpu_rwb_fusion=true/false
Scheduler
xla_memory_scheduler
Flag ini menentukan algoritma yang akan digunakan penjadwal memori untuk meminimalkan konsumsi memori. Menggunakan algoritma yang lebih canggih dapat menghasilkan jadwal yang lebih hemat memori, tetapi dengan biaya waktu kompilasi yang lebih lama. xla_memory_scheduler=kDefault xla_memory_scheduler=kBrkga xla_memory_scheduler=kDefault/kList/kDfs/kPostOrder/kBrkga
Scheduler
xla_tpu_enable_latency_hiding_scheduler
Flag ini mengaktifkan penjadwal penyembunyian latensi, yang memungkinkan kita melakukan kolektif asinkron, bukan sinkron. Menonaktifkannya akan mengurangi penggunaan memori dengan mengorbankan peningkatan performa dari operasi asinkron ini. xla_tpu_enable_latency_hiding_scheduler=true xla_tpu_enable_latency_hiding_scheduler=false xla_tpu_enable_latency_hiding_scheduler=true/false
SPMD
xla_jf_spmd_threshold_for_windowed_einsum_mib
Flag ini menetapkan batas bawah ukuran minimum titik untuk memicu matmul kolektif. Menyetelnya ke nilai yang lebih tinggi akan menghemat memori dengan mengorbankan peluang untuk melakukan matmul kolektif. xla_jf_spmd_threshold_for_windowed_einsum_mib=-1 10Mb~1Gb (i.e. 10*1024*1024 ~ 1024*1024*1024) [0, 9223372036854775807]

Flag lain yang umum digunakan

Bendera Jenis Catatan
xla_dump_to String (filepath) Folder tempat file HLO pra-pengoptimalan dan artefak lainnya akan ditempatkan (lihat Alat XLA).

Flag XLA TPU

Bendera Jenis Catatan
xla_tpu_enable_data_parallel_all_reduce_opt Boolean (benar/salah) Pengoptimalan untuk meningkatkan peluang tumpang-tindih bagi semua operasi pengurangan DCN (jaringan pusat data) yang digunakan untuk sharding paralel data.
xla_tpu_data_parallel_opt_different_sized_ops Boolean (benar/salah) Memungkinkan pipelining operasi paralel data di beberapa iterasi meskipun ukuran outputnya tidak cocok dengan apa yang dapat disimpan di tempatnya dalam variabel bertumpuk. Dapat meningkatkan tekanan memori.
xla_tpu_spmd_rng_bit_generator_unsafe Boolean (benar/salah) Apakah akan menjalankan HLO RngBitGenerator dengan cara yang dipartisi, yang tidak aman jika hasil deterministik diharapkan dengan shard yang berbeda pada bagian komputasi yang berbeda.
xla_tpu_megacore_fusion_allow_ags Boolean (benar/salah) Memungkinkan penggabungan pengumpulan semua dengan konvolusi/pengurangan semua.
xla_tpu_enable_ag_backward_pipelining Boolean (benar/salah) Pengumpulan semua item melalui pipeline (saat ini pengumpulan semua item skala besar) mundur melalui loop pemindaian.

Flag XLA GPU

Bendera Jenis Catatan
xla_gpu_enable_latency_hiding_scheduler Boolean (benar/salah) Flag ini memungkinkan penjadwal penyembunyian latensi tumpang-tindih dengan komunikasi asinkron dan komputasi secara efisien. Nilai defaultnya adalah False.
xla_gpu_enable_triton_gemm Boolean (benar/salah) Gunakan perkalian matriks berbasis Triton.
xla_gpu_graph_level Tandai (0-3) Flag lama untuk menyetel level grafik GPU. Gunakan xla_gpu_enable_command_buffer dalam kasus penggunaan baru. 0 = nonaktif; 1 = ambil fusi dan memcpys; 2 = ambil gemm; 3 = ambil konvolusi.
xla_gpu_all_reduce_combine_threshold_bytes Bilangan bulat (byte) Flag ini menyesuaikan waktu untuk menggabungkan beberapa AllGather / ReduceScatter / AllReduce kecil menjadi satu AllGather / ReduceScatter / AllReduce besar untuk mengurangi waktu yang dihabiskan untuk komunikasi lintas perangkat. Misalnya, untuk nilai minimum AllGather / ReduceScatter pada beban kerja berbasis Transformer, pertimbangkan untuk menyetelnya cukup tinggi sehingga menggabungkan setidaknya AllGather / ReduceScatter bobot Lapisan Transformer. Secara default, combine_threshold_bytes ditetapkan ke 256.
xla_gpu_all_gather_combine_threshold_bytes Bilangan bulat (byte) Lihat xla_gpu_all_reduce_combine_threshold_bytes di atas.
xla_gpu_reduce_scatter_combine_threshold_bytes Bilangan bulat (byte) Lihat xla_gpu_all_reduce_combine_threshold_bytes di atas.
xla_gpu_enable_pipelined_all_gather Boolean (benar/salah) Aktifkan pipelining semua petunjuk pengumpulan.
xla_gpu_enable_pipelined_reduce_scatter Boolean (benar/salah) Aktifkan pipelining instruksi reduce-scatter.
xla_gpu_enable_pipelined_all_reduce Boolean (benar/salah) Aktifkan pipelining semua petunjuk pengurangan.
xla_gpu_enable_while_loop_double_buffering Boolean (benar/salah) Aktifkan buffering ganda untuk loop while.
xla_gpu_enable_all_gather_combine_by_dim Boolean (benar/salah) Gabungkan semua operasi pengumpulan dengan dimensi pengumpulan yang sama atau terlepas dari dimensinya.
xla_gpu_enable_reduce_scatter_combine_by_dim Boolean (benar/salah) Gabungkan operasi pengurangan sebaran dengan dimensi yang sama atau terlepas dari dimensinya.