-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
veyaManualComputationOp
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 veShardingConstraintOp
veyaManualComputationOp
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
öğesindeShardingConstraintOp
veyaManualComputationOp
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.