-sdy-add-data-flow-edges

Her veri akışı kenarı için DataFlowEdgeOp ekler.

Bir veri akışı kenarının sahibi olan her değer için DataFlowEdgeOp değerini ekler. Diğer bir deyişle, modüldeki her işlemde getDataFlowEdgeOwners tarafından döndürülen tüm değerler.

Eklenen DataFlowEdgeOp, varsa sahip hedefinin mevcut bölümlemesini alır.

TODO(b/330339693): getDataFlowEdgeOwners kaldırıldığında bu dokümanı güncelleyin.

-sdy-apply-sharding-constraints

Girişlerinin parçalanmasını belirleyen kısıtlamalar uygular.

Aşağıdakilerin tümünü karşılıyorsa ShardingConstraintOp öğesinin parçalanmasını kendi girişine kopyalar:

  • Girişte mevcut bir bölme yoktur.
  • Giriş, kenardaki tüm hedeflerin parçalanmasını içeren bir DataFlowEdgeOp tarafından üretilmez.
  • ShardingConstraintOp parçalama işlemi tamamen kapatıldı.
  • Girişte, farklı bir bölmeyle ShardingConstraintOp veya ManualComputationOp türündeki başka kullanıcı yoktur.

Bu, ShardingConstraintOp'ün girişinin parçalanmasını belirlediğini gösterir.

Bir ShardingConstraintOp boyutunun bölümlendirilmesinin, bu geçişten bağımsız olarak dağıtım sırasında girişine veya kullanıcılarına dağıtılacağını unutmayın. Ancak bir boyutun kapalı özelliği dağıtılmadığından, yukarıdaki durumlardaki kısıtlamaya tam olarak uymak için bölümlendirmenin kopyalanması önemlidir.

Ayrıca, bir tensör aşağıdakilerin tümünü karşılayan bir ShardingConstraintOp zinciri tarafından kullanılıyorsa:

  • Tensör bir ShardingConstraintOp tarafından üretilmemiştir ve ShardingConstraintOp veya ManualComputationOp türündeki başka kullanıcıları yoktur.
  • Zincirdeki ShardingConstraintOp öğelerinin hiçbiri, sonuncusu dışında birden fazla kullanım içermiyor.
  • Zincirdeki son ShardingConstraintOp öğesinde ShardingConstraintOp veya ManualComputationOp türündeki kullanıcılar yoktur (aksi takdirde zincirdeki son öğe olmaz).

Bu geçiş, zincirdeki (ve aynı blokta) son ShardingConstraintOp sonrasında tanımlanan zincir girişinin tüm diğer kullanımlarını, bu kullanımların parçalanmasını zorunlu kılacak şekilde zincirin sonucuyla değiştirir.

-sdy-constant-splitter

Sabit alt hesaplamaları bölerek her birinin tek bir kullanımı vardır.

Sabit alt hesaplamaları tek bir kullanıcıya sahip olacak şekilde böler.

Bu, sabit alt hesaplamanın farklı kullanımları arasında bir bölme işleminin yayılmamasını sağlar. Çünkü bu, yanlış bir bağımlılık olarak kabul edilir (bir sabitin kullanımları, aynı sabit kullanıldığı için aynı şekilde bölünmemelidir). Aslında her kullanım, sabit alt hesaplamanın kendi kopyasıyla bağımsız olarak dağıtılabilen farklı bir bölme işlemine sahip olabilir.

Sabit alt hesaplama şunlardan biridir:

  • sabit veya iota operatörü (işlenen yok)
  • İşlemlerinin tümü sabit alt hesaplamalarla (yeniden doğrulama yoluyla) tanımlanan bir yayın, dilim veya saf öğe bazında işlem. Bu işlemler, kendi işlemlerini tanımlayan alt hesaplamaların tamamıyla birlikte tanımlanır.

Sabit bir alt hesaplamada, bir değerin bu alt hesaplamada birden fazla kullanımı olabileceğini unutmayın.

-sdy-lift-inlined-meshes

Bölünmelerde satır içi MeshAttr'leri MeshOp simgesi olarak kaldırır.

Bir TensorShardingAttr içindeki satır içi MeshAttr öğelerini, modüldeki mevcut veya yeni bir MeshOp öğesine referans vererek örgü simge adıyla değiştirir. Böylece, aynı MeshAttr öğesine sahip iki MeshOp öğesi de kaldırılır (mevcut MeshOp öğeleri de tekilleştirilmez).

Her yeni MeshOp'nin adı şu şekilde olur:

  • Maksimum bir ağ için maximal_mesh_{device-id} (ör. boş eksen listesi ve tek bir cihaz kimliği).
  • [mesh, mesh_0, mesh_1, ...] içindeki kullanılabilir ilk ad (aksi durumda geçerli değildir). ### -sdy-manual-axes-cleanup

ManualComputationOp sn.de manuel eksen kullanımını temizler

1) Manuel eksen belirtilmemiş tüm giriş/çıkış bölmelerinde, söz konusu manuel ekseni replicated_axes alanına ekleyin. Bu, manuel eksenlerin her zaman tam olarak belirtilmesini sağlamak içindir.

2) Manuel eksenleri örgü ekseni beyan sırasına göre sıralar.

-sdy-sharding-group-import

Bölünmüş gruplar için normalleştirme ve doğrulama işlemi tamamlandı.

İçe aktarma işleminin ardından, bölme gruplarına normalleştirme ve doğrulama uygular. Bunlar:

1) Bölme Grubu Birleştirme: Grup üyeliğinin geçişli özelliğini kullanarak bölme gruplarını birleştirir. Bir T tensörü G1 ve G2 bölme grubunda olduğunda, G1 ve G2'deki tüm üyelerin aynı şekilde bölünmesi gerektiğini anlayabiliriz. Böylece, G1 ve G2'yi tek bir grupta birleştirebiliriz. Birleştirmeden sonra, minimum grup grubu için kanonik grup kimlikleri 0,1,...N-1 olacaktır.

2) Parçalama Grubu Doğrulaması Parçalama gruplarının iyi bir şekilde biçimlendirildiğini ve uygulamadaki varsayımlara uygun olduğunu doğrular. Bu, şu anda bir bölme grubu bir ManualComputationOp bloğunun içinde tanımlanmış bir Value içeriyorsa bu gruptaki diğer tüm değerlerin aynı blokta bulunması gerektiğini belirtir.