지속적인 자동 조정 (GPU만 해당)

OpenAI Triton을 사용하여 일부 GPU 커널을 생성합니다. Triton을 사용하면 특정 융합을 위해 빠른 GPU 커널을 생성할 수 있지만, 이러한 각 융합에 대해 일부 매개변수를 조정해야 합니다.

퓨전이 많으면 시간이 오래 걸릴 수 있으므로 다른 컴파일 단계를 정상적으로 실행하면서 이러한 자동 조정 결과를 로드하는 방법을 제공합니다. 캐시 자동 조정은 몇 가지 변경을 하면 여전히 유용합니다. 캐시에 있는 퓨전은 캐시를 사용하고 다른 퓨전은 정상적으로 자동 조정됩니다.

자동 조정 결과는 다음 매개변수를 사용하여 덤프/로드할 수 있습니다.

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

.txt 또는 .textproto 파일을 지정하면 캐시는 textproto 형식으로, 그 외의 경우에는 바이너리 protobuf 형식으로 덤프됩니다.

테스트 중

지속적인 자동 조정은 테스트에서도 사용할 수 있습니다. 테스트가 매우 큰 경우, 특히 테스트 환경의 성능이 제한된 경우 이를 사용하는 것이 좋습니다.

자동 조정 캐시에 테스트가 실행되는 동일한 유형의 GPU에서 생성된 결과가 포함된 경우에만 제대로 작동합니다.

테스트에 지속적인 자동 조정 사용

지금은 문제의 테스트가 항상 동일한 GPU 유형을 사용한다고 가정해 보겠습니다.

  1. 예를 들어 테스트 명령어에 다음 매개변수를 지정하여 자동 조정 결과를 테스트에서 내보내야 합니다.

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

    모든 테스트에서 단일 자동 조정 캐시를 올바르게 가져오려면 샤딩을 사용 중지해야 합니다.

  2. 그런 다음 코드 저장소에 캐시를 업로드해야 합니다.

  3. 그런 다음 테스트 대상의 데이터 종속 항목에 캐시를 추가하고 환경 변수를 사용하여 로드해야 합니다.

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

    자동 조정 결과를 로드하는 테스트에서는 샤딩을 사용해도 괜찮습니다.

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

캐시 폐기

모델이 많이 변경되면 캐시에 더 이상 모든 fusions가 포함되지 않을 수 있으므로 테스트가 느려질 수 있습니다. 이 경우 자동 조정 캐시를 다시 생성해야 합니다.

새로운 유형의 GPU를 사용하여 테스트를 실행하는 경우에도 마찬가지입니다.

XLA 컴파일러가 진화하고 다른 fusions를 생성하는 경우에도 캐시가 사용되지 않을 수 있습니다.