Моделі та платформи ШІ

PowerInfer: Швидка великомасштабна мова з споживчою графічною процесорною одиницею

mm
Додайте Unite.AI до бажаних джерел у Google

Через свої виняткові можливості створення контенту великомасштабні генеративні моделі мови тепер знаходяться на передовій штучного інтелекту, з тривалими зусиллями для покращення їхніх генеративних можливостей. Однак, незважаючи на швидкий прогрес, ці моделі вимагають суттєвої обчислювальної потужності та ресурсів. Це в основному тому, що вони складаються з сотень мільярдів параметрів. Крім того, для безперебійного функціонування генеративні моделі штучного інтелекту залежать від тисяч графічних процесорів, що призводить до суттєвих операційних витрат. Високі операційні вимоги є однією з головних причин, чому генеративні моделі штучного інтелекту ще не ефективно розгорнуті на персональних пристроях.

У цій статті ми обговоримо PowerInfer, високошвидкісний двигун висновку великомасштабної моделі мови, призначений для стандартних комп’ютерів, оснащених однією споживчою графічною процесорною одиницею. Фреймворк PowerInfer спрямований на використання високої локальності, властивої висновку великомасштабної моделі мови, характеризованої розподілом потужності нейронної активації. Це означає, що в будь-який момент часу мала підмножина “гарячіх” нейронів постійно активна через входи, тоді як інші, які називаються “холодними” нейронами, активуються на основі конкретних входів або вимог. Цей підхід дозволяє фреймворку PowerInfer зменшити обчислювальну потужність, необхідну для генерації бажаних виходів генеративним штучним інтелектом.

Ми детально розглянемо фреймворк PowerInfer, досліджуючи його методологію, конвеєр та практичні результати застосування. Давайте почнемо.

PowerInfer: Швидка великомасштабна мова з споживчою графічною процесорною одиницею

Генеративні великомасштабні моделі мови, такі як ChatGPT і DALL-E, відомі своїми складними генеративними та природньо-мовними завданнями обробки. Через їхні високі обчислювальні вимоги ці моделі зазвичай розгортаються в центрах даних з просунутими графічними процесорами. Потреба в такій високій обчислювальній потужності обмежує їхнє розгортання в центрах даних, підкреслюючи необхідність розгортання великомасштабних моделей мови на більш доступних локальних платформах, таких як персональні комп’ютери.

Збільшення доступності великомасштабних моделей мови могло б зменшити витрати на висновок і генерацію контенту, покращити захист даних та дозволити налаштувати моделі. Крім того, хоча розгортання в центрах даних віддає перевагу високій пропускній здатності, локальне розгортання великомасштабних моделей мови могло б зосередитися на низькій затримці через менші розміри партій.

Однак розгортання цих моделей на локальних пристроях становить суттєві виклики через їхні суттєві вимоги до пам’яті. Великомасштабні моделі мови, що функціонують як автoregresивні трансформери, генерують текст токен за токеном, причому кожен токен вимагає доступу до всієї моделі, що складається з сотень мільярдів параметрів. Це вимагає численних високопродуктивних графічних процесорів для генерації виходів з низькою затримкою. Крім того, локальне розгортання зазвичай обробляє окремі запити послідовно, обмежуючи потенціал для паралельної обробки.

Для вирішення складних вимог до пам’яті генеративного фреймворку штучного інтелекту існуючі рішення використовують методи, такі як вивантаження моделі та стиснення. Техніки, такі як дистиляція, обрізання та квантування, зменшують розмір моделі, але все ще занадто великі для стандартних графічних процесорів у персональних комп’ютерах. Вивантаження моделі, яке розділяє модель на рівні трансформера між ЦП та графічним процесором, дозволяє розподіляти обробку шарів по пам’яті ЦП та графічного процесора. Однак цей метод обмежений повільним з’єднанням PCIe та обмеженими обчислювальними можливостями ЦП, що призводить до високої затримки висновку.

Фреймворк PowerInfer припускає, що розбіжність між характеристиками висновку великомасштабної моделі мови та структурою апаратури є основною причиною проблем з пам’яттю у висновку великомасштабної моделі мови. Ідеально, дані, до яких часто звертаються, повинні зберігатися у високопропускних, обмежених за місткістю графічних процесорах, тоді як дані, до яких рідше звертаються, повинні зберігатися у низькопропускних, високомісткістю ЦП. Однак великий обсяг параметрів кожної ітерації висновку великомасштабної моделі мови робить робочий набір занадто великим для одного графічного процесора, що призводить до неефективного використання локальності.

Процес висновку у великомасштабних моделях мови демонструє високу локальність, причому кожна ітерація активує обмежену кількість нейронів. Фреймворк PowerInfer спрямований на використання цієї локальності, керуючи малим числом гарячих нейронів за допомогою графічного процесора, тоді як ЦП обробляє холодні нейрони. Він попередньо вибирає та попередньо завантажує гарячі нейрони у графічний процесор та ідентифікує активовані нейрони під час виконання. Цей підхід мінімізує витратні передачі даних PCIe, дозволяючи графічним процесорам та ЦП незалежно обробляти призначені їм нейрони.

Однак розгортання великомасштабних моделей мови на локальних пристроях зустрічає перешкоди. Онлайн-предиктори, які є важливими для визначення активних нейронів, споживають суттєву пам’ять графічного процесора. Фреймворк PowerInfer використовує адаптивний метод для побудови малих предикторів для шарів з вищою активаційною асиметрією та розрідженістю, зберігаючи точність при зменшенні розміру. Крім того, фреймворки великомасштабних моделей мови вимагають спеціалізованих розріджених операторів. Фреймворк PowerInfer використовує нейронно-чутливі розріджені оператори, які безпосередньо спілкуються з нейронами, усуваючи необхідність спеціальних розріджених форматів перетворення.

Останнє, оптимальне розміщення активованих нейронів між ЦП та графічним процесором є складним завданням. Фреймворк PowerInfer використовує офлайн-стадію для створення політики розміщення нейронів, вимірюючи вплив кожного нейрону на результати висновку великомасштабної моделі мови та формулювання його як цілочисельну лінійну задачу.

Архітектура та методологія

Наступна фігура пояснює архітектуру фреймворку PowerInfer, що складається з офлайн- та онлайн-компонентів у конвеєрі.

Завдяки варіації, спостережуваній у локальних властивостях серед різних великомасштабних моделей мови, офлайн-компонент профіль активаційної розрідженісті фреймворку великомасштабної моделі мови, що дозволяє йому розрізняти гарячих та холодних нейронів. З іншого боку, на офлайн-стадії два типи нейронів завантажуються двигуном висновку у ЦП та графічний процесор, служачи запитам великомасштабної моделі мови з низькою затримкою під час виконання.

Офлайн-стадія: розв’язувач політики та профайлер великомасштабної моделі мови

На офлайн-стадії компонент профайлера великомасштабної моделі мови використовує запити, отримані з загального набору даних, для збору даних активації з процесу висновку. На першому етапі він спостерігає за активацією нейронів через усі шари фреймворку та продовжує використовувати компонент розв’язувача політики для категоризації нейронів як гарячих чи холодних. Основна мета розв’язувача політики полягає в тому, щоб призначити нейрони, активовані частіше, шарам графічного процесора, тоді як інші призначити шарам ЦП. На другому етапі компонент розв’язувача політики використовує метрики впливу нейронів та апаратні специфікації для балансування робочого навантаження між шарами та максимізації метрики впливу графічного процесора для нейронів за допомогою цілочисельного лінійного програмування.

Онлайн-стадія: нейронно-чутливий двигун висновку великомасштабної моделі мови

Як тільки офлайн-стадія успішно виконана, фреймворк продовжує виконувати онлайн-стадію. На третьому етапі процесу онлайн-двигун призначає гарячих та холодних нейронів їхнім відповідним обробним одиницям перед обробкою запитів користувача, залежно від виходу офлайн-розв’язувача політики. Під час виконання та на четвертому етапі процесу онлайн-двигун керує обчисленнями ЦП та графічного процесора, створюючи виконавці ЦП та графічного процесора, які є потоками, що виконуються на стороні ЦП. Двигун потім передбачає активовані нейрони та пропускає неактивовані нейрони. Активовані нейрони завантажуються у графічний процесор для обробки. Тим часом ЦП обчислює та передає результати для своїх нейронів для інтеграції з графічним процесором. Онлайн-двигун здатний зосередитися на окремих рядках та стовпчиках матриць через те, що він використовує нейронно-чутливі розріджені оператори на ЦП, а також на графічному процесорі.

Адаптивні предиктори розрідженісті

Основна концепція зменшення обчислювальних навантажень онлайн-двигуном висновку у фреймворку PowerInfer полягає в тому, що він обробляє лише нейрони, які він передбачає як активовані. Традиційно всередині кожного шару трансформера фреймворк використовує два різних предиктори для передбачення активації нейронів у блоках MLP та самоуваження, у результаті чого обчислення висновку обмежуються нейронами, передбаченими як активовані. Однак складно розробити ефективні предиктори для локального розгортання, оскільки обмежена кількість ресурсів робить складним баланс між розміром моделі та точністю передбачення. Оскільки ці предиктори розгортаються фреймворком часто для передбачення активних нейронів, їх потрібно зберігати у графічному процесорі для забезпечення швидкого доступу. Однак фреймворки зазвичай розгортають велику кількість предикторів, які займають суттєву пам’ять, навіть ту, яка потрібна для зберігання параметрів великомасштабної моделі мови.

Крім того, розмір предикторів зазвичай визначається двома факторами: внутрішньою асиметрією та розрідженістю шарів великомасштабної моделі мови.

Для оптимізації цих факторів фреймворк PowerInfer використовує ітеративний метод навчання для кожного предиктора у шарі трансформера без фіксованого розміру. На першому етапі цього методу навчання встановлюється розмір базової моделі на основі профілю розрідженісті моделі, а розмір моделі регулюється ітеративно з урахуванням внутрішньої активаційної асиметрії для збереження точності.

Розміщення та керування нейронами

Як згадувалося раніше, хоча компонент розв’язувача політики офлайн-стадії визначає політику розміщення нейронів, компонент онлайн-двигуна висновку завантажує модель у пам’ять графічного процесора та ЦП згідно з сформованою політикою. Для кожного шару, який може мати кілька матриць ваг, фреймворк PowerInfer призначає кожному нейрону ЦП або графічний процесор на основі того, чи є нейрон гарячоактивованим. Забезпечення точного обчислення сегментованих нейронів у визначеному порядку є важливим для точних результатів. Для вирішення цієї проблеми фреймворк PowerInfer генерує дві таблиці нейронів: одну, розташовану у пам’яті графічного процесора, а іншу – у пам’яті ЦП, причому кожна таблиця корелює окремі нейрони з їхнім початковим положенням у матриці.

Нейронно-чутливий оператор

Враховуючи активаційну розрідженість, спостережувану у великомасштабних моделях мови, неактивні нейрони та їхні ваги можуть бути пропущені операціями матричного множення, створюючи необхідність використання розріджених операторів. Замість використання розріджених операторів, які мають кілька обмежень, фреймворк PowerInfer використовує нейронно-чутливі оператори, які безпосередньо обчислюють активовані нейрони та їхні ваги на графічному процесорі та ЦП без потреби конвертації у густий формат під час виконання. Нейронно-чутливі оператори відрізняються від традиційних розріджених операторів тим, що вони зосереджуються на окремих рядкових та стовпцевих векторах всередині однієї матриці, а не на всій матриці.

Політика розміщення нейронів

Для використання обчислювальних можливостей ЦП та графічного процесора офлайн-компонент фреймворку PowerInfer генерує політику розміщення, яка керує фреймворком при призначенні нейронів ЦП або графічному процесору. Компонент розв’язувача політики генерує цю політику та контролює розміщення нейронів всередині кожного шару, що допомагає визначити обчислювальне навантаження на окремі обробні одиниці. При генерації політики розміщення компонент розв’язувача політики враховує різні фактори, включаючи частоту активації кожного нейрону, комунікаційну затримку та обчислювальні можливості, такі як пропускна здатність та розмір пам’яті кожної обробної одиниці.

Результати та реалізація

Для демонстрації можливостей фреймворку PowerInfer поширення на пристрої з різними апаратними конфігураціями експерименти проводяться на двох різних персональних комп’ютерах: одному, оснащеному процесором Intel (INTC ) i9-13900K, графічним процесором NVIDIA RTX 4090 та 192 ГБ оперативної пам’яті, а інший – процесором Intel i7-12700K, графічним процесором NVIDIA RTX 2080Ti та 64 ГБ оперативної пам’яті.

Кінцевий результат роботи фреймворку PowerInfer порівнюється з llama.cpp з розміром партії 1 та параметрами розгортання за замовчуванням. Фреймворк потім вибірково зчитує запити з наборів даних ChatGPT та Alpaca з урахуванням змінної довжини реального діалогового вводу та виводу. Наступна фігура демонструє швидкості генерації для різних моделей.

Як можна бачити, фреймворк PowerInfer генерує 8,32 токена за секунду та досягає до 16 токенів, згенерованих за секунду, тим самим значно перевершуючи фреймворк llama.cpp. Крім того, оскільки кількість вихідних токенів збільшується, продуктивність фреймворку PowerInfer також покращується, оскільки фаза генерації суттєво впливає на загальний час висновку.

Крім того, як можна бачити на зображенні вище, фреймворк PowerInfer перевершує фреймворк llama.cpp на низькопродуктивних комп’ютерах з піковою швидкістю генерації 7 токенів за секунду та середньою швидкістю генерації токенів 5 токенів за секунду.

Зображення вище демонструє розподіл навантаження нейронів між графічним процесором та ЦП для двох фреймворків. Як можна бачити, фреймворк PowerInfer суттєво збільшує частку навантаження нейронів графічного процесора, з 20 до 70 %.

Зображення вище порівнює продуктивність двох фреймворків на двох комп’ютерах з різними специфікаціями. Як можна бачити, фреймворк PowerInfer постійно демонструє високу швидкість генерації вихідних токенів порівняно з фреймворком llama.cpp.

Фінальні думки

У цій статті ми говорили про PowerInfer, високошвидкісний двигун висновку великомасштабної моделі мови для стандартного комп’ютера, оснащеного однією споживчою графічною процесорною одиницею. У своєму ядрі фреймворк PowerInfer спрямований на використання високої локальності, властивої висновку великомасштабної моделі мови, методу, характеризованому розподілом потужності нейронної активації. Фреймворк PowerInfer є швидкою системою інтерференції, призначеною для великомасштабних моделей мови, яка використовує адаптивні предиктори та нейронно-чутливі оператори для активації нейронів та обчислювальної розрідженісті.

Інженер за професією, письменник серцем. Kunal є технічним письменником з глибокою любов'ю та розумінням AI і ML, присвяченим спрощенню складних концепцій у цих галузях завдяки його цікавим та інформативним документам.