-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.

-sdy-apply-sharding-constraints

Girişlerinin bölümlendirilmesini belirten kısıtlamalar uygular.

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

  • Girişte mevcut bir bölme yoktur.
  • ShardingConstraintOp için bölümleme tamamen kapalı.
  • Girişte, farklı bir bölmeyle ShardingConstraintOp veya ManualComputationOp türündeki başka kullanıcı yoktur.

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

Giriş bir DataFlowEdgeOp tarafından üretiliyorsa kenardaki tüm hedeflerin parçalanmasını kısıtlamamak için işlemin parçalanmasını ayarlamak yerine input'un tüm kullanımlarını ShardingConstraintOp ile değiştiririz.

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ş ve ShardingConstraintOp veya ManualComputationOp türündeki başka kullanıcıları yok;
  • Zincirdeki ShardingConstraintOp'lerden hiçbiri sonuncusu hariç birden fazla kez kullanılmaz;
  • Zincirdeki son ShardingConstraintOp'te ShardingConstraintOp veya ManualComputationOp türündeki kullanıcı yoktur (aksi takdirde zincirdeki son öğe olmaz);

ise bu geçiş, zincirdeki girişin zincirdeki son ShardingConstraintOp'ten sonra (ve aynı blok içinde) tanımlanan diğer tüm kullanımlarını, bu kullanımların parçalanmasını belirlemesi gerektiğinden zincirin sonucuyla değiştirir.

-sdy-constant-splitter

Sabit alt hesaplamaları, her birinin tek bir kullanıma sahip olması için böler.

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 şu şekildedir:

  • 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 söz konusu 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'leri, modüldeki mevcut veya yeni bir MeshOp'ye atıfta bulunan bir ızgara simgesi adıyla değiştirir. Böylece, hiçbir MeshOp'nin aynı MeshAttr'ye sahip olmaması sağlanır (mevcut MeshOp'ler de tekilleştirilir).

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

  • maximal_mesh_{device-id}, maksimum örgülü ağ için (ör. boş eksen listesi ve tek bir cihaz kimliği) veya
  • [mesh, mesh_0, mesh_1, ...] içinde bulunan ilk kullanılabilir ad.

-sdy-manual-axes-cleanup

ManualComputationOp'lerde manuel eksen kullanımını temizler

  1. Manuel eksen belirtilmemiş tüm giriş/çıkış bölme işlemi için bu manuel ekseni replicated_axes alanına ekleyin. Bu, manuel eksenlerin her zaman tam olarak belirtilmesini sağlar.
  2. Manuel eksenleri, ağ 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, sharding gruplarına normalleştirme ve doğrulama uygular. Bunlara örnek olarak şunlar verilebilir:

  1. Parçalama 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 varsayabiliriz. 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. Bölme Grubu Doğrulaması

    Bölme gruplarının iyi oluşturulduğunu 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.