-sdy-close-shardings

টেনসর শার্ডিং বন্ধ করে এবং প্রতিলিপিকৃত অক্ষগুলিকে ফেলে দেয়।

-sdy-constant-or-scalar-merger

একই ধ্রুবক এবং স্কেলার এক্সপ্যানশনগুলিকে মিলে যাওয়া শারডিংগুলির সাথে একত্রিত করুন।

অভিন্ন শার্ডিং সহ ধ্রুবকগুলিতে একটি হালকা CSE সম্পাদন করে।

আমদানি পাইপলাইন ধ্রুবক এবং স্কেলার এক্সপ্যানশনগুলিকে বিভক্ত করে এবং ডুপ্লিকেট করে যাতে ধ্রুবক সাব-কম্পিউটেশনের বিভিন্ন ব্যবহারের মধ্যে শারডিং প্রচারিত না হয়। যদি ধ্রুবকগুলির প্রচারের পরে একই শারডিং থাকে, তাহলে সংকলনের সময় বাঁচাতে এই পাসটি তাদের একত্রিত করে। আরও তথ্যের জন্য -sdy-constant-or-scalar-splitter দেখুন।

-sdy-convert-global-to-local

একটি SDY প্রোগ্রামকে গ্লোবাল শেপ থেকে স্থানীয় শেপে রূপান্তর করে।

শারডিং অ্যাট্রিবিউটের উপর ভিত্তি করে লজিক্যাল ডাইমেনশন পার্টিশন করে একটি SDY প্রোগ্রামকে গ্লোবাল শেপ থেকে স্থানীয় শেপে রূপান্তর করে।

এই পাসটি একটি টাইপ কনভার্টার ব্যবহার করে RankedTensorType কে গ্লোবাল লজিক্যাল শেপ থেকে ডিভাইস-স্থানীয় ফিজিক্যাল শেপ ম্যাপ করে।

-sdy-drop-sharding-rules

সকল নিবন্ধিত অপারেশন থেকে OpShardingRuleAttr বাদ দেওয়া হয়।

-sdy-insert-explicit-reshards

সমস্ত ক্রিয়াকলাপে সামঞ্জস্যপূর্ণ শার্ডিং তৈরি করতে স্পষ্ট রিশার্ড সন্নিবেশ করায়।

একটি সামঞ্জস্যপূর্ণ শার্ডিং মূলত বোঝায় যে অপারেশনটি শার্ডেড অপারেন্ডগুলি গ্রহণ করতে পারে এবং কোনও রিশার্ড যোগাযোগের প্রয়োজন ছাড়াই একটি শার্ডেড ফলাফল তৈরি করতে পারে (মনে রাখবেন যে অপারেশনটির জন্য এখনও অল-রিডুস বা হ্যালো-সোয়াপের মতো যোগাযোগের প্রয়োজন হতে পারে)।

প্রচারের পরেও, কিছু অপারেশনে এখনও অসঙ্গতিপূর্ণ শারডিং থাকতে পারে।

লক্ষ্য করুন যে যখন একটি অক্ষ (অথবা উপ-অক্ষ) একাধিক টেনসর জুড়ে অ-সংযুক্ত মাত্রা (যেমন ম্যাটমুলে অ-সংযুক্ত মাত্রা) ছিন্ন করার জন্য ব্যবহৃত হয়, অথবা যখন একটি অক্ষ একটি টেনসরের একটি মাত্রাকে ছিন্ন করে কিন্তু অন্য টেনসরের সংশ্লিষ্ট মাত্রাকে নয়, তখন বলা হয় যে অপারেশনটিতে একটি ছিন্ন দ্বন্দ্ব রয়েছে। অতএব, এই পাসের পরে, অপারেশনগুলি দ্বন্দ্বমুক্ত হয়ে যায়।

এই পাসটি রিশার্ড অপারেশনগুলিকে স্পষ্টভাবে ইনজেক্ট করে যাতে প্রতিটি অপারেশনের জন্য, সংশ্লিষ্ট ডাইমেনশনগুলি সমস্ত অপারেন্ড এবং ফলাফল জুড়ে একইভাবে শার্ড করা হয় এবং প্রতিটি অক্ষ (অথবা উপ-অক্ষ) শুধুমাত্র একটি একক ডাইমেনশন টাইপ শার্ড করার জন্য ব্যবহার করা যেতে পারে।

উদাহরণ:

ইনপুট:

mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"x"}, {"y"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
stablehlo.dot %lhs, %rhs {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
  : (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>

আউটপুট:

sdy.mesh = <"x"=4, "y"=2>
%lhs : tensor<8x32xf32> {sdy.sharding=<@mesh, \[{"x"}, {"y"}\]>}
%rhs : tensor<32x16xf32> {sdy.sharding=<@mesh, \[{"y"}, {"x"}\]>}
%0 = sdy.reshard %rhs <@mesh, \[{"y"}, {}\]> : tensor<32x16xf32>
stablehlo.dot %lhs, %0 {sdy.sharding_per_value=<[<@mesh, \[{"x"}, {}\]>]>}
  : (tensor<8x32xf32>, tensor<32x16xf32>) -> tensor<8x16xf32>

উপরের উদাহরণে, lhs এবং rhs উভয়ই তাদের অ-সংকোচনশীল মাত্রার উপর "x" অক্ষে খণ্ডিত, যা বেমানান। পাসটি ডট অপারেশনের আগে rhs এ একটি স্পষ্ট রিশার্ড সন্নিবেশ করায়, যাতে ডট অপারেশনে সামঞ্জস্যপূর্ণ খণ্ডিত থাকে।

বিকল্পগুলি

-enable-full-version                  : Enable full version.
-avoid-reshards-on-named-computations : Avoid explicit reshards/collectives on named computations.

-sdy-remove-all-gather-reduce-scatter-for-cmv1

_CMV1 এর জন্য sdy.all_gather এবং sdy.reduce স্ক্যাটার অপসারণ করে।

all-gather + dot প্যাটার্নের all-gather সরিয়ে দেয়। pattern dot + reduce-scatter প্যাটার্নের reduce-scatter সরিয়ে দেয়। এই পাসটি collective matmul V1 (CMV1) এর সাথে সামঞ্জস্যের জন্য। এটি b/432019089 এর জন্য একটি অস্থায়ী সমাধান।

-sdy-remove-propagation-debug-info

এক্সপোর্টের সময় প্রোপাগেশন ডিবাগ তথ্য (প্রপাগেশন প্রান্ত এবং উৎপত্তি শারডিং) সরিয়ে দেয়।

-sdy-remove-sharding-groups

প্রচারের পরে ShardingGroupOps সরিয়ে দেয়।

-sdy-remove-sub-axes-in-input-output-shardings

ইনপুট/আউটপুট শার্ডিং-এ সাব-অক্ষগুলি সরিয়ে দেয়।

Shardy-এর কিছু ব্যবহারকারী আশা করেন যে ফাংশন ইনপুট/আউটপুটগুলিতে সাব-অক্ষ ছাড়াই শারডিং থাকবে। এই পাসটি ইনপুট/আউটপুট শারডিং থেকে সাব-অক্ষ এবং তাদের ট্রেলিং অক্ষগুলিকে সরিয়ে দেয়। এই পাসটি সাধারণত sdy-update-non-divisible-input-output-shardings পরে থাকে যাতে সাব-অক্ষ অপসারণের ফলে কোনও অ-বিভাজ্য শারডিং না হয়।

-sdy-reshard-to-collectives

ReshardOp কে বিভিন্ন Shardy সমষ্টিগত অপশনে রূপান্তরিত করে।

রিশার্ড অপশনের সাথে মিল করে এবং বিভিন্ন শার্ডি কালেক্টিভ অপশনে পুনর্লিখন করে। এই পাসের পরে, মডিউলে কোনও রিশার্ড অপশন থাকে না।

ঐচ্ছিকভাবে, যদি keepRedundantReshards সত্য হয়, তাহলে শুধুমাত্র রিশার্ড অপশনগুলিই অবশিষ্ট থাকে। ডিফল্টরূপে এটি ধরে নেয় যে স্পষ্ট রিশার্ডগুলি ইতিমধ্যেই সন্নিবেশ করা হয়েছে ( sdy-insert-explicit-reshards ) এবং অপ্রয়োজনীয় রিশার্ডগুলি রাখে না। যদি স্পষ্ট রিশার্ডগুলি ইতিমধ্যেই সন্নিবেশ করা না থাকে তবে এটি অপ্রয়োজনীয় রিশার্ডগুলি রাখবে।

উদাহরণ:

ইনপুট:

mesh = <"x"=2, "y"=2, "z"=2>
%0 : tensor<16x2xf32> {sdy.sharding<@mesh, \[{"x", "y", "z"}, {}\]>
%1 = sdy.reshard %arg0 <@mesh, \[{"x"}, {}\]> : tensor<16x2xf32>

আউটপুট:

mesh = <"x"=2, "y"=2, "z"=2>
%0 : tensor<16x2xf32> {sdy.sharding<@mesh, \[{"x", "y", "z"}, {}\]>
%1 = sdy.all_gather \[{"y", "z"}, {}\] %arg0 out_sharding=<@mesh, \[{"x"}, {}\]> : tensor<16x2xf32>

উপরের উদাহরণে, টেনসর %0 : tensor<16x2xf32> এভাবে খণ্ডিত করা হয়েছে\[{"x", "y", "z"}, {}\] । তারপর, একটি reshard অপ আছে যা এটিকে রিশার্ড করছে\[{"x"}, {}\] । প্রথম অক্ষগুলিতে, যেহেতু রিশারডের পরে {"y", "z"} প্রত্যয়টি সরানো হয়, তাই আমরা অনুমান করি যে আমরা {"y", "z"} সম্পূর্ণরূপে একত্রিত করেছি। দ্বিতীয় মাত্রাটি পরিবর্তিত হয়নি।

বিকল্পগুলি

-keep-redundant-reshards : Whether it keeps redundant reshards or removes.

-sdy-sharding-constraint-to-reshard

ShardingConstraintOp কে ReshardOp এ রূপান্তর করে।

-sdy-sink-data-flow-edges

সমস্ত DataFlowEdgeOp তাদের ইনপুটে ডুবিয়ে দেয়।

প্রতিটি DataFlowEdgeOp এর শারডিংকে তার ইনপুটে (এজের রুট টার্গেট) স্থানান্তর করে, এবং op কে তার ইনপুট দিয়ে প্রতিস্থাপন করে।

বিকল্পগুলি

-sink-debug-sharding-origins          : Whether to sink the debug sharding origins info. See `debug-sharding-origins` option in propagation for more info.
-sink-debug-propagation-edge-sharding : Whether to sink the debug propagation edge sharding info. See `debug-propagation-edge-sharding` option in propagation for more info.

-sdy-update-non-divisible-input-output-shardings

FuncOp ইনপুট/আউটপুটগুলিকে সমানভাবে তীক্ষ্ণ করে তোলে, অ-বিভাজ্য তীক্ষ্ণতার কারণে প্যাডিংয়ের প্রয়োজনীয়তা দূর করে।

Shardy-এর ব্যবহারকারীরা আশা করেন যে ফাংশনের ইনপুট/আউটপুটগুলি সমানভাবে বিভাজ্য/শ্যাডেবল হবে যাতে তাদের টেনসরগুলিকে প্যাডিং করার প্রয়োজন না হয়। প্রচারের ফলে ইনপুট/আউটপুটগুলিতে অ-বিভাজ্য শারডিং থাকতে পারে, তাই এই পাসটি তাদের মূল শারডিংয়ের বৃহত্তম মাত্রা শারডিং উপসর্গে আপডেট করে যা সমানভাবে শারডিং করা হয়।