इस गाइड में, 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(इंटरचिप-इंटरकनेक्ट) के सभी-इकट्ठा करने वाले ऑपरेशन की सामूहिक पाइपलाइनिंग चालू की जा सके. इससे ओवरलैप होने वाले एक्सीक्यूशन के ज़्यादा अवसर मिलते हैं. | 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 |
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 |
v5e पर असाइनिटिव ऑल-रिड्यूस ऑपरेशन चालू करने के लिए, इन दोनों फ़्लैग का इस्तेमाल एक साथ किया जाना चाहिए. | 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 |
यह फ़्लैग, लैटेंसी-बाउंड (यानी छोटे साइज़ वाले) सभी-इकट्ठा करने वाले ऑपरेशन के लिए है. इसे चालू करने से, खास ऑप्टिमाइज़ेशन ट्रिगर होते हैं. इनसे, लैटेंसी से जुड़े सभी-इकट्ठा करने के लिए, प्रोसेस करने में लगने वाला समय कम हो सकता है. आम तौर पर, इसका इस्तेमाल अनुमान लगाने वाले वर्कलोड में किया जाता है. | 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 |
यह फ़्लैग, लैटेंसी-बाउंड (यानी छोटे साइज़ वाले) सभी-इकट्ठा करने वाले ऑपरेशन के लिए है. इसे चालू करने से, खास ऑप्टिमाइज़ेशन ट्रिगर होते हैं. इनसे, इंतज़ार के समय से जुड़ी सभी 'कम करें' कार्रवाइयों को लागू करने में लगने वाला समय कम हो सकता है. आम तौर पर, इसका इस्तेमाल अनुमान लगाने वाले वर्कलोड में किया जाता है. | 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 |
यह फ़्लैग, लैटेंसी-बाउंड (यानी छोटे साइज़ वाले) सभी-इकट्ठा करने वाले ऑपरेशन के लिए है. इसे चालू करने से, खास ऑप्टिमाइज़ेशन ट्रिगर होते हैं. इनसे, इंतज़ार के समय से जुड़े कलेक्शन-परम्यूट के लिए, लागू होने में लगने वाला समय कम हो सकता है. आम तौर पर, इसका इस्तेमाल अनुमान लगाने वाले वर्कलोड में किया जाता है. | 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 |
यह फ़्लैग, लैटेंसी-बाउंड (यानी छोटे साइज़ वाले) सभी-इकट्ठा करने वाले ऑपरेशन के लिए है. इसे चालू करने से, खास ऑप्टिमाइज़ेशन ट्रिगर होते हैं. इनसे, 'सभी से सभी' टाइप के लेन-देन में लगने वाले समय को कम किया जा सकता है. आम तौर पर, इसका इस्तेमाल अनुमान लगाने वाले वर्कलोड में किया जाता है. | 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 |
सभी कलेक्शन-परम्यूट ऑपरेशन को उनके असाइनोक्रोनस वैरिएंट में फिर से लिखता है. auto पर सेट होने पर, XLA अन्य कॉन्फ़िगरेशन या शर्तों के आधार पर, अपने-आप असाइन किए गए कलेक्शन को चालू कर सकता है. |
xla_enable_async_collective_permute=kAuto |
xla_enable_async_collective_permute=kAuto |
xla_enable_async_collective_permute=kAuto/kEnabled/kDisabled |
मेमोरी फ़्लैग
यहां दिए गए फ़्लैग, एचबीएम से जुड़ी समस्याओं को हल करने के लिए दिए गए हैं. इनमें बदलाव सिर्फ़ तब किया जाना चाहिए, जब मॉडल को कॉम्पाइल करने के दौरान, एचबीएम "मेमोरी खत्म हो गई" वाली गड़बड़ियां आएं. अन्य सभी मामलों में, डिफ़ॉल्ट वैल्यू का सुझाव दिया जाता है, क्योंकि उनमें बदलाव करने से परफ़ॉर्मेंस पर बुरा असर पड़ सकता है.
झंडा | ब्यौरा | डिफ़ॉल्ट वैल्यू | सुझाई गई वैल्यू | उम्मीदवार की वैल्यू |
---|---|---|---|---|
शेड्यूलर 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 |
यह फ़्लैग, कम डेटा वाले और ब्रॉडकास्ट टाइप के फ़्यूज़न की सुविधा चालू करता है. साथ ही, इससे मेमोरी के इस्तेमाल में कमी आ सकती है. | 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 टूल देखें). |
TPU XLA फ़्लैग
झंडा | टाइप | नोट |
---|---|---|
xla_tpu_enable_data_parallel_all_reduce_opt |
बूलियन (सही/गलत) | डेटा पैरलल शर्डिंग के लिए इस्तेमाल किए जाने वाले डीसीएन (डेटा सेंटर नेटवर्किंग) ऑल-रिड्यूस के ओवरलैप के अवसरों को बढ़ाने के लिए ऑप्टिमाइज़ेशन. |
xla_tpu_data_parallel_opt_different_sized_ops |
बूलियन (सही/गलत) | एक से ज़्यादा बार दोहराए जाने वाले ऑपरेशन के लिए, डेटा पैरलल ऑपरेशन की पाइपलाइनिंग की सुविधा चालू करता है. भले ही, उनके आउटपुट साइज़, स्टैक किए गए वैरिएबल में सेव किए जा सकने वाले साइज़ से मेल न खाते हों. इससे मेमोरी पर दबाव बढ़ सकता है. |
xla_tpu_spmd_rng_bit_generator_unsafe |
बूलियन (सही/गलत) | RngBitGenerator HLO को अलग-अलग हिस्सों में चलाना है या नहीं. अगर कैलकुलेशन के अलग-अलग हिस्सों में अलग-अलग शर्डिंग के साथ, तय नतीजे मिलने की उम्मीद है, तो यह तरीका असुरक्षित है. |
xla_tpu_megacore_fusion_allow_ags |
बूलियन (सही/गलत) | यह फ़ंक्शन, कन्वोल्यूशन/सभी-कम करने वाले फ़ंक्शन के साथ, सभी-इकट्ठा करने वाले फ़ंक्शन को फ़्यूज़ करने की अनुमति देता है. |
xla_tpu_enable_ag_backward_pipelining |
बूलियन (सही/गलत) | स्कैन लूप की मदद से, पाइपलाइन में सभी-इकट्ठा करने की सुविधा (फ़िलहाल, मेगास्केल सभी-इकट्ठा करने की सुविधा) को पीछे की ओर भेजा जाता है. |
GPU XLA फ़्लैग
झंडा | टाइप | नोट |
---|---|---|
xla_gpu_enable_latency_hiding_scheduler |
बूलियन (सही/गलत) | इस फ़्लैग की मदद से, लैटेंसी छिपाने वाले शेड्यूलर, असाइनमेंट के बीच के समय को कैलकुलेशन के साथ बेहतर तरीके से ओवरलैप कर पाते हैं. डिफ़ॉल्ट मान False है. |
xla_gpu_enable_triton_gemm |
बूलियन (सही/गलत) | Triton पर आधारित मैट्रिक्स गुणन का इस्तेमाल करें. |
xla_gpu_graph_level |
फ़्लैग (0-3) | जीपीयू ग्राफ़ लेवल सेट करने के लिए लेगसी फ़्लैग. नए इस्तेमाल के उदाहरणों में xla_gpu_enable_command_buffer का इस्तेमाल करें. 0 = बंद है; 1 = फ़्यूज़न और memcpys कैप्चर करें; 2 = gemms कैप्चर करें; 3 = कन्वोल्यूशन कैप्चर करें. |
xla_gpu_all_reduce_combine_threshold_bytes |
पूर्णांक (बाइट) | ये फ़्लैग, एक से ज़्यादा छोटे AllGather / ReduceScatter / AllReduce को एक बड़े AllGather / ReduceScatter / AllReduce में जोड़ने का समय तय करते हैं. इससे, अलग-अलग डिवाइसों के बीच कम्यूनिकेशन में लगने वाला समय कम हो जाता है. उदाहरण के लिए, ट्रांसफ़ॉर्मर पर आधारित वर्कलोड के लिए, AllGather / ReduceScatter थ्रेशोल्ड को ज़्यादा से ज़्यादा ट्यून करें, ताकि कम से कम ट्रांसफ़ॉर्मर लेयर के वज़न वाले AllGather / ReduceScatter को जोड़ा जा सके. डिफ़ॉल्ट रूप से, 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 |
बूलियन (सही/गलत) | सभी-इकट्ठा करने के निर्देशों की पाइपलाइनिंग की सुविधा चालू करें. |
xla_gpu_enable_pipelined_reduce_scatter |
बूलियन (सही/गलत) | reduce-scatter निर्देशों की पाइपलाइनिंग की सुविधा चालू करें. |
xla_gpu_enable_pipelined_all_reduce |
बूलियन (सही/गलत) | सभी-कम करने के निर्देशों की पाइपलाइनिंग की सुविधा चालू करें. |
xla_gpu_enable_while_loop_double_buffering |
बूलियन (सही/गलत) | while लूप के लिए डबल-बफ़रिंग की सुविधा चालू करें. |
xla_gpu_enable_all_gather_combine_by_dim |
बूलियन (सही/गलत) | सभी-इकट्ठा करने वाले ऑपरेशन को एक ही इकट्ठा करने वाले डाइमेंशन के साथ या उनके डाइमेंशन के बावजूद जोड़ें. |
xla_gpu_enable_reduce_scatter_combine_by_dim |
बूलियन (सही/गलत) | एक ही डाइमेंशन या अलग-अलग डाइमेंशन वाले डेटा के लिए, कम करने वाले स्कैटर ऑपरेशन को जोड़ें. |