-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 تعریف شده است، آنگاه همه مقادیر دیگر در آن گروه باید در همان بلوک قرار گیرند.