Công cụ Trình xem bộ nhớ
Bạn có thể sử dụng Trình xem bộ nhớ để trực quan hoá mức sử dụng bộ nhớ trong suốt thời gian hoạt động của chương trình. Bạn có thể tìm hiểu chi tiết về nội dung của bộ nhớ tại thời điểm sử dụng bộ nhớ đạt mức cao nhất, bao gồm cả việc gỡ lỗi các tình huống Hết bộ nhớ (OOM). Trình xem bộ nhớ có thể giúp bạn xem mức sử dụng bộ nhớ toàn cục và mức độ gần hết bộ nhớ của quá trình tính toán.
Tất cả thông tin hiển thị trong Trình xem bộ nhớ đều hoàn toàn tĩnh, được lấy từ trình biên dịch XLA; thông tin thời gian chạy động được trình bày trong công cụ Hồ sơ bộ nhớ.
Nền tảng được hỗ trợ
TPU: Được hỗ trợ
GPU: Được hỗ trợ
Thành phần Trình xem bộ nhớ
Trình xem bộ nhớ bao gồm một số thành phần chính:
- Trình đơn thả xuống điều khiển người dùng cho phép bạn tuỳ chỉnh dữ liệu mà bạn đang hình ảnh hoá:
- Loại bộ nhớ: Các loại bộ nhớ được hỗ trợ phụ thuộc vào trình tăng tốc. Đối với GPU, trọng tâm là Bộ nhớ băng thông cao (HBM), trong khi đối với TPU, bạn cũng có thể xem mức sử dụng bộ nhớ trên chip bao gồm VMEM, SMEM, CMEM, Cờ đồng bộ hoá (SFlag), Sparsecore và bộ nhớ máy chủ.
- Mô-đun: Đây là các chương trình XLA đã được thực thi. Điểm xuất phát tốt thường là một mô-đun cấp cao nhất, được gắn nhãn như "jit_train_step" hoặc "jit_generate".
- Phần tổng quan bằng văn bản cung cấp thông tin cấp cao, chẳng hạn như mức phân bổ bộ nhớ cao nhất cần thiết cho chương trình, sự phân tách giữa các đối số so với biến tạm thời, v. v. Có hao tổn do khoảng đệm, cần thiết do các quy định hạn chế về hình dạng tensor được hỗ trợ trên trình tăng tốc. Nếu khoảng đệm này chiếm một phần lớn trong tổng mức phân bổ, thì có thể đó là cơ hội để tối ưu hoá.
- Biểu đồ dạng đường "Kích thước phân bổ bộ nhớ so với thứ tự chương trình" biểu thị mức sử dụng bộ nhớ so với các điểm chương trình (Trình tự HLO) theo lịch của trình biên dịch.
- Xin lưu ý rằng trục x không phải là thời gian.
- Biểu đồ này làm nổi bật điểm trong chương trình có mức sử dụng bộ nhớ cao nhất của mô-đun đã chọn. Trình phân tích và công cụ không nhận biết được việc các mô-đun cùng tồn tại trên một khối/bộ nhớ nhất định. Khi biên dịch từng mô-đun, trình biên dịch sẽ chú thích hồ sơ bằng điểm bắt đầu "cơ sở" của tổng bộ nhớ được phân bổ (theo các mô-đun được biên dịch trước mô-đun này) và đếm lên và xuống từ đó khi các hoạt động phân bổ và giải phóng bộ nhớ khác diễn ra. Tuy nhiên, mọi hoạt động phân bổ trong tương lai của các mô-đun khác được biên dịch trước khi thực thi sẽ không được ghi lại; hãy lưu ý điều này trong khi gỡ lỗi các tình huống OOM.
Biểu đồ vùng đệm ở cuối trang trình bày chi tiết mức sử dụng bộ nhớ tại thời điểm sử dụng chương trình cao nhất (được biểu thị bằng đường dọc trong biểu đồ dạng đường về mức sử dụng bộ nhớ). Có ba biểu đồ, tất cả đều hiển thị toàn bộ bộ đệm do chương trình phân bổ, nhưng được sắp xếp theo ba cách khác nhau:
- Theo thứ tự chương trình: thứ tự các biến được tạo trong quá trình thực thi chương trình, với các biến cũ nhất xuất hiện ở bên trái.
- Theo kích thước: những thành phần có tác động lớn nhất đến điểm sử dụng bộ nhớ cao nhất nằm ở bên trái.
Theo mức hao tổn khoảng đệm mà chúng áp đặt: mức "không hiệu quả" nhất từ góc độ phần cứng xuất hiện ở bên trái.
Xin lưu ý rằng màu sắc của vùng đệm không có ý nghĩa cụ thể.
Khi di chuột qua một vùng đệm trong bất kỳ biểu đồ nào trong số ba biểu đồ, bạn sẽ thấy thêm hai màn hình:
- Lớp phủ trên biểu đồ dạng đường về mức sử dụng bộ nhớ có màu khớp với thẻ vùng đệm, cho biết thời gian hoạt động của vùng đệm đó; tức là một thanh ngang có cạnh trái và phải cho biết các điểm phân bổ và giải phóng, trong thứ tự chương trình. Chiều cao của thanh ngang thể hiện kích thước tương đối của vùng đệm đã chọn so với mức phân bổ đỉnh.
- Một thẻ chi tiết vùng đệm riêng biệt, thường ở bên trái, có thông tin chi tiết về toán tử cụ thể (nếu có). Một thẻ thông thường bao gồm các thông tin sau:
- Tên: Tên thao tác XLA mà bạn có thể tìm kiếm trong Trình xem đồ thị hoặc Trình xem dấu vết.
- Kích thước: Kích thước của vùng đệm được phân bổ, có và không có khoảng đệm.
- Hình dạng: Mô tả thứ hạng, kích thước và loại dữ liệu của mảng N chiều.
- Tên thao tác khung: Cho biết tên thao tác khung liên kết với hoạt động phân bổ này.
- Loại phân bổ: Phân loại các lượt phân bổ vùng đệm thành các loại sau: Tham số, Đầu ra, Luồng cục bộ và Tạm thời (ví dụ: phân bổ vùng đệm bên trong một quá trình hợp nhất).