-sdy-close-shardings

Tensör bölmelerini kapatır ve kopyalanan eksenleri bırakır.

-sdy-drop-sharding-rules

OpShardingRuleAttr'yi tüm kayıtlı işlemlerden kaldırır.

-sdy-insert-explicit-reshards

Tüm işlemlerin uyumlu bölümlemelere sahip olması için açık yeniden bölümlemeler ekler.

Uyumlu bir bölme, temel olarak işlemin yeniden bölme iletişimi gerektirmeden bölünmüş operatörleri kabul edip bölünmüş bir sonuç üretebileceği anlamına gelir (işlemin yine de tümünü azaltma veya halo takasları gibi iletişim gerektirebileceğini unutmayın).

Yayımdan sonra bazı işlemlerde hâlâ uyumlu olmayan bölme işlemleri olabilir.

Bir eksenin (veya alt eksenin), karşılıklı olmayan boyutları (ör. matmul'deki daraltılmayan boyutlar) birden fazla tenzorda bölme işlemi için kullanıldığında veya bir eksenin bir tenzordaki boyutu bölme işlemini gerçekleştirirken diğer tenzordaki karşılık gelen boyutu bölme işlemini gerçekleştirmediği durumlarda, işlemin bölme çakışması olduğunu belirtmek isteriz. Bu nedenle, bu geçişten sonra işlemler çakışmaz.

Bu geçiş, yeniden bölme işlemlerini açıkça ekler. Böylece her işlem için ilgili boyutlar tüm operatörler ve sonuçlarda aynı şekilde bölünür ve her eksen (veya alt eksen) yalnızca tek bir boyut türünü bölmek için kullanılabilir.

Daha açıklayıcı bir örnek:

Giriş:

mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"y"},{"x"}\]>}
%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 tenzorlarının her ikisi de daraltılmayan boyutlarında "x" ekseninde parçalandığından çakışma vardır. Burada, rhs tensörü nokta işleminden önce, yalnızca ilk boyutunda ve "x" ekseninde olacak şekilde yeniden bölümlenir. Bu sayede nokta işlemi uyumlu hale gelir.

-sdy-remove-sharding-groups

Yayınlamadan sonra ShardingGroupOps'i kaldırır.

-sdy-sharding-constraint-to-reshard

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

-sdy-sink-data-flow-edges

Tüm DataFlowEdgeOp öğelerini girişlerine aktarır.

Her DataFlowEdgeOp öğesinin bölümlendirmesini girişine (kenarın kök hedefi) taşır ve işlemi girişiyle değiştirir.

TODO(tomnatan): Bölme işlemini, eklenebilir bir bölme işlemine sahip olabilecek tüm hedeflere taşımayı düşünün.

-sdy-update-non-divisible-input-output-shardings

FuncOp giriş/çıkışlarının eşit şekilde bölünmesini sağlar. Bölünemeyen bölme işlemleri nedeniyle dolgu yapılmasına gerek kalmaz.

Shardy kullanıcıları, tensorlarını doldurma zorunluluğunu önlemek için işlev girişlerinin/çıkışlarının eşit olarak bölünebilir/parçalanabilir olmasını bekler. Yayma işlemi, girişlerde/çıkışlarda bölünemeyen bölmelere neden olabilir. Bu nedenle, bu geçiş onları orijinal bölme işleminin eşit şekilde bölünmüş en büyük boyut bölme ön ekine günceller.