Nhu cầu bộ nhớ của GPU bao gồm dữ liệu và trọng số đang được sử dụng, kết quả trung gian, vùng làm việc thời gian chạy và bộ nhớ đệm phụ thuộc khối lượng công việc. Đo mức sử dụng đỉnh ở độ chính xác, kích thước lô và mức đồng thời dự kiến; kích thước mô hình đã lưu chỉ là một đầu vào.
Chọn khối lượng công việc trước khi chọn GPU
Thông số kỹ thuật GPU trở nên hữu ích khi bạn biết phần mềm và công việc mà nó sẽ thực hiện. Kết xuất, xử lý hình ảnh, huấn luyện và suy luận có các mẫu bộ nhớ và tính toán khác nhau. Kiểm tra kiến trúc GPU, trình điều khiển và môi trường chạy được ứng dụng hỗ trợ trước khi so sánh dung lượng. Một card có đủ bộ nhớ vẫn có thể không phù hợp nếu đường dẫn phần mềm hoặc tính năng yêu cầu không được hỗ trợ.
Mô tả kích thước đầu vào tối đa, độ chính xác, kích thước lô và công việc đồng thời mà bạn dự định cho phép. Đối với suy luận, hãy bao gồm yêu cầu dài nhất được hỗ trợ và các phiên đồng thời. Đối với kết xuất, hãy bao gồm cảnh và kết cấu đại diện. Một bản trình diễn nhỏ thành công là bằng chứng cho thấy ngăn xếp có thể khởi động; đó không phải là bằng chứng cho thấy khối lượng công việc sản xuất đầy đủ vừa vặn.
Tách dữ liệu lâu dài khỏi bộ nhớ làm việc
Trọng số hoặc tài sản đầu vào có thể vẫn nằm trên thiết bị trong khi kết quả trung gian và bộ đệm tạm thời xuất hiện trong quá trình thực thi. Huấn luyện có thể yêu cầu thêm gradient và trạng thái bộ tối ưu. Khối lượng công việc suy luận có thể duy trì bộ nhớ đệm có kích thước thay đổi theo yêu cầu. Cách sắp xếp chính xác phụ thuộc vào mô hình, framework và cách triển khai. Không áp dụng một hệ số nhân chung cho mọi tác vụ và coi đó là bảo đảm dung lượng.
Ví dụ số học đơn giản, một mô hình giả định bảy tỷ tham số được biểu diễn với hai byte mỗi tham số cần khoảng mười bốn tỷ byte chỉ cho các tham số đó. Phép tính đó loại trừ cấp phát thời gian chạy, kích hoạt, bộ nhớ đệm và chi phí định dạng. Đây là một ví dụ lập kế hoạch ở mức thấp hơn, không phải là tuyên bố rằng khối lượng công việc như vậy vừa với một cấu hình SwissOctet cụ thể.
| Thành phần bộ nhớ | Điều gì thay đổi nó | Cách điều tra |
|---|---|---|
| Trọng số hoặc tài sản cảnh | Kích thước mô hình, cách biểu diễn và tài sản được tải | Kiểm tra định dạng đã triển khai và cấp phát thực tế được tải |
| Kết quả trung gian | Hình dạng đầu vào và kích thước lô | Đo một thao tác đại diện đầy đủ |
| Bộ nhớ đệm | Độ dài yêu cầu và mức đồng thời | Thực hiện khối lượng công việc tối đa được hỗ trợ |
| Vùng làm việc và thời gian chạy | Thư viện, kernel và chiến lược thực thi | Quan sát mức sử dụng đỉnh của thiết bị và framework |
Đo mức sử dụng đỉnh qua đúng góc nhìn
Số liệu của framework và số liệu cấp thiết bị có thể mô tả những thứ khác nhau. PyTorch phân biệt bộ nhớ được cấp phát cho tensor với bộ nhớ được dành riêng bởi bộ cấp phát đệm, và cung cấp các phép đo đỉnh. Tài liệu trực quan hóa bộ nhớ của nó cũng giải thích rằng các cấp phát được thực hiện bên ngoài bộ cấp phát của nó có thể không xuất hiện trong chế độ xem đó. Hãy so sánh báo cáo của framework với trạng thái thiết bị rộng hơn thay vì giả định một con số bao quát mọi cấp phát.
Khởi động thao tác thực tế, sau đó đo toàn bộ tác vụ và mức chồng lấn thực tế giữa các tác vụ. Ghi lại phiên bản phần mềm và các điều kiện đầu vào chính xác. Sự kiện hết bộ nhớ có thể xảy ra tại một đỉnh tạm thời, vì vậy ảnh chụp cuối cùng yên ắng có thể bỏ sót vấn đề. Giữ các bản ghi chẩn đoán ở chế độ riêng tư khi chúng có thể chứa chi tiết mô hình hoặc thông tin về đầu vào của ứng dụng.
Coi kích thước lô và độ chính xác là lựa chọn thiết kế
Các lô lớn hơn có thể thay đổi cả mức sử dụng và nhu cầu bộ nhớ. Hướng dẫn hiệu năng của NVIDIA thảo luận về tương tác giữa hình dạng thao tác, cường độ số học và khả năng phần cứng. Kích thước lô hữu ích phụ thuộc vào mục tiêu độ trễ của khối lượng công việc cũng như thông lượng. Chính sách lô tối đa hóa công việc hoàn thành mỗi giây có thể khiến người dùng cá nhân phải chờ lâu hơn mức ứng dụng cho phép.
Độ chính xác giảm hoặc lượng tử hóa có thể giảm một số yêu cầu bộ nhớ, nhưng khả năng tương thích và chất lượng đầu ra cần được kiểm thử. Giữ một tập dữ liệu đánh giá và so sánh các kết quả liên quan sau khi thay đổi định dạng. Không thay đổi cách biểu diễn của mô hình chỉ để làm cho nó vừa vặn mà không kiểm tra hành vi mà dự án phụ thuộc vào. Tối ưu hóa bộ nhớ nên bảo toàn kết quả cần thiết, không chỉ tránh lỗi cấp phát.
Giữ phần còn lại của máy trong ngân sách
CPU, RAM máy chủ và đường dẫn lưu trữ chuẩn bị và cung cấp công việc GPU. Giải mã đầu vào chậm hoặc bộ nhớ máy chủ không đủ có thể khiến bộ tăng tốc phải chờ. Các tệp mô hình và tập dữ liệu lớn cũng cần đủ dung lượng đĩa cho cài đặt, chuyển đổi tạm thời và cập nhật. Đánh giá toàn bộ quy trình thay vì mua một GPU và kỳ vọng mọi bước trước đó sẽ trở nên nhanh hơn.
Nhiều GPU không tự động hoạt động như một thiết bị bộ nhớ gộp. Ứng dụng phải sử dụng chiến lược song song phù hợp, và chi phí truyền thông có thể quan trọng. Xác nhận có bao nhiêu thiết bị được cung cấp, bộ nhớ của từng thiết bị và cách sắp xếp được phần mềm hỗ trợ. Danh sách tên nâng cấp GPU không phải là mô tả đã xác minh về bộ nhớ khả dụng cho một tiến trình chưa sửa đổi.
Dùng bài kiểm thử nghiệm thu đại diện
Xác định một bài kiểm tra với ngăn xếp phần mềm đã chọn, đầu vào tối đa dự kiến và mức đồng thời được phép. Đo bộ nhớ đỉnh, thời gian hoàn thành, lỗi và chất lượng đầu ra. Giữ một khoảng dự phòng cho biến động thời gian chạy bình thường và bảo trì, với lượng được biện minh bằng quan sát. Nếu khối lượng công việc không vừa, hãy quyết định giảm mức đồng thời, thay đổi cách triển khai hoặc chọn phần cứng khác.
Tensor GPU trình bày các lựa chọn liên quan đến GPU trong danh mục SwissOctet. Xác nhận thiết bị chính xác, VRAM mỗi thiết bị, khả năng tương thích trình điều khiển và cấu hình đã chọn trước khi dựa vào đó. Trang web không cung cấp bảo đảm phù hợp cho ứng dụng cụ thể. Một bài kiểm tra chấp nhận được ghi lại sẽ kết nối các chi tiết phần cứng đó với công việc bạn cần máy thực hiện.
Danh sách kiểm tra thực tế của bạn.
- Xác nhận kiến trúc GPU và môi trường chạy được hỗ trợ.
- Dự trù trọng số, kết quả trung gian, bộ nhớ đệm và vùng làm việc.
- Đo các đỉnh ở đầu vào tối đa dự kiến và mức đồng thời.
- So sánh chế độ xem bộ nhớ của framework và cấp thiết bị.
- Xác thực đầu ra sau khi thay đổi độ chính xác hoặc định dạng.
- Xác nhận VRAM chính xác mỗi thiết bị trước khi đặt hàng.
Những chi tiết quan trọng.
Kích thước mô hình đã lưu có bằng nhu cầu VRAM không?+
Không. Quá trình thực thi bổ sung kết quả trung gian, vùng làm việc, bộ nhớ đệm và các cấp phát khác, trong khi định dạng lưu trữ có thể khác với cách biểu diễn trong bộ nhớ.
Thêm một GPU thứ hai có tự động tăng gấp đôi bộ nhớ khả dụng không?+
Không. Ứng dụng cần một chiến lược song song phù hợp. Giới hạn mỗi thiết bị và hành vi truyền thông vẫn quan trọng.
Độ chính xác giảm có luôn giải quyết được vấn đề hết bộ nhớ không?+
Không. Nó có thể giảm một số cấp phát, nhưng khả năng hỗ trợ, các bộ đệm còn lại và chất lượng đầu ra chấp nhận được phải được kiểm thử.
Đến nguồn.
Các tài liệu tham khảo này hỗ trợ các khái niệm kỹ thuật trong hướng dẫn này. Hãy theo dõi tài liệu hiện hành trước khi thay đổi hệ thống sản xuất.
- NVIDIA: Bắt đầu với hiệu năng học sâu docs.nvidia.com
- PyTorch: Hiểu cách sử dụng bộ nhớ CUDA docs.pytorch.org
- PyTorch: Quản lý bộ nhớ CUDA docs.pytorch.org
Hướng dẫn biên tập bởi SwissOctet. Các ví dụ chỉ mang tính minh họa. Thông số dịch vụ, tùy chọn có sẵn và điều kiện hợp đồng phải được xác minh riêng.