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