У цій публікації ми демонструємо точне налаштування моделі Llama 2 за допомогою методу параметрично ефективного тонкого налаштування (PEFT) і розгортаємо налаштовану модель на AWS Inferentia2. Ми використовуємо AWS нейрон комплект розробки програмного забезпечення (SDK) для доступу до пристрою AWS Inferentia2 і отримання переваг від його високої продуктивності. Потім ми використовуємо великий контейнер висновків моделі, що працює на основі Глибока бібліотека Java (DJLServing) як наше модельне рішення для обслуговування.
Огляд рішення
Ефективне тонке налаштування Llama2 за допомогою QLoRa
Сімейство великих мовних моделей (LLM) Llama 2 — це набір попередньо підготовлених і точно налаштованих генеративних текстових моделей із масштабом від 7 до 70 мільярдів параметрів. Llama 2 був попередньо навчений на 2 трильйонах токенів даних із загальнодоступних джерел. Клієнти AWS іноді вирішують налаштувати моделі Llama 2 за допомогою власних даних для досягнення кращої продуктивності для подальших завдань. Однак через велику кількість параметрів моделі Llama 2 повне тонке налаштування може бути надзвичайно дорогим і трудомістким. Підхід до ефективного точного налаштування параметрів (PEFT) може вирішити цю проблему шляхом точного налаштування лише невеликої кількості додаткових параметрів моделі, одночасно заморожуючи більшість параметрів попередньо навченої моделі. Для отримання додаткової інформації про PEFT можна прочитати це після. У цій публікації ми використовуємо QLoRa для точного налаштування моделі Llama 2 7B.
Розгорніть налаштовану модель на Inf2 за допомогою Amazon SageMaker
AWS Inferentia2 — це спеціально створений прискорювач машинного навчання (ML), розроблений для робочих навантажень логічного висновку, який забезпечує високу продуктивність за до 40% нижчої вартості для генеративних робочих навантажень штучного інтелекту та магістра права в порівнянні з іншими екземплярами, оптимізованими для логічного висновку на AWS. У цій публікації ми використовуємо Amazon Elastic Compute Cloud (Amazon EC2) Екземпляр Inf2, що містить AWS Inferentia2, прискорювачі Inferentia2 другого покоління, кожен з яких містить два NeuronCores-v2. Кожен NeuronCore-v2 є незалежною гетерогенною обчислювальною одиницею з чотирма основними двигунами: тензорним, векторним, скалярним і GPSIMD. Він містить вбудовану програмно-керовану пам’ять SRAM для максимальної локальності даних. Оскільки на Inf2 було опубліковано кілька блогів, читач може звернутися до цього після і наші документація для отримання додаткової інформації про Inf2.
Для розгортання моделей на Inf2 нам потрібен AWS Neuron SDK як програмний рівень, який працює поверх апаратного забезпечення Inf2. AWS Neuron — це пакет SDK, який використовується для виконання завдань глибокого навчання на AWS Inferentia та AWS Trainium засновані екземпляри. Це забезпечує наскрізний життєвий цикл розробки ML для створення нових моделей, навчання й оптимізації цих моделей, а також розгортання їх для виробництва. AWS Neuron включає глибоке навчання компілятор, час виконання та інструменти які вбудовано інтегровані з такими популярними фреймворками, як TensorFlow і PyTorch. У цьому блозі ми збираємося використовувати transformers-neuronx
, який є частиною AWS Neuron SDK для робочих процесів визначення декодера трансформатора. Це опори ряд популярних моделей, включаючи Llama 2.
Для розгортання моделей на Amazon SageMaker, ми зазвичай використовуємо контейнер, який містить необхідні бібліотеки, такі як Neuron SDK і transformers-neuronx
а також компонент обслуговування моделі. Amazon SageMaker підтримує контейнери глибокого навчання (DLC) із популярними бібліотеками з відкритим кодом для розміщення великих моделей. У цій публікації ми використовуємо Великий контейнер висновків моделі для Neuron. У цьому контейнері є все необхідне для розгортання вашої моделі Llama 2 на Inf2. Щоб отримати ресурси для початку роботи з LMI на Amazon SageMaker, зверніться до багатьох наших наявних публікацій (блог 1, блог 2, блог 3) на цю тему. Коротше кажучи, ви можете запускати контейнер без написання додаткового коду. Ви можете використовувати обробник за замовчуванням для бездоганної взаємодії з користувачем і передайте одну з підтримуваних назв моделей і будь-які настроювані параметри часу завантаження. Це компілює та обслуговує LLM на примірнику Inf2. Наприклад, розгорнути OpenAssistant/llama2-13b-orca-8k-3319
, ви можете надати наступну конфігурацію (як serving.properties
файл). в serving.properties
, ми вказуємо тип моделі як llama2-13b-orca-8k-3319
, розмір партії 4, ступінь паралельності тензора 2, і все. Повний список параметрів, які можна налаштувати, див Усі параметри конфігурації DJL.
Крім того, ви можете написати власний файл обробки моделі, як показано тут приклад, але це вимагає реалізації методів завантаження моделі та висновку, щоб служити мостом між API DJLServing.
Передумови
У наведеному нижче списку описано передумови для розгортання моделі, описаної в цій публікації блогу. Ви можете реалізувати або з Консоль управління AWS або за допомогою останньої версії Інтерфейс командного рядка AWS (AWS CLI).
Проходження
У наступному розділі ми розглянемо код у двох частинах:
- Точне налаштування моделі Llama2-7b і завантаження артефактів моделі у вказане місце сегмента Amazon S3.
- Розгорніть модель у Inferentia2 за допомогою контейнера обслуговування DJL, розміщеного в Amazon SageMaker.
Повні зразки коду з інструкціями можна знайти тут GitHub сховище
Частина 1: Тонка настройка моделі Llama2-7b за допомогою PEFT
Ми збираємося використовувати нещодавно представлений метод у статті QLoRA: налаштування низькорангового адаптера з урахуванням квантування для генерації мови Тім Деттмерс та ін. QLoRA — це нова техніка для зменшення обсягу пам’яті великих мовних моделей під час тонкого налаштування без шкоди для продуктивності.
Примітка: Точне налаштування моделі llama2-7b, показане нижче, було протестовано на Amazon Блокнот SageMaker Studio з оптимізованим ядром Python 2.0 GPU за допомогою a мл.g5.2xвеликий тип екземпляра. Як найкращу практику ми рекомендуємо використовувати an Студія Amazon SageMaker Інтегроване середовище розробки (IDE), запущене у вас Віртуальна приватна хмара Amazon (Amazon VPC). Це дозволяє вам контролювати, відстежувати й перевіряти мережевий трафік всередині та за межами вашого VPC за допомогою стандартних мережевих можливостей AWS та безпеки. Додаткову інформацію див Забезпечення підключення до Amazon SageMaker Studio за допомогою приватного VPC.
Квантуй базову модель
Спочатку ми завантажуємо квантовану модель із використанням 4-бітового квантування Трансформери Huggingface бібліотека наступним чином:
Завантажити навчальний набір даних
Далі ми завантажуємо набір даних, щоб подати модель для етапу тонкого налаштування, як показано нижче:
Приєднайте адаптерний шар
Тут ми прикріплюємо невеликий рівень адаптера, який можна навчити, налаштований як LoraConfig визначено в Hugging Face пефт бібліотека
Тренуйте модель
Використовуючи показану вище конфігурацію LoRA, ми налаштуємо модель Llama2 разом із гіперпараметрами. Нижче показано фрагмент коду для навчання моделі:
Об’єднати вагу моделі
Виконана вище налаштована модель створила нову модель, що містить навчені вагові коефіцієнти адаптера LoRA. У наступному фрагменті коду ми об’єднаємо адаптер із базовою моделлю, щоб ми могли використовувати налаштовану модель для висновку.
Завантажте вагу моделі в Amazon S3
На останньому кроці частини 1 ми збережемо ваги об’єднаних моделей у вказаному місці Amazon S3. Вага моделі використовуватиметься контейнером для обслуговування моделі в Amazon SageMaker для розміщення моделі за допомогою екземпляра Inferentia2.
Частина 2: Модель хосту QLoRA для висновків за допомогою AWS Inf2 за допомогою контейнера SageMaker LMI
У цьому розділі ми розглянемо етапи розгортання точно налаштованої моделі QLoRA в середовищі хостингу Amazon SageMaker. Ми будемо використовувати a Подача DJL контейнер від SageMaker DLC, який інтегрується з трансформери-нейронкс бібліотека для розміщення цієї моделі. Налаштування полегшує завантаження моделей на прискорювачі AWS Inferentia2, розпаралелює модель у кількох NeuronCores і забезпечує обслуговування через кінцеві точки HTTP.
Підготуйте артефакти моделі
DJL підтримує багато бібліотек оптимізації глибокого навчання, в тому числі DeepSpeed, FasterTransformer і більше. Для конкретних конфігурацій моделі ми пропонуємо a serving.properties
з ключовими параметрами, такими як tensor_parallel_degree
та model_id
щоб визначити параметри завантаження моделі. The model_id
може бути ідентифікатор моделі Hugging Face або шлях Amazon S3, де зберігаються ваги моделі. У нашому прикладі ми надаємо розташування Amazon S3 нашої точно налаштованої моделі. У наступному фрагменті коду показано властивості, які використовуються для показу моделі:
Будь ласка, зверніться до цього документація для отримання додаткової інформації про настроювані параметри, доступні через serving.properties
. Зверніть увагу, що ми використовуємо option.n_position=512
у цьому блозі для швидшої компіляції AWS Neuron. Якщо ви хочете спробувати більшу довжину вхідного токена, ми рекомендуємо читачеві заздалегідь скомпілювати модель (див. Модель попередньої компіляції AOT на EC2). В іншому випадку ви можете зіткнутися з помилкою тайм-ауту, якщо час компіляції занадто великий.
Після serving.properties
файл визначено, ми запакуємо файл у a tar.gz
у такому форматі:
Потім ми завантажимо tar.gz до сегмента Amazon S3:
Створіть кінцеву точку моделі Amazon SageMaker
Щоб використовувати примірник Inf2 для обслуговування, ми використовуємо Amazon Контейнер SageMaker LMI з підтримкою DJL neuronX. Будь ласка, зверніться до цього після для отримання додаткової інформації про використання контейнера DJL NeuronX для висновків. У наступному коді показано, як розгорнути модель за допомогою Amazon SageMaker Python SDK:
Кінцева точка тестової моделі
Після успішного розгортання моделі ми можемо перевірити кінцеву точку, надіславши зразок запиту до предиктора:
Вихідний зразок показано таким чином:
У контексті аналізу даних машинне навчання (ML) відноситься до статистичних методів, здатних отримувати прогностичну силу з набору даних зі зростаючою складністю та точністю шляхом ітеративного звуження обсягу статистики.
Машинне навчання — це не нова статистична техніка, а скоріше комбінація існуючих методик. Крім того, він не був розроблений для використання з певним набором даних або для отримання певного результату. Швидше, він був розроблений, щоб бути достатньо гнучким, щоб адаптуватися до будь-якого набору даних і робити прогнози щодо будь-яких результатів.
Прибирати
Якщо ви вирішите, що більше не бажаєте підтримувати роботу кінцевої точки SageMaker, ви можете видалити її за допомогою AWS SDK для Python (boto3), AWS CLI або Amazon SageMaker Console. Крім того, ви також можете закрийте ресурси Amazon SageMaker Studio які більше не потрібні.
Висновок
У цій публікації ми показали вам, як точно налаштувати модель Llama2-7b за допомогою адаптера LoRA з 4-бітним квантуванням за допомогою одного екземпляра GPU. Потім ми розгорнули модель в екземплярі Inf2, розміщеному в Amazon SageMaker, використовуючи контейнер обслуговування DJL. Нарешті, ми перевірили кінцеву точку моделі Amazon SageMaker за допомогою передбачення генерації тексту за допомогою SDK SageMaker Python. Спробуйте, ми раді почути ваші відгуки. Слідкуйте за новинами про додаткові можливості та нові інновації з AWS Inferentia.
Більше прикладів про AWS Neuron див aws-neuron-samples.
Про авторів
Вей Тех є старшим архітектором рішень зі штучного інтелекту/ML в AWS. Він захоплений тим, щоб допомогти клієнтам просунути свій шлях до AWS, зосереджуючись на сервісах Amazon Machine Learning і рішеннях на основі машинного навчання. Поза роботою він любить активний відпочинок на свіжому повітрі, як-от кемпінг, риболовлю та походи з родиною.
Цінвея Лі є спеціалістом з машинного навчання в Amazon Web Services. Отримав ступінь доктора філософії. в дослідженні операцій після того, як він зламав грантовий рахунок свого радника і не вручив обіцяну Нобелівську премію. Зараз він допомагає клієнтам у сфері фінансових послуг і страхування створювати рішення машинного навчання на AWS. У вільний час любить читати та викладати.
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://aws.amazon.com/blogs/machine-learning/fine-tune-llama-2-using-qlora-and-deploy-it-on-amazon-sagemaker-with-aws-inferentia2/
- : має
- :є
- : ні
- :де
- $UP
- 1
- 10
- 100
- 11
- 15%
- 16
- 19
- 24
- 300
- 7
- 70
- 8
- a
- МЕНЮ
- вище
- прискорювач
- прискорювачі
- доступ
- рахунки
- точність
- Achieve
- через
- діяльності
- пристосовувати
- Додатковий
- Додатково
- адреса
- просування
- після
- попереду
- AI
- AI / ML
- AL
- дозволяє
- по
- Альфа
- Також
- Amazon
- Амазонське машинне навчання
- Amazon SageMaker
- Студія Amazon SageMaker
- Amazon Web Services
- an
- аналіз
- та
- будь-який
- Інтерфейси
- Застосовувати
- підхід
- ЕСТЬ
- AS
- At
- приєднувати
- автоматичний
- доступний
- AWS
- AWS Inferentia
- м'яч
- база
- заснований
- дозування
- BE
- було
- користь
- КРАЩЕ
- Краще
- між
- Мільярд
- Блог
- блоги
- BRIDGE
- Зламав
- будувати
- але
- by
- CAN
- можливості
- здатний
- Вибирати
- хмара
- код
- збір
- поєднання
- повний
- складність
- компонент
- обчислення
- конфігурація
- налаштувати
- зв'язок
- Консоль
- споживання
- Контейнер
- містить
- контекст
- контроль
- Коштувати
- може
- створений
- В даний час
- Клієнти
- дані
- аналіз даних
- вирішувати
- глибокий
- глибоке навчання
- дефолт
- визначати
- певний
- Ступінь
- доставляти
- постачає
- розгортання
- розгорнути
- розгортання
- описаний
- призначений
- розробка
- пристрій
- Docker
- вниз
- два
- під час
- динамічний
- E&T
- кожен
- або
- дозволяє
- кінець в кінець
- Кінцева точка
- двигун
- Двигуни
- досить
- Навколишнє середовище
- помилка
- і т.д.
- все
- приклад
- Приклади
- виконано
- існуючий
- дорогий
- досвід
- додатково
- Face
- полегшує
- не вдалося
- false
- сім'я
- швидше
- Показуючи
- зворотний зв'язок
- філе
- остаточний
- в кінці кінців
- фінансовий
- фінансова служба
- Перший
- рибальський
- гнучкий
- фокусування
- стежити
- потім
- після
- слідує
- Слід
- для
- формат
- знайдений
- чотири
- каркаси
- заморожування
- від
- Повний
- Крім того
- покоління
- генеративний
- Генеративний ШІ
- отримати
- Давати
- Go
- буде
- GPU
- надавати
- апаратні засоби
- he
- чути
- допомогу
- допомагає
- тут
- Високий
- висока продуктивність
- його
- господар
- відбувся
- хостинг
- будинок
- Як
- How To
- Однак
- HTML
- HTTP
- HTTPS
- ID
- if
- зображення
- здійснювати
- реалізації
- in
- включати
- includes
- У тому числі
- зростаючий
- незалежний
- промисловість
- інформація
- інновації
- вхід
- витрати
- екземпляр
- інструкції
- страхування
- інтегрований
- Інтеграція
- в
- введені
- IT
- ітерація
- ЙОГО
- Java
- подорож
- JPG
- json
- тримати
- ключ
- Комплект (SDK)
- мова
- великий
- більше
- останній
- запущений
- шар
- шарів
- вивчення
- довжина
- рівень
- libraries
- бібліотека
- Життєвий цикл
- як
- Сподобалося
- Лінія
- список
- Лама
- LLM
- загрузка
- погрузка
- розташування
- довше
- любов
- знизити
- машина
- навчання за допомогою машини
- головний
- підтримує
- зробити
- управління
- багато
- максимізація
- пам'ять
- Злиття
- метод
- методика
- може бути
- ML
- модель
- Моделі
- Модулі
- монітор
- більше
- найбільш
- багато
- множинний
- Імена
- NAS
- Необхідність
- мережу
- мережевий трафік
- мережа
- Нові
- немає
- Нобелівська премія
- ніхто
- увагу
- номер
- of
- on
- ONE
- тільки
- на
- відкрити
- з відкритим вихідним кодом
- операції
- оптимізація
- Оптимізувати
- оптимізований
- варіант
- Опції
- or
- Інше
- інакше
- наші
- Результат
- контури
- вихід
- поза
- над
- власний
- пакет
- Папір
- Паралельні
- параметр
- параметри
- частина
- частини
- проходити
- пристрасний
- шлях
- продуктивність
- виконується
- план
- plato
- Інформація про дані Платона
- PlatoData
- будь ласка
- популярний
- пошта
- Пости
- влада
- Харчування
- практика
- Точність
- прогноз
- Прогнози
- Прогноз
- передумови
- приватний
- приз
- Проблема
- процес
- виробляти
- Production
- пообіцяв
- властивості
- забезпечувати
- публічно
- опублікований
- Python
- піторх
- діапазон
- ранжування
- швидше
- Читати
- читач
- читання
- отримано
- нещодавно
- рекомендувати
- зменшити
- послатися
- відноситься
- Сховище
- запросити
- запитів
- вимагається
- Вимагається
- дослідження
- ресурси
- відповідь
- відповіді
- право
- прогін
- біг
- жертвуючи
- мудрець
- зберегти
- шкала
- Масштабування
- сфера
- Sdk
- безшовні
- другий
- Друге покоління
- розділ
- безпеку
- побачити
- відправка
- старший
- Послідовність
- служити
- обслуговування
- Послуги
- виступаючої
- комплект
- установка
- установка
- кілька
- Короткий
- демонстрації
- показав
- показаний
- Шоу
- з
- один
- Розмір
- невеликий
- уривок
- So
- Софтвер
- розробка програмного забезпечення
- комплект для розробки програмного забезпечення
- рішення
- Рішення
- іноді
- Source
- Джерела
- спеціаліст
- конкретний
- зазначений
- standard
- почалася
- статистичний
- залишатися
- Крок
- заходи
- зберігати
- студія
- Успішно
- такі
- підтримка
- Підтриманий
- Опори
- завдання
- Навчання
- техніка
- методи
- тензорний потік
- перевірений
- текст
- Що
- Команда
- їх
- Їх
- потім
- Ці
- це
- через
- Тім
- час
- до
- знак
- Жетони
- занадто
- топ
- тема
- факел
- трафік
- поїзд
- навчений
- Навчання
- трансформатор
- трильйон
- правда
- намагатися
- налаштований
- настройка
- два
- тип
- Updates
- завантажено
- URL
- використання
- використовуваний
- користувач
- User Experience
- використання
- зазвичай
- ПЕРЕВІР
- підтверджено
- версія
- через
- Віртуальний
- ходити
- покрокове керівництво
- хотіти
- було
- we
- Web
- веб-сервіси
- вага
- ДОБРЕ
- Що
- Що таке
- який
- в той час як
- волі
- з
- в
- без
- Work
- робочий
- Робочі процеси
- запис
- лист
- Ти
- вашу
- зефірнет