Tự động dò được duy trì (chỉ GPU)

Chúng tôi dùng OpenAI Triton để tạo một số nhân GPU. Triton cho phép tạo hạt nhân GPU nhanh cho một số hợp nhất, nhưng chúng ta phải điều chỉnh một số tham số cho mỗi phép hợp nhất như vậy.

Việc này có thể mất nhiều thời gian nếu có nhiều cách kết hợp, vì vậy chúng tôi cung cấp cách tải các kết quả tự động điều chỉnh đó trong khi vẫn chạy các bước biên dịch khác như bình thường. Bộ nhớ đệm tự động điều chỉnh vẫn hữu ích nếu chúng tôi thực hiện một vài thay đổi: các hợp nhất có trong bộ nhớ đệm sẽ sử dụng bộ nhớ đệm và các hợp nhất khác sẽ được tự động tinh chỉnh bình thường.

Bạn có thể kết xuất/tải kết quả tự động điều chỉnh bằng các tham số sau:

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

Nếu chúng tôi chỉ định tệp .txt hoặc .textproto, thì bộ nhớ đệm sẽ được kết xuất ở định dạng textproto, nếu không ở định dạng protobuf nhị phân.

Đang kiểm thử

Bạn cũng có thể dùng tính năng tự động điều chỉnh liên tục trong các chương trình kiểm thử. Bạn nên sử dụng thuộc tính này nếu các hoạt động kiểm thử rất lớn, đặc biệt là khi hiệu suất của môi trường kiểm thử bị giới hạn.

Bộ nhớ đệm này chỉ hoạt động tốt nếu bộ nhớ đệm tự động điều chỉnh chứa các kết quả được tạo trên cùng một loại GPU nơi tiến hành kiểm thử.

Việc sử dụng tính năng tự động điều chỉnh liên tục khi dùng một chương trình kiểm thử

Bây giờ, hãy giả định rằng bài kiểm thử được đề cập luôn sử dụng cùng một loại GPU.

  1. Chúng ta phải xuất kết quả tự động điều chỉnh từ hoạt động kiểm thử, chẳng hạn như bằng cách chỉ định các tham số này vào lệnh kiểm thử:

    --test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto
    --test_sharding_strategy=disabled
    

    Bạn phải tắt tính năng phân đoạn để có được một bộ nhớ đệm tự động điều chỉnh chính xác duy nhất cho tất cả kiểm thử.

  2. Sau đó, chúng ta phải tải bộ nhớ đệm đó lên kho lưu trữ mã.

  3. Sau đó, chúng ta phải thêm bộ nhớ đệm vào các phần phụ thuộc dữ liệu của mục tiêu kiểm thử và tải bộ nhớ đệm bằng biến môi trường.

    data = ["test_autotune_cache.textproto"],
    env = {"XLA_FLAGS": "--xla_gpu_load_autotune_results_from=" +
                        "$(execpath test_autotune_cache.textproto)"},
    

    (Bạn có thể sử dụng tính năng phân đoạn trong các kiểm thử tải kết quả tự động điều chỉnh.)

Vui lòng xem các hoạt động kiểm thử mẫu trong xla/service/gpu/tests/BUILD:

  • load_autotune_results_using_execpath_test
  • load_autotune_results_from_test_workspace_test
  • dump_autotune_results_to_test_outputs_test

Lỗi thời của bộ nhớ đệm

Nếu bạn thực hiện nhiều thay đổi đối với một mô hình, có thể bộ nhớ đệm sẽ không còn chứa mọi hợp nhất nữa, do đó, quá trình kiểm thử sẽ trở nên chậm hơn. Trong trường hợp này, chúng tôi sẽ phải tạo lại bộ nhớ đệm tự động điều chỉnh.

Nếu chúng ta bắt đầu sử dụng một loại GPU mới để chạy thử nghiệm, điều tương tự cũng sẽ xảy ra.

Bộ nhớ đệm cũng có thể trở nên lỗi thời nếu trình biên dịch XLA phát triển và tạo ra các cách hợp nhất khác.