-sdy-add-data-flow-edges

تُدرج DataFlowEdgeOp لكل حافة تدفق بيانات.

تُدرج DataFlowEdgeOp لكل قيمة هي مالك اتّجاه تدفق بيانات، أي جميع القيم التي تُرجعها getDataFlowEdgeOwners في كلّ عملية في الوحدة.

ستأخذ السمة DataFlowEdgeOp المُدرَجة الشريحة الحالية للمالك الهدف إذا كانت متوفّرة.

-sdy-apply-sharding-constraints

تطبّق قيودًا تحدّد تقسيم إدخالها.

تنسخ هذه الدالة تقسيم ShardingConstraintOp إلى الإدخال إذا كان يستوفي كلّ ما يلي:

  • لا يتضمّن الإدخال تقسيمًا حاليًا.
  • تم إغلاق تقسيم ShardingConstraintOp بالكامل.
  • لا تحتوي الإدخالات على أي مستخدمين آخرين من النوع ShardingConstraintOp أو ManualComputationOp بقسمة مختلفة.

تشير هذه الشروط إلى أنّ ShardingConstraintOp يحدّد تقسيم إدخاله.

إذا تم إنشاء الإدخال بواسطة DataFlowEdgeOp، بدلاً من ضبط القطع المتعلّقة بالملف الشخصي، نستبدل جميع استخدامات input بShardingConstraintOp، لتجنُّب تقييد القطع لجميع استهدافات الحافة.

يُرجى العِلم أنّ تقسيم ShardingConstraintOp سيتم نشره إلى مدخله أو مستخدِميه أثناء النشر بغض النظر عن هذه الخطوة، ولكن بما أنّه لا يتم نشر السمة المغلقة للسمة، من المهم نسخ عملية التحليل المتعلّقة بالشرائح للالتزام بالقيد بالكامل في الحالات المذكورة أعلاه.

بالإضافة إلى ذلك، إذا تم استخدام مصفوفة كثيفة بواسطة سلسلة من ShardingConstraintOps التي تفي بجميع ما يلي:

  • لا يتم إنشاء مصفوفة السلاسل الزمنية بواسطة ShardingConstraintOp ولا تحتوي على أي مستخدمين آخرين من النوع ShardingConstraintOp أو ManualComputationOp.
  • لا يستخدم أيّ من ShardingConstraintOp في السلسلة أكثر من استخدام واحد باستثناء العنصر الأخير
  • لا يتضمّن ShardingConstraintOp الأخير في السلسلة أي مستخدمين من نوع ShardingConstraintOp أو ManualComputationOp (وإلا لن يكون الأكثر تأخّرًا في السلسلة)

بعد ذلك، يحلّ هذا الإجراء محلّ جميع الاستخدامات الأخرى لمدخل السلسلة، والتي يتم تحديدها بعد آخر ShardingConstraintOp في السلسلة (وداخل البلوك نفسه)، وذلك بنتيجة السلسلة، لأنّه من المفترض أن يحدّد تجزئة هذه الاستخدامات.

-sdy-constant-splitter

تقسيم العمليات الحسابية الفرعية الثابتة لكي يتم استخدام كل عملية مرة واحدة

تقسيم العمليات الحسابية الفرعية الثابتة بحيث يكون لها مستخدم واحد

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

يكون الحساب الفرعي الثابت هو:

  • ثابت أو عامل تشغيل iota (بدون عوامل تشغيل)
  • عملية بث أو شريحة أو عملية عنصرية بحتة، يتم تحديد جميع مَعلماتها بواسطة عمليات حسابية فرعية ثابتة (بشكل متكرّر)، بالإضافة إلى العمليات الحسابية الفرعية الكاملة التي تحدّد مَعلماتها

يُرجى العلم أنّه ضمن عملية حسابية فرعية ثابتة، يمكن أن يكون للقيمة استخدامات متعددة ضمن تلك العملية الحسابية الفرعية.

-sdy-lift-inlined-meshes

تنقل MeshAttr المضمّنة في الأقسام إلى الرموز MeshOp.

استبدال أي MeshAttr مضمّن في TensorShardingAttr باسم رمز شبكة ، يشير إلى MeshOp حالي أو جديد في الوحدة، بحيث لا يتضمّن أيّ MeshOpMeshAttr متطابق (يتم أيضًا إزالة تكرار MeshOpالحالية).

سيكون اسم كل MeshOp جديد إما:

  • maximal_mesh_{device-id}، لشبكة بأكبر عدد ممكن من الخلايا (أي قائمة محاور فارغة و معرّف جهاز واحد)، أو
  • أول اسم متاح في [mesh، mesh_0، mesh_1، ...].

-sdy-manual-axes-cleanup

إزالة استخدام المحاور اليدوية في ManualComputationOp

  1. بالنسبة إلى أي تقسيم داخلي/خارجي لم يتم تحديد محور يدوي له، أضِف ذلك محور يدوي إلى replicated_axes. يهدف ذلك إلى ضمان تحديد المحاور اليدوية بشكل كامل في جميع الأوقات.
  2. لترتيب المحاور اليدوية بترتيب بيان محور الشبكة

-sdy-sharding-group-import

تم اجتياز عملية التحويل إلى صيغة أحرف أساسية والتحقق من صحة مجموعات التجزئة.

تُطبّق عملية إنشاء عناوين Canonical وعمليات التحقّق من الصحة على مجموعات التجزئة عند الاستيراد. وهي:

  1. توحيد مجموعة تقسيم البيانات

    تجمع مجموعات التجزئة باستخدام السمة الانتقالية للانتساب في المجموعة. في أي وقت يكون فيه مصفوفة T في مجموعة تقسيم G1 و مجموعة تقسيم G2، يمكننا استنتاج أنّه يجب تقسيم جميع العناصر في G1 وG2 بالطريقة نفسها. وبالتالي، يمكننا دمج G1 وG2 في مجموعة واحدة. ستكون مجموعة أرقام تعريف المجموعات الأساسية بعد الدمج 0,1,...N-1 للحد الأدنى من مجموعة المجموعات.

  2. التحقّق من صحة مجموعة التجزئة

    للتحقّق من أنّ مجموعات التجزئة قد تمّ إنشاؤها بشكلٍ سليم وأنّها تتوافق مع الافتراضات في عملية التنفيذ يؤكد هذا القيد حاليًا أنّه إذا كانت مجموعة التحليل المتعلّقة بالشرائح تحتوي على Value محدّد داخل مجموعة ManualComputationOp، يجب أن تكون جميع القيم الأخرى في تلك المجموعة في المجموعة نفسها.