Як і чому працює ChatGPT Assistant model. Пояснює Data Scientist

💡 Усі статті, обговорення, новини про AI — в одному місці. Приєднуйтесь до AI спільноти!

Привіт, спільното!

Мене звати Паша, і я вже понад 6 років займаюся Data Science. Наразі працюю в Universe Group — продуктовій IT-компанії, яка спеціалізується на розробці мобільних та вебзастосунків, зокрема й AI-застосунків для iOS. Встиг попрацювати з великою кількістю проєктів — від регресійних банківських моделей до цілих систем продуктів у сферах рекомендаційних систем, NLP та CV.

У цьому матеріалі я розповім про роботу моделі ChatGPT Assistant: які принципи лежать в основі її навчання та чому вона демонструє саме такі результати. Ділюсь досвідом, який буде корисним для Data Science-інженерів, технічних команд, CEO, CTO та всіх, хто використовує або планує використовувати цей інструмент у своїй роботі.

Архітектура

Джерело

Процес створення ChatGPT Assistant можна розділити на чотири основні етапи:

  • Pretraining
  • Supervised Finetuning
  • Reward Modeling
  • Reinforcement Learning

Розглянемо кожен з них детальніше.

Етап 1. Pretraining — база для ChatGPT

Джерело

Перший етап навчання ChatGPT є головним і займає 99% часу та ресурсів. У процесі Pretraining ми працюємо з величезними датасетами, зібраними з інтернету. Навчання моделі на цьому етапі потребує понад 1000 GPU і триває місяцями.

Для навчання збирається масштабний датасет, відомий як Data Mixtures. Цей датасет складається з якісних джерел: GitHub, Wikipedia, ArXiv, Books, StackExchange. А також містить дані з широкомасштабного парсингу інтернету (CommonCrawl, C4). Такий підхід дає моделі змогу охопити різноманітні стилі та теми тексту, формуючи міцну основу для її роботи.

Наприклад, база для моделі LLaMA (LLaMA: Open and Efficient Foundation Language Models) створюється аналогічним чином. Цей підхід забезпечує універсальність і масштабованість, які так важливі для сучасних систем ШІ.

Токенізація: як текст перетворюється на числа

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

Наприклад, різні типи токенізації можуть виглядати так:

  • Word Tokenizer: [’позавчора’, ’був’, ’прекрасний’, ’день’, ’!’]
  • Character Tokenizer: [’П’, ’о’, ’з’, ’а’, ’в’, ’ч’, ’о’, ’р’, ’а’, ’ ’, ’б’, ’у’, ’в’, ’ ’, ’п’, ’р’, ’е’, ’к’, ’р’, ’а’, ’с’, ’н’, ’и’, ’й’, ’ ’, ’д’, ’е’, ’н’, ’ь’, ’!’]
  • Subword Tokenizer (на основі Byte Pair Encoding, BPE): [’поза’, ’вчора’, ’був’, ’прекрас’, ’ний’, ’день’, ’!’]

У GPT застосовується Subword Tokenizer, адже він забезпечує оптимальний баланс між кількістю токенів і якістю розуміння тексту. Наприклад, кількість унікальних токенів у GPT може варіюватися від 10 до 100 тисяч. Використання Word Tokenizer призвело б до роботи з мільйонами слів, що значно ускладнило б процес генерації та точності моделі. З іншого боку, Character Tokenizer обмежує модель лише декількома десятками символів, що недостатньо для якісного навчання. Тому Subword Tokenizer є найоптимальнішим вибором для забезпечення продуктивності та точності моделі.

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

Для практичного ознайомлення з процесом токенізації та конвертації тексту в токени можна скористатися інструментом Tokenizer — OpenAI Platform.

Ось приклад роботи токенайзера:

Архітектура Transformer

Transformer є основою для багатьох сучасних моделей обробки природної мови. Ця архітектура, хоч і складна, відзначається своєю ефективністю та гнучкістю. У цій статті ми розглядаємо основні принципи її роботи, але для супер просунутого розуміння можна зазирнути сюди Attention Is All You Need.

Головна особливість цієї архітектури — механізм уваги (Attention), що дає змогу моделі акцентуватися на найважливіших частинах тексту.

Наприклад, у реченні: «Кіт сидить на синьому килимі поблизу білого шкіряного дивану» механізм уваги не матиме потреби тримати всю інформацію у пам`яті. І при запиті до LLM з питанням: «де сидить кіт?» — модель концетруватиметься лише на тій частині речення, де лежить відповідь. При генерації відповіді LLM матиме більший фокус (враховуватиме вагу слів) на частину «на синьому килимі», ніж на решту речення. Це дуже важливо при роботі з величезними контекстами!

Архітектура Transformer складається з двох основних компонентів: енкодерів та декодерів. Енкодери аналізують вхідний текст, а декодери генерують новий. У випадку перекладу тексту енкодери аналізують текст однією мовою, а декодери генерують його на іншій.

Послідовна генерація

Коли модель генерує текст, вона робить це токен за токеном. Для кожного наступного токена модель враховує весь попередній контекст. Наприклад, якщо подати моделі фразу «be healthy», вона може продовжити її до «be healthy and wealthy», враховуючи поширеність такого виразу в навчальних даних.

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

Після тривалого навчання базова модель готова. Вона ще не є GPT-асистентом, не здатна відповідати на питання чи вести бесіду, але вже може генерувати осмислений текст, продовжувати речення, ґрунтуючись на знаннях, здобутих під час навчання. Основна задача цієї моделі — намагатись правильно вгадати наступний токен на основі своєї величезної бази знань про людські тексти.

Гарною ілюстрацією того, як модель навчається, є наступний слайд:

GPT from scratch, NYT, 2023

Після тренування моделі Transformer на поемах Шекспіра результати генерації тексту демонструють етапи розвитку її здібностей:

1. Без навчання. На початку, коли модель ще не пройшла процес навчання, її вихід є хаотичним набором символів і токенів без жодного сенсу.
2. 250 епох: після 250 епох навчання модель починає помічати загальні мовні конструкції. Хоча текст усе ще виглядає випадковим, з’являється спроба використання розділових знаків і базових правил мови.
3. 500 епох: модель уже здатна генерувати реальні слова. Проте ці слова все ще розташовані без логіки, а фрази не мають сенсу.
4. 30,000 епох: до цього моменту модель досягає зрілості. Її текст стає зв’язним, із правильною побудовою речень, а стиль відповідає матеріалам, на яких вона навчалася. Вона має глибоке розуміння конструкції мови та стилістичних особливостей Шекспіра.

Ось і вся магія :)

Етап 2. Supervised Finetuning. Додавання людяності

Джерело

Після першого етапу ми отримуємо базову модель, натреновану на великому, але неякісному наборі даних з інтернету. Вона здатна передбачати наступний токен, але не може формувати ввічливі, приязні й корисні відповіді. А також не використовує NSFW-фільтр.

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

Джерело

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

Етап 3. Reward Modeling. Як оцінюють відповіді моделі

Джерело

Третій та четвертий етап використовує метод RLHF (Reinforcement Learning with Human Feedback). На третьому етапі створюється модель оцінки відповідей. До кожної відповіді додається спеціальний токен, який оцінює її якість:

<prompt> <answer> <reward>

Приклад:

Generate a motivational quote Success isn’t about the destination; it’s about the journey you take, the challenges you overcome, and the growth you experience along the way. 0.7

Значення 0.7 — це оцінка якості відповіді, визначена Reward Model. Тобто на цьому етапі тренується окрема модель, здатна оцінювати якість відповідей, згенерованих GPT.

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

Перше:

Друге:

Третє:

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

Для чого використовується порівняння кількох варіантів

Порівняння дозволяє точніше оцінити якість відповіді. Наприклад, якщо у вас є лише один варіант, важко точно визначити його позицію на шкалі від 0 до 1. Проте ви можете значно точніше сказати, який із 2 варіантів вам сподобався більше.

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

Етап 4. Reinforcement Learning. Донавчання на основі оцінки якості

Reward Model, розроблена на третьому етапі, сама по собі не застосовується. Її роль полягає в підготовці до четвертого етапу — reinforcement learning. На цьому етапі формуємо датасет з 10-100 тисяч промптів, відповідей і оцінок, згенерованих Reward Model.

Ці дані служать основою для донавчання моделі, яка була отримана на другому етапі (Supervised Finetuning model). Під час такого процесу ймовірність появи кожного наступного токена коригується залежно від оцінки, яку отримує промпт-відповідь. Якщо промпт-відповідь отримала низьку оцінку, зменшуємо ймовірність подібних послідовностей у майбутніх генераціях. Навпаки, висока оцінка збільшує ймовірність повторення подібних токенів.

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

Цей підхід — Reinforcement Learning з використанням людського фідбеку (RLHF) — став стандартом серед сучасних LLM-моделей, оскільки він показує найкращі результати.

arXiv:2203.02155v1 [cs.CL] 4 Mar 2022

Більшість сучасних LLM-моделей, які є лідерами рейтингу в Leaderboard, використовують саме підхід RLHF.

LMSys Chatbot Arena Leaderboard — a Hugging Face Space by lmsys

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

Не бійтеся заглиблюватися — що більше ви знаєте, то ефективніше зможете використовувати ці знання. Успіхів на цьому шляху!

👍ПодобаєтьсяСподобалось17
До обраногоВ обраному7
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Дуже цікаво, дякую!
Простими словами про складне, люблю таке.

Було б цікаво ще дізнатись як описана робота із текстом поєднується із робою над зображенням:
1. Розуміння зображення — генерація текстового опису завантаженого зображення.
2. Генерація зображення — перетворення тексту у образи.

Чи правильно я розумію, що натренований трансформер із етапу 1 «Pretraining — база для ChatGPT», перевикористовується для цих графічних задач?

Классна стаття, дякую

Дякую, досить пізнавально

Молодець! Дякую за статтю!

Як ChatGPT розрізняє дані і команди? Статистична генерація зрозуміла інтуїтивно, але як модель може розібрати текст на команду і дані, і виконати вказану команду над даними?

Архітектурно LLM не мають можливості чітко розділити дані та інструкції в запиті. Instruction tuning, який до них застосовується, змушує їх перекалібрувати механізм уваги та механізм передбачення наступного токена таким чином, щоб генерувався текст, схожий на «правильну відповідь», задану при тюнінгу. Наприклад, модель після тюнінгу може стати більш чутливою до типових наказових дієслів, які є в інструкціях. Також модель отримує інформацію про позицію токена в тексті і пристосовується до того, що інструкція зазвичай іде на початку чи в кінці запиту. До речі, ця неможливість відділити активні дані (інструкція) від пасивних (контекст) є причиною таких вразливостей як jailbreak чи prompt injection.

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

Тому і доводиться гратися з промптами і слідувати рекомендованим best practices, щоб добитися бажаного результату від моделі.

[
    {
        "role": "system",
        "content": "You are a helpful assistant, ..."
    },
    ...
]

дуже корисна стаття — зрозуміло і для Data Scientist і для будь кого, зацікавленого у темі)

Дякуємо за відгук! Раді, що вам було корисно)

Гарна робота. Я уявляв, ШІ є екстраполяція по багатьох факторах (числова екстраполяція нам відома), а це екстраполяція на семантичній множині, чи можливо це не так?

Ші моделі простіше уявляти як велике рівняння, або набір рівнянь (навіть лінійних) котрі в рамках одної моделі llm здатні по введеному тексту прогнозувати імовірність слів у відповідь. Мілліарди параметрів, це просто числові коефіцієнти підібрані в процессі тренування перебором, що перемножаються з введеним вектором чисел(ваш конвертований в числове представлення prompt) . на виході після перемноження — це рівняння дає найбільшу імовірність одному із слів про які модель знає. Коефіцієнти в моделі ключове в процесі тренування, весь процесс тренування підібрати коефіцієнти так щоб видані слова були максимально схожі до тих речень що використовують для тренування(це і є зменшення градієнту або простіше похідної функції, що визначає похибку моделі), епохи це прогонка тренувального сету з новими коефіцієнтами, що коригуються у напрямку зменшення градієнту.

Підписатись на коментарі