我們不斷為我們的工作訓練語言模型。我們的團隊使用數十種不同的顯示卡來執行不同的任務:在某個地方我們需要強大的 DGX 站,而在某個地方像 RTX 2080Ti 這樣的舊遊戲卡就足夠了。選擇模型訓練的最佳 GPU 可以顯著影響流程的速度和成本效益。
有趣的是,網路上有不少文章對機器學習進行GPU比較,但很少關注語言模型訓練的速度。大多數情況下只找到推理測驗。當新的H100晶片發佈時,NVidia的報告稱,它在訓練中比A100快了九倍,但對於我們的任務,新卡只比舊卡快了90%。 相比之下,我們的雲端供應商在這些 GPU 之間有 2x 的價格差異,因此切換到新的 H100 來省錢是沒有意義的。
除此之外,我們還測試了一個DGX站,它由8張A100 80GB顯示卡組成,每月費用為1萬美元。經過測試,很明顯這個電台的性價比根本不適合我們,花這筆錢,我們可以拿66 x RTX 3090,總共會更有用。
我們的翻譯語言模型有多達 5 億個參數(平均 1 億到 3 億)。如果我們大幅增加參數數量,DGX的性價比可能會更好。目前,我們不訓練可以同時在所有變體的所有語言之間進行翻譯的大型語言模型,而是為每個語言對使用單獨的語言模型,例如。英語-德語。每個此類型號的容量為 120 至 300 Mb。
值得注意的是,不同語言在網路上的資料量不同,同時。例如,對於西班牙語,您可以找到 5 億個帶有翻譯的句子,但在訓練藏語等稀有語言的模型時,您需要根據可用數據選擇特定的 GPU 來執行機器學習任務。要建立從英語到西班牙語的翻譯模型,我們使用具有 4 x RTX 4500 和 256GB RAM 的伺服器。同時,藏語可以在具有16GB RAM的RTX 2080 Ti上進行訓練,因為增加神經網路的複雜性是沒有意義的,因此,使用具有少量資料的更強大的伺服器是沒有意義的。

選擇圖形處理器和理論圖形
語言模型培訓使用 OpenNMT-tf 框架在我們的內部 Data Studio 平台上進行。此階段包括資料準備、模型訓練以及參考翻譯的模型比較。在訓練期間使用 FP16 而不是 FP32 使我們能夠顯著減少語言模型的訓練時間,而不會降低翻譯質量,但並非所有 GPU 都支援這一點。
選擇圖形處理器時,標準考慮處理能力(TFLOPS)、視訊記憶體(VRAM)、GPU 基準測試結果、庫和框架支援、預算和其他因素(圖形卡尺寸和外形尺寸、功率需求)等指標、冷卻以及與系統的兼容性)。在訓練文字產生模型時,您還應該記住,不同的語言會消耗不同數量的資源。例如,拉丁語言使用 1 個位元組編碼 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 |
筆記
1。當CUDA大於7。0時,使用FP16將提高訓練速度,這取決於CUDA版本和顯示卡本身的特性。
2。如果顯示卡的規格顯示FP16與FP32的性能比大於1比1,則保證使用混合精度將訓練速度提高規格中規定的量。例如,對於 Quadro RTX 6000,FP16 TFLOPS 值 32。62 (2:1) 將使鍛鍊速度至少加快兩倍(實踐中為 2。4 倍)
表 2 - 目前使用的 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
- 數字 = 768
- 層 = 6
- 頭 = 16
- 內部尺寸 = 4 096
首先,讓我們根據表 1 來表徵屬於第一組的 GPU。以1000步左右的速度和10萬單位的批量倍數訓練模型所花費的時間(以分鐘和秒為單位)將作為比較指標的基礎。
我們強調,對於第一組,速度測量是使用 對齊 機制且僅使用 FP32。如果不使用這種機制,某些伺服器上的學習速度可能會更快。
對齊機制允許匹配基礎文字和翻譯文字中的子字串。當句子中的子字串可能以不同字體突出顯示並且應使用突出顯示進行翻譯時,需要翻譯格式化的文本,例如網頁。
考慮到神經網路的上述參數,第一個表中的最佳時間由 GPU Nvidia H100 顯示,學習時間為 22 分鐘 中間時間由同品牌geforce RTX 4060 Ti的GPU顯示,學習時間為72分鐘,最後一名由GPU Tesla V100-SXM 2顯示,學習時間為140分鐘。
GPU測試中還有8張學習曲線為20分28秒的Nvidia A10卡、兩張時間為56分鐘的Nvidia A40卡和兩張時長為86分鐘的Tesla V100-SXM卡。同時應用同一系列GPU的多個卡可以加快模型的訓練過程,並且幾乎與具有更高容量的GPU同時顯示,但這種技術在財務和程序上可能不夠合理。學習速度測量的結果可以在表 3 中觀察到。
表 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 |
接下來,我們對目前使用的圖形油門踏板進行比較分析(表2)。對於這組圖形處理器,使用 進行速度測量 對齊 機制,以及使用FP16和FP32。包括此機制和混合精度的速度測量結果將分別列於下表 4 和表 5。
所以,從這個表測量了GPU的速度,我們可以說第一名是RTX A4500系列GPU,訓練時間為31分鐘,但應該強調的是,這樣的訓練模型速度是透過將用過的GPU 單位數量增加到4 個。不考慮這一事實,上述GPU的訓練速度將會高得多,這將使其在決賽桌中排名倒數第二。
學習時間為47分鐘的Quadro RTX 6000系列GPU位居第二。應該注意的是,這樣的訓練速度與所使用的處理器的單元數成反比,該單元數等於四個。僅使用一台這樣的 GPU 會導致速度損失約 3。2 倍,因此大約需要 153 分鐘,並將其排在最後。
第三行是TITAN RTX系列GPU,用時75分85秒。這種學習速度分數是由於使用了 2 個處理器,從而減少了模型的訓練時間。
就單機訓練速度而言,毫無疑問的領先者肯定是GeForce RTX 3090系列GPU,時間為78分26秒。增加該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 領先 96 秒。最終數字如表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 |