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. |