-sdy-close-shardings
Tensör parçalamalarını kapatır ve çoğaltılmış eksenleri bırakır.
-sdy-constant-or-scalar-merger
Aynı sabitleri ve eşleşen parçalama işlemleriyle skaler genişletmeleri birleştirin.
Aynı parçalara ayırma işlemine sahip sabitler üzerinde basit bir CSE gerçekleştirir.
İçe aktarma ardışık düzeni, parçalamanın sabit bir alt hesaplamanın farklı kullanımları arasında yayılmaması için sabitleri ve skaler genişletmeleri böler ve yineler. Sabitler yayılma işleminden sonra aynı parçalara sahipse bu geçiş, derleme süresini kısaltmak için bunları birleştirir. Daha fazla bilgi için -sdy-constant-or-scalar-splitter adresini ziyaret edin.
-sdy-convert-global-to-local
Bir SDY programını genel şekillerden yerel şekillere dönüştürür.
Parçalama özelliklerine göre mantıksal boyutları bölümlendirerek bir SDY programını genel şekillerden yerel şekillere dönüştürür.
Bu geçiş, RankedTensorType'ı genel mantıksal şekillerden cihaza özel fiziksel şekillere eşlemek için bir tür dönüştürücüden yararlanır.
Seçenekler
-per-dim-all-gather : Keep per-dimension all-gather without combining them into a single all-gather.
-combine-multi-dimension-reduce-scatter : Combine multi-dimension reduce-scatter into a single reduce-scatter.
-enable-rgv3 : Use StableHLO ReplicaGroupV3 (mesh-axes based) for collectives.
-replica-count : Number of replicas (data parallelism).
-partition-count : Number of partitions (model parallelism).
-sdy-drop-sharding-and-mesh
Programdan örgü işlemi ve parçalama notunu kaldırır.
-sdy-drop-sharding-rules
Tüm kayıtlı işlemlerdeki OpShardingRuleAttr bırakma işlemleri.
-sdy-export-named-computations
NamedComputationOp adlı kullanıcının aramalarını özetleyin.
NamedComputationOp'yı NamedComputationOpname adlı yeni bir
özel işlevle CallOp'ya dönüştüren bir kart oluşturur. Yeni FuncOp
ve CallOp, orijinal NamedComputationOp'lerin
işlenenleri/sonuçlarıyla aynı parçalara sahiptir.
Modülde NamedComputationOp ile aynı ada sahip bir işlev varsa MLIR sembol tablosu bunu {name}_# olarak değiştirir.
-sdy-insert-explicit-reshards
Tüm işlemlerin uyumlu parçalara ayrılması için açıkça yeniden parçalama işlemleri ekler.
Uyumlu parçalama, temel olarak işlemin parçalanmış işlenenleri kabul edebileceği ve yeniden parçalama iletişimi gerektirmeden parçalanmış bir sonuç üretebileceği anlamına gelir (işlemin yine de tümünü azaltma veya halo değişimi gibi iletişim gerektirebileceğini unutmayın).
Yayma işleminden sonra bazı işlemlerin uyumsuz parçalama işlemleri olabilir.
Bir eksen (veya alt eksen), karşılık gelmeyen boyutları (ör. matmul'daki daralmayan boyutlar) birden çok tensora dağıtmak için kullanıldığında ya da bir eksen, bir tensordaki boyutu dağıtırken diğer tensordaki karşılık gelen boyutu dağıtmadığında işlemin parçalama çakışması olduğu söylenir. Bu nedenle, bu geçişten sonra işlemler çakışmasız hale gelir.
Bu geçiş, yeniden parçalama işlemlerini açıkça yerleştirir. Böylece, her işlem için ilgili boyutlar tüm işlenenler ve sonuçlar arasında aynı şekilde parçalanır ve her eksen (veya alt eksen) yalnızca tek bir boyut türünü parçalamak için kullanılabilir.
Örnek:
Giriş:
mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"x"}, {"y"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
stablehlo.dot %lhs, %rhs {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
: (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>
Çıkış:
sdy.mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"x"}, {"y"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
%0 = sdy.reshard %rhs <@mesh, \[{"y"}, {}\]> : tensor<32x16xf32>
stablehlo.dot %lhs, %0 {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
: (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>
Yukarıdaki örnekte, lhs ve rhs, daraltılmayan boyutlarında "x" ekseninde parçalanmıştır. Bu durum uyumsuzdur. Geçiş, nokta işleminden önce rhs üzerinde açık bir yeniden parçalama işlemi ekler. Böylece nokta işlemi uyumlu parçalara sahip olur.
Seçenekler
-enable-full-version : Enable full version.
-sdy-insert-func-call-reshards
func ve call parçalama çakışmaları için yeniden parçalar ekler.
Sonuçlarda işlev ve çağrı parçalama çakışmaları için yeniden parçalar ekler.
-sdy-optimize-collectives
Toplu iletişim işlemlerini optimize eder.
Bölünmüş boyutları ayrıştırarak ve birleştirerek, tümden tümeye giden zincirlerden önce gelen gereksiz toplu permütasyon işlemlerini ortadan kaldırır.
-sdy-pad-for-divisibility
Tensörleri, bölünebilir olmayan parçalarla bölünebilir şekillere doldurur.
-sdy-per-instruction-partitioning
_Hedef talimatları seçerek ayıklar, cihazda yerel kod oluşturmak için bu talimatlarda bölümleyici ardışık düzenini çalıştırır ve bunları sdy.manualcomputation içine sarmalar.
Hata ayıklama ve ikiye bölme amacıyla, bağımsız Shardy bölümleyici ardışık düzenini (resolve-permutation-factors, reshard-to-collectives, pad-for-divisibility, convert-global-to-local) kullanarak tek tek talimatları seçici olarak bölümler ve ortaya çıkan cihaza özel kodu sdy.manual_computation içine sarmalar. Bu sayede, global programın geri kalanı bozulmadan kalır. Böylece XLA SPMD, yalnızca sarmalanmamış global talimatları bölümlendirir.
Seçenekler
-filter : Filter string for selective partitioning. Can be empty (all sharded ops), comma-separated op name substrings (e.g. 'dot, pad'), or key-values like 'selectLow=0, selectHigh=10'.
-enable-halo-exchange : Implement halo exchange logic for windowed operations inside the sub-pipeline.
-replica-count : Number of replicas (data parallelism).
-partition-count : Number of partitions (model parallelism).
-sdy-propagate-to-func-results
Parçalama işlemlerini işlev sonlandırıcıdan işlev sonuçlarına yayma.
Func sonlandırıcı değerlerinin parçalama işlemlerini karşılık gelen func.func
sonuçlara kopyalar ve ana işlevdeki mevcut parçalama işlemlerini korur.
-sdy-remove-all-gather-reduce-scatter-for-cmv1
_CMV1 için sdy.all_gather ve sdy.reducescatter işlevlerini kaldırır.
all-gather + nokta kalıbında all-gather işlemini kaldırır. Desende nokta + dağılımı azaltma özelliğindeki dağılımı azaltma işlevini kaldırır. Bu geçiş, collective matmul V1 (CMV1) ile uyumluluk içindir. Bu, b/432019089 numaralı sorun için geçici bir çözümdür.
-sdy-remove-propagation-debug-info
Dışa aktarma sırasında yayılma hata ayıklama bilgilerini (yayılma kenarları ve kaynak parçalama) kaldırır.
-sdy-remove-sharding-groups
Yayma işleminden sonra ShardingGroupOps'u kaldırır.
-sdy-remove-sub-axes-in-input-output-shardings
Giriş/çıkış parçalamalarında alt eksenleri kaldırır.
Shardy'nin bazı kullanıcıları, işlev giriş/çıkışlarının alt eksenler olmadan parçalara ayrılmasını bekliyor. Bu geçiş, alt eksenleri ve bunların giriş/çıkış açık boyut parçalamalarındaki sondaki eksenlerini kaldırır. Bu geçiş genellikle sdy-update-non-divisible-input-output-shardings'dan sonra yapılır. Bu sayede alt eksenlerin kaldırılmasıyla bölünemeyen parçalanmaların oluşması önlenir.
-sdy-reshard-to-collectives
ReshardOp'u çeşitli Shardy toplu işlemlere dönüştürür.
Yeniden parçalama işlemlerini eşleştirir ve bunları çeşitli Shardy toplu işlemlerine yeniden yazar. Bu geçişten sonra modülde yeniden parçalama işlemi kalmaz.
İsteğe bağlı olarak, keepRedundantReshards doğruysa yalnızca gereksiz yeniden parçalama işlemleri kalır. Varsayılan olarak, açık yeniden parçalama işlemlerinin zaten eklenmiş olduğu (sdy-insert-explicit-reshards) varsayılır ve gereksiz yeniden parçalama işlemleri tutulmaz. Açıkça yeniden parçalama işlemi henüz eklenmemişse gereksiz yeniden parçalama işlemlerini korumalıdır.
Örnek:
Giriş:
mesh = <"x"=2, "y"=2, "z"=2>
%0 : tensor<16x2xf32> {sdy.sharding<@mesh, \[{"x", "y", "z"}, {}\]>
%1 = sdy.reshard %arg0 <@mesh, \[{"x"}, {}\]> : tensor<16x2xf32>
Çıkış:
mesh = <"x"=2, "y"=2, "z"=2>
%0 : tensor<16x2xf32> {sdy.sharding<@mesh, \[{"x", "y", "z"}, {}\]>
%1 = sdy.all_gather \[{"y", "z"}, {}\] %arg0 out_sharding=<@mesh, \[{"x"}, {}\]> : tensor<16x2xf32>
Yukarıdaki örnekte, %0 : tensor<16x2xf32> tensörü \[{"x", "y", "z"}, {}\] olarak parçalanır. Ardından, reshard olarak yeniden parçalama işlemi yapılır
\[{"x"}, {}\]. İlk eksenlerde, yeniden parçalama işleminden sonra {"y", "z"} soneki kaldırıldığından {"y", "z"} öğesinin tamamen toplandığını çıkarırız. İkinci boyut değiştirilmez.
Seçenekler
-keep-redundant-reshards : Whether it keeps redundant reshards or removes.
-sdy-resolve-permutation-factors
kPermutation faktörleriyle eşlenen boyutlarda parçalama sorununu çözer.
kPermutation faktörlerle boyutları parçalamak, cihazlar arası iletişim (ör. pencereler için halo değişimi veya tersine çevirme için toplu permütasyonlar) gerektirebilir.
enableHaloExchange doğruysa kart, permütasyon faktörlerini çözmek için mevcut optimize edilmiş bir iletişim mantığını kullanır. Aksi takdirde, kart bu boyutları kopyalamak için sdy.reshard işlemini ekler. enableHaloExchange için varsayılan değer true'dur.
Seçenekler
-enable-halo-exchange : Implement halo exchange logic for windowed operations.
-replica-count : Number of replicas (data parallelism).
-partition-count : Number of partitions (model parallelism).
-sdy-resolve-single-device-sharding
Hedef cihaz kimliğiyle korunuyorsa tek cihazlı işlemleri stablehlo'ya indirir.
Seçenekler
-replica-count : Number of replicas per partition.
-partition-count : Number of partitions per replica.
-sdy-sharding-constraint-to-reshard
ShardingConstraintOp'u ReshardOp'a dönüştürür.
-sdy-sink-data-flow-edges
Tüm DataFlowEdgeOp bilgilerini girişine ekler.
Her DataFlowEdgeOp öğesinin parçalanmasını girişine (kenarın kök hedefi) taşır ve işlemi girişiyle değiştirir.
Seçenekler
-sink-debug-sharding-origins : Whether to sink the debug sharding origins info. See `debug-sharding-origins` option in propagation for more info.
-sink-debug-propagation-edge-sharding : Whether to sink the debug propagation edge sharding info. See `debug-propagation-edge-sharding` option in propagation for more info.
-sdy-sink-func-data-flow-edges
Tüm FuncDataFlowEdgeOp bilgilerini girişine ekler.
Her FuncDataFlowEdgeOp öğesinin parçalanmasını girişine taşır ve işlemi girişiyle değiştirir.
-sdy-unflatten-call-graph
Arama grafiğini düzleştirir.
Grafiği düzleştirir. Aynı giriş/çıkış parçalarına ve işlevlere eklenen "original_func_name" özelliğiyle açıklanan aynı kaynağa sahip işlevlerin yinelenenlerini kaldırır.
Seçenekler
-dedup-functions-fully : If true, regardless of the input and output shardings of functions, it keeps one callee function for each caller function. The default is false, meaning it will deduplicate only if the input and output shardings are the same.
-sdy-update-non-divisible-input-output-shardings
FuncOp girişlerini/çıkışlarını eşit şekilde parçalayarak bölünemeyen parçalama nedeniyle dolgu ihtiyacını ortadan kaldırır.
Shardy kullanıcıları, tensörlerini doldurmalarını gerektirmemek için işlev girişlerinin/çıkışlarının eşit şekilde bölünebilir/parçalanabilir olmasını bekler. Yayma, giriş/çıkışların bölünemeyen parçalara ayrılmasına neden olabilir. Bu nedenle bu geçiş, bunları eşit şekilde parçalara ayrılmış orijinal parçalama işleminin en büyük boyutlu parçalama önekine günceller.
-sdy-verify-unreduced-axes
İndirgenmemiş eksen kullanımının tutarlılığını doğrular.
Her işlem için, işlenenlerinde azaltılmamış eksenler varsa işlemin bunları açıkça azalttığını (ör. sdy.reshard aracılığıyla) veya sonuçlarına geçirdiğini (ya da func.call gibi sınırlama işlemi olduğunu) doğrular.