Có hơn 8 GPU Nvidia hiệu suất cao có thiết thực cho các ứng dụng học sâu không?


7

Tôi đã được nhắc về câu hỏi này trong khi cố gắng tìm giá đỡ máy chủ và bo mạch chủ chuyên về trí tuệ nhân tạo. Tự nhiên tôi vào trang web SuperMicro. Ở đó, khung gầm + bo mạch chủ hỗ trợ GPU tối đa trong danh mục "trí tuệ nhân tạo" có thể hỗ trợ tối đa 8 trong số chúng. Ngoài ra, Nvidia DGX-1 cũng chỉ có 8 GPU Tesla P100. Và chỉ để chà xát, Matlab không hỗ trợ hơn 8 GPU lần trước tôi đã kiểm tra.

Vì vậy, có hơn 8 GPU thực tế cho DL? Tôi sẽ lấy Caffe, CNTK, Tensorflow và Torch7 làm tài liệu tham khảo.

Câu trả lời:


3

Tôi đã làm một số nghiên cứu gần đây về chủ đề này. Tất cả đi xuống song song.
Về cơ bản có 2 cách để làm điều đó: song song mô hình hoặc song song hóa lô.

Song song mô hình là khi bạn chia mô hình theo các lớp giữa nhiều GPU. Theo kiến ​​thức tốt nhất của tôi, bạn không thể phân chia một lớp giữa các GPU, vì vậy 8 GPU sẽ phục vụ 8 lớp rất rộng. Tensorflow hỗ trợ phương pháp này. Theo ý kiến ​​của tôi, hơn 6 không có ý nghĩa theo cách này.

Song song hóa hàng loạt là khi bạn chạy toàn bộ mô hình trên mỗi GPU song song và bạn chia lô của mình và xử lý song song. Điều này được thực hiện thông qua một mẹo để xác định một lô lớn hơn sẽ được phân chia và trở thành kích thước lô mong muốn sau khi tách. Trong trường hợp này, việc phân chia và cập nhật hàng loạt trọng lượng được thực hiện trên CPU (trong trường hợp là Tensorflow) và sau 3 GPU, bất kỳ GPU bổ sung nào cũng chỉ có một sự cải thiện nhỏ về tốc độ đào tạo (theo báo cáo). Vì vậy, ở đây thậm chí 4 không có ý nghĩa và 8 chỉ là điên rồ. Dưới đây là một ví dụ về song song hàng loạt.

Thay vào đó, nếu bạn giỏi mã hóa, bạn có thể muốn xem bài báo này , phần 3.5 trong đó giải thích cách 8 GPU được sử dụng để phục vụ mạng LSTM 4 lớp. Có lẽ bạn có thể làm những việc như thế này để sử dụng DGX-1 nhưng theo như tôi biết thì Tensorflow không hỗ trợ tách một lớp thành nhiều GPU. Kết luận của tôi là rất khó để sử dụng 8 GPU và trên đó tốc độ xe buýt trở thành nút cổ chai.


Gia hạn:
Tôi đã kiểm tra lại tốc độ xe buýt và tôi đã nhầm, đó không phải là vấn đề. Hầu hết thời gian dành cho đào tạo là nỗ lực tính toán của backpropagation.

Trên thực tế tốc độ PCIe bị giới hạn bởi CPU và chipset mobo. CPU có các làn PCIe được phân bổ bởi mobo. CPU đơn mạnh nhất tại thời điểm này là Broadwell-E với 40 làn (Skylake được đồn là có 44). Mobo phân bổ băng thông đó x16 hoặc x8 cho các thiết bị ngoại vi PCIe. Vì vậy, với CPU 40 làn, bạn có thể chạy 2 thẻ ở x16 (2 * 16 = 32 <40) hoặc 5 thẻ ở x8 (5 * 8 = 40). Ở đây cần phải đề cập rằng M.2 cũng sử dụng các làn PCIe để cho tùy chọn thứ hai bị quên và ổ M.2. Một hệ thống CPU đơn sẽ không mất 8 GPU, đó là lý do tại sao chúng cần CPU kép trong DGX-1. Hạn chế tiếp theo là chipset mobo. Mạnh mẽ nhất ở thời điểm hiện tại là X99 và C6 series. X299 sẽ được công bố vào tuần tới nếu bộ nhớ phục vụ và có thể sẽ sớm có sự thay thế C6.

Vì tốc độ PCIe không phải là nút cổ chai trong quá trình học máy, câu trả lời được cập nhật cho câu hỏi của bạn sẽ là càng nhiều GPU càng tốt. Có vẻ như giới hạn là 5 tại x8 khi sử dụng PCIe 3.0, nhưng điều đó hiếm khi cần hơn vì các lớp không thể được phân chia giữa các GPU. (Và NN sâu nhất mà vẫn có ý nghĩa có thể được coi là 5-6 lớp.)


Điều đó thực sự hữu ích! Bạn có thể vui lòng giải thích thêm về phần mà bạn đã đề cập rằng tốc độ xe buýt trở thành nút cổ chai sau khi xuống đường không? Tôi biết tốc độ tối đa của bus PCIe 3.0 là khoảng 15,75 GB / giây. Có liên quan không?
Rushat Rai

Đã trả lời ở trên ...
Manngo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.