-mpmd-convert-sdy-constants
Преобразует операции sdy.constant в stablehlo.constant .
Преобразует любую операцию типа sdy.constant , которая не подлежит свертыванию, в операцию типа stablehlo.constant . Нет причин препятствовать свертыванию констант, поскольку мы удаляем сегментацию из констант в mpmd-convert-sdy-shardings-to-mpmd-types .
-mpmd-convert-sdy-shardings-to-mpmd-types
Перемещает сегментацию из атрибутов операции в типы !mpmd.mesh_tensor .
Этот шаг перемещает сегменты данных из атрибутов операций MPMD (например, фрагменты, передача) в MeshTensorType их результатов. Предполагая, что перед этим проходом применяется распространение SDY, сегменты данных SPMD прикрепляются к атрибутам операции. Этот проход перемещает сегменты данных в MeshTensorType , поскольку последующие проходы требуют, чтобы этот тип содержал сегменты данных.
Этот проход также удаляет любое сегментирование из операций, не имеющих MeshTensorType , то есть из операций внутри mpmd.fragment .
-mpmd-enforce-user-shardings
Обеспечивает соблюдение заданного пользователем разделения входных и выходных данных.
Обеспечивает, чтобы входные и выходные сегменты фрагментов, принимающих аргументы функции или выдающих результаты функции соответственно, соответствовали сегментам, указанным пользователем, то есть входным и выходным сегментам функции.
После этого этапа фрагментация и передача пользователей аргументов функций и производителей результатов функций должны иметь те же сегменты, которые были указаны пользователем. Если пользователь не указал сегмент для входа или выхода, этот этап сохраняет сегмент, назначенный при распространении.
Предварительное условие:
- Распределение пользователей по сегментам задается в аргументах и результатах функции в виде атрибутов.
- Размер фрагментов данных задается атрибутами
in_shardingsиout_shardings.
-mpmd-extract-reshards-from-inter-mesh-transfers
Перемещает перераспределение данных SPMD между узлами сетки внутрь фрагмента.
Гарантирует, что все межсетевые передачи не приводят к повторному сегментированию массива (SPMD) (их входящее и исходящее сегментирование одинаково), путем обновления типов фрагментов производителя/потребителя или путем создания предполагаемых фрагментов для производителей/потребителей, не являющихся фрагментами.
Это необходимо, поскольку среды выполнения MPMD имеют ограничения в отношении поддерживаемого перераспределения сегментов.
Этот проход применяется только к функциям MPMD в глобальном представлении и с однородной топологией.
Предварительное условие: все сегменты задаются как атрибуты операций, а не в типах.
-mpmd-populate-unreduced-out-sharding
Заполняет несокращенные фрагменты данных.
Программа перебирает каждый фрагмент, анализирует его возвращаемые значения, проверяет, имеет ли это значение ограничение на неуменьшенное сегментирование по осям, и если да, то изменяет атрибут out_sharding фрагмента, чтобы он содержал неуменьшенное сегментирование.
Если атрибут out_sharding отсутствует, он добавляется с использованием реплицированных шардингов по умолчанию (за исключением нередуцированных осей).
Это необходимо, потому что конвейер распространения SDY не заполняет исходящие шарды без редукции, а только входящие. Поскольку технически Shardy не отвечает за распространение осей без редукции, этот проход выполняется в MPMD, а не в SDY.
-mpmd-simplify-program
Удаляет избыточные аргументы/результаты из фрагментов.
Упрощает фрагмент или цикл, его операнды и результаты, а также соответствующие им аргументы блока и возвращаемые значения.