Chúng tôi không ngừng đào tạo các mô hình ngôn ngữ cho công việc của mình. Nhóm của chúng tôi sử dụng hàng tá card màn hình khác nhau được chọn cho các nhiệm vụ khác nhau: ở đâu đó chúng tôi cần một trạm DGX mạnh mẽ, và ở đâu đó một thẻ chơi game cũ như RTX 2080Ti là đ. Việc chọn GPU tối ưu để đào tạo mô hình có thể tác động đáng kể đến cả tốc độ và hiệu quả chi phí của quy trình.
Điều thú vị là có khá nhiều bài viết trên internet có so sánh GPU cho machine learning, nhưng rất ít bài tập trung vào tốc độ cho việc đào tạo mô hình ngôn ng. Hầu hết chỉ có các bài kiểm tra suy luận được tìm thấy. Khi chip H100 mới được phát hành, báo cáo của NVidia cho biết nó nhanh hơn tới 9 lần so với A100 trong quá trình huấn luyện, nhưng đối với nhiệm vụ của chúng tôi, thẻ mới chỉ nhanh hơn 90% so với thẻ cũ. Để so sánh, các nhà cung cấp đám mây của chúng tôi có chênh lệch giá gấp 2 lần giữa các GPU này, vì vậy không có ích gì khi chuyển sang H100 mới để tiết kiệm tiền.
Ngoài ra, chúng tôi đã thử nghiệm một trạm DGX, bao gồm 8 card đồ họa A100 80GB và có giá 10 nghìn đô la mỗi tháng. Sau khi thử nghiệm, rõ ràng là tỷ lệ giá/hiệu suất của trạm này hoàn toàn không phù hợp với chúng tôi và với số tiền này, chúng tôi có thể lấy 66 x RTX 3090, tổng cộng sẽ hữu ích hơn nhiều.
Các mô hình ngôn ngữ dịch thuật của chúng tôi có tới 500 triệu thông số (trung bình 100 triệu đến 300 triệu). Có thể nếu chúng ta tăng số lượng tham số lên đáng kể thì tỷ lệ giá/hiệu suất của DGX sẽ tốt hơn. Hiện tại, chúng tôi không đào tạo các mô hình ngôn ngữ lớn có thể dịch giữa tất cả các ngôn ngữ trong tất cả các biến thể cùng một lúc, nhưng sử dụng các mô hình ngôn ngữ riêng biệt cho từng cặp ngôn ngữ, ví d. Anh-Đức. Mỗi mô hình như vậy mất từ 120 đến 300 Mb.
Điều đáng chú ý là các ngôn ngữ khác nhau có lượng dữ liệu khác nhau trên Internet, và trong khi. Ví dụ: đối với tiếng Tây Ban Nha, bạn có thể tìm thấy 500 triệu câu có bản dịch, nhưng khi đào tạo các mô hình cho các ngôn ngữ hiếm hơn như tiếng Tây Tạng, bạn cần chọn một GPU cụ thể cho các tác vụ học máy dựa trên dữ liệu có sẵn. Để tạo mô hình dịch từ tiếng Anh sang tiếng Tây Ban Nha, chúng tôi sử dụng một máy chủ với 4 x RTX 4500 và RAM 256GB. Đồng thời, ngôn ngữ Tây Tạng có thể được đào tạo trên RTX 2080 Ti với RAM 16GB, vì nó không có ý nghĩa để tăng độ phức tạp của mạng thần kinh và, kết quả là, để có một máy chủ mạnh hơn với một lượng nhỏ dữ liệu.
Lựa chọn bộ xử lý đồ họa và số liệu lý thuyết
Việc đào tạo mô hình ngôn ngữ diễn ra trên nền tảng Data Studio nội bộ của chúng tôi bằng cách sử dụng khung OpenNMT-tf. Giai đoạn này bao gồm chuẩn bị dữ liệu, đào tạo mô hình và so sánh mô hình với bản dịch tham khảo. Việc sử dụng FP16 thay vì FP32 trong quá trình đào tạo cho phép chúng tôi giảm đáng kể thời gian đào tạo của các mô hình ngôn ngữ mà không làm giảm chất lượng dịch thuật, nhưng không phải tất cả GPU của chúng tôi đều hỗ trợ điều đó.
Khi chọn bộ xử lý đồ họa, tiêu chuẩn là phải xem xét các số liệu như sức mạnh xử lý (TFLOPS), bộ nhớ video (VRAM), kết quả điểm chuẩn GPU, hỗ trợ thư viện và khung, ngân sách và các yếu tố khác (kích thước thẻ đồ họa và hệ số hình thức, yêu cầu về năng lượng, làm mát và khả năng tương thích với hệ thống của bạn). Khi đào tạo các mô hình tạo văn bản, bạn cũng nên lưu ý rằng các ngôn ngữ khác nhau sẽ tiêu tốn lượng tài nguyên khác nhau. Ví dụ: 1 byte được sử dụng để mã hóa một ký tự cho các ngôn ngữ Latinh, 2 byte cho các ngôn ngữ Cyrillic và 3 byte cho các ngôn ngữ chứa chữ tượng hình. Hiểu được những đặc điểm mà card đồ họa của bạn sẽ có tác động đáng kể đến tốc độ của quá trình học tập.
Khi đào tạo các mô hình về GPU được sử dụng, card màn hình được chia thành hai nhóm theo thời gian sử dụng: card màn hình đời đầu, được sử dụng để thực hiện các phép đo đầu tiên về tốc độ học tập và thẻ hiện đang được sử dụng. Các đặc điểm chính của các card đồ họa này có thể được tìm thấy tương ứng trong Bảng 1 và Bảng 2.
Bảng 1 - Bộ xử lý đồ họa được sử dụng trước đây và các thông số kỹ thuật của chúng
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 |
Ghi chú
1. Với CUDA lớn hơn 7.0, việc sử dụng FP16 sẽ giúp tăng tốc độ luyện tập, tùy thuộc vào phiên bản CUDA và đặc điểm của chính card đồ họa.
2. Nếu thông số kỹ thuật của card đồ họa chỉ ra rằng tỷ lệ hiệu suất FP16 và FP32 lớn hơn 1 trên 1 thì việc sử dụng độ chính xác hỗn hợp sẽ được đảm bảo để tăng tốc độ luyện tập lên mức được chỉ định trong thông số kỹ thuật. Ví dụ: đối với Quadro RTX 6000, giá trị FP16 TFLOPS là 32,62 (2:1) sẽ tăng tốc độ tập luyện ít nhất hai lần (2,4 lần trong thực tế)
Bảng 2 - Các mẫu GPU hiện đang được sử dụng và các đặc điểm chính của chúng
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 |
* - các giá trị cho FP16,TFLOPS và FP32,TFLOPS được lấy từ thông số kỹ thuật trên mỗi GPU
Quy trình đào tạo và kiểm tra GPU
Các mô hình đã được đào tạo bằng cách sử dụng một bộ 18 GPU. Trong quá trình đào tạo mạng lưới thần kinh, chúng tôi đã sử dụng nhiều cặp ngôn ngữ (hơn một trăm ngôn ngữ). Các bài kiểm tra GPU đã giúp xác định phần cứng nào hoạt động tốt nhất cho các tác vụ cụ th. Trong quá trình đào tạo các cặp ngôn ngữ của chúng tôi, các tham số mạng thần kinh sau đây được lấy làm cơ sở:
- kích thước vocab = 30 000
- số đơn vị = 768
- lớp = 6
- đầu = 16
- kích thước bên trong = 4 096
Đầu tiên, hãy mô tả đặc điểm của các GPU thuộc nhóm đầu tiên dựa trên Bảng 1. Thời gian tính bằng phút và giây dành cho việc huấn luyện mô hình với tốc độ xấp xỉ 1.000 bước và bội số kích thước lô là 100.000 đơn vị sẽ được lấy làm cơ sở để so sánh các chỉ số.
Chúng tôi nhấn mạnh rằng đối với nhóm đầu tiên, các phép đo tốc độ được thực hiện bằng cách sử dụng căn chỉnh cơ chế và chỉ sử dụng FP32. Nếu không sử dụng cơ chế này tốc độ học tập trên một số máy chủ có thể nhanh hơn nhiều.
Cơ chế căn chỉnh cho phép khớp các chuỗi con trong cơ sở và văn bản được dịch. Cần phải dịch văn bản được định dạng, chẳng hạn như các trang web, khi một chuỗi con trong câu có thể được đánh dấu bằng phông chữ khác và phải được dịch bằng cách đánh dấu.
Có tính đến các thông số nêu trên của mạng lưới thần kinh, thời gian tốt nhất từ bảng đầu tiên được hiển thị bởi GPU Nvidia H100 với thời gian học là 22 phút, và thời gian trung gian được hiển thị bởi GPU của cùng thương hiệu GeForce RTX 4060 Ti với thời gian học là 72 phút và vị trí cuối cùng được thực hiện bởi GPU Tesla V100-SXM 2 với thời gian học là 140 phút.
Ngoài ra còn có tám thẻ Nvidia A10 trong bài kiểm tra GPU với thời gian học là 20 phút 28 giây, hai thẻ Nvidia A40 với thời gian 56 phút và hai thẻ Tesla V100-SXM có thời lượng 86 phút. Việc áp dụng đồng thời nhiều thẻ của cùng một loạt GPU có thể đẩy nhanh quá trình đào tạo của các mô hình và hiển thị gần như cùng một lúc với các GPU có dung lượng cao hơn, nhưng kỹ thuật như vậy có thể không đủ hợp lý về mặt tài chính và thủ tục. Kết quả đo tốc độ học tập có thể được quan sát trong Bảng số 3.
Bảng 3 - Đo lường thời gian đào tạo trên bản đồ đồ họa đã sử dụng trước đó
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 |
Tiếp theo, chúng ta hãy tiến hành phân tích so sánh bàn đạp ga đồ họa hiện đang được sử dụng (Bảng 2). Đối với nhóm bộ xử lý đồ họa này, các phép đo tốc độ được thực hiện bằng cách sử dụng căn chỉnh cơ chế, cũng như sử dụng FP16 và FP32. Các phép đo tốc độ bao gồm cơ chế này và độ chính xác hỗn hợp sẽ được trình bày tương ứng dưới đây trong Bảng 4 và 5.
Vì vậy, sau khi đo tốc độ của GPU từ bảng này, chúng ta có thể nói rằng vị trí đầu tiên đã được thực hiện bởi GPU dòng RTX A4500 với thời gian đào tạo là 31 phút, nhưng cần nhấn mạnh rằng tốc độ của các mô hình đào tạo như vậy đã đạt được bằng cách tăng số lượng đơn vị của GPU được sử dụng lên đến 4. Bỏ qua thực tế này, tốc độ đào tạo của GPU nói trên sẽ cao hơn nhiều, điều này sẽ đặt nó ở vị trí áp chót trong bảng cuối cùng.
GPU dòng Quadro RTX 6000 với thời gian học 47 phút đứng ở vị trí thứ hai. Cần lưu ý rằng tốc độ huấn luyện như vậy phụ thuộc nghịch đảo vào số lượng đơn vị của bộ xử lý được sử dụng, bằng bốn. Chỉ sử dụng một GPU như vậy sẽ làm giảm tốc độ khoảng 3,2 lần và do đó sẽ mất khoảng 153 phút và đặt nó ở vị trí cuối cùng.
Dòng thứ ba được GPU dòng TITAN RTX thực hiện với thời gian 75 phút 85 giây. Điểm tốc độ học tập này là do sử dụng 2 bộ xử lý, giúp giảm thời gian đào tạo của mô hình.
Người dẫn đầu không thể nghi ngờ về tốc độ đào tạo trong số lượng một đơn vị chắc chắn sẽ là GPU GeForce RTX 3090 series với thời gian 78 phút 26 giây. Việc tăng số lượng đơn vị của GPU này sẽ đẩy nhanh tốc độ đào tạo mô hình, rõ ràng sẽ vượt qua tất cả các mô hình GPU nói trên. Dữ liệu về đo lường thời gian đào tạo theo mô hình có thể được xem trong Bảng 4.
Bảng 4 - Phân tích so sánh tốc độ đào tạo mô hình ngôn ngữ trên GPU đã sử dụng trước đó
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 |
Các phép đo tốc độ huấn luyện sau đây được thực hiện bằng FP16. So với FP32, độ chính xác một nửa cho phép giảm lượng bộ nhớ tiêu thụ trong quá trình đào tạo mô hình và tăng tốc tính toán trên GPU. Độ chính xác của biểu diễn sẽ thấp hơn so với việc sử dụng FP32.
Đo thời gian huấn luyện của các mô hình sử dụng FP32 từ bảng trước, chúng ta có thể nói rằng thời gian huấn luyện của mạng lưới thần kinh đã giảm gần hai lần. Dựa trên kết quả đo hiệu suất, chúng ta có thể quan sát từ các điểm chuẩn GPU học máy trong Bảng 4 rằng vị trí của GPU hầu như không thay đổi. Thẻ dòng Quadro RTX 6000 đã tăng từ vị trí thứ năm lên vị trí thứ sáu, đánh bại GPU GeForce RTX 3090 96 giây. Những con số cuối cùng được thể hiện trong Bảng 5.
Bảng 5 - Phân tích so sánh tốc độ đào tạo mô hình ngôn ngữ trên GPU đã sử dụng trước đó
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 |