-sdy-close-shardings

Menutup sharding tensor dan menghapus sumbu yang direplikasi.

-sdy-constant-or-scalar-merger

Gabungkan konstanta dan ekspansi skalar yang identik dengan sharding yang cocok.

Melakukan CSE ringan pada konstanta dengan sharding yang identik.

Pipeline impor memisahkan dan menduplikasi konstanta dan perluasan skalar sehingga sharding tidak disebarkan di antara penggunaan sub-komputasi konstanta yang berbeda. Jika konstanta memiliki sharding yang sama setelah propagasi, lintasan 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.

Pass ini memanfaatkan pengonversi jenis untuk memetakan RankedTensorType dari bentuk logis global ke bentuk fisik lokal perangkat.

Opsi

-per-dim-all-gather                     : Keep per-dimension all-gather without combining them into a single all-gather.
-combine-multi-dimension-reduce-scatter : Combine multi-dimension reduce-scatter into a single reduce-scatter.
-enable-rgv3                            : Use StableHLO ReplicaGroupV3 (mesh-axes based) for collectives.
-replica-count                          : Number of replicas (data parallelism).
-partition-count                        : Number of partitions (model parallelism).

-sdy-drop-sharding-and-mesh

Menghapus notasi sharding dan operasi mesh dari program.

Opsi

-keep-module-sharding-metadata : Whether to keep module-level sharding metadata (sdy.parameters_shardings and sdy.output_shardings).

-sdy-drop-sharding-rules

Menghapus OpShardingRuleAttr dari semua operasi terdaftar.

-sdy-export-named-computations

Panggilan Outline dari NamedComputationOp.

Membuat penerusan yang mengonversi NamedComputationOp menjadi CallOp dengan fungsi pribadi baru yang disebut name NamedComputationOp. FuncOp dan CallOp baru memiliki sharding yang sama dengan operand/hasil NamedComputationOp asli.

Jika ada fungsi dengan nama yang sama dengan NamedComputationOp dalam modul, tabel simbol MLIR akan mengubahnya menjadi {name}_#.

-sdy-insert-explicit-reshards

Menyisipkan perubahan partisi eksplisit untuk membuat semua operasi memiliki partisi yang kompatibel.

Sharding yang kompatibel pada dasarnya berarti bahwa operasi dapat menerima operand yang di-sharding dan menghasilkan hasil yang di-sharding tanpa memerlukan komunikasi reshard (perhatikan bahwa operasi mungkin masih memerlukan komunikasi seperti all-reduce atau halo-swap).

Setelah propagasi, beberapa operasi mungkin masih memiliki shard yang tidak kompatibel.

Perhatikan bahwa saat sumbu (atau sub-sumbu) digunakan untuk melakukan sharding dimensi yang tidak sesuai (misalnya, dimensi yang tidak berkontraksi dalam matmul) di beberapa tensor, atau saat sumbu melakukan sharding dimensi dalam satu tensor, tetapi bukan dimensi yang sesuai dalam tensor lainnya, operasi tersebut dikatakan memiliki konflik sharding. Oleh karena itu, setelah melewati tahap ini, operasi menjadi bebas konflik.

Penerusan ini menyuntikkan operasi resharing 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 melakukan shard pada 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>

Dalam contoh di atas, lhs dan rhs di-sharding pada sumbu "x" pada dimensi non-kontraksinya, yang tidak kompatibel. Pass menyisipkan reshard eksplisit pada rhs sebelum operasi titik, sehingga operasi titik memiliki shard yang kompatibel.

Opsi

-enable-full-version                     : Enable full version.
-mark-partial-result-with-unreduced-axes : Whether to mark partial reduction results with unreduced axes.

-sdy-insert-func-call-reshards

Menyisipkan reshard untuk konflik sharding fungsi dan panggilan.

Menyisipkan reshard untuk konflik sharding panggilan dan fungsi pada hasil.

-sdy-optimize-collectives

Mengoptimalkan operasi komunikasi kolektif.

Menghilangkan operasi permutasi kolektif yang berlebihan sebelum rangkaian all-to-all dengan menguraikan dimensi pemisahan dan menggabungkan ke dalam all-to-all gabungan.

-sdy-pad-for-divisibility

Mengisi tensor dengan sharding yang tidak dapat dibagi menjadi bentuk yang dapat dibagi.

-sdy-per-instruction-partitioning

_Mengekstrak petunjuk target secara selektif, menjalankan pipeline partisi pada petunjuk tersebut untuk menghasilkan kode lokal perangkat, dan menggabungkannya dalam sdy.manualcomputation.

Untuk tujuan penelusuran bug dan biseksi, partisi setiap petunjuk secara selektif menggunakan pipeline pemartisi Shardy mandiri (resolve-permutation-factors, reshard-to-collectives, pad-for-divisibility, convert-global-to-local), dan membungkus kode lokal perangkat yang dihasilkan di dalam sdy.manual_computation. Hal ini membuat seluruh program global tetap utuh sehingga SPMD XLA hanya mempartisi instruksi global yang tidak digabungkan.

Opsi

-filter                   : Filter string for selective partitioning. Can be empty (all sharded ops), comma-separated op name substrings (e.g. 'dot, pad'), or key-values like 'selectLow=0, selectHigh=10, func=subroutine'.
-enable-halo-exchange     : Implement halo exchange logic for windowed operations inside the sub-pipeline.
-replica-count            : Number of replicas (data parallelism).
-partition-count          : Number of partitions (model parallelism).
-rng-bit-generator-unsafe : Whether to allow unsafe partitioning of stablehlo.rng_bit_generator.

-sdy-propagate-to-func-results

Sebarkan shard dari penghentian fungsi ke hasil fungsi.

Menyalin sharding nilai terminator fungsi ke hasil func.func yang sesuai, dengan mempertahankan sharding yang ada pada fungsi utama.

-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. Pass ini ditujukan untuk kompatibilitas dengan matmul kolektif V1 (CMV1). Ini adalah solusi sementara untuk b/432019089.

-sdy-remove-propagation-debug-info

Menghapus info debug propagasi (edge 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. Pass ini menghapus sub-sumbu dan sumbu di belakangnya dari sharding dimensi terbuka input/output. Penerusan ini biasanya dilakukan setelah sdy-update-non-divisible-input-output-shardings untuk memastikan bahwa penghapusan sub-sumbu tidak menyebabkan pembagian shard yang tidak dapat dibagi.

-sdy-reshard-to-collectives

Mengonversi ReshardOp menjadi berbagai operasi kolektif Shardy.

Mencocokkan operasi reshard dan menuliskannya ulang menjadi berbagai operasi kolektif Shardy. Setelah tahap ini, tidak ada operasi reshard yang tersisa dalam modul.

Secara opsional, jika keepRedundantReshards benar, satu-satunya operasi resharing yang tersisa adalah operasi yang berlebihan. Secara default, asumsinya adalah bahwa perubahan partisi eksplisit telah dimasukkan (sdy-insert-explicit-reshards) dan tidak mempertahankan perubahan partisi yang berlebihan. Objek ini harus menyimpan resharing yang redundan jika resharing eksplisit mungkin belum dimasukkan.

Contoh:

Input:

mesh = <"x"=2, &q>uot;y"=<2, ">;z"=2
%0 <: tensor16x2xf32 {sdy.sharding>@mesh, \[{"x",< "y", &quo>t;z"<}, {}\]<>/span>
%1 = sdy.reshard %arg0 @mesh, \[{"x"}, {}\] : tensor16x2xf32

Output:

mesh = <"x"=2, &q>uot;y"=<2, ">;z"=2
%0 <: tensor16x2xf32 {sdy.sharding>@mesh, \[{"x", "y", "z"}, {}\]<
%1 = sdy.all_gather> \[{&quo<t;y">;, "z"}, {}\] %arg0 out_sharding=@mesh, \[{"x"}, {}\] : tensor16x2xf32

Pada contoh di atas, tensor %0 : tensor<16x2xf32> di-sharding sebagai \[{"x", "y", "z"}, {}\]. Kemudian, ada operasi reshard yang melakukan resharding sebagai \[{"x"}, {}\]. Pada sumbu pertama, karena akhiran {"y", "z"} dihapus setelah reshard, kita menyimpulkan bahwa kita telah mengumpulkan semua {"y", "z"}. Dimensi kedua tidak berubah.

Opsi

-keep-redundant-reshards : Whether it keeps redundant reshards or removes.

-sdy-resolve-permutation-factors

Menyelesaikan sharding pada dimensi yang dipetakan ke faktor kPermutation.

Dimensi sharding dengan faktor kPermutation mungkin memerlukan komunikasi lintas perangkat (misalnya, pertukaran halo untuk jendela atau permutasi kolektif untuk pembalikan).

Jika enableHaloExchange benar, kartu akan menggunakan logika komunikasi yang dioptimalkan dan tersedia untuk menyelesaikan faktor permutasi. Jika tidak, kartu akan memasukkan operasi sdy.reshard untuk mereplikasi dimensi tersebut. Default enableHaloExchange adalah benar (true).

Opsi

-enable-halo-exchange     : Implement halo exchange logic for windowed operations.
-replica-count            : Number of replicas (data parallelism).
-partition-count          : Number of partitions (model parallelism).
-rng-bit-generator-unsafe : Whether to allow unsafe partitioning of stablehlo.rng_bit_generator.

-sdy-resolve-single-device-sharding

Menurunkan operasi perangkat tunggal ke stablehlo.if yang dilindungi oleh ID perangkat target.

Opsi

-replica-count   : Number of replicas per partition.
-partition-count : Number of partitions per replica.

-sdy-sharding-constraint-to-reshard

Mengonversi ShardingConstraintOp menjadi ReshardOp.

-sdy-sink-data-flow-edges

Menenggelamkan semua DataFlowEdgeOp ke dalam inputnya.

Memindahkan sharding setiap DataFlowEdgeOp ke inputnya (target root edge), dan mengganti op 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-sink-func-data-flow-edges

Menenggelamkan semua FuncDataFlowEdgeOp ke dalam inputnya.

Memindahkan sharding setiap FuncDataFlowEdgeOp ke inputnya dan mengganti operasi dengan inputnya.

-sdy-unflatten-call-graph

Membatalkan perataan grafik panggilan.

Membuka grafik. Fungsi ini menghapus duplikat fungsi dengan sharding input/output yang sama dan asal yang sama seperti yang dijelaskan oleh atribut 'original_func_name' yang dilampirkan ke fungsi.

Opsi

-dedup-functions-fully : If true, regardless of the input and output shardings of functions, it keeps one callee function for each caller function. The default is false, meaning it will deduplicate only if the input and output shardings are the same.

-sdy-update-non-divisible-input-output-shardings

Membuat input/output FuncOp di-shard secara merata, sehingga tidak perlu lagi melakukan penggabungan karena shard tidak dapat dibagi.

Pengguna Shardy mengharapkan input/output fungsi dapat dibagi/di-sharding secara merata untuk menghindari perlunya padding tensor. Propagasi dapat membuat input/output memiliki sharding yang tidak dapat dibagi, sehingga penerusan ini memperbaruinya ke awalan sharding dimensi terbesar dari sharding asli yang di-sharding secara merata.

-sdy-verify-unreduced-axes

Memverifikasi konsistensi penggunaan sumbu yang tidak direduksi.

Memastikan bahwa untuk setiap operasi, jika operand-nya memiliki sumbu yang tidak direduksi, operasi tersebut akan mereduksinya secara eksplisit (misalnya, melalui sdy.reshard) atau meneruskannya ke hasilnya (atau merupakan operasi pembatas seperti func.call).