-sdy-close-shardings
Fecha as partições de tensor e descarta os eixos replicados.
-sdy-constant-or-scalar-merger
Mescla constantes idênticas e expansões escalares com partições correspondentes.
Realiza uma CSE leve em constantes com partições idênticas.
O pipeline de importação divide e duplica as constantes e expansões escalares para que a partição não seja propagada entre diferentes usos de um subcálculo constante. Se as constantes tiverem as mesmas partições após a propagação, essa passagem as mesclará para economizar tempo de compilação. Consulte -sdy-constant-or-scalar-splitter para mais informações.
-sdy-convert-global-to-local
Converte um programa SDY de formas globais para locais.
Converte um programa SDY de formas globais para locais, particionando dimensões lógicas com base em atributos de partição.
Essa passagem aproveita um conversor de tipo para mapear RankedTensorType de formas lógicas globais para formas físicas locais do dispositivo.
Opções
-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
Remove a operação de malha e a notação de partição do programa.
Opções
-keep-module-sharding-metadata : Whether to keep module-level sharding metadata (sdy.parameters_shardings and sdy.output_shardings).
-sdy-drop-sharding-rules
Descarta OpShardingRuleAttr de todas as operações registradas.
-sdy-export-named-computations
Esboça chamadas de NamedComputationOp.
Cria uma passagem que converte um NamedComputationOp em um CallOp com uma nova função particular chamada name de NamedComputationOp. O novo FuncOp e CallOp têm as mesmas partições que os operandos/resultados de NamedComputationOps originais.
Se houver uma função com o mesmo nome de NamedComputationOp no módulo, a tabela de símbolos MLIR vai mudar para {name}_#.
-sdy-insert-explicit-reshards
Insere partições explícitas para que todas as operações tenham partições compatíveis.
Uma partição compatível significa que a operação pode aceitar os operandos particionados e produzir um resultado particionado sem exigir comunicações de repartição (a operação ainda pode exigir comunicação, como all-reduce ou halo-swaps).
Após a propagação, algumas operações ainda podem ter partições incompatíveis.
Quando um eixo (ou subeixo) é usado para particionar dimensões não correspondentes (por exemplo, dimensões não contratuais em matmul) em vários tensores ou quando um eixo particiona uma dimensão em um tensor, mas não a dimensão correspondente no outro tensor, dizemos que a operação tem um conflito de partição. Portanto, após essa passagem, as operações ficam sem conflitos.
Essa passagem injeta operações de repartição explicitamente para que, em cada operação, as dimensões correspondentes sejam particionadas da mesma maneira em todos os operandos e resultados, e cada eixo (ou subeixo) só possa ser usado para particionar um único tipo de dimensão.
Exemplo:
Entrada:
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>
Saída:
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>
No exemplo acima, lhs e rhs são particionados no eixo "x" nas dimensões não contratuais, o que é incompatível. A passagem insere uma repartição explícita em rhs antes da operação de ponto, para que a operação de ponto tenha partições compatíveis.
Opções
-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
Insere repartições para conflitos de partição de função e chamada.
Insere repartições para conflitos de partição de função e chamada nos resultados.
-sdy-optimize-collectives
Otimiza operações de comunicação coletiva.
Elimina operações coletivas redundantes que precedem cadeias all-to-all, decompondo dimensões divididas e mesclando em um all-to-all combinado.
-sdy-pad-for-divisibility
Preenche tensores com partições não divisíveis para formas divisíveis.
-sdy-per-instruction-partitioning
Extrai seletivamente as instruções de destino, executa o pipeline de particionador nelas para gerar código local do dispositivo e as envolve em sdy.manualcomputation.
Para fins de depuração e bisseção, particiona seletivamente instruções individuais usando o pipeline de particionador Shardy independente (resolve-permutation-factors, reshard-to-collectives, pad-for-divisibility, convert-global-to-local) e envolve o código local do dispositivo resultante em sdy.manual_computation. Isso mantém o restante do programa global intacto para que as partições XLA SPMD particionem apenas as instruções globais não encapsuladas.
Opções
-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
Propaga partições do terminador de função para resultados de função.
Copia as partições dos valores do terminador de função para os resultados func.func correspondentes, preservando as partições atuais na função principal.
-sdy-remove-all-gather-reduce-scatter-for-cmv1
_Remove sdy.all_gather e sdy.reducescatter para CMV1.
Remove all-gather no padrão all-gather + dot. Remove reduce-scatter no padrão dot + reduce-scatter. Essa passagem é para compatibilidade com o matmul coletivo V1 (CMV1). É uma solução temporária para b/432019089.
-sdy-remove-propagation-debug-info
Remove informações de depuração de propagação (bordas de propagação e partições de origem) durante a exportação.
-sdy-remove-sharding-groups
Remove ShardingGroupOps após a propagação.
-sdy-remove-sub-axes-in-input-output-shardings
Remove subeixos em partições de entrada/saída.
Alguns usuários do Shardy esperam que as entradas/saídas de função tenham partições sem subeixos. Essa passagem remove subeixos e os eixos finais das partições de dimensão aberta de entrada/saída. Essa passagem geralmente ocorre após sdy-update-non-divisible-input-output-shardings para garantir que a remoção de subeixos não introduza partições não divisíveis.
-sdy-reshard-to-collectives
Converte ReshardOp em várias operações coletivas do Shardy.
Corresponde a operações de repartição e as reescreve em várias operações coletivas do Shardy. Após essa passagem, nenhuma operação de repartição permanece no módulo.
Opcionalmente, se keepRedundantReshards for verdadeiro, as únicas operações de repartição que permanecem são as redundantes. Por padrão, ele pressupõe que as repartições explícitas já foram inseridas (sdy-insert-explicit-reshards) e não mantém repartições redundantes. Ele deve manter repartições redundantes se as repartições explícitas ainda não tiverem sido inseridas.
Exemplo:
Entrada:
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
Saída:
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
No exemplo acima, o tensor %0 : tensor<16x2xf32> é particionado como
\[{"x", "y", "z"}, {}\]. Em seguida, há uma operação reshard que o reparte como
\[{"x"}, {}\]. Nos primeiros eixos, como o sufixo {"y", "z"} é removido
após a repartição, inferimos que temos {"y", "z"} coletados. A segunda dimensão não é alterada.
Opções
-keep-redundant-reshards : Whether it keeps redundant reshards or removes.
-sdy-resolve-permutation-factors
Resolve a partição em dimensões mapeadas para fatores kPermutation.
As dimensões de partição com fatores kPermutation podem exigir comunicação entre dispositivos (por exemplo, troca de halo para janelas ou permutações coletivas para inversões).
Se enableHaloExchange for verdadeiro, a passagem usará uma lógica de comunicação otimizada disponível para resolver os fatores de permutação. Caso contrário, a passagem simplesmente inserirá operações sdy.reshard para replicar essas dimensões. O padrão de enableHaloExchange é verdadeiro.
Opções
-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
Reduz operações de dispositivo único em stablehlo.if protegidas pelo ID do dispositivo de destino.
Opções
-replica-count : Number of replicas per partition.
-partition-count : Number of partitions per replica.
-sdy-sharding-constraint-to-reshard
Converte ShardingConstraintOp em ReshardOp.
-sdy-sink-data-flow-edges
Afunda todos os DataFlowEdgeOp na entrada.
Move a partição de cada DataFlowEdgeOp para a entrada (o destino raiz da borda) e substitui a operação pela entrada.
Opções
-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
Afunda todos os FuncDataFlowEdgeOp na entrada.
Move a partição de cada FuncDataFlowEdgeOp para a entrada e substitui a operação pela entrada.
-sdy-unflatten-call-graph
Descompacta o gráfico de chamadas.
Descompacta o gráfico. Ele desduplica funções com as mesmas partições de entrada/saída e a mesma origem, conforme descrito pelo 'original_func_name' atributo anexado às funções.
Opções
-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
Faz com que as entradas/saídas do FuncOp sejam particionadas uniformemente, removendo a necessidade de preenchimento devido a partições não divisíveis.
Os usuários do Shardy esperam que as entradas/saídas de função sejam divisíveis/particionáveis uniformemente para evitar a necessidade de preencher os tensores. A propagação pode fazer com que as entradas/saídas tenham partições não divisíveis. Portanto, essa passagem as atualiza para o maior prefixo de partição de dimensão da partição original que é particionada uniformemente.
-sdy-verify-unreduced-axes
Verifica a consistência do uso de eixos não reduzidos.
Verifica se, para cada operação, se os operandos tiverem eixos não reduzidos, a operação os reduz explicitamente (por exemplo, via sdy.reshard) ou os transmite para os resultados (ou é uma operação de limite como func.call).