Hướng dẫn này cung cấp một lựa chọn được tuyển chọn về các cờ XLA chính để hỗ trợ người dùng điều hướng và sử dụng hiệu quả các chức năng của XLA. Các phần sau đây trình bày chi tiết các cờ có thể ảnh hưởng đáng kể đến hiệu suất thời gian chạy và mức sử dụng bộ nhớ. Nếu có bất kỳ vấn đề nào xảy ra (chẳng hạn như sự cố) sau khi bật một cờ, bạn nên quay lại chế độ cài đặt mặc định và tạo một vấn đề trên GitHub.
Cờ hiệu suất
Các cờ sau đây đóng vai trò quan trọng trong việc nâng cao hiệu suất thời gian chạy. Việc thử nghiệm các chế độ cài đặt này có thể giúp bạn đạt được hiệu suất đáng kể.
Cờ | Mô tả | Giá trị mặc định | Giá trị đề xuất | Giá trị đề xuất |
---|---|---|---|---|
Pipelining 1. xla_should_allow_loop_variant_parameter_in_chain 2. xla_should_add_loop_invariant_op_in_chain 3. xla_tpu_enable_ici_ag_pipelining |
Bạn nên sử dụng kết hợp 3 cờ này để bật tính năng tạo đường ống tập thể cho các hoạt động thu thập tất cả ICI(Kết nối liên chip), giúp tạo ra nhiều cơ hội hơn cho việc thực thi chồng chéo. | 1. xla_should_allow_loop_variant_parameter_in_chain=kDisabled 2. xla_should_add_loop_invariant_op_in_chain=kDisabled 3. xla_tpu_enable_ici_ag_pipelining=false |
1. xla_should_allow_loop_variant_parameter_in_chain=kEnabled 2. xla_should_add_loop_invariant_op_in_chain=kEnabled 3. xla_tpu_enable_ici_ag_pipelining=true |
1. xla_should_allow_loop_variant_parameter_in_chain=kDisabled/kEnabled/kAuto 2. xla_should_add_loop_invariant_op_in_chain=kDisabled/kEnabled/kAuto 3. xla_tpu_enable_ici_ag_pipelining=true/false |
v5e/Async xla_enable_async_all_gather xla_tpu_enable_async_collective_fusion xla_tpu_enable_async_collective_fusion_fuse_all_gather |
Bạn nên sử dụng 3 cờ này cùng nhau để kích hoạt các thao tác thu thập tất cả không đồng bộ trên v5e. | xla_enable_async_all_gather=kAuto xla_tpu_enable_async_collective_fusion=true xla_tpu_enable_async_collective_fusion_fuse_all_gather=true |
xla_enable_async_all_gather=kAuto xla_tpu_enable_async_collective_fusion=true xla_tpu_enable_async_collective_fusion_fuse_all_gather=true |
xla_enable_async_all_gather=kDisabled/kEnabled/kAuto xla_tpu_enable_async_collective_fusion=true/false xla_tpu_enable_async_collective_fusion_fuse_all_gather=true/false |
v5e/Async xla_tpu_enable_async_collective_fusion xla_tpu_enable_async_collective_fusion_fuse_all_reduce |
Bạn nên sử dụng 2 cờ này cùng nhau để kích hoạt các thao tác giảm tất cả không đồng bộ trên v5e. | xla_tpu_enable_async_collective_fusion=true xla_tpu_enable_async_collective_fusion_fuse_all_reduce=false |
xla_tpu_enable_async_collective_fusion=true xla_tpu_enable_async_collective_fusion_fuse_all_reduce=true |
xla_tpu_enable_async_collective_fusion=true/false xla_tpu_enable_async_collective_fusion_fuse_all_reduce=true/false |
Async xla_tpu_enable_async_all_to_all |
Cờ này cho phép giao tiếp không đồng bộ giữa mọi thành phần. | xla_tpu_enable_async_all_to_all=false |
xla_tpu_enable_async_all_to_all=true |
xla_tpu_enable_async_all_to_all=true/false |
Bị giới hạn bởi độ trễ xla_all_gather_latency_bound_threshold_in_bytes |
Cờ này dành cho các hoạt động thu thập tất cả bị giới hạn về độ trễ (tức là có kích thước nhỏ). Việc bật chế độ này sẽ kích hoạt các hoạt động tối ưu hoá cụ thể có thể giảm thời gian thực thi cho các hoạt động thu thập tất cả bị giới hạn về độ trễ. Thông thường, nó được dùng trong các khối lượng công việc suy luận. | xla_all_gather_latency_bound_threshold_in_bytes=-1 (chưa bật) |
4~16Mb(i.e. 4~16 * 1024 * 1024) |
[0, 9223372036854775807] |
Bị giới hạn bởi độ trễ xla_all_reduce_latency_bound_threshold_in_bytes |
Cờ này dành cho các hoạt động thu thập tất cả bị giới hạn về độ trễ (tức là có kích thước nhỏ). Việc bật chế độ này sẽ kích hoạt các hoạt động tối ưu hoá cụ thể có thể giảm thời gian thực thi cho các hoạt động giảm tất cả bị giới hạn độ trễ. Thông thường, nó được dùng trong các khối lượng công việc suy luận. | xla_all_reduce_latency_bound_threshold_in_bytes=-1 (chưa bật) |
4~16Mb(i.e. 4~16 * 1024 * 1024) |
[0, 9223372036854775807] |
Bị giới hạn bởi độ trễ xla_collective_permute_latency_bound_threshold_in_bytes |
Cờ này dành cho các hoạt động thu thập tất cả bị giới hạn về độ trễ (tức là có kích thước nhỏ). Việc bật chế độ này sẽ kích hoạt các hoạt động tối ưu hoá cụ thể có thể giảm thời gian thực thi cho các hoạt động hoán vị tập thể bị giới hạn độ trễ. Thông thường, nó được dùng trong các khối lượng công việc suy luận. | xla_collective_permute_latency_bound_threshold_in_bytes=-1 (chưa bật) |
4~16Mb(i.e. 4~16 * 1024 * 1024) |
[0, 9223372036854775807] |
Bị giới hạn bởi độ trễ xla_all_to_all_latency_bound_threshold_in_bytes |
Cờ này dành cho các hoạt động thu thập tất cả bị giới hạn về độ trễ (tức là có kích thước nhỏ). Việc bật chế độ này sẽ kích hoạt các hoạt động tối ưu hoá cụ thể có thể giảm thời gian thực thi cho tất cả các hoạt động liên kết bị giới hạn độ trễ. Thông thường, nó được dùng trong các khối lượng công việc suy luận. | xla_all_to_all_latency_bound_threshold_in_bytes=-1 (chưa bật) |
4~16Mb(i.e. 4~16 * 1024 * 1024) |
[0, 9223372036854775807] |
xla_enable_async_collective_permute |
Viết lại tất cả các thao tác hoán vị tập thể thành các biến thể không đồng bộ của chúng. Khi được đặt thành auto , XLA có thể tự động bật chế độ thu thập không đồng bộ dựa trên các cấu hình hoặc điều kiện khác. |
xla_enable_async_collective_permute=kAuto |
xla_enable_async_collective_permute=kAuto |
xla_enable_async_collective_permute=kAuto/kEnabled/kDisabled |
Cờ bộ nhớ
Các cờ được liệt kê bên dưới được cung cấp để giải quyết các vấn đề liên quan đến HBM. Bạn chỉ nên điều chỉnh các thông số này nếu gặp phải lỗi "hết bộ nhớ" HBM trong quá trình biên dịch mô hình. Trong tất cả các trường hợp khác, bạn nên sử dụng các giá trị mặc định vì việc thay đổi các giá trị này có thể ảnh hưởng tiêu cực đến hiệu suất.
Cờ | Mô tả | Giá trị mặc định | Giá trị đề xuất | Giá trị đề xuất |
---|---|---|---|---|
Trình lập lịch xla_latency_hiding_scheduler_rerun |
Chế độ cài đặt này điều chỉnh hành vi của trình lập lịch ẩn độ trễ. Cơ chế này hoạt động bằng cách giảm dần giới hạn bộ nhớ được phân bổ cho việc lập lịch với mỗi lần "chạy lại" quy trình. | xla_latency_hiding_scheduler_rerun=1 |
xla_latency_hiding_scheduler_rerun=5 |
0~10(it doesn’t make much sense beyond 10 reruns) |
Fusion xla_tpu_rwb_fusion |
Cờ này cho phép hợp nhất loại giảm + truyền tin và có thể giảm mức sử dụng bộ nhớ. | xla_tpu_rwb_fusion=true |
xla_tpu_rwb_fusion=false |
xla_tpu_rwb_fusion=true/false |
Trình lập lịch xla_memory_scheduler |
Cờ này chỉ định thuật toán mà trình lập lịch bộ nhớ sẽ dùng để giảm thiểu mức tiêu thụ bộ nhớ. Việc sử dụng một thuật toán nâng cao hơn có thể giúp bạn có được một lịch trình tiêu tốn ít bộ nhớ hơn, nhưng sẽ mất nhiều thời gian biên dịch hơn. | xla_memory_scheduler=kDefault |
xla_memory_scheduler=kBrkga |
xla_memory_scheduler=kDefault/kList/kDfs/kPostOrder/kBrkga |
Trình lập lịch xla_tpu_enable_latency_hiding_scheduler |
Cờ này cho phép trình lập lịch ẩn độ trễ, giúp chúng ta thực hiện hoạt động thu thập không đồng bộ thay vì đồng bộ. Việc tắt tính năng này sẽ làm giảm mức sử dụng bộ nhớ nhưng bạn sẽ mất đi hiệu suất từ các thao tác không đồng bộ này. | xla_tpu_enable_latency_hiding_scheduler=true |
xla_tpu_enable_latency_hiding_scheduler=false |
xla_tpu_enable_latency_hiding_scheduler=true/false |
SPMD xla_jf_spmd_threshold_for_windowed_einsum_mib |
Cờ này đặt ngưỡng dưới của kích thước tối thiểu của dấu chấm để kích hoạt matmul tập thể. Việc đặt giá trị này thành một giá trị cao hơn sẽ giúp tiết kiệm bộ nhớ nhưng lại bỏ lỡ cơ hội thực hiện phép nhân ma trận tập thể. | xla_jf_spmd_threshold_for_windowed_einsum_mib=-1 |
10Mb~1Gb (i.e. 10*1024*1024 ~ 1024*1024*1024) |
[0, 9223372036854775807] |
Các cờ cảnh báo thường dùng khác
Cờ | Loại | Ghi chú |
---|---|---|
xla_dump_to |
Chuỗi (đường dẫn tệp) | Thư mục nơi các tệp HLO được tối ưu hoá trước và các cấu phần phần mềm khác sẽ được đặt (xem XLA Tools). |
Cờ XLA của TPU
Cờ | Loại | Ghi chú |
---|---|---|
xla_tpu_enable_data_parallel_all_reduce_opt |
Boolean (đúng/sai) | Tối ưu hoá để tăng cơ hội trùng lặp cho DCN (mạng trung tâm dữ liệu) giảm tất cả được dùng cho việc phân đoạn song song dữ liệu. |
xla_tpu_data_parallel_opt_different_sized_ops |
Boolean (đúng/sai) | Cho phép truyền dữ liệu song song qua nhiều lần lặp lại ngay cả khi kích thước đầu ra của chúng không khớp với kích thước có thể lưu tại chỗ trong các biến xếp chồng. Có thể làm tăng áp lực bộ nhớ. |
xla_tpu_spmd_rng_bit_generator_unsafe |
Boolean (đúng/sai) | Có chạy RngBitGenerator HLO theo cách phân vùng hay không. Cách này không an toàn nếu bạn muốn có kết quả xác định với các phân đoạn khác nhau trên các phần khác nhau của quá trình tính toán. |
xla_tpu_megacore_fusion_allow_ags |
Boolean (đúng/sai) | Cho phép hợp nhất tất cả các thao tác thu thập với các phép tích chập/giảm tất cả. |
xla_tpu_enable_ag_backward_pipelining |
Boolean (đúng/sai) | Các quy trình kết hợp tất cả (hiện tại là kết hợp tất cả ở quy mô lớn) ngược lại thông qua các vòng lặp quét. |
Cờ XLA của GPU
Cờ | Loại | Ghi chú |
---|---|---|
xla_gpu_enable_latency_hiding_scheduler |
Boolean (đúng/sai) | Cờ này cho phép các trình lập lịch ẩn độ trễ chồng chéo giao tiếp không đồng bộ với việc tính toán một cách hiệu quả. Giá trị mặc định là False. |
xla_gpu_enable_triton_gemm |
Boolean (đúng/sai) | Sử dụng phép nhân ma trận dựa trên Triton. |
xla_gpu_graph_level |
Cờ (0-3) | Cờ cũ để đặt cấp độ biểu đồ GPU. Sử dụng xla_gpu_enable_command_buffer trong các trường hợp sử dụng mới. 0 = tắt; 1 = ghi lại các hợp nhất và memcpys; 2 = ghi lại gemm; 3 = ghi lại các tích chập. |
xla_gpu_all_reduce_combine_threshold_bytes |
Số nguyên (byte) | Các cờ này điều chỉnh thời điểm kết hợp nhiều AllGather / ReduceScatter / AllReduce nhỏ thành một AllGather / ReduceScatter / AllReduce lớn để giảm thời gian dành cho việc giao tiếp giữa các thiết bị. Ví dụ: đối với các ngưỡng AllGather / ReduceScatter trên khối lượng công việc dựa trên Transformer, hãy cân nhắc điều chỉnh các ngưỡng này đủ cao để kết hợp ít nhất một AllGather / ReduceScatter trọng số của Lớp Transformer. Theo mặc định, combine_threshold_bytes được đặt thành 256. |
xla_gpu_all_gather_combine_threshold_bytes |
Số nguyên (byte) | Xem xla_gpu_all_reduce_combine_threshold_bytes ở trên. |
xla_gpu_reduce_scatter_combine_threshold_bytes |
Số nguyên (byte) | Xem xla_gpu_all_reduce_combine_threshold_bytes ở trên. |
xla_gpu_enable_pipelined_all_gather |
Boolean (đúng/sai) | Bật tính năng pipelining của tất cả các chỉ dẫn thu thập. |
xla_gpu_enable_pipelined_reduce_scatter |
Boolean (đúng/sai) | Bật tính năng pipelining của các chỉ dẫn giảm phân tán. |
xla_gpu_enable_pipelined_all_reduce |
Boolean (đúng/sai) | Bật tính năng pipelining của tất cả các chỉ dẫn giảm. |
xla_gpu_enable_while_loop_double_buffering |
Boolean (đúng/sai) | Bật tính năng đệm đôi cho vòng lặp while. |
xla_gpu_enable_all_gather_combine_by_dim |
Boolean (đúng/sai) | Kết hợp tất cả các thao tác thu thập với cùng một phương diện thu thập hoặc bất kể phương diện của chúng. |
xla_gpu_enable_reduce_scatter_combine_by_dim |
Boolean (đúng/sai) | Kết hợp các thao tác giảm phân tán có cùng phương diện hoặc bất kể phương diện của chúng. |