TIỀN MÃ HÓA KHÔNG KYCThuê GPU · 3, 7 hoặc 30 ngày
Capordia
Ngôn ngữ: Tiếng Việt
Menu
Vận hành / Chẩn đoán

Giải thích các kỳ vọng trước khi tìm một GPU mạnh hơn.

Tình trạng sử dụng thấp hiển thị không tự nó cho thấy nguyên nhân của một xử lý chậm. Hãy liên kết các số đo GPU trong cùng một khoảng thời gian, với các giai đoạn của ứng dụng và các tài nguyên máy chủ. Bắt đầu từ những kỳ vọng thấy được, rồi mỗi lần chỉ thay đổi một giả thuyết. Mục tiêu là cải thiện thời gian đến kết quả được chấp nhận, không phải theo đuổi một tỷ lệ phần trăm tối đa hay chấm điểm các card.

01

Mô tả vấn đề bằng một kết quả và một khoảng thời gian

Thay câu « GPU không làm việc » bằng một quan sát có thể kiểm chứng: kết quả đầu tiên đến muộn, các bước có những khoảng dừng, hoặc số lượng đầu ra được chấp nhận giảm. Hãy nêu tập dữ liệu đầu vào, phiên bản ứng dụng, các cài đặt và khoảng thời gian quan sát. Một lần chạy đầu tiên có thể bao gồm những giai đoạn khác với một lần thực thi đã được chuẩn bị sẵn; đừng trộn lẫn chúng mà không nêu rõ.

Chia lộ trình thành mở tệp, chuẩn bị trên CPU, truyền, tính toán trên GPU, ghi rồi kiểm tra. Các giai đoạn này có thể chồng lấn: biểu đồ chỉ là một giả thuyết cần đối chiếu với các vết. Ghi lại các mốc theo cùng múi giờ và với độ chính xác đủ lớn. Một biểu đồ phần cứng lấy sau khoảng dừng không cho phép giải thích khoảng dừng, kể cả khi giá trị của nó có vẻ bất thường.

02

Đọc đúng các tỷ lệ phần trăm và bộ nhớ

Trong NVIDIA SMI, mức sử dụng GPU cho biết phần của khoảng lấy mẫu mà trong đó ít nhất một nhân đang thực thi. Đó không phải là điểm đánh giá hiệu năng của mọi thành phần. Mức sử dụng bộ nhớ mô tả hoạt động đọc hoặc ghi của nó; không được nhầm với dung lượng bộ nhớ đang chiếm. Tài liệu cũng nêu rõ rằng một số trường có thể không khả dụng tùy theo môi trường.

Vì vậy hãy giữ nguyên tên chính xác của chỉ số và đơn vị của nó. Một dung lượng bộ nhớ cao có thể tương ứng với dữ liệu được giữ lại đang chờ; một hoạt động thấp có thể xuất hiện trong một giai đoạn chuẩn bị bình thường. Ngược lại, một hoạt động cao không chứng tỏ rằng chương trình đang thực hiện công việc hữu ích. Cần xem các đầu ra và tiến độ ứng dụng cùng lúc với phần cứng.

03

Thu thập một bản ghi tương quan và đủ ngắn

Chọn một chuỗi đại diện và giới hạn việc thu thập trong chuỗi đó. Ghi lại thời điểm, mã định danh GPU, hoạt động, bộ nhớ đã dùng và các pha của ứng dụng. Song song đó, hãy dùng các công cụ có sẵn trên hệ thống của bạn để quan sát tiến trình CPU, các khoảng chờ, các thao tác đọc và ghi. Giá trị trung bình trên tất cả các lõi có thể che khuất một luồng đơn lẻ bị quá tải; hãy xem cả các tiến trình liên quan.

Lệnh đọc bên dưới được đề xuất cho một mục tiêu NVIDIA được phép và đã có sẵn NVIDIA SMI. Lệnh này chưa được chạy cho hướng dẫn này. Lệnh giữ nguyên đơn vị trong CSV và hiển thị một quan sát mỗi giây cho đến khi bị ngắt. Hãy kiểm tra các trường được phiên bản của bạn hỗ trợ và dừng thu thập ở cuối kịch bản. Một trường N/A vẫn là chưa biết: đừng biến nó thành số không.

Nhật ký tối thiểu liên kết một mã định danh công việc, một thời điểm kèm múi giờ, pha hiện tại, một mục nhập hoặc lô có thể nhận diện, tiến độ và lỗi nếu có. Nhật ký không được chứa bí mật hay nội dung nghiệp vụ không cần thiết cho việc chẩn đoán. Nếu thiếu dữ liệu đo từ xa, trước tiên hãy kiểm tra cơ chế thu thập và tiến độ ứng dụng: một biểu đồ trống không chứng minh tiến trình đã dừng. Hãy đánh dấu khoảng thời gian không có quan sát thay vì dựng lại từ trí nhớ.

Lệnh đọc đề xuất trên một mục tiêu NVIDIA được phép — dừng bằng Ctrl+C ở cuối kịch bản
nvidia-smi --version
nvidia-smi --query-gpu=timestamp,uuid,utilization.gpu,memory.used,memory.total --format=csv --loop=1
04

Phân biệt giữa một giả thuyết và một kết luận

Nếu hoạt động GPU giảm trong khi ứng dụng chờ dữ liệu đầu vào, hãy xem xét đường đi của tệp. Nếu hoạt động giảm trong một giai đoạn chuẩn bị CPU kéo dài, hãy xem xét pha đó và mức song song thực tế của nó. Nếu các thiết bị chờ những bên tham gia khác của một công việc phân tán, hãy kiểm tra cân bằng tải và truyền thông. Nhiều triệu chứng có thể xuất hiện cùng lúc; mối tương quan giữa chúng chưa phải là bằng chứng về quan hệ nhân quả.

Hãy viết một giả thuyết ngắn và một thay đổi giúp phân định giả thuyết đó. Ví dụ, so sánh cùng một đầu vào đã được chuẩn bị sẵn với cách chuẩn bị thông thường có thể tách riêng một bước, với điều kiện kết quả vẫn giữ nguyên. Đừng thay đổi đồng thời kích thước lô, độ chính xác, số tiến trình và vị trí tệp: một cải thiện sẽ trở nên khó quy cho nguyên nhân nào.

Các giả thuyết cần xác nhận trên cùng một khoảng thời gian
Quan sát tương quanGiả thuyết khả dĩKiểm tra tiếp theo
GPU chờ và đọc đầu vào lâuBị giới hạn bởi nguồn cấp dữ liệuSo sánh một tập con đã chuẩn bị với đầu vào thông thường
Một luồng CPU bận trong các khoảng tạm dừngChuẩn bị hoặc khởi chạy bị giới hạn bởi luồng đóProfiler pha này, chưa thay đổi GPU
Một bên tham gia chờ những bên khácMất cân bằng hoặc truyền thôngSo sánh các pha theo từng tiến trình
Hoạt động cao, ít đầu ra được chấp nhậnCông việc tốn kém, thử lại hoặc kết quả bị từ chốiLiên kết mỗi khoảng thời gian với tiến độ và lỗi
05

Ví dụ giả định: phân tích một vòng lặp một trăm giây

Nhóm giả định «Revue des maquettes» mô tả một vòng lặp không chồng lấn: sáu mươi giây chuẩn bị CPU, hai mươi giây tính toán GPU, rồi hai mươi giây xuất. Tổng cộng là 100 giây và tỷ lệ thời gian dành cho tính toán GPU là 20/100, tức 20 %. Phép tính minh họa này không dự đoán phần trăm của một công cụ lấy mẫu và không tương ứng với bất kỳ phép đo nào của một GPU trong danh mục.

Giả sử có thể rút ngắn khâu chuẩn bị xuống còn ba mươi giây mà không thay đổi tính toán hay đầu ra. Khi đó vòng lặp sẽ là 30 + 20 + 20 = 70 giây: giảm ba mươi giây, với tỷ lệ GPU là 20/70, tức khoảng 28,6 %. Ngược lại, giả sử chia đôi riêng phần tính toán GPU sẽ cho 60 + 10 + 20 = 90 giây. Kịch bản này giải thích vì sao xử lý khoảng chờ lâu nhất có thể quan trọng hơn việc đổi card.

Phân tách giả định, các pha liên tiếp không chồng lấn
Kịch bảnChuẩn bị CPUTính toán GPUXuấtTổng
Giả thuyết ban đầu60 giây20 giây20 giây100 giây
Chuẩn bị giả định được rút ngắn30 giây20 giây20 giây70 giây
Chỉ tính toán GPU giả định chia đôi60 giây10 giây20 giây90 giây
06

Đi sâu vào một pha bằng trình profiler

Nếu quan sát tổng quát khoanh vùng một khu vực chậm mà không giải thích được nguyên nhân, hãy dùng trình phân tích phù hợp với ứng dụng trên một khoảng thời gian ngắn. PyTorch Profiler có thể thu thập các sự kiện CPU và CUDA cũng như tổ chức các cửa sổ thu thập. Tài liệu chỉ ra rằng có phát sinh chi phí phụ khi bật ghi lại hình dạng hoặc ngăn xếp. Vì vậy, một bản dấu vết chi tiết là công cụ để chẩn đoán; không nên trình bày tổng thời gian của nó như thời gian bình thường của chương trình mà không kèm lưu ý.

Giữ tên các giai đoạn đủ rõ ràng để gắn một thao tác kỹ thuật với công việc của bạn: chuẩn bị một nhóm tệp, truyền dữ liệu, bước ứng dụng hay xuất bản đầu ra. Hãy bắt đầu với mức độ chi tiết cần thiết cho giả thuyết. Sau khi sửa đổi, hãy thực hiện lại một quan sát tương đương rồi chạy mà không có công cụ đo lường nặng nề. Lần kiểm tra thứ hai này giúp xác minh rằng lợi ích vẫn tồn tại trong các điều kiện thông thường.

07

Tránh những sửa đổi che giấu vấn đề

Tăng mức độ song song có thể lấp đầy GPU nhưng lại làm quá tải đĩa, bộ nhớ máy chủ hoặc các luồng xuất. Tăng kích thước lô có thể thay đổi độ trễ và lượng bộ nhớ cần thiết. Giảm độ chính xác có thể làm thay đổi kết quả. Những quyết định này không bị cấm, nhưng cần được đánh giá trên cùng một mục tiêu kinh doanh, cùng với các tác dụng phụ của chúng, thay vì được chọn chỉ vì tỷ lệ phần trăm hiển thị tăng lên.

Đừng khởi động lại thiết bị hay thay đổi thông số phần cứng chỉ để chẩn đoán một sự sụt giảm hoạt động đơn thuần. Hãy bắt đầu bằng việc đọc log, sau đó để người phụ trách có thẩm quyền xem xét các lỗi rõ ràng. Bạn cũng nên tránh công bố log thô chứa đường dẫn riêng tư, thông số cấu hình mật hoặc dữ liệu đầu vào. Hãy chuẩn bị một trích đoạn hữu ích cho việc chẩn đoán và giữ lại bằng chứng đầy đủ trong phạm vi được phép của nhóm.

08

Kết thúc chẩn đoán bằng bằng chứng hữu ích cho việc ra quyết định

Hồ sơ cuối cùng cần nêu rõ triệu chứng, giả thuyết được chọn, thay đổi đã thử, các điều kiện của nó và kết quả quan sát được. Hãy giữ ít nhất một so sánh trước/sau trên cùng một tập đầu vào, cùng chất lượng và cùng định nghĩa về điểm kết thúc. Nếu kết quả không thuyết phục, hãy ghi lại những gì đã bị loại trừ và quan sát cần thực hiện tiếp theo. Một hướng đã bị loại bỏ nhưng được ghi chép lại sẽ giúp người khác không phải bắt đầu lại một cách ngẫu nhiên.

Mức hoạt động thấp bình thường không phải lúc nào cũng cần chỉnh sửa. Nếu tác vụ vẫn đáp ứng thời hạn, chất lượng và ngân sách, việc giảm độ phức tạp có thể tốt hơn một giải pháp tối ưu mong manh. Nếu đang cân nhắc một cấu hình mới, hãy chuyển các ràng buộc đã được chứng minh vào hồ sơ nghiệm thu. Không có số liệu đo riêng lẻ nào xếp hạng danh mục và không có giá trị nào trong ví dụ này tạo thành hiệu năng được cam kết.

Câu hỏi để quyết định

Việc sử dụng 100% có chứng minh rằng mọi thứ đã được tối ưu hóa không?

Không. Tỷ lệ phần trăm mô tả hoạt động theo định nghĩa của công cụ; nó không đo lường chất lượng kết quả cũng như hiệu quả toàn diện của chương trình. Bạn cũng nên theo dõi thời gian cho đến khi các đầu ra được chấp nhận, các lỗi, thời gian chờ và tài nguyên dùng chung.

Tôi có nên chọn GPU mạnh hơn khi hoạt động ít không?

Không phải trước khi xác định được giai đoạn giới hạn. Việc chờ dữ liệu hoặc chuẩn bị CPU lâu có thể vẫn không thay đổi dù dùng card khác. Hãy xây dựng một giả thuyết, so sánh một thay đổi có mục tiêu và xem xét toàn bộ luồng.

Làm gì nếu một chỉ số có giá trị N/A?

Hãy giữ nguyên là không khả dụng và kiểm tra xem công cụ hỗ trợ những gì trong môi trường của bạn. Việc thiếu giá trị không có nghĩa là không có hoạt động. Hãy bổ sung bằng các sự kiện ứng dụng hoặc một công cụ được phép khác, đồng thời nêu rõ phạm vi của nó.

TIẾP TỤC HỒ SƠXem các cấu hìnhXem câu hỏi thường gặp