-sdy-add-data-flow-edges

Menyisipkan DataFlowEdgeOp untuk setiap tepi aliran data.

Menyisipkan DataFlowEdgeOp untuk setiap nilai yang merupakan pemilik edge aliran data, yaitu semua nilai yang ditampilkan oleh getDataFlowEdgeOwners pada setiap op dalam modul.

DataFlowEdgeOp yang disisipkan akan mengambil sharding target pemilik yang ada jika ada.

TODO(b/330339693): perbarui dokumen ini saat getDataFlowEdgeOwners dihapus.

-sdy-apply-sharding-constraints

Menerapkan batasan yang menentukan sharding input.

Menyalin sharding ShardingConstraintOp ke inputnya jika memenuhi semua hal berikut:

  • Input tidak memiliki sharding yang ada.
  • Input tidak dihasilkan oleh DataFlowEdgeOp, yang menyimpan sharding semua target tepi.
  • Sharding ShardingConstraintOp ditutup sepenuhnya.
  • Input tidak memiliki pengguna lain dari jenis ShardingConstraintOp atau ManualComputationOp dengan sharding yang berbeda.

Yang menunjukkan bahwa ShardingConstraintOp menentukan sharding inputnya.

Perhatikan bahwa sharding ShardingConstraintOp akan di-propagasi ke input atau penggunanya selama propagasi, terlepas dari penerusan ini, tetapi karena properti tertutup dimensi tidak di-propagasi, sebaiknya salin sharding untuk sepenuhnya mematuhi batasan dalam kasus di atas.

Selain itu, jika tensor digunakan oleh rantai ShardingConstraintOp yang memenuhi semua hal berikut:

  • Tensor tidak dihasilkan oleh ShardingConstraintOp dan tidak memiliki pengguna lain dari jenis ShardingConstraintOp atau ManualComputationOp.
  • Tidak ada ShardingConstraintOp dalam rantai yang memiliki lebih dari satu penggunaan kecuali yang terakhir.
  • ShardingConstraintOp terakhir dalam rantai tidak memiliki pengguna jenis ShardingConstraintOp atau ManualComputationOp (jika tidak, ini bukan yang terakhir dalam rantai).

maka kartu ini akan menggantikan semua penggunaan input rantai lainnya, yang ditentukan setelah ShardingConstraintOp terakhir dalam rantai (dan dalam blok yang sama), dengan hasil rantai, karena harus menentukan sharding penggunaan tersebut.

-sdy-constant-splitter

Memisahkan sub-komputasi konstan sehingga setiap sub-komputasi memiliki satu penggunaan.

Memisahkan sub-komputasi konstan sehingga memiliki satu pengguna.

Hal ini memastikan bahwa sharding tidak disebarkan di antara penggunaan sub-komputasi konstan yang berbeda, karena hal ini dianggap sebagai dependensi palsu (penggunaan konstan tidak boleh di-sharding dengan cara yang sama hanya karena menggunakan konstan yang sama). Akibatnya, setiap penggunaan dapat memiliki sharding berbeda yang dapat disebarkan secara terpisah ke salinan sub-komputasi konstan.

Sub-komputasi konstan adalah:

  • operator konstan atau iota (tanpa operand)
  • operasi broadcast, slice, atau elemen murni, yang operandnya semuanya ditentukan oleh subkomputasi konstan (secara rekursif), beserta seluruh subkomputasi yang menentukan operandnya.

Perhatikan bahwa dalam subkomputasi konstan, nilai dapat memiliki beberapa penggunaan dalam subkomputasi tersebut.

-sdy-lift-inlined-meshes

Mengangkat MeshAttr yang disematkan dalam sharding sebagai MeshOp simbol.

Mengganti MeshAttr yang disisipkan dalam TensorShardingAttr dengan nama simbol mesh, yang mereferensikan MeshOp yang ada atau baru dalam modul, sehingga tidak ada dua MeshOp dengan MeshAttr yang identik (MeshOp yang ada juga dihapus duplikatnya).

Nama setiap MeshOp baru akan berupa:

  • maximal_mesh_{device-id}, untuk mesh maksimum (yaitu, daftar sumbu kosong dan satu ID perangkat).
  • Nama pertama yang tersedia di [mesh, mesh_0, mesh_1, ...], atau tidak. ### -sdy-manual-axes-cleanup

Membersihkan penggunaan sumbu manual dalam ManualComputationOp dtk

1) Untuk sharding masuk/keluar yang belum menentukan sumbu manual, tambahkan sumbu manual tersebut ke replicated_axes. Hal ini untuk memastikan sumbu manual selalu ditentukan sepenuhnya.

2) Mengurutkan sumbu manual dalam urutan deklarasi sumbu mesh.

-sdy-sharding-group-import

Kanonikalisasi dan validasi penerusan untuk grup sharding.

Menerapkan kanonisisasi dan validasi ke grup sharding setelah impor. Yaitu:

1) Sharding Group Unification - menggabungkan grup sharding menggunakan properti transitif keanggotaan grup. Setiap kali tensor T berada dalam grup sharding G1 dan grup sharding G2, kita dapat menyimpulkan bahwa semua anggota di G1 dan G2 harus di-sharding dengan cara yang sama. Dengan demikian, kita dapat menggabungkan G1 dan G2 menjadi satu grup. Kumpulan ID grup kanonis setelah penggabungan akan menjadi 0,1,...N-1 untuk kumpulan grup minimum.

2) Validasi Grup Sharding Memvalidasi bahwa grup sharding dibentuk dengan baik dan sesuai dengan asumsi dalam penerapan. Saat ini, pernyataan ini menegaskan bahwa jika grup sharding berisi Value yang ditentukan di dalam blok ManualComputationOp, semua nilai lain dalam grup tersebut harus berada di blok yang sama.