يقدّم هذا الدليل مجموعة منتقاة من أهم علامات 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 مع السمة نفسها أو بغض النظر عن سماتها. |