-sdy-close-shardings

إغلاق عمليات تقسيم مصفوفة متجاوبة وإلغاء المحاور المكرّرة

-sdy-drop-sharding-rules

إسقاط OpShardingRuleAttr من جميع عمليات التشغيل المسجَّلة

-sdy-insert-explicit-reshards

تُدرج عمليات إعادة تقسيم صريحة لجعل جميع العمليات تتضمّن عمليات تقسيم متوافقة.

تعني عملية التجزئة المتوافقة بشكل أساسي أنّ العملية يمكنها قبول المَعلمات المقسّمة وإنشاء نتيجة مقسّمة بدون الحاجة إلى أي اتصالات لإعادة التجزئة (يُرجى العِلم أنّ العملية قد تتطلّب اتصالات، مثل عمليات all-reduce أو halo-swaps).

بعد النشر، قد تظل بعض العمليات تحتوي على أقسام غير متوافقة.

يُرجى العِلم أنّه عند استخدام محور (أو محور فرعي) لتقسيم سمات غير متطابقة (مثل السمات غير المتعاقدة في matmul) على مستوى كثافات متعامدة متعددة، أو عندما يقسّم محور سمة في كثافة متعامدة واحدة ولكن ليس السمة المقابلة في كثافة متعامدة أخرى، يُقال إنّ العملية تضمّن تعارضًا في التقسيم. وبالتالي، بعد هذا الإجراء، تصبح العمليات خالية من التعارض.

تُدخل هذه الخطوة عمليات إعادة التجزئة بشكلٍ صريح لكي تصبح السمات المقابلة مجزّأة بالطريقة نفسها في كل عملية على مستوى جميع المُعامِلات والنتائج، ولا يمكن استخدام كل محور (أو محور فرعي) إلا لتقسيم نوع واحد من السمات.

مثال توضيحي:

الإدخال:

mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"y"},{"x"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
stablehlo.dot %lhs, %rhs {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
  : (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>

إخراج:

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>

في المثال أعلاه، هناك تعارض لأنّ مصفوفتَي lhs وrhs يتم تقسيمهما على محور "x" في أبعادهما غير المتعاقدة. في ما يلي، تتم إعادة تقسيم مصفوفة rhs قبل عملية النقط، وذلك لتتم إعادة تقسيمها على السمة الأولى فقط وعلى محور "x". بهذه الطريقة، تصبح عملية النقطة متوافقة.

-sdy-remove-sharding-groups

تزيل ShardingGroupOps بعد النشر.

-sdy-sharding-constraint-to-reshard

تحوِّل ShardingConstraintOp إلى ReshardOp.

-sdy-sink-data-flow-edges

تُدمج جميع DataFlowEdgeOp في الإدخال

تنقل هذه العملية تقسيم كل DataFlowEdgeOp إلى إدخالها (الهدف الجذر للحدود)، وتستبدل العملية بإدخالها.

TODO(tomnatan): consider moving the sharding to all targets that can have a sharding attached.

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

تقسيم مدخلات/مخرجات FuncOp بشكلٍ متساوٍ، ما يزيل الحاجة إلى الحشو بسبب عمليات التقسيم غير القابلة للتقسيم

يتوقّع مستخدمو Shardy أن تكون مدخلات/مخرجات الدالة متساوية قابلة للقسمة/التقسيم لتجنُّب الحاجة إلى إضافة عناصر إلى مصفوفاتهم. قد تؤدي عملية النشر إلى أن تحتوي المدخلات/المخرَجات على أقسام غير قابلة للتقسيم، لذا تعمل هذه الخطوة على تعديل هذه الأقسام إلى البادئة الأكبر لتقسيم السمات من التقسيم الأصلي الذي يتم تقسيمه بالتساوي.