XLA Flags Rehberi

Bu kılavuz, kullanıcıların XLA'nın özelliklerini etkili bir şekilde kullanmasına ve bu özellikler arasında gezinmesine yardımcı olmak için önemli XLA işaretlerinin derlenmiş bir seçimini sunar. Aşağıdaki bölümlerde, çalışma zamanı performansını ve bellek kullanımını önemli ölçüde etkileyebilecek işaretler ayrıntılı olarak açıklanmaktadır. Bir işaret etkinleştirildikten sonra kilitlenme gibi sorunlar yaşarsanız varsayılan ayara geri dönmeniz ve GitHub sorunu oluşturmanız önerilir.

Performans İşaretleri

Aşağıdaki işaretler, çalışma zamanı performansını artırmada önemli rol oynar. Bu ayarları denemek, performansta önemli artışlar sağlayabilir.

İşaret Açıklama Varsayılan Değerler Önerilen Değerler Aday Değerleri
Ardışık düzen
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
Bu 3 işaret, ICI(çip arası bağlantı) all-gather işlemlerinin toplu olarak sıralanmasını sağlamak için birlikte kullanılmalıdır. Bu sayede, çakışan yürütme için daha fazla fırsat oluşturulur. 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
v5e'de eşzamansız all-gather işlemlerini etkinleştirmek için bu 3 işaret birlikte kullanılmalıdır. 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
Bu 2 işaret, v5e'de eşzamansız tüm azaltma işlemlerini etkinleştirmek için birlikte kullanılmalıdır. 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
Bu işaret, eşzamansız bire çok iletişimi etkinleştirir. 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
Gecikmeye bağlı
xla_all_gather_latency_bound_threshold_in_bytes
Bu işaret, gecikmeye duyarlı (yani küçük boyutlu) tüm toplantı işlemleri için tasarlanmıştır. Bu ayarın etkinleştirilmesi, gecikmeye bağlı tüm toplama işlemlerinin yürütme süresini azaltabilecek belirli optimizasyonları tetikler. Genellikle çıkarım iş yüklerinde kullanılır. xla_all_gather_latency_bound_threshold_in_bytes=-1
(etkinleştirilmemiş)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
Gecikmeye bağlı
xla_all_reduce_latency_bound_threshold_in_bytes
Bu işaret, gecikmeye duyarlı (yani küçük boyutlu) tüm toplantı işlemleri için tasarlanmıştır. Bu ayarın etkinleştirilmesi, gecikmeye bağlı tüm azaltma işlemleri için yürütme süresini kısaltabilecek belirli optimizasyonları tetikler. Genellikle çıkarım iş yüklerinde kullanılır. xla_all_reduce_latency_bound_threshold_in_bytes=-1
(etkinleştirilmemiş)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
Gecikmeye bağlı
xla_collective_permute_latency_bound_threshold_in_bytes
Bu işaret, gecikmeye duyarlı (yani küçük boyutlu) tüm toplantı işlemleri için tasarlanmıştır. Bu ayarın etkinleştirilmesi, gecikmeye bağlı toplu permütasyonların yürütme süresini kısaltabilecek belirli optimizasyonları tetikler. Genellikle çıkarım iş yüklerinde kullanılır. xla_collective_permute_latency_bound_threshold_in_bytes=-1
(etkinleştirilmemiş)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
Gecikmeye bağlı
xla_all_to_all_latency_bound_threshold_in_bytes
Bu işaret, gecikmeye duyarlı (yani küçük boyutlu) tüm toplantı işlemleri için tasarlanmıştır. Bu ayarın etkinleştirilmesi, gecikmeye bağlı tümden tümeye işlemlerin yürütme süresini azaltabilecek belirli optimizasyonları tetikler. Genellikle çıkarım iş yüklerinde kullanılır. xla_all_to_all_latency_bound_threshold_in_bytes=-1
(etkinleştirilmemiş)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
xla_enable_async_collective_permute Tüm collective-permute işlemlerini eşzamansız varyantlarına yeniden yazar. auto olarak ayarlandığında XLA, diğer yapılandırmalara veya koşullara göre otomatik olarak eşzamansız toplu işlemleri etkinleştirebilir. xla_enable_async_collective_permute=kAuto xla_enable_async_collective_permute=kAuto xla_enable_async_collective_permute=kAuto/kEnabled/kDisabled

Bellek Bayrakları

Aşağıda listelenen işaretler, HBM ile ilgili sorunları gidermek için sağlanmıştır. Bu ayarlar yalnızca model derleme sırasında HBM "bellek tükendi" hatalarıyla karşılaşırsanız değiştirilmelidir. Diğer tüm senaryolarda, varsayılan değerlerin değiştirilmesi performansı olumsuz etkileyebileceğinden bu değerlerin kullanılması önerilir.

İşaret Açıklama Varsayılan Değerler Önerilen Değerler Aday Değerleri
Scheduler
xla_latency_hiding_scheduler_rerun
Bu ayar, gecikmeyi gizleyen zamanlayıcının davranışını düzenler. Bu işlev, sürecin her "yeniden çalıştırılması" ile planlama için ayrılan bellek sınırını kademeli olarak azaltarak çalışır. 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
Bu işaret, reduce+broadcast türü birleştirmeleri etkinleştirir ve bellek kullanımını azaltabilir. xla_tpu_rwb_fusion=true xla_tpu_rwb_fusion=false xla_tpu_rwb_fusion=true/false
Scheduler
xla_memory_scheduler
Bu işaret, bellek planlayıcının bellek tüketimini en aza indirmek için kullanacağı algoritmayı belirtir. Daha gelişmiş bir algoritma kullanmak, daha uzun derleme süresi karşılığında daha az bellek tüketen bir program elde etmenizi sağlayabilir. xla_memory_scheduler=kDefault xla_memory_scheduler=kBrkga xla_memory_scheduler=kDefault/kList/kDfs/kPostOrder/kBrkga
Scheduler
xla_tpu_enable_latency_hiding_scheduler
Bu işaret, eşzamanlı işlemler yerine eşzamansız işlemler gerçekleştirmemize olanak tanıyan gecikmeyi gizleyen planlayıcıyı etkinleştirir. Bu özelliği devre dışı bırakmak, eşzamansız işlemlerden elde edilen performans artışını kaybetme pahasına bellek kullanımını azaltır. 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
Bu işaret, toplu matmul'u tetiklemek için noktanın minimum boyutunun alt eşiğini belirler. Daha yüksek bir değere ayarlamak, toplu matmul gerçekleştirme fırsatlarını kaybetme pahasına bellek tasarrufu sağlar. xla_jf_spmd_threshold_for_windowed_einsum_mib=-1 10Mb~1Gb (i.e. 10*1024*1024 ~ 1024*1024*1024) [0, 9223372036854775807]

Diğer sık kullanılan işaretler

İşaret Tür Notlar
xla_dump_to Dize (dosya yolu) Ön optimizasyon HLO dosyalarının ve diğer yapıların yerleştirileceği klasör (bkz. XLA Araçları).

TPU XLA işaretleri

İşaret Tür Notlar
xla_tpu_enable_data_parallel_all_reduce_opt Boole (doğru/yanlış) Veri paralel parçalama için kullanılan tüm azaltma işlemleriyle DCN (veri merkezi ağı) için çakışma fırsatlarını artırmaya yönelik optimizasyon.
xla_tpu_data_parallel_opt_different_sized_ops Boole (doğru/yanlış) Çıkış boyutları, yığılmış değişkenlerde yerinde kaydedilebilecek boyutlarla eşleşmese bile, birden fazla yinelemede veri paralel işlemlerinin sıralı işlenmesini sağlar. Bellek baskısını artırabilir.
xla_tpu_spmd_rng_bit_generator_unsafe Boole (doğru/yanlış) RngBitGenerator HLO'nun bölümlenmiş şekilde çalıştırılıp çalıştırılmayacağı. Bu, hesaplamanın farklı bölümlerinde farklı parçalama işlemleriyle deterministik sonuçlar bekleniyorsa güvenli değildir.
xla_tpu_megacore_fusion_allow_ags Boole (doğru/yanlış) Tüm toplamaların, evrişimler/tüm azaltmalar ile birleştirilmesine olanak tanır.
xla_tpu_enable_ag_backward_pipelining Boole (doğru/yanlış) Tüm toplama işlemleri (şu anda megaskala tüm toplama işlemleri) tarama döngüleri boyunca geriye doğru yapılır.

GPU XLA işaretleri

İşaret Tür Notlar
xla_gpu_enable_latency_hiding_scheduler Boole (doğru/yanlış) Bu işaret, gecikmeyi gizleyen planlayıcıların eşzamansız iletişimi hesaplamayla verimli bir şekilde çakıştırmasına olanak tanır. False, varsayılan değerdir.
xla_gpu_enable_triton_gemm Boole (doğru/yanlış) Triton tabanlı matris çarpımını kullanın.
xla_gpu_graph_level İşaretleme (0-3) GPU grafik düzeyini ayarlamak için kullanılan eski işaret. Yeni kullanım alanlarında xla_gpu_enable_command_buffer'ı kullanın. 0 = kapalı; 1 = birleştirme ve memcpy işlemlerini yakala; 2 = gemm işlemlerini yakala; 3 = konvolüsyon işlemlerini yakala.
xla_gpu_all_reduce_combine_threshold_bytes Tamsayı (bayt) Bu işaretler, cihazlar arası iletişimde harcanan süreyi azaltmak için birden fazla küçük AllGather / ReduceScatter / AllReduce işleminin ne zaman tek bir büyük AllGather / ReduceScatter / AllReduce işleminde birleştirileceğini ayarlar. Örneğin, Transformer tabanlı bir iş yükünde AllGather / ReduceScatter eşikleri için bunları en az bir Transformer katmanının ağırlığını AllGather / ReduceScatter ile birleştirecek kadar yüksek olacak şekilde ayarlamayı düşünebilirsiniz. Varsayılan olarak, combine_threshold_bytes 256 olarak ayarlanır.
xla_gpu_all_gather_combine_threshold_bytes Tamsayı (bayt) Yukarıdaki xla_gpu_all_reduce_combine_threshold_bytes bölümüne bakın.
xla_gpu_reduce_scatter_combine_threshold_bytes Tamsayı (bayt) Yukarıdaki xla_gpu_all_reduce_combine_threshold_bytes bölümüne bakın.
xla_gpu_enable_pipelined_all_gather Boole (doğru/yanlış) Tüm toplama talimatlarının sıralanmasını etkinleştirin.
xla_gpu_enable_pipelined_reduce_scatter Boole (doğru/yanlış) Reduce-scatter talimatlarının sıralı işlenmesini etkinleştirin.
xla_gpu_enable_pipelined_all_reduce Boole (doğru/yanlış) Tüm azaltma talimatlarının sıralanmasını etkinleştirin.
xla_gpu_enable_while_loop_double_buffering Boole (doğru/yanlış) While döngüsü için çift arabelleğe almayı etkinleştirin.
xla_gpu_enable_all_gather_combine_by_dim Boole (doğru/yanlış) Aynı toplama boyutuna sahip veya boyutlarından bağımsız olarak tüm toplama işlemlerini birleştirin.
xla_gpu_enable_reduce_scatter_combine_by_dim Boole (doğru/yanlış) Dağıtımı azaltma işlemlerini aynı boyutta veya boyutlarından bağımsız olarak birleştirin.