हामी हाम्रो कामको लागि भाषा मोडेलहरू निरन्तर प्रशिक्षण दिइरहेका छौं। हाम्रो टोलीले विभिन्न कार्यहरूका लागि छनौट गरिएका दर्जनौं विभिन्न भिडियो कार्डहरू प्रयोग गर्दछ: कतै हामीलाई शक्तिशाली DGX स्टेशन चाहिन्छ, र कतै RTX 2080Ti जस्ता पुरानो गेमिङ कार्ड पर्याप्त छ। मोडेल प्रशिक्षणको लागि इष्टतम GPU छनोटले प्रक्रियाको गति र लागत-प्रभावकारिता दुवैलाई महत्त्वपूर्ण रूपमा असर गर्न सक्छ।
चाखलाग्दो कुरा के छ भने मेसिन लर्निङको लागि GPU तुलनाको साथ इन्टरनेटमा धेरै लेखहरू छन्, तर भाषा मोडेल प्रशिक्षणको लागि गतिमा धेरै कम फोकसहरू छन्। प्रायः केवल अनुमान परीक्षणहरू पाइन्छ। जब नयाँ H100 चिप जारी गरिएको थियो, NVidia को रिपोर्टले भन्यो कि यो प्रशिक्षणमा A100 भन्दा नौ गुणा छिटो थियो, तर हाम्रो कार्यहरूको लागि, नयाँ कार्ड पुरानो भन्दा 90% मात्र छिटो थियो। तुलनात्मक रूपमा, हाम्रा क्लाउड प्रदायकहरूसँग यी GPU हरू बीच 2x मूल्य भिन्नता थियो, त्यसैले पैसा बचत गर्न नयाँ H100 मा स्विच गर्नुको कुनै अर्थ थिएन।
यसका अतिरिक्त, हामीले परीक्षणको लागि DGX स्टेशन लियौं, जसमा 8 A100 80GB ग्राफिक्स कार्डहरू छन् र प्रति महिना 10 हजार डलर खर्च हुन्छ। परीक्षण पछि, यो स्पष्ट भयो कि यस स्टेशनको मूल्य/कार्यसम्पादन अनुपात हामीलाई बिल्कुल उपयुक्त छैन र यो पैसाको लागि, हामी 66 x RTX 3090 लिन सक्छौं, जुन कुलमा धेरै उपयोगी हुनेछ।
हाम्रो अनुवाद भाषा मोडेलहरूमा 500 मिलियन प्यारामिटरहरू छन् (औसतमा 100 मिलियन देखि 300 मिलियन)। यो सम्भव छ कि यदि हामीले प्यारामिटरहरूको संख्या उल्लेखनीय रूपमा बढायौं भने, DGX को मूल्य/कार्यसम्पादन अनुपात राम्रो हुनेछ। हाल, हामी ठूला भाषा मोडेलहरूलाई तालिम दिँदैनौं जसले सबै भाषाहरू बीच सबै भिन्नताहरूमा एकैचोटि अनुवाद गर्न सक्छ, तर प्रत्येक भाषा जोडीको लागि छुट्टै भाषा मोडेलहरू प्रयोग गर्दछ, जस्तै। अंग्रेजी-जर्मन। त्यस्ता प्रत्येक मोडेलले 120 देखि 300 Mb सम्म लिन्छ।
यो ध्यान दिन लायक छ कि विभिन्न भाषाहरूमा इन्टरनेटमा विभिन्न मात्रामा डाटा हुन्छ, र जबकि। उदाहरण को लागी, स्पेनिश को लागी, तपाईले अनुवाद संग 500 मिलियन वाक्यहरु पाउन सक्नुहुन्छ, तर जब तिब्बती जस्तै दुर्लभ भाषाहरु को लागी प्रशिक्षण मोडेल, तपाईले उपलब्ध डाटा को आधार मा मेशिन लर्निंग कार्यहरु को लागी एक विशिष्ट GPU छनोट गर्न आवश्यक छ। अंग्रेजीबाट स्पेनिशमा अनुवाद मोडेल सिर्जना गर्न, हामी 4 x RTX 4500 र 256GB RAM भएको सर्भर प्रयोग गर्छौं। एकै समयमा, तिब्बती भाषालाई RTX 2080 Ti मा 16GB RAM को साथ तालिम दिन सकिन्छ, किनकि यसले न्यूरल नेटवर्कको जटिलता बढाउन र परिणाम स्वरूप, थोरै मात्रामा डाटाको साथ अझ शक्तिशाली सर्भर लिनको लागि कुनै अर्थ राख्दैन।।
ग्राफिक्स प्रोसेसर र सैद्धान्तिक आंकडा चयन गर्दै
OpenNMT-tf फ्रेमवर्क प्रयोग गरेर हाम्रो आन्तरिक डाटा स्टुडियो प्लेटफर्ममा भाषा मोडेल प्रशिक्षण भयो। यस चरणमा डेटा तयारी, मोडेल प्रशिक्षण, र सन्दर्भ अनुवादको साथ मोडेल तुलना समावेश थियो। प्रशिक्षणको क्रममा FP32 को सट्टा FP16 को प्रयोगले हामीलाई अनुवादको गुणस्तर घटाउन बिना भाषा मोडेलहरूको प्रशिक्षण समयलाई उल्लेखनीय रूपमा घटाउन अनुमति दियो, तर हाम्रा सबै GPU हरूले यसलाई समर्थन गरेनन्।
ग्राफिक्स प्रोसेसर छनोट गर्दा, प्रोसेसिङ पावर (TFLOPS), भिडियो मेमोरी (VRAM), GPU बेन्चमार्क नतिजा, पुस्तकालय र फ्रेमवर्क समर्थन, बजेट, र अन्य कारकहरू (ग्राफिक्स कार्ड साइज र फारम कारक, पावर आवश्यकताहरू) जस्ता मेट्रिक्सहरू विचार गर्न मानक छ।, शीतलन, र तपाइँको प्रणाली संग अनुकूलता)। पाठ उत्पादन मोडेलहरू प्रशिक्षण गर्दा, तपाईंले यो पनि ध्यानमा राख्नु पर्छ कि विभिन्न भाषाहरूले विभिन्न मात्रामा स्रोतहरू खपत गर्नेछन्। उदाहरणका लागि, 1 बाइट ल्याटिन भाषाहरूको लागि एउटा क्यारेक्टर, सिरिलिक भाषाहरूको लागि 2 बाइटहरू, र हाइरोग्लिफहरू भएका भाषाहरूको लागि 3 बाइटहरू इन्कोड गर्न प्रयोग गरिन्छ। तपाइँको ग्राफिक्स कार्डले कुन विशेषताहरू हुनेछ भनेर बुझ्दा सिक्ने प्रक्रियाको गतिमा महत्त्वपूर्ण प्रभाव पार्छ।
प्रयोग गरिएका GPU हरूको सन्दर्भमा मोडेलहरूलाई प्रशिक्षण दिंदा, भिडियो कार्डहरूलाई प्रयोगको अवधि अनुसार दुई समूहमा विभाजन गरिएको थियो: प्रारम्भिक भिडियो कार्डहरू, जुन सिक्ने गतिको पहिलो मापन गर्न प्रयोग गरिएको थियो, र हाल प्रयोगमा रहेका कार्डहरू। यी ग्राफिक्स कार्डहरूको मुख्य विशेषताहरू क्रमशः तालिका 1 र तालिका 2 मा फेला पार्न सकिन्छ।
तालिका 1 - पहिले प्रयोग गरिएको ग्राफिक्स प्रोसेसर र तिनीहरूको प्राविधिक प्यारामिटरहरू
Number of GPUs | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Tesla V100-SXM2 | HBM2, 16 | 7.0 | 31.33 | 16.31 |
2 | Tesla V100-SXM2 | HBM2, 32 | 7.0 | 31.33 | 15.67 |
1 | RTX 4060 Ti | GDDR6, 8 | 8.9 | 22.06 | 22.06 |
1 | Nvidia A40 | GDDR6, 48 | 8.6 | 37.42 | 37.42 |
2 | Nvidia A40 | GDDR6, 96 | 8.6 | 37.42 | 37.42 |
1 | Nvidia A100 | HBM2, 40 | 8.0 | 77.97 | 19.49 |
1 | Nvidia A100 | HBM2, 80 | 8.0 | 77.97 | 19.49 |
1 | Nvidia RTX A6000 | GDDR6, 48 | 8.6 | 38.71 | 38.71 |
1 | Nvidia A10 | GDDR6, 24 | 8.6 | 31.24 | 31.24 |
8 | Nvidia A10 | GDDR6, 192 | 8.6 | 31.24 | 31.24 |
1 | Nvidia H100 | HBM3, 80 | 9.0 | 204.9 | 51.22 |
नोट
१। CUDA 7.0 भन्दा माथिको साथ, FP16 को प्रयोगले CUDA संस्करण र ग्राफिक्स कार्डको विशेषताहरूमा निर्भर गर्दै, प्रशिक्षण गतिमा बढावा दिनेछ।
२। यदि ग्राफिक्स कार्डको स्पेसिफिकेशनले FP16 देखि FP32 कार्यसम्पादन अनुपात 1 देखि 1 भन्दा बढी छ भनी संकेत गर्छ भने, मिश्रित परिशुद्धता प्रयोग गर्दा स्पेसिफिकेशनमा तोकिएको रकमले प्रशिक्षण गति बढाउने ग्यारेन्टी गरिनेछ। उदाहरणका लागि, Quadro RTX 6000 को लागि 32.62 (2:1) को FP16 TFLOPS मानले कसरतलाई कम्तिमा दुई गुणा (अभ्यासमा 2.4 गुणा) गति दिनेछ
तालिका २ - हाल प्रयोग गरिएका GPU मोडेलहरू र तिनीहरूका मुख्य विशेषताहरू
Number of GPUs in use | GPU | VRAM, G | CUDA | FP16, TFLOPS | FP32, TFLOPS |
---|---|---|---|---|---|
1 | Quadro RTX 6000 | GDDR6, 24 | 7.5 | 32.62 | 16.31 |
2 | Quadro RTX 6000 | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Quadro RTX 6000 | GDDR6, 96 | 7.5 | 32.62 | 16.31 |
2 | Nvidia TITAN RTX | GDDR6, 48 | 7.5 | 32.62 | 16.31 |
4 | Nvidia RTX A4500 | GDDR6, 96 | 8.6 | 23.65 | 23.65 |
1 | Nvidia GeForce RTX 3090 | GDDR6X, 24 | 8.6 | 35.58 | 35.58 |
1 | Nvidia GeForce RTX 3070 | GDDR6, 8 | 8.6 | 20.31 | 20.31 |
* - FP16,TFLOPS र FP32,TFLOPS को लागि मानहरू प्रति GPU निर्दिष्टीकरणहरूबाट लिइन्छ
GPU प्रशिक्षण र परीक्षण प्रक्रिया
मोडेलहरू 18 GPU को सेट प्रयोग गरेर प्रशिक्षित गरिएको थियो। न्यूरल नेटवर्क प्रशिक्षणको प्रक्रियामा, हामीले धेरै भाषा जोडीहरू (सय भन्दा बढी भाषाहरू) प्रयोग गर्यौं। GPU परीक्षणहरूले कुन हार्डवेयरले विशिष्ट कार्यहरूको लागि उत्तम प्रदर्शन गर्छ भनेर पहिचान गर्न मद्दत गरेको छ। हाम्रो भाषा जोडीहरूको प्रशिक्षणको क्रममा, निम्न न्यूरल नेटवर्क प्यारामिटरहरूलाई आधारको रूपमा लिइयो:
- भोकाब साइज = 30 000
- numunits = 768
- तहहरू = 6
- हेड्स = 16
- भित्री आयाम = 4 096
सर्वप्रथम, तालिका १ मा आधारित पहिलो समूहसँग सम्बन्धित GPU हरू चित्रण गरौं। 1,000 पाइलाको अनुमानित गति र 100,000 इकाइहरूको ब्याच साइज गुणनमा मोडेललाई तालिम दिन बिताएको मिनेट र सेकेन्डमा समयलाई सूचकहरूको तुलनाको आधारको रूपमा लिइनेछ।
हामी जोड दिन्छौं कि पहिलो समूहको लागि, गति मापन को प्रयोग संग प्रदर्शन गरिएको थियो पङ्क्तिबद्ध संयन्त्र र मात्र प्रयोग FP32 यो संयन्त्र प्रयोग नगरी केही सर्भरहरूमा सिक्ने गति धेरै छिटो हुन सक्छ।
पङ्क्तिबद्ध संयन्त्रले आधार र अनुवादित पाठमा मिल्दो सबस्ट्रिङहरूलाई अनुमति दिन्छ। यो ढाँचा गरिएको पाठ अनुवाद गर्न आवश्यक छ, जस्तै वेब पृष्ठहरू, जब वाक्यमा सबस्ट्रिङ फरक फन्टमा हाइलाइट गर्न सकिन्छ र हाइलाइटिङको साथ अनुवाद गरिनु पर्छ।
न्यूरल नेटवर्कको माथि उल्लिखित प्यारामिटरहरूलाई ध्यानमा राख्दै, पहिलो तालिकाबाट सबैभन्दा राम्रो समय GPU Nvidia H100 द्वारा 22 मिनेटको सिकाइ समयको साथ देखाइएको थियो र मध्यवर्ती समय एउटै ब्रान्ड GeForce RTX 4060 Ti को GPU द्वारा 72 मिनेटको सिकाइ समयको साथ देखाइएको थियो र अन्तिम स्थान GPU Tesla V100-SXM 2 द्वारा 140 मिनेटको सिकाइ समयको साथ लिइएको थियो।
GPU परीक्षणमा 20 मिनेट र 28 सेकेन्डको लर्निङ कर्भसहित आठ Nvidia A10 कार्डहरू, 56 मिनेटको समयका दुई Nvidia A40 कार्डहरू र 86 मिनेटमा दुईवटा Tesla V100-SXM कार्डहरू पनि थिए। GPU को एउटै शृङ्खलाका धेरै कार्डहरूको एकै साथ प्रयोगले मोडेलहरूको प्रशिक्षण प्रक्रियालाई गति दिन सक्छ र उच्च क्षमता भएका GPU हरूसँग लगभग एकै समयमा देखाउन सक्छ, तर यस्तो प्रविधि आर्थिक र प्रक्रियागत रूपमा पर्याप्त तर्कसंगत नहुन सक्छ। सिक्ने गति मापनको नतिजा तालिका नम्बर 3 मा अवलोकन गर्न सकिन्छ।
तालिका ३ - पहिले प्रयोग गरिएको ग्राफिकल नक्सामा प्रशिक्षण समय मापन
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
8 | Nvidia A10 | 20,28 | 6 250 |
1 | Nvidia H100 | 22 | 25 000 |
1 | A100 (80 Gb) | 40 | 25 000 |
1 | A100 (40 Gb) | 56 | 15 000 |
2 | Nvidia A40 | 56 | 12 500 |
1 | RTX A6000 | 68,25 | 12 500 |
1 | GeForce RTX 4060 Ti | 72 | 4 167 |
1 | Nvidia A40 | 82,08 | 12 500 |
2 | Tesla V100-SXM | 86 | 4 167 |
1 | Nvidia A10 | 104,50 | 5 000 |
1 | Tesla V100-SXM2 | 140 | 4 167 |
अर्को, हाल प्रयोगमा रहेका ग्राफिक्स ग्यास पेडलहरूको तुलनात्मक विश्लेषण गरौं (तालिका २)। ग्राफिक्स प्रोसेसरहरूको यस समूहको लागि, गति मापन प्रयोग गरी प्रदर्शन गरिएको थियो पङ्क्तिबद्ध संयन्त्र, साथै FP16 र FP32 प्रयोग गर्दै। यस संयन्त्र र मिश्रित परिशुद्धता सहित गति मापन क्रमशः तालिका 4 र 5 मा तल प्रस्तुत गरिनेछ।
त्यसोभए, यस तालिकाबाट GPU को गति मापन गरेपछि, हामी भन्न सक्छौं कि पहिलो स्थान RTX A4500 श्रृंखला GPU द्वारा 31 मिनेटको प्रशिक्षण समयको साथ लिइएको थियो, तर यो जोड दिनु पर्छ कि प्रशिक्षण मोडेलहरूको यस्तो गति द्वारा प्राप्त गरिएको थियो। प्रयोग गरिएको GPU को एकाइहरूको संख्या 4 सम्म बढाउँदै। यस तथ्यलाई बेवास्ता गर्दै, माथि उल्लिखित GPU को प्रशिक्षण गति धेरै उच्च हुनेछ, जसले यसलाई अन्तिम तालिकाको अन्तिम स्थानमा राख्नेछ।
Quadro RTX 6000 श्रृंखला GPU 47 मिनेटको सिक्ने समयको साथ दोस्रो स्थानमा छ। यो ध्यान दिनुपर्छ कि यस्तो प्रशिक्षण गति प्रयोग गरिएको प्रोसेसरको एकाइहरूको संख्या द्वारा उल्टो सर्त गरिएको छ, जुन चार बराबर छ। एउटा मात्र यस्तो GPU प्रयोग गर्दा लगभग 3.2 पटकको गति हानि हुनेछ र फलस्वरूप लगभग 153 मिनेट हुनेछ र यसलाई अन्तिम स्थानमा राख्नेछ।
तेस्रो लाइन TITAN RTX श्रृंखला GPU द्वारा 75 मिनेट र 85 सेकेन्डको समय संग लिइएको थियो। यो सिक्ने गति स्कोर 2 प्रोसेसर को प्रयोग को कारण हो, जसले मोडेल को प्रशिक्षण समय कम गर्यो।
एक इकाईको संख्यामा प्रशिक्षण गतिको सन्दर्भमा निर्विवाद नेता निश्चित रूपमा 78 मिनेट र 26 सेकेन्डको समयको साथ GeForce RTX 3090 श्रृंखला GPU हुनेछ। यस GPU को एकाइहरूको संख्या बढाउँदा मोडेल प्रशिक्षण गतिलाई गति दिनेछ, जसले माथि उल्लिखित सबै GPU मोडेलहरूलाई स्पष्ट रूपमा ओभरटेक गर्नेछ। मोडेल प्रशिक्षण समय मापन मा डाटा तालिका 4 मा देख्न सकिन्छ।
तालिका 4 - पहिले प्रयोग गरिएका GPU हरूमा भाषा मोडेल प्रशिक्षण गतिको तुलनात्मक विश्लेषण
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 32 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 31 | 5 000 |
4 | Quadro RTX 6000 | 47 | 6 250 |
2 | Nvidia TITAN RTX | 75,85 | 6 250 |
1 | GeForce RTX 3090 | 78,26 | 6 250 |
2 | Quadro RTX 6000 | 88 | 6 250 |
1 | GeForce RTX 3070 | 104,17 | 2 000 |
1 | Quadro RTX 6000 | 153 | 6 250 |
निम्न प्रशिक्षण गति मापन FP16 प्रयोग गरी प्रदर्शन गरिएको थियो। FP32 को तुलनामा, आधा-परिशुद्धताले मोडेल प्रशिक्षणको क्रममा खपत हुने मेमोरीको मात्रा घटाउन र GPU मा गणनालाई गति दिन अनुमति दिन्छ। प्रतिनिधित्वको शुद्धता FP32 को प्रयोगको तुलनामा कम हुनेछ।
अघिल्लो तालिकाबाट FP32 प्रयोग गरेर मोडेलहरूको प्रशिक्षण समय मापन गर्दै, हामी भन्न सक्छौं कि न्यूरल नेटवर्कको प्रशिक्षण समय लगभग दुई गुणाले घटेको थियो। कार्यसम्पादन मापन परिणामहरूको आधारमा, हामी तालिका 4 मा मेसिन लर्निङ GPU बेन्चमार्कहरूबाट अवलोकन गर्न सक्छौं कि GPU को स्थिति धेरै हदसम्म अपरिवर्तित रह्यो। Quadro RTX 6000 शृङ्खलाको कार्ड GeForce RTX 3090 GPU लाई ९६ सेकेन्डले हराउँदै पाँचौं स्थानबाट छैटौं स्थानमा उक्लियो। अन्तिम संख्याहरू तालिका 5 मा देखाइएको छ।
तालिका 5 - पहिले प्रयोग गरिएका GPU हरूमा भाषा मोडेल प्रशिक्षण गतिको तुलनात्मक विश्लेषण
Using the alignment mechanism | |||
---|---|---|---|
Effective batch size = 100 000 | |||
FP 16 | |||
Number of GPUs in use | GPU | Approximate speed (min. sec), 1,000 steps | Batch size in use |
4 | Nvidia RTX A4500 | 15,81 | 10 000 |
4 | Quadro RTX 6000 | 20,34 | 12 500 |
2 | Nvidia TITAN RTX | 32,68 | 6 250 |
2 | Quadro RTX 6000 | 37,93 | 10 000 |
1 | GeForce RTX 3090 | 38,89 | 10 000 |
1 | GeForce RTX 3070 | 48,51 | 2 500 |
1 | Quadro RTX 6000 | 52,56 | 10 000 |