-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
در زنجیره (و در همان بلوک) تعریف شدهاند، با نتیجه زنجیره جایگزین میکند، همانطور که باید تقسیم آن استفادهها را دیکته کند.
-sdy-constant-splitter
محاسبات فرعی ثابت را تقسیم می کند تا هر کدام یک کاربرد واحد داشته باشند.
محاسبات فرعی ثابت را طوری تقسیم می کند که یک کاربر واحد داشته باشند.
این تضمین میکند که یک تقسیمبندی بین استفادههای مختلف یک محاسبه فرعی ثابت منتشر نمیشود، زیرا این یک وابستگی کاذب در نظر گرفته میشود (استفادههای یک ثابت نباید به یک شکل تقسیم شوند، فقط به این دلیل که از یک ثابت استفاده میکنند). در واقع، هر استفاده میتواند یک تقسیمبندی متفاوت داشته باشد که میتواند به صورت مجزا در کپی خودش از محاسبات فرعی ثابت منتشر شود.
یک محاسبه فرعی ثابت یا به صورت زیر است:
- یک عملیات ثابت یا iota (بدون عملوند)
- یک عملیات پخش، تکه یا خالص از نظر عنصر، که عملوندهای آن همگی با محاسبات فرعی ثابت (به صورت بازگشتی)، همراه با کل محاسبات فرعی که عملوندهای آن را تعریف می کنند، تعریف می شوند.
توجه داشته باشید که در یک محاسبات فرعی ثابت، یک مقدار میتواند کاربردهای متعددی در آن محاسبه فرعی داشته باشد.
-sdy-lift-inlined-meshes
MeshAttr
s را به صورت خرد شده به عنوان نماد MeshOp
s بلند می کند.
هر MeshAttr
خطی را در TensorShardingAttr
با نام نماد مش جایگزین میکند و به MeshOp
موجود یا جدید در ماژول ارجاع میدهد، به طوری که هیچ دو MeshOp
با یک MeshAttr
یکسان وجود ندارد ( MeshOp
های موجود نیز حذف میشوند).
نام هر MeshOp
جدید به صورت زیر خواهد بود:
-
maximal_mesh_{device-id}
، برای یک مش حداکثر (یعنی لیست محور خالی و یک شناسه دستگاه واحد). - اولین نام موجود در [
mesh
,mesh_0
,mesh_1
, ...] در غیر این صورت. ###-sdy-manual-axes-cleanup
استفاده از محورهای دستی را در ManualComputationOp
پاک می کند
1) برای هر اشتراک گذاری درون/خروجی که یک محور دستی مشخص نکرده است، آن محور دستی را به محورهای replicate_ آن اضافه کنید. این برای اطمینان از اینکه محورهای دستی همیشه به طور کامل مشخص می شوند است.
2) محورهای دستی را به ترتیب اعلام محورهای مش مرتب می کند.
-sdy-sharding-group-import
مجوز قانونی سازی و اعتبارسنجی برای گروه های اشتراک گذاری.
متعارف سازی و اعتبارسنجی را برای گروه های اشتراک گذاری پس از وارد کردن اعمال می کند. یعنی اینها عبارتند از:
1) یکسان سازی گروه شاردینگ - گروه های اشتراک گذاری را با استفاده از ویژگی گذرای عضویت گروه ترکیب می کند. هر زمان که یک تانسور T در یک گروه تقسیمبندی G1 و گروه اشتراکگذاری G2 باشد، میتوانیم استنباط کنیم که همه اعضای G1 و G2 باید به یک شکل خرد شوند. بنابراین می توانیم G1 و G2 را در یک گروه واحد ترکیب کنیم. مجموعه شناسه های گروه متعارف پس از ادغام 0،1،...N-1 برای حداقل مجموعه گروه ها خواهد بود.
2) اعتبار سنجی گروه شاردینگ تأیید می کند که گروه های اشتراک گذاری به خوبی شکل گرفته اند و با مفروضات موجود در پیاده سازی مطابقت دارند. این در حال حاضر ادعا می کند که اگر یک گروه اشتراک گذاری حاوی Value
باشد که در داخل بلوک یک ManualComputationOp
تعریف شده است، آنگاه همه مقادیر دیگر در آن گروه باید در همان بلوک قرار گیرند.