20.03.2024 16:04
Компілятор глибинного навчання з відкритим вихідним кодом на основі Python
У сфері глибокого навчання пошук оптимізації робочих навантажень для виводу набуває все більшого значення. Поява Hidet, компілятора глибинного навчання з відкритим вихідним кодом, розробленого CentML Inc., стала новим кроком у спрощенні процесу компіляції та підвищенні ефективності моделей глибоких нейронних мереж (DNN). Цей компілятор на основі Python призначений для забезпечення наскрізної підтримки широкого спектру моделей глибоких нейронних мереж, від PyTorch та ONNX до ефективних ядер CUDA, з основним акцентом на графічні процесори NVIDIA.
Hidet з’явився в результаті інтенсивних досліджень, представлених у статті “Hidet: Парадигма програмування на основі відображення задач для тензорних програм глибокого навчання”. Основна мета компілятора — вирішити критичну проблему зменшення латентності висновків моделей глибокого навчання, що є життєво важливим для забезпечення ефективного обслуговування моделей на різних платформах, включаючи хмарні сервіси та периферійні пристрої.
Рушійною силою розробки Hidet є визнання складності створення ефективних тензорних програм для операторів глибокого навчання. Сучасні прискорювачі, такі як графічні процесори NVIDIA та Google TPU, привносять тонкощі, які вимагають застосування нових підходів. У той час як існуючі компілятори глибокого навчання використовують декларативні примітиви планування, Hidet пропонує унікальний підхід, вбудовуючи процес планування в тензорні програми за допомогою спеціальних відображень, відомих як відображення завдань.
Ці відображення завдань дають можливість розробникам визначати призначення обчислень і порядок їх виконання безпосередньо в тензорних програмах, що дозволяє здійснювати тонкі маніпуляції на рівні операторів програми. Цей інноваційний підхід, відомий як парадигма програмування з відображенням завдань, збагачує виразні оптимізації, прокладаючи шлях до вищої продуктивності та ефективності.
Крім того, Hidet впроваджує механізм оптимізації злиття після планування, який автоматизує процес злиття після планування. Це не тільки дозволяє розробникам сконцентруватися на плануванні окремих операторів, але й значно зменшує інженерні зусилля, необхідні для злиття операторів. Парадигма також створює ефективний апаратно-орієнтований простір розкладів, який не залежить від розміру вхідних даних програми, що значно скорочує час налагодження і підвищує загальну ефективність.
Широкі експерименти, проведені на сучасних згорткових і трансформаторних моделях, продемонстрували неабияку потужність Hidet. Він постійно випереджав найсучасніші фреймворки DNN-виведення, такі як ONNX Runtime та компілятор TVM, оснащений планувальниками AutoTVM та Ansor. В середньому, Hidet досягає помітного приросту продуктивності в 1,22 рази, а максимальний приріст продуктивності становить 1,48 рази.
Окрім чудових показників продуктивності, Hidet також продемонстрував свою ефективність, значно скоротивши час налаштування. Порівняно з AutoTVM та Ansor, Hidet скоротив час налаштування в 20 разів та 11 разів відповідно, що додатково підкреслює його вплив на прискорення процесів компіляції глибокого навчання.
Продовжуючи розвиватися, Hidet встановлює високі стандарти ефективності та продуктивності компіляції глибокого навчання. Завдяки своєму новітньому підходу до мапування завдань та оптимізації злиття, Hidet має потенціал стати наріжним каменем в інструментарії розробників, які прагнуть розширити межі роботи з моделями глибокого навчання. Його внесок готовий революціонізувати ландшафт компіляції глибинного навчання, відкриваючи нову еру оптимізованих робочих навантажень виводу та спрощених процесів компіляції.