-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çalamalara sahip 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üresinden tasarruf etmek 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.

-sdy-drop-sharding-rules

Tüm kayıtlı işlemlerdeki OpShardingRuleAttr öne çıkan ürünler.

-sdy-insert-explicit-reshards

Tüm işlemlerin uyumlu parçalara sahip olması için açık 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 parçalama işlemleri hala uyumsuz olabilir.

Bir eksen (veya alt eksen), karşılık gelmeyen boyutları (ör. matmul'daki daralmayan boyutlar) birden çok tensora parçalamak için kullanıldığında ya da bir eksen, bir tensordaki bir boyutu parçalayıp diğer tensordaki karşılık gelen boyutu parçalamadığı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 karşılık gelen 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, daralmayan 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.
-avoid-reshards-on-named-computations : Avoid explicit reshards/collectives on named computations.

-sdy-remove-all-gather-reduce-scatter-for-cmv1

_CMV1 için sdy.all_gather ve sdy.reducescatter'ı kaldırır.

all-gather + nokta kalıbında all-gather'ı kaldırır. Desende nokta + azaltılmış dağılımda azaltılmış dağılımı 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 sondaki eksenlerini giriş/çıkış parçalamalarından kaldırır. Bu geçiş genellikle sdy-update-non-divisible-input-output-shardings'dan sonra yapılır. Böylece 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 kolektif 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 tutmalı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-sharding-constraint-to-reshard

ShardingConstraintOp'u ReshardOp'a dönüştürür.

-sdy-sink-data-flow-edges

Tüm DataFlowEdgeOp bilgilerini girişine yerleştirir.

Her DataFlowEdgeOp öğesinin parçalama işlemini 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-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çalanmış orijinal parçalama işleminin en büyük boyutlu parçalama önekiyle günceller.