Kami sentiasa melatih model bahasa untuk kerja kami. Pasukan kami menggunakan berpuluh-puluh kad video berbeza yang dipilih untuk tugas yang berbeza: di suatu tempat kami memerlukan stesen DGX yang berkuasa, dan di suatu tempat kad permainan lama seperti RTX 2080Ti sudah memadai. Memilih GPU optimum untuk latihan model boleh memberi kesan ketara kepada kedua-dua kelajuan dan keberkesanan kos proses.
Apa yang menarik ialah terdapat beberapa artikel di internet dengan perbandingan GPU untuk pembelajaran mesin, tetapi sangat sedikit yang menumpukan pada kelajuan untuk latihan model bahasa. Kebanyakannya hanya ujian inferens ditemui. Apabila cip H100 baharu dikeluarkan, laporan NVidia menyatakan bahawa ia adalah sehingga sembilan kali lebih pantas daripada A100 dalam latihan, tetapi untuk tugas kami, kad baharu itu hanya 90% lebih pantas daripada yang lama. Sebagai perbandingan, pembekal awan kami mempunyai perbezaan harga 2x antara GPU ini, jadi tidak ada gunanya beralih kepada H100 baharu untuk menjimatkan wang.
Di samping itu, kami mengambil untuk ujian stesen DGX, yang terdiri daripada 8 kad grafik A100 80GB dan berharga 10 ribu dolar sebulan. Selepas ujian, menjadi jelas bahawa nisbah harga/prestasi stesen ini tidak sesuai dengan kami sama sekali dan untuk wang ini, kami boleh mengambil 66 x RTX 3090, yang secara keseluruhannya akan lebih berguna.
Model bahasa terjemahan kami mempunyai sehingga 500 juta parameter (100 juta hingga 300 juta secara purata). Ada kemungkinan jika kita meningkatkan bilangan parameter dengan ketara, nisbah harga/prestasi DGX akan menjadi lebih baik. Pada masa ini, kami tidak melatih model bahasa besar yang boleh menterjemah antara semua bahasa dalam semua variasi sekaligus, tetapi menggunakan model bahasa yang berasingan untuk setiap pasangan bahasa, cth. Inggeris-Jerman. Setiap model sedemikian mengambil masa dari 120 hingga 300 Mb.
Perlu diingat bahawa bahasa yang berbeza mempunyai jumlah data yang berbeza di Internet, dan sementara. Sebagai contoh, untuk bahasa Sepanyol, anda boleh menemui 500 juta ayat dengan terjemahan, tetapi apabila melatih model untuk bahasa yang lebih jarang seperti Tibet, anda perlu memilih GPU khusus untuk tugas pembelajaran mesin berdasarkan data yang tersedia. Untuk mencipta model terjemahan daripada bahasa Inggeris ke bahasa Sepanyol, kami menggunakan pelayan dengan 4 x RTX 4500 dan 256GB RAM. Pada masa yang sama, bahasa Tibet boleh dilatih pada RTX 2080 Ti dengan 16GB RAM, kerana tidak masuk akal untuk meningkatkan kerumitan rangkaian saraf dan, akibatnya, untuk mengambil pelayan yang lebih berkuasa dengan sejumlah kecil data.
Memilih pemproses grafik dan angka teori
Latihan model bahasa berlangsung pada platform Data Studio dalaman kami menggunakan rangka kerja OpenNMT-tf. Fasa ini termasuk penyediaan data, latihan model, dan perbandingan model dengan terjemahan rujukan. Menggunakan FP16 dan bukannya FP32 semasa latihan membolehkan kami mengurangkan masa latihan model bahasa dengan ketara tanpa merendahkan kualiti terjemahan, tetapi tidak semua GPU kami menyokongnya.
Apabila memilih pemproses grafik, adalah standard untuk mempertimbangkan metrik seperti kuasa pemprosesan (TFLOPS), memori video (VRAM), hasil penanda aras GPU, sokongan perpustakaan dan rangka kerja, belanjawan dan faktor lain (saiz kad grafik dan faktor bentuk, keperluan kuasa, penyejukan dan keserasian dengan sistem anda). Apabila melatih model penjanaan teks, anda juga harus ingat bahawa bahasa yang berbeza akan menggunakan jumlah sumber yang berbeza. Sebagai contoh, 1 bait digunakan untuk mengekod satu aksara untuk bahasa Latin, 2 bait untuk bahasa Cyrillic dan 3 bait untuk bahasa yang mengandungi hieroglif. Memahami ciri-ciri kad grafik anda yang akan mempunyai kesan yang ketara ke atas kelajuan proses pembelajaran.
Apabila melatih model dari segi GPU yang digunakan, kad video dibahagikan kepada dua kumpulan mengikut tempoh penggunaan: kad video awal, yang digunakan untuk membuat pengukuran pertama kelajuan pembelajaran dan kad yang sedang digunakan. Ciri-ciri utama kad grafik ini boleh didapati dalam Jadual 1 dan Jadual 2, masing-masing.
Jadual 1 - Pemproses grafik yang digunakan sebelum ini dan parameter teknikalnya
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 |
Nota
1. Dengan CUDA lebih daripada 7.0, menggunakan FP16 akan memberikan peningkatan dalam kelajuan latihan, bergantung pada versi CUDA dan ciri-ciri kad grafik itu sendiri.
2. Jika spesifikasi kad grafik menunjukkan nisbah prestasi FP16 hingga FP32 lebih besar daripada 1 hingga 1, maka menggunakan ketepatan campuran akan dijamin untuk meningkatkan kelajuan latihan dengan jumlah yang dinyatakan dalam spesifikasi. Sebagai contoh, untuk Quadro RTX 6000 nilai FP16 TFLOPS sebanyak 32.62 (2:1) akan mempercepatkan senaman sekurang-kurangnya dua kali (2.4 kali dalam amalan)
Jadual 2 - Model GPU yang digunakan pada masa ini dan ciri utamanya
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 |
* - nilai untuk FP16,TFLOPS dan FP32,TFLOPS diambil daripada spesifikasi setiap GPU
Proses latihan dan ujian GPU
Model-model tersebut dilatih menggunakan satu set 18 GPU. Dalam proses latihan rangkaian saraf, kami menggunakan banyak pasangan bahasa (lebih daripada seratus bahasa). Ujian GPU telah membantu mengenal pasti perkakasan yang berprestasi terbaik untuk tugas tertentu. Semasa latihan pasangan bahasa kami, parameter rangkaian saraf berikut telah diambil sebagai asas:
- saiz vocab = 30 000
- numunits = 768
- lapisan = 6
- kepala = 16
- dimensi dalaman = 4 096
Pertama, mari kita cirikan GPU yang tergolong dalam kumpulan pertama berdasarkan Jadual 1. Masa dalam minit dan saat yang dihabiskan untuk melatih model pada kelajuan anggaran 1,000 langkah dan gandaan saiz kelompok sebanyak 100,000 unit akan diambil sebagai asas untuk membandingkan penunjuk.
Kami menekankan bahawa untuk kumpulan pertama, pengukuran kelajuan dilakukan dengan menggunakan penjajaran mekanisme dan hanya menggunakan FP32. Tanpa menggunakan mekanisme ini kelajuan pembelajaran pada sesetengah pelayan boleh menjadi lebih pantas.
Mekanisme penjajaran membolehkan padanan subrentetan dalam pangkalan dan teks terjemahan. Ia diperlukan untuk menterjemah teks berformat, seperti halaman web, apabila subrentetan dalam ayat boleh diserlahkan dalam fon yang berbeza dan harus diterjemahkan dengan penyerlahan.
Dengan mengambil kira parameter rangkaian saraf yang disebutkan di atas, masa terbaik dari jadual pertama ditunjukkan oleh GPU Nvidia H100 dengan masa pembelajaran selama 22 minit, dan masa pertengahan ditunjukkan oleh GPU jenama yang sama GeForce RTX 4060 Ti dengan masa pembelajaran selama 72 minit dan tempat terakhir diambil oleh GPU Tesla V100-SXM 2 dengan masa pembelajaran selama 140 minit.
Terdapat juga lapan kad Nvidia A10 dalam ujian GPU dengan keluk pembelajaran 20 minit dan 28 saat, dua kad Nvidia A40 dengan masa 56 minit, dan dua kad Tesla V100-SXM yang mencatat masa 86 minit. Penggunaan serentak berbilang kad siri GPU yang sama boleh mempercepatkan proses latihan model dan menunjukkan masa yang hampir sama dengan GPU yang mempunyai kapasiti yang lebih tinggi, tetapi teknik sedemikian mungkin tidak cukup rasional dari segi kewangan dan prosedur. Keputusan pengukuran kelajuan pembelajaran boleh diperhatikan dalam Jadual nombor 3.
Jadual 3 - Pengukuran masa latihan pada peta grafik yang digunakan sebelum ini
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 |
Seterusnya, mari kita jalankan analisis perbandingan pedal gas grafik yang sedang digunakan (Jadual 2). Bagi kumpulan pemproses grafik ini, pengukuran kelajuan dilakukan menggunakan penjajaran mekanisme, serta menggunakan FP16 dan FP32. Pengukuran kelajuan termasuk mekanisme ini dan ketepatan campuran akan dibentangkan di bawah dalam Jadual 4 dan 5 masing-masing.
Jadi, setelah mengukur kelajuan GPU dari jadual ini, kita boleh mengatakan bahawa tempat pertama telah diambil oleh GPU siri RTX A4500 dengan masa latihan selama 31 minit, tetapi perlu ditekankan bahawa kelajuan model latihan sedemikian diperolehi oleh meningkatkan bilangan unit GPU terpakai sehingga 4. Tanpa mengambil kira fakta ini, kelajuan latihan GPU yang disebutkan di atas akan menjadi lebih tinggi, yang akan meletakkannya di tempat kedua terakhir dalam jadual akhir.
Gpu siri Quadro RTX 6000 dengan masa pembelajaran selama 47 minit berada di tempat kedua. Perlu diingatkan bahawa kelajuan latihan sedemikian dikondisikan secara songsang oleh bilangan unit pemproses yang digunakan, yang sama dengan empat. Menggunakan hanya satu GPU sedemikian akan memberikan kehilangan kelajuan kira-kira 3.2 kali dan akibatnya adalah kira-kira 153 minit dan meletakkannya di tempat terakhir.
Baris ketiga diambil oleh GPU siri TITAN RTX dengan masa 75 minit dan 85 saat. Skor kelajuan pembelajaran ini disebabkan oleh penggunaan 2 pemproses, yang mengurangkan masa latihan model.
Peneraju yang tidak boleh dipertikaikan dari segi kelajuan latihan dalam bilangan satu unit pastinya ialah GPU siri GeForce RTX 3090 dengan masa 78 minit dan 26 saat. Menambah bilangan unit GPU ini akan mempercepatkan kelajuan latihan model, yang jelas akan mengatasi semua model GPU yang disebutkan di atas. Data tentang ukuran masa latihan model boleh dilihat dalam Jadual 4.
Jadual 4 - Analisis perbandingan kelajuan latihan model bahasa pada GPU yang digunakan sebelum ini
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 |
Pengukuran kelajuan latihan berikut dilakukan menggunakan FP16. Berbanding dengan FP32, separuh ketepatan membolehkan mengurangkan jumlah memori yang digunakan semasa latihan model dan mempercepatkan pengiraan pada GPU. Ketepatan perwakilan akan lebih rendah daripada penggunaan FP32.
Mengukur masa latihan model menggunakan FP32 dari jadual sebelumnya, kita boleh mengatakan bahawa masa latihan rangkaian saraf telah dikurangkan hampir dua kali ganda. Berdasarkan keputusan pengukuran prestasi, kita boleh perhatikan daripada penanda aras GPU pembelajaran mesin dalam Jadual 4 bahawa kedudukan GPU sebahagian besarnya kekal tidak berubah. Kad siri Quadro RTX 6000 naik dari kedudukan kelima ke kedudukan keenam, menewaskan GPU GeForce RTX 3090 sebanyak 96 saat. Nombor akhir ditunjukkan dalam Jadual 5.
Jadual 5 - Analisis perbandingan kelajuan latihan model bahasa pada GPU yang digunakan sebelum ini
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 |