일부 GPU 커널을 생성하는 데 OpenAI Triton을 사용합니다. Triton을 사용하면 특정 융합에 관한 빠른 GPU 커널을 생성할 수 있지만, 각 융합에 관한 일부 매개변수를 조정해야 합니다.
융합이 많은 경우 시간이 오래 걸릴 수 있으므로 다른 컴파일 단계를 정상적으로 실행하면서 이러한 자동 튜닝 결과를 로드하는 방법을 제공합니다. 캐시 자동 조정은 몇 가지만 변경하면 여전히 유용합니다. 캐시에 있는 퓨전은 캐시를 사용하고 다른 퓨전은 정상적으로 자동 조정됩니다.
권장: 캐시 디렉터리
--xla_gpu_per_fusion_autotune_cache_dir=your/directory
지정된 디렉터리에서 융합별 자동 튜닝 캐시를 사용하고 유지합니다. 고유한 융합당 하나의 파일이 생성됩니다.
이 접근 방식의 주요 이점은 서로 다른 모델의 여러 XLA 실행에 동일한 캐시 디렉터리를 사용할 수 있고 새로운 퓨전이 발생할 때마다 캐시가 확장되어 후속 실행 속도가 빨라진다는 것입니다. 동일한 캐시 디렉터리로 여러 XLA 인스턴스를 동시에 실행하는 기본 지원도 있습니다.
XLA는 필요한 경우 기존 결과를 읽고 결정된 후 새 결과를 작성합니다.
- XLA를 실행하기 전에 디렉터리가 있어야 하며 쓰기 가능해야 합니다.
- 캐시 무효화는 사용자가 처리해야 합니다.
- 빈 캐시로 시작하려면 빈 디렉터리를 사용하세요.
- XLA 버전 확인은 사용자가 실행해야 합니다.
- XLA의 여러 버전에 별도의 캐시를 사용하려면 다른 디렉터리를 사용하세요.
매개변수를 제공하지 않으면 캐시는 기본적으로 사용 중지되어 있습니다.
제한사항: 아래에 설명된 다른 캐싱 방법과 함께 사용할 때 제대로 작동하지 않을 수 있습니다.
대안: 지정된 HLO의 모든 결과를 하나의 파일로 로드 또는 덤프
자동 튜닝 결과는 다음 매개변수를 사용하여 덤프/로드할 수 있습니다.
--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=
.txt 또는 .textproto 파일을 지정하면 캐시가 textproto 형식으로 덤프되고, 그렇지 않으면 바이너리 protobuf 형식으로 덤프됩니다.
테스트 중
지속적인 자동 조정은 테스트에서도 사용할 수 있습니다. 테스트가 매우 크거나 특히 테스트 환경의 성능이 제한된 경우 이를 사용하는 것이 좋습니다.
자동 조정 캐시에 테스트가 실행되는 것과 동일한 유형의 GPU에서 생성된 결과가 포함되어 있는 경우에만 잘 작동합니다.
테스트에서 영구 자동 조정을 사용하도록 설정
지금은 해당 테스트에서 항상 동일한 GPU 유형을 사용한다고 가정해 보겠습니다.
테스트 명령어에 다음과 같은 매개변수를 지정하여 테스트에서 자동 조정 결과를 내보내야 합니다.
--test_env=XLA_FLAGS=--xla_gpu_dump_autotune_results_to=TEST_UNDECLARED_OUTPUTS_DIR/autotune_cache.textproto --test_sharding_strategy=disabled
모든 테스트에 대해 단일 자동 조정 캐시를 올바르게 가져오려면 샤딩을 사용 중지해야 합니다.
그런 다음 이 캐시를 코드 저장소에 업로드해야 합니다.
그런 다음 테스트 타겟의 데이터 종속 항목에 캐시를 추가하고 환경 변수를 사용하여 로드해야 합니다.
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
캐시 지원 중단
모델을 많이 변경하면 캐시에 더 이상 모든 융합이 포함되지 않을 수 있으므로 테스트 속도가 느려집니다. 이 경우 자동 튜닝 캐시를 다시 생성해야 합니다.
테스트 실행에 새로운 유형의 GPU를 사용하기 시작해도 마찬가지입니다.
XLA 컴파일러가 발전하여 다른 융합을 생성하는 경우에도 캐시가 더 이상 사용되지 않을 수 있습니다.