-sdy-add-data-flow-edges
تُدرج DataFlowEdgeOp
لكل حافة تدفق بيانات.
تُدرج DataFlowEdgeOp
لكل قيمة هي مالك اتّجاه تدفق بيانات، أي جميع القيم التي تُرجعها getDataFlowEdgeOwners
في كلّ عملية في
الوحدة.
ستأخذ السمة DataFlowEdgeOp
المُدرَجة الشريحة الحالية للمالك
الهدف إذا كانت متوفّرة.
-sdy-apply-sharding-constraints
تطبّق قيودًا تحدّد تقسيم إدخالها.
تنسخ هذه الدالة تقسيم ShardingConstraintOp
إلى الإدخال إذا كان يستوفي
كلّ ما يلي:
- لا يتضمّن الإدخال تقسيمًا حاليًا.
- تم إغلاق تقسيم
ShardingConstraintOp
بالكامل. - لا تحتوي الإدخالات على أي مستخدمين آخرين من النوع
ShardingConstraintOp
أوManualComputationOp
بقسمة مختلفة.
تشير هذه الشروط إلى أنّ ShardingConstraintOp
يحدّد
تقسيم إدخاله.
إذا تم إنشاء الإدخال بواسطة DataFlowEdgeOp
، بدلاً من ضبط القطع المتعلّقة بالملف الشخصي، نستبدل جميع استخدامات input
بShardingConstraintOp
، لتجنُّب تقييد القطع لجميع استهدافات
الحافة.
يُرجى العِلم أنّ تقسيم ShardingConstraintOp
سيتم نشره إلى
مدخله أو مستخدِميه أثناء النشر بغض النظر عن هذه الخطوة، ولكن بما أنّه لا يتم نشر السمة
المغلقة للسمة، من المهم نسخ عملية التحليل المتعلّقة بالشرائح للالتزام بالقيد بالكامل في الحالات المذكورة أعلاه.
بالإضافة إلى ذلك، إذا تم استخدام مصفوفة كثيفة بواسطة سلسلة من ShardingConstraintOp
s التي تفي
بجميع ما يلي:
- لا يتم إنشاء مصفوفة السلاسل الزمنية بواسطة
ShardingConstraintOp
ولا تحتوي على أي مستخدمين آخرين من النوعShardingConstraintOp
أوManualComputationOp
. - لا يستخدم أيّ من
ShardingConstraintOp
في السلسلة أكثر من استخدام واحد باستثناء العنصر الأخير - لا يتضمّن
ShardingConstraintOp
الأخير في السلسلة أي مستخدمين من نوعShardingConstraintOp
أوManualComputationOp
(وإلا لن يكون الأكثر تأخّرًا في السلسلة)
بعد ذلك، يحلّ هذا الإجراء محلّ جميع الاستخدامات الأخرى لمدخل السلسلة، والتي يتم تحديدها بعد آخر ShardingConstraintOp
في السلسلة (وداخل البلوك نفسه)، وذلك بنتيجة السلسلة، لأنّه من المفترض أن يحدّد تجزئة
هذه الاستخدامات.
-sdy-constant-splitter
تقسيم العمليات الحسابية الفرعية الثابتة لكي يتم استخدام كل عملية مرة واحدة
تقسيم العمليات الحسابية الفرعية الثابتة بحيث يكون لها مستخدم واحد
يضمن ذلك عدم نشر عملية تقسيم بين الاستخدامات المختلفة لحساب فرعي ثابت، لأنّ ذلك يُعدّ اعتمادًا زائفًا (يجب عدم تقسيم استخدامات الثابت بالطريقة نفسها لمجرد أنّها تستخدم الثابت نفسه). في الواقع، يمكن أن يكون لكل استخدام تقسيم مختلف يمكنه الانتشار بشكل منفصل عن نسخته الخاصة من العملية الحسابية الفرعية الثابتة.
يكون الحساب الفرعي الثابت هو:
- ثابت أو عامل تشغيل iota (بدون عوامل تشغيل)
- عملية بث أو شريحة أو عملية عنصرية بحتة، يتم تحديد جميع مَعلماتها بواسطة عمليات حسابية فرعية ثابتة (بشكل متكرّر)، بالإضافة إلى العمليات الحسابية الفرعية الكاملة التي تحدّد مَعلماتها
يُرجى العلم أنّه ضمن عملية حسابية فرعية ثابتة، يمكن أن يكون للقيمة استخدامات متعددة ضمن تلك العملية الحسابية الفرعية.
-sdy-lift-inlined-meshes
تنقل MeshAttr
المضمّنة في الأقسام إلى الرموز MeshOp
.
استبدال أي MeshAttr
مضمّن في TensorShardingAttr
باسم رمز شبكة
، يشير إلى MeshOp
حالي أو جديد في الوحدة، بحيث
لا يتضمّن أيّ MeshOp
MeshAttr
متطابق (يتم أيضًا
إزالة تكرار MeshOp
الحالية).
سيكون اسم كل MeshOp
جديد إما:
-
maximal_mesh_{device-id}
، لشبكة بأكبر عدد ممكن من الخلايا (أي قائمة محاور فارغة و معرّف جهاز واحد)، أو - أول اسم متاح في [
mesh
،mesh_0
،mesh_1
، ...].
-sdy-manual-axes-cleanup
إزالة استخدام المحاور اليدوية في ManualComputationOp
- بالنسبة إلى أي تقسيم داخلي/خارجي لم يتم تحديد محور يدوي له، أضِف ذلك محور يدوي إلى replicated_axes. يهدف ذلك إلى ضمان تحديد المحاور اليدوية بشكل كامل في جميع الأوقات.
- لترتيب المحاور اليدوية بترتيب بيان محور الشبكة
-sdy-sharding-group-import
تم اجتياز عملية التحويل إلى صيغة أحرف أساسية والتحقق من صحة مجموعات التجزئة.
تُطبّق عملية إنشاء عناوين Canonical وعمليات التحقّق من الصحة على مجموعات التجزئة عند الاستيراد. وهي:
توحيد مجموعة تقسيم البيانات
تجمع مجموعات التجزئة باستخدام السمة الانتقالية للانتساب في المجموعة. في أي وقت يكون فيه مصفوفة T في مجموعة تقسيم G1 و مجموعة تقسيم G2، يمكننا استنتاج أنّه يجب تقسيم جميع العناصر في G1 وG2 بالطريقة نفسها. وبالتالي، يمكننا دمج G1 وG2 في مجموعة واحدة. ستكون مجموعة أرقام تعريف المجموعات الأساسية بعد الدمج 0,1,...N-1 للحد الأدنى من مجموعة المجموعات.
التحقّق من صحة مجموعة التجزئة
للتحقّق من أنّ مجموعات التجزئة قد تمّ إنشاؤها بشكلٍ سليم وأنّها تتوافق مع الافتراضات في عملية التنفيذ يؤكد هذا القيد حاليًا أنّه إذا كانت مجموعة التحليل المتعلّقة بالشرائح تحتوي على
Value
محدّد داخل مجموعةManualComputationOp
، يجب أن تكون جميع القيم الأخرى في تلك المجموعة في المجموعة نفسها.