Kalıcı otomatik ayar (yalnızca GPU)

GPU çekirdeklerinin bazılarını oluşturmak için OpenAI Triton kullanıyoruz. Triton, belirli füzyonlar için hızlı GPU çekirdeklerinin oluşturulmasına izin verir ancak bu füzyonların her biri için bazı parametreleri ayarlamamız gerekir.

Çok sayıda füzyon varsa bu işlem uzun sürebilir. Bu nedenle, diğer derleme adımlarını normal şekilde çalıştırmaya devam ederken bu otomatik ayarlama sonuçlarını yüklemeniz için bir yol sağlıyoruz. Önbellekleri otomatik ayarlama birkaç değişiklik yapsak da yararlı olur: Önbellekte bulunan füzyonlar önbelleği kullanır, diğerleri ise normal şekilde otomatik olarak ayarlanır.

Otomatik ayarlama sonuçları şu parametreler kullanılarak dökümü alınabilir/yüklenebilir:

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

Bir .txt veya .textproto dosyası belirtirsek önbellek textproto biçiminde, aksi takdirde ikili protobuf biçiminde alınır.

Testlerde

Kalıcı otomatik ayarlama testlerde de kullanılabilir. Testler çok büyükse, özellikle de test ortamının performansı sınırlıysa kullanılması önerilir.

Bu işlev yalnızca otomatik ayarlama önbelleğinin, testlerin çalıştırıldığı aynı GPU türünde oluşturulan sonuçlar içermesi durumunda işe yarar.

Kalıcı otomatik ayarlama kullanımını test etme

Şimdilik söz konusu testin her zaman aynı GPU türünü kullandığını varsayalım.

  1. Testten otomatik ayar sonuçlarını dışa aktarmamız gerekir. Örneğin, şu parametreleri test komutuna belirterek:

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

    Tüm testlerde doğru şekilde tek bir otomatik ayar önbelleği almak için parçalama devre dışı bırakılmalıdır.

  2. Ardından bu önbelleği kod depomuza yüklememiz gerekir.

  3. Ardından önbelleği test hedefimizin veri bağımlılıklarına eklememiz ve bir ortam değişkeni kullanarak yüklememiz gerekir.

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

    (Otomatik ayar sonuçlarını yükleyen testlerde parçalama kullanılabilir.)

Lütfen xla/service/gpu/tests/BUILD sayfasındaki örnek testlere de bakın:

  • load_autotune_results_using_execpath_test
  • load_autotune_results_from_test_workspace_test
  • dump_autotune_results_to_test_outputs_test

Önbelleğin eski olması

Bir modelde çok sayıda değişiklik yapılırsa önbelleğin artık tüm füzyonları içermemesi mümkündür. Bu nedenle test daha yavaş hale gelir. Bu durumda, otomatik ayarlama önbelleğini yeniden oluşturmamız gerekir.

Testleri çalıştırmak için yeni bir GPU türü kullanmaya başlarsak aynı durum geçerli olur.

XLA derleyicisi gelişip farklı füzyonlar oluşturursa önbellek de eskiyebilir.