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