-sdy-close-shardings
Menutup sharding tensor dan menghapus sumbu yang direplikasi.
-sdy-constant-or-scalar-merger
Menggabungkan konstanta dan ekspansi skalar yang identik dengan sharding yang cocok.
Melakukan CSE ringan pada konstanta dengan sharding yang identik.
Pipeline impor membagi dan menduplikasi konstanta dan ekspansi skalar sehingga sharding tidak dipropagasi di antara penggunaan sub-komputasi konstanta yang berbeda. Jika konstanta memiliki sharding yang sama setelah propagasi, lulus ini akan menggabungkannya untuk menghemat waktu kompilasi. Lihat -sdy-constant-or-scalar-splitter untuk mengetahui info selengkapnya.
-sdy-convert-global-to-local
Mengonversi program SDY dari bentuk global ke bentuk lokal.
Mengonversi program SDY dari bentuk global ke bentuk lokal dengan mempartisi dimensi logis berdasarkan atribut sharding.
Lulus ini memanfaatkan pengonversi jenis untuk memetakan RankedTensorType dari bentuk logis global ke bentuk fisik lokal perangkat.
-sdy-drop-sharding-rules
Menghapus OpShardingRuleAttr dari semua operasi terdaftar.
-sdy-insert-explicit-reshards
Menyisipkan reshard eksplisit untuk membuat semua operasi memiliki sharding yang kompatibel.
Sharding yang kompatibel pada dasarnya berarti bahwa operasi dapat menerima operand yang di-shard dan menghasilkan hasil yang di-shard tanpa memerlukan komunikasi reshard (perhatikan bahwa operasi mungkin masih memerlukan komunikasi seperti all-reduce atau halo-swaps).
Setelah propagasi, beberapa operasi mungkin masih memiliki sharding yang tidak kompatibel.
Perhatikan bahwa saat sumbu (atau sub-sumbu) digunakan untuk meng-shard dimensi yang tidak sesuai (misalnya, dimensi non-kontrak dalam matmul) di beberapa tensor, atau saat sumbu meng-shard dimensi dalam satu tensor, tetapi bukan dimensi yang sesuai di tensor lain, operasi tersebut dikatakan memiliki konflik sharding. Oleh karena itu, setelah lulus ini, operasi menjadi bebas konflik.
Lulus ini menyuntikkan operasi reshard secara eksplisit sehingga, untuk setiap operasi, dimensi yang sesuai akan di-shard dengan cara yang sama di semua operand dan hasil, dan setiap sumbu (atau sub-sumbu) hanya dapat digunakan untuk meng-shard satu jenis dimensi.
Contoh:
Input:
mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"x"}, {"y"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
stablehlo.dot %lhs, %rhs {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
: (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>
Output:
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>
Pada contoh di atas, lhs dan rhs di-shard pada sumbu "x" pada dimensi non-kontraknya, yang tidak kompatibel. Lulus ini menyisipkan reshard eksplisit pada rhs sebelum operasi titik, sehingga operasi titik memiliki sharding yang kompatibel.
Opsi
-enable-full-version : Enable full version.
-avoid-reshards-on-named-computations : Avoid explicit reshards/collectives on named computations.
-sdy-remove-all-gather-reduce-scatter-for-cmv1
_Menghapus sdy.all_gather dan sdy.reducescatter untuk CMV1.
Menghapus all-gather dalam pola all-gather + dot. Menghapus reduce-scatter dalam pola dot + reduce-scatter. Lulus ini untuk kompatibilitas dengan matmul kolektif V1 (CMV1). Ini adalah solusi sementara untuk b/432019089.
-sdy-remove-propagation-debug-info
Menghapus info debug propagasi (tepi propagasi dan sharding asal) selama ekspor.
-sdy-remove-sharding-groups
Menghapus ShardingGroupOps setelah propagasi.
-sdy-remove-sub-axes-in-input-output-shardings
Menghapus sub-sumbu dalam sharding input/output.
Beberapa pengguna Shardy mengharapkan input/output fungsi memiliki sharding tanpa sub-sumbu. Lulus ini menghapus sub-sumbu dan sumbu berikutnya dari sharding input/output. Lulus ini biasanya setelah sdy-update-non-divisible-input-output-shardings untuk memastikan bahwa penghapusan sub-sumbu tidak memperkenalkan sharding yang tidak dapat dibagi.
-sdy-reshard-to-collectives
Mengonversi ReshardOp menjadi berbagai operasi kolektif Shardy.
Mencocokkan operasi reshard dan menuliskannya ulang ke berbagai operasi kolektif Shardy. Setelah lulus ini, tidak ada operasi reshard yang tersisa di modul.
Secara opsional, jika keepRedundantReshards bernilai benar, satu-satunya operasi reshard yang tersisa adalah operasi yang berlebihan. Secara default, operasi ini mengasumsikan bahwa reshard eksplisit telah disisipkan (sdy-insert-explicit-reshards) dan tidak menyimpan reshard yang berlebihan. Operasi ini harus menyimpan reshard yang berlebihan jika reshard eksplisit mungkin belum disisipkan.
Contoh:
Input:
mesh = <"x"=2, "y"=2, "z"=2>
%0 : tensor<16x2xf32> {sdy.sharding<@mesh, \[{"x", "y", "z"}, {}\]>
%1 = sdy.reshard %arg0 <@mesh, \[{"x"}, {}\]> : tensor<16x2xf32>
Output:
mesh = <"x"=2, "y"=2, "z"=2>
%0 : tensor<16x2xf32> {sdy.sharding<@mesh, \[{"x", "y", "z"}, {}\]>
%1 = sdy.all_gather \[{"y", "z"}, {}\] %arg0 out_sharding=<@mesh, \[{"x"}, {}\]> : tensor<16x2xf32>
Pada contoh di atas, tensor %0 : tensor<16x2xf32> di-shard sebagai
\[{"x", "y", "z"}, {}\]. Kemudian, ada operasi reshard yang meng-reshard-nya sebagai
\[{"x"}, {}\]. Pada sumbu pertama, karena akhiran {"y", "z"} dihapus
setelah reshard, kita menyimpulkan bahwa kita telah mengumpulkan {"y", "z"}. Dimensi kedua tidak diubah.
Opsi
-keep-redundant-reshards : Whether it keeps redundant reshards or removes.
-sdy-sharding-constraint-to-reshard
Mengonversi ShardingConstraintOp menjadi ReshardOp.
-sdy-sink-data-flow-edges
Menyinkronkan semua DataFlowEdgeOp ke inputnya.
Memindahkan sharding setiap DataFlowEdgeOp ke inputnya (target root tepi), dan mengganti operasi dengan inputnya.
Opsi
-sink-debug-sharding-origins : Whether to sink the debug sharding origins info. See `debug-sharding-origins` option in propagation for more info.
-sink-debug-propagation-edge-sharding : Whether to sink the debug propagation edge sharding info. See `debug-propagation-edge-sharding` option in propagation for more info.
-sdy-update-non-divisible-input-output-shardings
Membuat input/output FuncOp di-shard secara merata, sehingga tidak perlu padding karena sharding yang tidak dapat dibagi.
Pengguna Shardy mengharapkan input/output fungsi dapat dibagi/di-shard secara merata untuk menghindari keharusan padding tensor mereka. Propagasi dapat membuat input/output memiliki sharding yang tidak dapat dibagi, sehingga lulus ini memperbaruinya ke awalan sharding dimensi terbesar dari sharding asli yang di-shard secara merata.