Lợi thế của việc giữ kích thước lô có sức mạnh bằng 2 là gì?


14

Trong khi các mô hình đào tạo về học máy, tại sao đôi khi lại có lợi khi giữ kích thước lô ở mức 2? Tôi nghĩ rằng tốt nhất là sử dụng kích thước phù hợp nhất với bộ nhớ / RAM GPU của bạn.

Câu trả lời này tuyên bố rằng đối với một số gói, công suất 2 tốt hơn so với kích cỡ lô. Ai đó có thể cung cấp một lời giải thích chi tiết / liên kết đến một lời giải thích chi tiết cho điều này? Điều này có đúng với tất cả các thuật toán tối ưu hóa (độ dốc gốc, backpropagation, v.v.) hay chỉ một số trong số chúng?

Câu trả lời:


18

Đây là vấn đề liên kết bộ xử lý ảo (VP) với bộ xử lý vật lý (PP) của GPU. Vì số lượng PP thường là lũy thừa bằng 2, sử dụng một số VP khác với công suất 2 dẫn đến hiệu suất kém.
Bạn có thể thấy ánh xạ của VP lên PP dưới dạng một lát có kích thước bằng số PP .
Giả sử bạn có 16 PP.
Bạn có thể ánh xạ 16 VP trên chúng: 1 VP được ánh xạ lên 1 PP.
Bạn có thể ánh xạ 32 VP trên chúng: 2 lát 16 VP, 1 PP sẽ chịu trách nhiệm cho 2 VP.
V.v. Trong quá trình thực thi, mỗi PP sẽ thực hiện công việc của VP thứ 1 mà anh ta chịu trách nhiệm, sau đó là công việc của VP thứ 2, v.v ...
Nếu bạn sử dụng 17 VP, mỗi PP sẽ thực hiện công việc của PP thứ 1, sau đó 1 PP sẽ thực hiện công việc của ngày 17 những người khác sẽ không làm gì (trước đây).
Điều này là do mô hình SIMD (được gọi là vector trong thập niên 70) được sử dụng bởi GPU. Điều này thường được gọi là Song song dữ liệu: tất cả các PP làm cùng một việc cùng một lúc nhưng trên các dữ liệu khác nhau. Xem https://en.wikipedia.org/wiki/SIMD .
Chính xác hơn, trong ví dụ với 17 VP, một khi công việc của lát thứ 1 được thực hiện (bởi tất cả các PP làm công việc của VP thứ 1 của họ), tất cả các PP sẽ làm cùng một công việc (VP thứ 2), nhưng chỉ một người có một số dữ liệu để làm việc trên .
Không có gì để làm với việc học. Đây chỉ là công cụ lập trình.


sẽ chính xác hơn để nói rằng kích thước lô nên là bội số của số PP? Đó là, trong ví dụ của bạn, chúng tôi có thể ánh xạ 16x3 = 48 VP đến 16 PP?
1

Đúng. tốt ... Nếu bạn thực hiện ánh xạ VP -> PP, chắc chắn bạn chắc chắn 100%. Nếu bạn sử dụng một thư viện, và yêu cầu 80 VP. Tôi không chắc. Tôi không nói bạn sai. Nếu tỷ lệ này là 2, bạn có thể sử dụng tối ưu hóa rất cổ điển và dễ dàng. Nháy vào truy cập bộ nhớ. Nếu số hàng xóm trên lầu của VP không phải là số 2, thì 5, lib sẽ không thể sử dụng O (log_2 (n)) cổ điển dễ dàng truy cập vào bộ nhớ hàng xóm.
jcm69

@ jcm69 bạn có thể giải thích hoặc cung cấp liên kết cho thời gian truy cập log_2 (n) để truy cập bộ nhớ VP
Arayan Singh

Đó chỉ là một sự xem xét chung về việc xử lý các đối tượng trong khoa học máy tính. Khi bạn chắc chắn rằng các đối tượng tuân theo sức mạnh của 2 quy tắc, chúng có thể được quản lý dễ dàng và an toàn bằng cây tìm kiếm nhị phân, dịch chuyển nhị phân, v.v. Khi bạn không chắc chắn, bạn có thể phải thực hiện một số thử nghiệm bổ sung và thuật toán phức tạp hơn. Dù sao, đó là một chút xa câu hỏi ban đầu;)
jcm69
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.