تنظیم خودکار مداوم (فقط GPU)

ما از OpenAI Triton برای تولید برخی از هسته های GPU استفاده می کنیم. تریتون اجازه می دهد تا هسته های گرافیکی سریع را برای ترکیب های خاص تولید کند، اما ما باید برخی از پارامترها را برای هر یک از این ترکیب ها تنظیم کنیم.

اگر ادغام های زیادی وجود داشته باشد، ممکن است زمان زیادی طول بکشد، بنابراین ما راهی برای بارگیری آن نتایج تنظیم خودکار ارائه می دهیم، در حالی که سایر مراحل کامپایل را به طور معمول اجرا می کنیم. تنظیم خودکار حافظه نهان همچنان مفید است اگر چند تغییر ایجاد کنیم: فیوژن هایی که در کش وجود دارند از کش استفاده می کنند و سایر موارد به طور معمول به صورت خودکار تنظیم می شوند.

نتایج تنظیم خودکار را می توان با استفاده از این پارامترها تخلیه / بارگذاری کرد:

--xla_gpu_dump_autotune_results_to=
--xla_gpu_load_autotune_results_from=

اگر یک فایل txt. یا .textproto را مشخص کنیم، کش در قالب textproto و در غیر این صورت با فرمت protobuf باینری تخلیه می شود.

در تست ها

تنظیم خودکار مداوم نیز می تواند در تست ها استفاده شود. استفاده از آن در صورتی که تست ها بسیار بزرگ هستند، به خصوص اگر عملکرد محیط تست محدود است، توصیه می شود.

تنها زمانی خوب کار می کند که کش خودکار حاوی نتایج تولید شده در همان نوع GPU باشد که آزمایش ها در آن اجرا می شوند.

استفاده از آزمایش، تنظیم خودکار ادامه داشت

در حال حاضر فرض می کنیم که آزمون مورد نظر همیشه از همان نوع GPU استفاده می کند.

  1. ما باید نتایج autotune را از تست صادر کنیم، برای مثال با تعیین این پارامترها به دستور test:

    --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

منسوخ شدن حافظه پنهان

اگر تغییرات زیادی در یک مدل ایجاد شود، این امکان وجود دارد که حافظه پنهان دیگر شامل همه ترکیبات نباشد، بنابراین آزمایش کندتر می شود. در این مورد، ما باید حافظه پنهان تنظیم خودکار را بازسازی کنیم.

اگر شروع به استفاده از نوع جدیدی از GPU برای اجرای آزمایش کنیم، همین امر صدق می کند.

در صورتی که کامپایلر XLA تکامل یابد و ترکیبات مختلفی ایجاد کند، حافظه پنهان ممکن است منسوخ شود.