-sdy-close-shardings

টেনসর শার্ডিং বন্ধ করে এবং রেপ্লিকেট করা অ্যাক্সিস বাদ দেয়।

-sdy-constant-or-scalar-merger

ম্যাচিং শার্ডিং সহ একই ধরনের কনস্ট্যান্ট ও স্কেলার এক্সপ্যানশন মার্জ করুন।

একই শার্ডিং সহ কনস্ট্যান্টে লাইটওয়েট CSE পারফর্ম করে।

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

-sdy-convert-global-to-local

গ্লোবাল শেপ থেকে লোকাল শেপে SDY প্রোগ্রাম কনভার্ট করে।

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

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

বিকল্প

-per-dim-all-gather                     : Keep per-dimension all-gather without combining them into a single all-gather.
-combine-multi-dimension-reduce-scatter : Combine multi-dimension reduce-scatter into a single reduce-scatter.
-enable-rgv3                            : Use StableHLO ReplicaGroupV3 (mesh-axes based) for collectives.
-replica-count                          : Number of replicas (data parallelism).
-partition-count                        : Number of partitions (model parallelism).

-sdy-drop-sharding-and-mesh

প্রোগ্রাম থেকে মেশ অপ ও শার্ডিং নোটেশন সরিয়ে দেয়।

বিকল্প

-keep-module-sharding-metadata : Whether to keep module-level sharding metadata (sdy.parameters_shardings and sdy.output_shardings).

-sdy-drop-sharding-rules

সব রেজিস্টার করা অপারেশন থেকে OpShardingRuleAttr ড্রপ।

-sdy-export-named-computations

NamedComputationOp-এর কলগুলির সারসংক্ষেপ দাও।

এমন একটি পাস তৈরি করে যা NamedComputationOp-কে CallOp-এ কনভার্ট করে, NamedComputationOp-এর name নামে পরিচিত নতুন প্রাইভেট ফাংশনের মাধ্যমে। নতুন FuncOp ও CallOp-এর শ্ডিং, আসল NamedComputationOps অপারেন্ড/ফলাফলের মতো একই।

মডিউলে NamedComputationOp নামের কোনও ফাংশন থাকলে, MLIR সিম্বল টেবিল সেটি পরিবর্তন করে {name}_# করে দেবে।

-sdy-insert-explicit-reshards

সব অপারেশন যাতে মানানসই শার্ডিং হয় সেই জন্য অনুপযুক্ত রিশার্ড যোগ করে।

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

প্রোপাগেশনের পরে, কিছু অপারেশনে এখনও ইনকম্প্যাটিবল শার্ডিং থাকতে পারে।

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

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

উদাহরণ:

ইনপুট:

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.
-mark-partial-result-with-unreduced-axes : Whether to mark partial reduction results with unreduced axes.

-sdy-insert-func-call-reshards

ফাংশন ও কল শার্ডিং সংক্রান্ত বিরোধের জন্য রিস্হায়ারিং ইনসার্ট করে।

ফলাফলে ফাংশন ও কল শার্ডিং সংক্রান্ত সমস্যার জন্য রিশার্ড যোগ করে।

-sdy-optimize-collectives

সম্মিলিত কমিউনিকেশন অপারেশন অপ্টিমাইজ করে।

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

-sdy-pad-for-divisibility

বিভাজ্য নয় এমন শেডিং সহ প্যাড টেনসরকে বিভাজ্য শেপে পরিবর্তন করে।

-sdy-per-instruction-partitioning

_বাছাই করে টার্গেট নির্দেশাবলী এক্সট্র্যাক্ট করে, ডিভাইস-লোকাল কোড তৈরি করতে সেগুলির উপর পার্টিশনার পাইপলাইন রান করে এবং sdy.manualকম্পিউটেশনে সেগুলিকে র‍্যাপ করে।

ডিবাগিং ও বাইসেকশন করার উদ্দেশ্যে, স্বতন্ত্র Shardy পার্টিশনার পাইপলাইন (resolve-permutation-factors, reshard-to-collectives, pad-for-divisibility, convert-global-to-local) ব্যবহার করে বেছে বেছে স্বতন্ত্র নির্দেশাবলী পার্টিশন করে এবং ফলাফল হিসেবে পাওয়া ডিভাইস-লোকাল কোড sdy.manual_computation-এর মধ্যে র‍্যাপ করে। এটি গ্লোবাল প্রোগ্রামের বাকি অংশকে অক্ষত রাখে যাতে XLA SPMD শুধুমাত্র আনর‍্যাপ করা গ্লোবাল নির্দেশাবলী পার্টিশন করে।

বিকল্প

-filter                   : Filter string for selective partitioning. Can be empty (all sharded ops), comma-separated op name substrings (e.g. 'dot, pad'), or key-values like 'selectLow=0, selectHigh=10, func=subroutine'.
-enable-halo-exchange     : Implement halo exchange logic for windowed operations inside the sub-pipeline.
-replica-count            : Number of replicas (data parallelism).
-partition-count          : Number of partitions (model parallelism).
-rng-bit-generator-unsafe : Whether to allow unsafe partitioning of stablehlo.rng_bit_generator.

-sdy-propagate-to-func-results

ফাংশন টার্মিনেটর থেকে ফাংশন ফলাফলে শার্ডিং প্রোপাগেট করুন।

func টার্মিনেটর ভ্যালুর শার্ডিং সংশ্লিষ্ট func.func ফলাফলে কপি করে, মূল ফাংশনে আগে থেকে থাকা শার্ডিং বজায় রাখে।

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

_CMV1-এর জন্য sdy.all_gather এবং sdy.reducescatter সরিয়ে দেয়।

all-gather + dot প্যাটার্নে সব all-gather সরিয়ে দেয়। dot + reduce-scatter প্যাটার্নে reduce-scatter সরিয়ে দেয়। এই পাসটি কালেক্টিভ ম্যাটমুল 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 কালেক্টিভ অপসে কনভার্ট করে।

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

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

উদাহরণ:

ইনপুট:

mesh = <"x"=2, &q>uot;y"=<2, ">;z"=2
%0 <: tensor16x2xf32 {sdy.sharding>@mesh, \[{"x",< "y", &quo>t;z"<}, {}\]<>/span>
%1 = sdy.reshard %arg0 @mesh, \[{"x"}, {}\] : tensor16x2xf32

আউটপুট:

mesh = <"x"=2, &q>uot;y"=<2, ">;z"=2
%0 <: tensor16x2xf32 {sdy.sharding>@mesh, \[{"x", "y", "z"}, {}\]<
%1 = sdy.all_gather> \[{&quo<t;y">;, "z"}, {}\] %arg0 out_sharding=@mesh, \[{"x"}, {}\] : tensor16x2xf32

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

বিকল্প

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

-sdy-resolve-permutation-factors

kPermutation ফ্যাক্টরে ম্যাপ করা ডাইমেনশনে শার্ডিং সমাধান করে।

kPermutation ফ্যাক্টর সহ শার্ডিং ডাইমেনশনের জন্য ক্রস-ডিভাইস যোগাযোগের (যেমন, উইন্ডোজের জন্য হ্যালো এক্সচেঞ্জ বা রিভার্সের জন্য কালেক্টিভ পারমিউট) প্রয়োজন হতে পারে।

enableHaloExchange সত্য হলে, পাসটি পারমুটেশন ফ্যাক্টরগুলি সমাধান করার জন্য একটি উপলভ্য অপ্টিমাইজড কমিউনিকেশন লজিক ব্যবহার করবে। অন্যথায়, পাস সেইসব ডাইমেনশন রেপ্লিকেট করার জন্য sdy.reshard ops যোগ করবে। enableHaloExchange-এর ডিফল্ট মান হল true.

বিকল্প

-enable-halo-exchange     : Implement halo exchange logic for windowed operations.
-replica-count            : Number of replicas (data parallelism).
-partition-count          : Number of partitions (model parallelism).
-rng-bit-generator-unsafe : Whether to allow unsafe partitioning of stablehlo.rng_bit_generator.

-sdy-resolve-single-device-sharding

টার্গেট ডিভাইস আইডি দ্বারা সুরক্ষিত থাকলে, stablehlo.if-এ সিঙ্গেল-ডিভাইস অপারেশন কম করে।

বিকল্প

-replica-count   : Number of replicas per partition.
-partition-count : Number of partitions per replica.

-sdy-sharding-constraint-to-reshard

ShardingConstraintOp-কে ReshardOp-এ কনভার্ট করে।

-sdy-sink-data-flow-edges

সব DataFlowEdgeOp তাদের ইনপুটে সিঙ্ক করে।

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

বিকল্প

-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-sink-func-data-flow-edges

সব FuncDataFlowEdgeOp তাদের ইনপুটে সিঙ্ক করে।

প্রতিটি FuncDataFlowEdgeOp-এর শার্ডিংকে এর ইনপুটে সরায় এবং ইনপুট দিয়ে op-কে প্রতিস্থাপন করে।

-sdy-unflatten-call-graph

কল গ্রাফ আনফ্ল্যাটেন করে।

গ্রাফ আনফ্ল্যাটেন করে। এটি একই ইনপুট/আউটপুট শার্ডিং এবং ফাংশনের সাথে অ্যাটাচ করা 'original_func_name' অ্যাট্রিবিউট দ্বারা বর্ণিত একই অরিজিন সহ ফাংশন ডিডুপ্লিকেট করে।

বিকল্প

-dedup-functions-fully : If true, regardless of the input and output shardings of functions, it keeps one callee function for each caller function. The default is false, meaning it will deduplicate only if the input and output shardings are the same.

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

FuncOp ইনপুট/আউটপুট সমানভাবে শার্ড করে, যার ফলে বিভাজ্য নয় এমন শার্ডিংয়ের জন্য প্যাডিংয়ের প্রয়োজন হয় না।

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

-sdy-verify-unreduced-axes

অক্ষ ব্যবহারের ক্ষেত্রে কোনও হ্রাস না করে ধারাবাহিকতা যাচাই করে।

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