إرشادات حول علامات XLA

يقدّم هذا الدليل مجموعة منتقاة من أهم علامات XLA لمساعدة المستخدمين في التنقّل بفعالية والاستفادة من إمكانات XLA. توضّح الأقسام التالية العلامات التي يمكن أن تؤثّر بشكل كبير في أداء وقت التشغيل واستخدام الذاكرة. في حال حدوث أي مشاكل، مثل الأعطال، بعد تفعيل علامة، ننصحك بالرجوع إلى الإعداد التلقائي وإنشاء مشكلة على GitHub.

علامات الأداء

تساعد العلامات التالية في تحسين أداء وقت التشغيل. قد يؤدي تجربة هذه الإعدادات إلى تحسين الأداء بشكل كبير.

علم الوصف القيم التلقائية القيم المقترَحة القيم المقترَحة
تجزئة التعليمات
1. xla_should_allow_loop_variant_parameter_in_chain
2- xla_should_add_loop_invariant_op_in_chain
3. xla_tpu_enable_ici_ag_pipelining
يجب استخدام هذه العلامات الثلاث معًا لتفعيل التجميع الجماعي لعمليات ICI(Interchip-Interconnect) all-gather، ما يتيح المزيد من فرص التنفيذ المتداخل. 1. xla_should_allow_loop_variant_parameter_in_chain=kDisabled
2- xla_should_add_loop_invariant_op_in_chain=kDisabled
3. xla_tpu_enable_ici_ag_pipelining=false
1. xla_should_allow_loop_variant_parameter_in_chain=kEnabled
2- xla_should_add_loop_invariant_op_in_chain=kEnabled
3. xla_tpu_enable_ici_ag_pipelining=true
1. xla_should_allow_loop_variant_parameter_in_chain=kDisabled/kEnabled/kAuto
2- xla_should_add_loop_invariant_op_in_chain=kDisabled/kEnabled/kAuto
3. xla_tpu_enable_ici_ag_pipelining=true/false
v5e/Async
xla_enable_async_all_gather
xla_tpu_enable_async_collective_fusion
xla_tpu_enable_async_collective_fusion_fuse_all_gather
يجب استخدام هذه العلامات الثلاث معًا لتفعيل عمليات all-gather غير المتزامنة على v5e. xla_enable_async_all_gather=kAuto
xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_gather=true
xla_enable_async_all_gather=kAuto
xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_gather=true
xla_enable_async_all_gather=kDisabled/kEnabled/kAuto
xla_tpu_enable_async_collective_fusion=true/false
xla_tpu_enable_async_collective_fusion_fuse_all_gather=true/false
v5e/Async
xla_tpu_enable_async_collective_fusion
xla_tpu_enable_async_collective_fusion_fuse_all_reduce
يجب استخدام هاتين العلامتَين معًا لتفعيل عمليات تقليل الكل غير المتزامنة على الإصدار 5e. xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_reduce=false
xla_tpu_enable_async_collective_fusion=true
xla_tpu_enable_async_collective_fusion_fuse_all_reduce=true
xla_tpu_enable_async_collective_fusion=true/false
xla_tpu_enable_async_collective_fusion_fuse_all_reduce=true/false
Async
xla_tpu_enable_async_all_to_all
يتيح هذا الخيار التواصل غير المتزامن بين جميع الأجهزة. xla_tpu_enable_async_all_to_all=false xla_tpu_enable_async_all_to_all=true xla_tpu_enable_async_all_to_all=true/false
العمليات المرتبطة بوقت الاستجابة
xla_all_gather_latency_bound_threshold_in_bytes
تم تصميم هذا الخيار لعمليات all-gather ذات زمن الاستجابة المحدود (أي الصغيرة الحجم). يؤدي تفعيل هذا الخيار إلى تشغيل تحسينات معيّنة يمكن أن تقلّل من وقت التنفيذ لعمليات جمع البيانات التي تتطلّب سرعة استجابة عالية. ويُستخدم عادةً في مهام الاستدلال. xla_all_gather_latency_bound_threshold_in_bytes=-1
(غير مفعَّل)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
العمليات المرتبطة بوقت الاستجابة
xla_all_reduce_latency_bound_threshold_in_bytes
تم تصميم هذا الخيار لعمليات all-gather ذات زمن الاستجابة المحدود (أي الصغيرة الحجم). يؤدي تفعيل هذا الخيار إلى تشغيل تحسينات معيّنة يمكن أن تقلّل وقت التنفيذ لعمليات all-reduce المرتبطة بوقت الاستجابة. ويُستخدم عادةً في مهام الاستدلال. xla_all_reduce_latency_bound_threshold_in_bytes=-1
(غير مفعَّل)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
العمليات المرتبطة بوقت الاستجابة
xla_collective_permute_latency_bound_threshold_in_bytes
تم تصميم هذا الخيار لعمليات all-gather ذات زمن الاستجابة المحدود (أي الصغيرة الحجم). يؤدي تفعيل هذا الخيار إلى تشغيل تحسينات معيّنة يمكن أن تقلّل وقت التنفيذ لعمليات التبديل الجماعي المحدودة بوقت الاستجابة. ويُستخدم عادةً في مهام الاستدلال. xla_collective_permute_latency_bound_threshold_in_bytes=-1
(غير مفعَّل)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
العمليات المرتبطة بوقت الاستجابة
xla_all_to_all_latency_bound_threshold_in_bytes
تم تصميم هذا الخيار لعمليات all-gather ذات زمن الاستجابة المحدود (أي الصغيرة الحجم). يؤدي تفعيل هذا الخيار إلى تشغيل تحسينات معيّنة يمكن أن تقلّل من وقت التنفيذ لعمليات الربط بين جميع الأجهزة التي تتطلّب زمن استجابة منخفضًا. ويُستخدم عادةً في مهام الاستدلال. xla_all_to_all_latency_bound_threshold_in_bytes=-1
(غير مفعَّل)
4~16Mb(i.e. 4~16 * 1024 * 1024) [0, 9223372036854775807]
xla_enable_async_collective_permute إعادة كتابة جميع عمليات collective-permute إلى صيغها غير المتزامنة عند ضبطها على auto، يمكن أن يفعّل XLA عملية التجميع غير المتزامنة تلقائيًا استنادًا إلى إعدادات أو شروط أخرى. xla_enable_async_collective_permute=kAuto xla_enable_async_collective_permute=kAuto xla_enable_async_collective_permute=kAuto/kEnabled/kDisabled

علامات الذاكرة

يتم توفير العلامات المدرَجة أدناه لمعالجة المشاكل المتعلّقة بعروض الأسعار المستنِدة إلى التوافق. يجب تعديل هذه القيم فقط في حال ظهور أخطاء "نفاد الذاكرة" في HBM أثناء تجميع النموذج. في جميع السيناريوهات الأخرى، يُنصح باستخدام القيم التلقائية، لأنّ تغييرها قد يؤثر سلبًا في الأداء.

علم الوصف القيم التلقائية القيم المقترَحة القيم المقترَحة
المجدوِل
xla_latency_hiding_scheduler_rerun
يعدّل هذا الإعداد سلوك أداة الجدولة التي تخفي وقت الاستجابة. تعمل هذه الميزة من خلال تقليل حد الذاكرة المخصّص للجدولة بشكل تدريجي مع كل عملية "إعادة تشغيل" للعملية. xla_latency_hiding_scheduler_rerun=1 xla_latency_hiding_scheduler_rerun=5 0~10(it doesn’t make much sense beyond 10 reruns)
Fusion
xla_tpu_rwb_fusion
تفعّل هذه العلامة عمليات الدمج من النوع reduce+broadcast، وقد تقلّل من استخدام الذاكرة. xla_tpu_rwb_fusion=true xla_tpu_rwb_fusion=false xla_tpu_rwb_fusion=true/false
المجدوِل
xla_memory_scheduler
تحدّد هذه العلامة الخوارزمية التي سيستخدمها برنامج جدولة الذاكرة لتقليل استهلاك الذاكرة. قد يؤدي استخدام خوارزمية أكثر تقدّمًا إلى الحصول على جدول زمني يستهلك ذاكرة أقل، ولكن على حساب وقت تجميع أطول. xla_memory_scheduler=kDefault xla_memory_scheduler=kBrkga xla_memory_scheduler=kDefault/kList/kDfs/kPostOrder/kBrkga
المجدوِل
xla_tpu_enable_latency_hiding_scheduler
تفعّل هذه العلامة أداة جدولة إخفاء وقت الاستجابة، ما يتيح لنا تنفيذ عمليات جماعية غير متزامنة بدلاً من العمليات المتزامنة. يؤدي إيقافها إلى تقليل استخدام الذاكرة، ولكن سيتم فقدان تحسينات الأداء الناتجة عن هذه العمليات غير المتزامنة. xla_tpu_enable_latency_hiding_scheduler=true xla_tpu_enable_latency_hiding_scheduler=false xla_tpu_enable_latency_hiding_scheduler=true/false
SPMD
xla_jf_spmd_threshold_for_windowed_einsum_mib
تضبط هذه العلامة الحد الأدنى لحجم النقطة لتفعيل عملية ضرب المصفوفات الجماعية. سيؤدي ضبطها على قيمة أعلى إلى توفير الذاكرة على حساب فقدان فرص تنفيذ عملية ضرب المصفوفات المتعددة الجماعية. xla_jf_spmd_threshold_for_windowed_einsum_mib=-1 10Mb~1Gb (i.e. 10*1024*1024 ~ 1024*1024*1024) [0, 9223372036854775807]

علامات أخرى شائعة الاستخدام

علم النوع ملاحظات
xla_dump_to سلسلة (مسار الملف) المجلد الذي سيتم فيه وضع ملفات HLO قبل التحسين والنتائج الأخرى (راجِع أدوات XLA).

علامات XLA لوحدة معالجة الموتّرات

علم النوع ملاحظات
xla_tpu_enable_data_parallel_all_reduce_opt قيمة منطقية (true/false) تحسين فرص التداخل لعمليات تقليل البيانات في شبكات مراكز البيانات (DCN) المستخدمة في تقسيم البيانات المتوازية
xla_tpu_data_parallel_opt_different_sized_ops قيمة منطقية (true/false) تتيح تنفيذ عمليات متوازية للبيانات على مستوى تكرارات متعددة حتى إذا كانت أحجام الإخراج لا تتطابق مع ما يمكن حفظه في المتغيرات المكدّسة. يمكن أن يؤدي إلى زيادة الضغط على الذاكرة.
xla_tpu_spmd_rng_bit_generator_unsafe قيمة منطقية (true/false) تحديد ما إذا كان سيتم تشغيل RngBitGenerator HLO بطريقة مقسّمة، وهو أمر غير آمن إذا كانت النتائج الحتمية متوقّعة مع تقسيمات مختلفة على أجزاء مختلفة من العملية الحسابية
xla_tpu_megacore_fusion_allow_ags قيمة منطقية (true/false) يسمح بدمج عمليات all-gather مع عمليات الالتفاف/all-reduce.
xla_tpu_enable_ag_backward_pipelining قيمة منطقية (true/false) تجمع عمليات نقل البيانات في المسارات (عمليات نقل البيانات في المسارات على نطاق واسع حاليًا) البيانات بشكل عكسي من خلال حلقات الفحص.

علامات XLA لوحدة معالجة الرسومات

علم النوع ملاحظات
xla_gpu_enable_latency_hiding_scheduler قيمة منطقية (true/false) تتيح هذه العلامة للمجدولين إخفاء وقت الاستجابة تداخل الاتصال غير المتزامن مع العمليات الحسابية بكفاءة. القيمة التلقائية هي False.
xla_gpu_enable_triton_gemm قيمة منطقية (true/false) استخدام ضرب المصفوفات المستند إلى Triton
xla_gpu_graph_level العلامة (0-3) العلامة القديمة لضبط مستوى الرسم البياني لوحدة معالجة الرسومات استخدِم xla_gpu_enable_command_buffer في حالات الاستخدام الجديدة. 0 = إيقاف، 1 = تسجيل عمليات الدمج وعمليات النسخ من الذاكرة، 2 = تسجيل عمليات ضرب المصفوفات العامة، 3 = تسجيل عمليات الالتفاف.
xla_gpu_all_reduce_combine_threshold_bytes عدد صحيح (بايت) تضبط هذه العلامات وقت دمج عمليات AllGather / ReduceScatter / AllReduce الصغيرة المتعددة في عملية AllGather / ReduceScatter / AllReduce كبيرة واحدة لتقليل الوقت المستغرَق في التواصل بين الأجهزة. على سبيل المثال، بالنسبة إلى حدود AllGather / ReduceScatter في عبء العمل المستند إلى Transformer، ننصحك بضبطها على قيمة عالية بما يكفي لدمج AllGather / ReduceScatter الخاص بوزن طبقة Transformer على الأقل. يتم ضبط combine_threshold_bytes تلقائيًا على 256.
xla_gpu_all_gather_combine_threshold_bytes عدد صحيح (بايت) راجِع xla_gpu_all_reduce_combine_threshold_bytes أعلاه.
xla_gpu_reduce_scatter_combine_threshold_bytes عدد صحيح (بايت) راجِع xla_gpu_all_reduce_combine_threshold_bytes أعلاه.
xla_gpu_enable_pipelined_all_gather قيمة منطقية (true/false) تفعيل تنفيذ تعليمات all-gather بالتوازي
xla_gpu_enable_pipelined_reduce_scatter قيمة منطقية (true/false) تفعيل عملية تقسيم تعليمات reduce-scatter.
xla_gpu_enable_pipelined_all_reduce قيمة منطقية (true/false) تفعيل تنفيذ تعليمات all-reduce بالتوازي
xla_gpu_enable_while_loop_double_buffering قيمة منطقية (true/false) فعِّل ميزة التخزين المؤقت المزدوج لحلقة while.
xla_gpu_enable_all_gather_combine_by_dim قيمة منطقية (true/false) يمكنك دمج عمليات all-gather مع سمة التجميع نفسها أو بغض النظر عن سماتها.
xla_gpu_enable_reduce_scatter_combine_by_dim قيمة منطقية (true/false) يمكنك دمج عمليات reduce-scatter مع السمة نفسها أو بغض النظر عن سماتها.