Tôi đã thấy các cuộc thảo luận về 'chi phí chung' của GPU và đối với các mạng 'nhỏ', việc đào tạo trên CPU (hoặc mạng CPU) thực sự có thể nhanh hơn GPU.
'Nhỏ' có nghĩa là gì?
Ví dụ: MLP một lớp với 100 đơn vị ẩn có phải là 'nhỏ' không?
Định nghĩa của chúng tôi về "nhỏ" có thay đổi đối với các kiến trúc định kỳ không?
Có bất kỳ tiêu chí nào khác cần được xem xét khi quyết định đào tạo CPU hay GPU không?
CHỈNH SỬA 1:
Tôi vừa tìm thấy một bài đăng trên blog (có thể đã lỗi thời? Đó là từ năm 2014):
"... Hầu hết các card mạng chỉ hoạt động với bộ nhớ đã được đăng ký với CPU và do đó, việc chuyển GPU sang GPU giữa hai nút sẽ như sau: GPU 1 sang CPU 1 sang Card mạng 1 sang Card mạng 2 cho CPU 2 đến GPU 2. Điều này có nghĩa là gì, nếu một người chọn card mạng chậm thì có thể không có sự tăng tốc nào trên một máy tính. Ngay cả với các card mạng nhanh, nếu cụm lớn, người ta thậm chí không nhận được tốc độ từ GPU khi so sánh đối với CPU vì GPU chỉ hoạt động quá nhanh để các card mạng theo kịp chúng.
Đây là lý do tại sao nhiều công ty lớn như Google và Microsoft đang sử dụng CPU thay vì cụm GPU để đào tạo mạng lưới thần kinh lớn của họ. "
Vì vậy, tại một số điểm, theo bài đăng này, nó có thể đã nhanh hơn để sử dụng CPU. đây vẫn là trường hợp?
EDIT 2: Có, bài đăng trên blog đó rất có thể bị lỗi thời vì:
Bây giờ, có vẻ như GPU trong một nút được kết nối qua bus PCIe, vì vậy giao tiếp có thể xảy ra với tốc độ khoảng 6GiB / s. (Ví dụ: https://www.youtube.com/watch?v=el1iSlP1uOs , khoảng 35 phút trong). Loa nói rằng điều này nhanh hơn việc chuyển từ GPU1 sang CPU sang GPU2. Nó có nghĩa là card mạng không còn là nút cổ chai.