Mô hình chi phí LHS


tldr;

Trang này mô tả nội dung bên trong của mô hình chi phí mà Trình lập lịch ẩn độ trễ sử dụng. Nếu bạn muốn tinh chỉnh mô hình, hãy chuyển thẳng đến mục Tinh chỉnh.

Trình lập lịch ẩn độ trễ (LHS) là một lượt truyền trình biên dịch lên lịch DAG HLO theo cách giảm thiểu thời gian thực.

Các quyết định của mô hình này được hướng dẫn bởi mô hình chi phí hợp nhất, sử dụng kết hợp các bảng hiệu suất và mô hình phân tích. Cụ thể, XLA nhúng các bảng hiệu suất cho GEMM và các tập hợp kết nối nhanh, đồng thời sử dụng mô hình chi phí hợp nhất và kết nối mạng phân tích cho các trường hợp khác. Phần còn lại của tài liệu mô tả hoạt động bên trong của các hoạt động này ở cấp độ cao.


Bảng hiệu suất – Các tập thể ICI

Bảng hiệu suất bao gồm 2 thành phần chính: bộ thu thập và bộ nội suy.

Công cụ thu thập

Trình thu thập là một công cụ C++ chịu trách nhiệm tạo các bảng hiệu suất cho các hoạt động tập thể. Thao tác này đo lường hiệu suất của từng thao tác HLO (ví dụ: all-gather, all-reduce) trên một không gian tham số được xác định tĩnh.

Cách tính năng hoạt động

Công cụ này thực hiện quét trên một loạt các thao tác tập thể, kích thước chuyển và sơ đồ chuyển cho một cụm nhất định. Nó sử dụng cơ sở hạ tầng trình chạy HLO nhiều máy chủ hiện có và dữ liệu ExecutionProfile để chạy HLO đã tạo và thu thập các chỉ số hiệu suất.

Tham số thu thập dữ liệu

Các bảng độ trễ được thu thập cho một sản phẩm chéo của các tham số sau:

  • Loại tập hợp:
    • all-reduce
    • all-gather
    • reduce-scatter
  • Kích thước chuyển:
    • Thang logarit từ 1024B đến 2GiB (ví dụ: 1024B, 2048B, 4096B, ...)
  • Chuyển đổi lược đồ:
    • rail-aligned
    • non-rail-aligned

Thao tác quét này được thực hiện cho các cụm trong nút có 2, 4 và 8 thiết bị.

Đầu ra

Kết quả của một lần chạy thu thập là một bảng độ trễ ở định dạng .pbtxt (khoảng 116 KB cho mỗi nền tảng).

Bộ nội suy

Trình nội suy là thành phần trình biên dịch sử dụng các bảng hiệu suất đã tạo để cung cấp thông tin ước tính thời gian chạy trong quá trình biên dịch.

Cấu trúc dữ liệu nội bộ

Khi khởi chạy, Trình nội suy sẽ xử lý bảng hiệu suất thành một bản đồ. Bản đồ này dùng một bộ (collective_type, transfer_scheme) làm khoá.

Giá trị được liên kết với mỗi khoá là một mặt phẳng Euclid 2D. Mặt phẳng này lập chỉ mục lưu lượng mạng (do Trình thu thập đo lường) dựa trên 2 trục:

  1. Kích thước cần chuyển.
  2. Số lượng thiết bị có liên quan.

Tra cứu và nội suy

Khi trình biên dịch gặp một thao tác tập thể, Trình nội suy sẽ thực hiện các bước sau:

  1. Thao tác này xác định mặt phẳng thông lượng 2D chính xác bằng cách sử dụng (collective_type, transfer_scheme) của thao tác làm khoá bản đồ.
  2. Sau đó, nó sẽ sử dụng phương thức truy xuất trung bình có trọng số (dựa trên khoảng cách Euclid) trong mặt phẳng 2D đó, sử dụng (transfer_size, num_devices) của thao tác làm điểm truy vấn.
  3. Kết quả của hoạt động tra cứu này là một giá trị thông lượng mạng duy nhất.

Lý do: Thông lượng và ngoại suy

Hệ thống được thiết kế để lưu trữ thông lượng mạng thay vì độ trễ thô. Lựa chọn thiết kế này giúp đơn giản hoá đáng kể việc ngoại suy hiệu suất cho các kích thước chuyển không có trong bảng.

Nếu các bảng độ trễ ghi lại tình trạng bão hoà băng thông mạng ở kích thước tập thể S, thì thông lượng T tại thời điểm đó được coi là tối đa. Đối với mọi nhóm mới có kích thước S' > S, thời gian chạy có thể được ước tính như sau:

\[\text{EstimatedTime}(S') = \frac{S'}{T_{\text{saturated} } }\]

Nhờ đó, mô hình có thể ước tính hiệu suất cho các tập hợp có kích thước bất kỳ, ngay cả những tập hợp lớn hơn mức tối đa 2 GiB mà Collector đo được.

  • Đánh giá thấp thông lượng tối đa.
  • Do đó, bạn nên đánh giá quá cao thời gian chạy cho các hoạt động chuyển dữ liệu lớn.

Nhìn chung, các nhóm XLA:GPU duy trì các bảng hiệu suất, nhưng trong trường hợp người dùng quyết định cung cấp bảng của riêng họ, thì người dùng tạo bảng có trách nhiệm đảm bảo rằng các bảng đó mang tính đại diện và bao gồm các phép đo trong khu vực có băng thông bão hoà cho phần cứng mục tiêu.


Bảng hiệu suất – GEMM

Tương tự như hệ thống cho các nhóm, bảng độ trễ GEMM được hỗ trợ bởi 2 thành phần: một trình thu thập và một trình nội suy.

Công cụ thu thập

Trình thu thập là một công cụ C++ giúp tính toán các bảng hiệu suất cho Phép nhân ma trận tổng quát (GEMM). Nền tảng này đo lường hiệu suất của các phép nhân ma trận ở cấp độ thao tác HLO dot.

Cách tính năng hoạt động

Công cụ này thực hiện quét trên một không gian tĩnh gồm các phương diện GEMM (lô, hai phương diện không co và một phương diện co) và các kiểu dữ liệu.

  • Kiểu dữ liệu mặc định: LHS = bf16,f32, RHS = bf16,f32, OUT = bf16,f32.
  • Cơ sở hạ tầng: Sử dụng lại trình lập hồ sơ hoạt động HLO.

Thông số thu thập

Các bảng độ trễ được thu thập cho một sản phẩm trên nhiều phương diện sau:

  • batch: {1, 2, 4}
  • m (không co rút): {256, 512, ..., 4096}
  • n (không ký hợp đồng): {256, 512, ..., 4096}
  • k (viết tắt): {256, 512, ..., 4096}

Đầu ra và bộ nhớ

Thao tác quét toàn bộ sẽ tạo ra một bảng độ trễ .pbtxt, sẵn sàng được trình nội suy sử dụng.

Bộ nội suy

Trình nội suy là thành phần trình biên dịch sử dụng các bảng được tạo để ước tính hiệu suất GEMM.

Lý do: Độ bão hoà FLOPS

Các bảng độ trễ được thu thập cho phép bộ nội suy tái tạo FLOPS cho từng mục:

\[\text{FLOPS} = \frac{2 \times b \times m \times n \times k}{\text{runtime} }\]

Một thông tin chi tiết quan trọng là FLOPS bão hoà tại một thời điểm nhất định; tức là phần cứng đạt đến đỉnh FLOPS vượt quá một hình dạng ma trận nhất định. Độ bão hoà này cho phép sử dụng cùng một phương pháp ngoại suy được dùng cho các nhóm.

Tra cứu và nội suy

Trình nội suy tạo không gian 4D Euclidean từ dữ liệu bảng. Để đưa ra mức ước tính hiệu suất, hệ thống sẽ thực hiện phép nội suy trung bình có trọng số trong không gian 4 chiều này. Nếu không có bảng cho một loại dữ liệu nhất định, thì theo kinh nghiệm, mỗi phương diện sẽ được chuẩn hoá thành số byte.


Mô hình chi phí phân tích – DCN

Mô hình chi phí tập thể theo đường cong hình chữ S

Mô hình đường cong chữ S là một mô hình đường viền mái nhà mạng hoàn toàn mang tính phân tích.

Tổng quan

Mô hình này được thiết kế để ước tính hiệu suất của các hoạt động tập thể dựa trên một nhóm thuộc tính mạng cố định.

Đầu vào của mô hình

Mô hình này yêu cầu 2 danh mục đầu vào:

  1. Thuộc tính mạng cố định (do người dùng xác định):

    • Chi phí khởi động tập thể
    • Tốc độ NIC
    • RTT (thời gian trọn vòng)

    Theo mặc định, XLA tự động phát hiện một nền tảng và sử dụng các giá trị cho những cấu trúc phổ biến nhất. Người dùng có thể định cấu hình các thuộc tính này. Hãy xem mục Điều chỉnh để biết thông tin chi tiết.

  2. Đầu vào cho mỗi tập hợp:

    • Loại tập thể (ví dụ: AllGather, ReduceScatter)
    • Kích thước cần chuyển
    • Số lượng nút tham gia vào quá trình giao tiếp

Tích hợp

Mô hình đường cong chữ S được tích hợp vào XLA:GPU và đang được sử dụng trên Hopper và Blackwell.


Mô hình chi phí phân tích – Hợp nhất

Đối với các nhân khác, chúng tôi dựa vào mô hình chi phí hiệu suất GPU để ước tính thời gian chạy phù hợp. Bạn có thể đọc thêm thông tin về vấn đề này tại đây.


Chỉnh

Bạn có thể điều chỉnh mô hình đường cong chữ S bằng cách đưa ra các cờ XLA phù hợp. Cấu hình mặc định thường đủ trong phần lớn các trường hợp, nhưng chế độ kiểm soát mô hình sẽ được hiển thị trong các trường hợp khác.

export NIC_SPEED_GBPS=... # NIC speed per GPU in Gigabytes
export GPUS_PER_NODE=... # Num of GPUs per cluster interconnected with fast network (e.g. NVLINK)
export XLA_FLAGS=--xla_gpu_analytical_latency_estimator_options="nic_speed_gbps=$NIC_SPEED_GBPS,gpus_per_node=$GPUS_PER_NODE"