Çalışmalarımız için sürekli dil modelleri yetiştiriyoruz. Ekibimiz farklı görevler için seçilen düzinelerce farklı video kartı kullanıyor: bir yerde güçlü bir DGX istasyonuna ihtiyacımız var ve bir yerde RTX 2080Ti gibi eski bir oyun kartı yeterli. Model eğitimi için en uygun GPU'nun seçilmesi, sürecin hem hızını hem de maliyet etkinliğini önemli ölçüde etkileyebilir.
İlginç olan, makine öğrenimi için GPU karşılaştırması ile internette oldukça fazla makale olması, ancak çok azının dil modeli eğitimi için hıza odaklanmasıdır. Çoğunlukla sadece çıkarım testleri bulunur. Yeni H100 çipi piyasaya sürüldüğünde, NVidia'nın raporu, eğitimde A100'den dokuz kata kadar daha hızlı olduğunu belirtti, ancak görevlerimiz için yeni kart eskisinden sadece% 90 daha hızlıydı. Karşılaştırıldığında, bulut sağlayıcılarımızın bu GPU'lar arasında 2 kat fiyat farkı vardı, bu nedenle paradan tasarruf etmek için yeni H100'e geçmenin bir anlamı yoktu.
Buna ek olarak, 8 adet A100 80GB ekran kartından oluşan ve aylık 10 bin dolara mal olan bir DGX istasyonunu teste aldık. Testten sonra bu istasyonun fiyat/performans oranının bize hiç uymadığı ve bu para için toplamda çok daha kullanışlı olacak 66 x RTX 3090 alabileceğimiz anlaşıldı.
Çeviri dili modellerimiz 500 milyona kadar parametreye sahiptir (ortalama 100 milyon ila 300 milyon). Parametre sayısını önemli ölçüde artırırsak DGX'in fiyat/performans oranının daha iyi olması mümkündür. Şu anda, tüm diller arasında aynı anda tüm varyasyonlarda çeviri yapabilen büyük dil modelleri yetiştirmiyoruz, ancak her dil çifti için ayrı dil modelleri kullanıyoruz, örn. İngilizce-Almanca. Bu tür modellerin her biri 120 ila 300 Mb arasında değişir.
Farklı dillerin internette farklı miktarda veriye sahip olduğunu belirtmekte fayda var. Örneğin, İspanyolca için, çevirilerle 500 milyon cümle bulabilirsiniz, ancak Tibetçe gibi daha nadir diller için eğitim modelleri yaparken, mevcut verilere dayanarak makine öğrenimi görevleri için belirli bir GPU seçmeniz gerekir. İngilizce'den İspanyolca'ya çeviri modeli oluşturmak için 4 x RTX 4500 ve 256GB RAM'e sahip bir sunucu kullanıyoruz. Aynı zamanda, Tibet dili 16GB RAM ile RTX 2080 Ti üzerinde eğitilebilir, çünkü sinir ağının karmaşıklığını arttırmak ve sonuç olarak az miktarda veriye sahip daha güçlü bir sunucu almak mantıklı değildir.
Grafik işlemcileri ve teorik şekillerin seçilmesi
Dil modeli eğitimi OpenNMT-tf çerçevesi kullanılarak dahili Data Studio platformumuzda gerçekleştirildi. Bu aşama veri hazırlamayı, model eğitimini ve referans çeviriyle model karşılaştırmasını içeriyordu. Eğitim sırasında FP32 yerine FP16 kullanmak, çeviri kalitesini düşürmeden dil modellerinin eğitim süresini önemli ölçüde azaltmamıza olanak sağladı, ancak GPU'larımızın tümü bunu desteklemedi.
Bir grafik işlemci seçerken, işlem gücü (TFLOPS), video belleği (VRAM), GPU kıyaslama sonuçları, kitaplık ve çerçeve desteği, bütçe ve diğer faktörler (grafik kartı boyutu ve form faktörü, güç gereksinimleri, soğutma ve sisteminizle uyumluluk) gibi ölçümleri dikkate almak standarttır. Metin oluşturma modellerini eğitirken, farklı dillerin farklı miktarlarda kaynak tüketeceğini de aklınızda bulundurmalısınız. Rneğin Latin dilleri için bir karakteri, Kiril dilleri için 2 baytı ve hiyeroglif içeren diller için 3 baytı kodlamak için 1 bayt kullanılır. Grafik kartınızın hangi özelliklere sahip olacağını anlamak, öğrenme sürecinin hızı üzerinde önemli bir etkiye sahiptir.
Modelleri kullanılan GPU'lar açısından eğitirken, video kartları kullanım süresine göre iki gruba ayrıldı: öğrenme hızının ilk ölçümlerini yapmak için kullanılan ilk video kartları ve şu anda kullanımda olan kartlar. Bu grafik kartlarının temel özellikleri sırasıyla Tablo 1 ve Tablo 2'de bulunabilir.
Tablo 1 - Daha önce kullanılan grafik işlemcileri ve teknik parametreleri
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 |
Notlar
1. CUDA'nın 7,0'ın üzerinde olmasıyla FP16'nın kullanılması, CUDA sürümüne ve grafik kartının özelliklerine bağlı olarak eğitim hızında artış sağlayacaktır.
2. Grafik kartının özellikleri FP16'dan FP32'ye performans oranının 1'e 1'den büyük olduğunu gösteriyorsa, karışık hassasiyet kullanmanın eğitim hızını spesifikasyonda belirtilen miktarda artırması garanti edilecektir. Örneğin Quadro RTX 6000 için 32,62 (2:1) FP16 TFLOPS değeri antrenmanı en az iki kat (pratikte 2,4 kat) hızlandıracaktır
Tablo 2 - Şu anda kullanılan GPU modelleri ve temel özellikleri
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 ve FP32, TFLOPS değerleri GPU başına spesifikasyonlardan alınmıştır
GPU eğitimi ve test süreci
Modeller 18 GPU'dan oluşan bir set kullanılarak eğitildi. Sinir ağı eğitimi sürecinde çok sayıda dil çifti (yüzden fazla dil) kullandık. GPU testleri, belirli görevler için hangi donanımın en iyi performansı gösterdiğini belirlemeye yardımcı oldu. Dil çiftlerimizin eğitimleri sırasında aşağıdaki sinir ağı parametreleri esas alınmıştır:
- kelime boyutu = 30 000
- numunits = 768
- katmanlar = 6
- kafalar = 16
- i̇ç boyut = 4 096
Öncelikle ilk gruba ait GPU'ları Tablo 1'e göre karakterize edelim. Göstergelerin karşılaştırılmasında modelin yaklaşık 1.000 adım hızda ve 100.000 birimlik parti boyutunun katlarında eğitilmesi için harcanan dakika ve saniye cinsinden süre esas alınacaktır.
Birinci grup için hız ölçümlerinin kullanılarak yapıldığını vurguluyoruz hizalama mekanizma ve sadece kullanma FP32. Bu mekanizmayı kullanmadan bazı sunuculardaki öğrenme hızı çok daha hızlı olabilir.
Hizalama mekanizması, tabandaki ve çevrilmiş metindeki alt dizelerin eşleştirilmesine olanak tanır. Bir cümledeki bir alt dizinin farklı bir yazı tipiyle vurgulanabileceği ve vurgulamayla çevrilmesi gerektiğinde, web sayfaları gibi biçimlendirilmiş metinlerin çevrilmesi gerekir.
Sinir ağının yukarıda belirtilen parametreleri dikkate alınarak, ilk tablodaki en iyi süre GPU Nvidia H100 tarafından 22 dakikalık öğrenme süresiyle gösterildi ara süre ise aynı marka GeForce RTX 4060 Ti'nin GPU'su tarafından 72 dakikalık öğrenme süresiyle gösterildi ve son sırayı 140 dakikalık öğrenme süresiyle GPU Tesla V100-SXM 2 aldı.
Ayrıca GPU testinde 20 dakika 28 saniyelik öğrenme eğrisine sahip sekiz Nvidia A10 kartı, 56 dakikalık süreye sahip iki Nvidia A40 kartı ve 86 dakikada devreye giren iki Tesla V100-SXM kartı vardı. Aynı GPU serisine ait birden fazla kartın eş zamanlı uygulanması, modellerin eğitim sürecini hızlandırabilir ve daha yüksek kapasiteye sahip GPU'larla hemen hemen aynı zamanı gösterebilir, ancak böyle bir teknik mali ve prosedür açısından yeterince rasyonel olmayabilir. Öğrenme hızı ölçümlerinin sonuçları Tablo 3'te görülebilir.
Tablo 3 - Daha önce kullanılan grafik haritalarda eğitim süresi ölçümleri
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 |
Daha sonra, şu anda kullanımda olan grafik gaz pedallarının karşılaştırmalı bir analizini yapalım (Tablo 2). Bu grafik işlemci grubu için hız ölçümleri kullanılarak yapıldı hizalama mekanizma ve FP16 ve FP32 kullanımı. Bu mekanizmayı ve karışık hassasiyeti içeren hız ölçümleri aşağıda sırasıyla Tablo 4 ve 5'te sunulacaktır.
Yani, bu tablodan GPU'ların hızını ölçtükten sonra, ilk sırayı 31 dakikalık bir eğitim süresiyle RTX A4500 serisi GPU'nun aldığını söyleyebiliriz, ancak kullanılan GPU'nun birim sayısının 4'e kadar arttırılmasıyla böyle bir eğitim modeli hızının elde edildiğini vurgulamak gerekir. Bu gerçeği göz ardı edersek, yukarıda bahsedilen GPU'nun antrenman hızı çok daha yüksek olacak ve bu da onu final masasında sondan bir önceki sıraya yerleştirecektir.
47 dakikalık öğrenme süresine sahip Quadro RTX 6000 serisi GPU ikinci sırada yer alıyor. Böyle bir eğitim hızının, kullanılan işlemcinin dört birim sayısına ters olarak koşullandırıldığına dikkat edilmelidir. Böyle yalnızca bir GPU kullanmak yaklaşık 3,2 kat hız kaybı sağlayacak ve dolayısıyla yaklaşık 153 dakika sürecek ve onu son sıraya yerleştirecektir.
Üçüncü hat ise TITAN RTX serisi GPU tarafından 75 dakika 85 saniyelik bir süre ile çekildi. Bu öğrenme hızı puanı, modelin eğitim süresini azaltan 2 işlemcinin kullanılmasından kaynaklanmaktadır.
Bir ünite sayısındaki eğitim hızı açısından tartışılmaz lider kesinlikle 78 dakika 26 saniyelik bir süre ile GeForce RTX 3090 serisi GPU olacaktır. Bu GPU'nun ünite sayısının arttırılması, yukarıda belirtilen tüm GPU modellerini açıkça geride bırakacak olan model eğitim hızını hızlandıracaktır. Model eğitim süresi ölçümlerine ilişkin veriler Tablo 4'te görülebilir.
Tablo 4 - Daha önce kullanılan GPU'larda dil modeli eğitim hızının karşılaştırmalı analizi
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 |
Aşağıdaki eğitim hızı ölçümleri FP16 kullanılarak yapıldı. FP32 ile karşılaştırıldığında yarı hassasiyet, model eğitimi sırasında tüketilen bellek miktarının azaltılmasına ve GPU'daki hesaplamanın hızlandırılmasına olanak tanır. Gösterimin doğruluğu FP32 kullanımına göre daha düşük olacaktır.
Önceki tablodan FP32 kullanan modellerin eğitim süresi ölçüldüğünde sinir ağının eğitim süresinin neredeyse iki kat azaldığını söyleyebiliriz. Performans ölçüm sonuçlarına dayanarak, Tablo 4'teki makine öğrenimi GPU kıyaslamalarından GPU'ların konumlarının büyük ölçüde değişmeden kaldığını gözlemleyebiliriz. Quadro RTX 6000 serisi kart, GeForce RTX 3090 GPU'yu 96 saniye geride bırakarak beşinci sıradan altıncı sıraya yükseldi. Son sayılar Tablo 5'te gösterilmektedir.
Tablo 5 - Daha önce kullanılan GPU'larda dil modeli eğitim hızının karşılaştırmalı analizi
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 |