Усі уроки · 44
Шлях 3 · Дорожня карта AI-інженера·Урок 2 з 33

Як насправді працюють LLM

Що таке велика мовна модель насправді: передбачення наступного токена, токени, навчання та інференс, контекстне вікно — і чому моделі іноді впевнено вигадують факти.

РівеньНовачокЧас~15 хв

Машина, яка дуже добре передбачає текст

Чому це важливо? Щойно ви зрозумієте, як усе влаштовано, «магія» стане передбачуваною, а збої моделі перестануть вас дивувати. Усе дивне, що робить LLM, — від вигаданого посилання на джерело до того, що вона «забула» ваше ім’я, — пояснюється одним-єдиним механізмом, про який ідеться на цій сторінці.

Якщо відкинути галас навколо ШІ, велика мовна модель (LLM) робить рівно одне: отримавши текст, вона передбачає, що буде далі. Ось і весь фокус.

Дайте їй початок фрази «Столиця Франції —», і вона обчислить імовірність кожного можливого наступного слова: «Париж» — найімовірніше, «це» — можливо, «банан» — навряд чи. Вона обирає одне слово, дописує його до тексту й починає спочатку. Так, слово за словом, будується будь-яка відповідь — від однієї фрази до кількох абзаців: модель постійно робить те саме — передбачає наступний фрагмент, додає його й передбачає знову.

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

Тепер уточнімо, чого в цьому циклі немає:

  • Модель нічого не шукає. Відповідаючи, вона не звертається до жодної бази даних. Факти зберігаються в її параметрах — числах, підібраних під час навчання, — і «спливають» у вигляді передбачень.
  • Модель мислить не так, як людина. «Міркування» у відповіді — теж передбачений текст. Воно часто допомагає, але нічого не доводить.
  • Модель не перевіряє власну відповідь. У самому механізмі немає нічого, що звіряло б результат із реальністю. Ця частина роботи — ваша.

Інференс: передбачення наступного токена

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

На кожному кроці модель семплює — тобто кидає «зважені кубики»: слово обирається випадково, але що воно ймовірніше, то більше в нього шансів. Наскільки «ризиковано» падають ці кубики, визначає одне налаштування — температура (temperature). Уявіть її як регулятор: за низької температури модель майже завжди бере найбезпечніше слово, а якщо повернути регулятор угору, дедалі частіше перемагають менш імовірні й несподіваніші слова. Спробуйте самі:

How temperature changes sampling
prompt›Столиця Франції —▍
Париж
90.5%
це
4.6%
місто
3.2%
Ліон
1.5%
банан
0.2%

low temperature → the sharp token wins almost always (safe, repetitive). high temperature → the distribution flattens, unusual tokens get a real chance (creative, risky).

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

Що це означає для вас

Майже будь-яка «дивна поведінка моделі», яку вам доведеться розбирати як AI-інженеру, пояснюється цим механізмом: токен за токеном модель кидає зважені кубики.

Токени: модель бачить не слова

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

Якщо спрощено, поширені англійські слова зазвичай вміщуються в один токен, а рідкісніші розбиваються на частини («astounding» може стати «ast» + «ounding»); числа часто розрізаються на окремі цифри. Слово «unbelievable» може становити три токени, а пробіл перед словом теж рахується.

Звідси чимало практичних дивацтв:

  • Моделі нерідко помиляються, коли треба порахувати літери в слові: самих літер вони не бачать, лише токени
  • Текст не англійською часто займає більше токенів (і коштує більше грошей) на одне речення
  • Ціни в API й обмеження на розмір контексту завжди вимірюються в токенах

Грубе правило: один токен — це приблизно три чверті англійського слова. Докладніше про все це — в уроці «Розмова з моделлю: токени, контекст і семплінг».

Навчання та інференс

Ці дві фази різняться і за вартістю, і за тим, що вони змінюють:

  • Навчання (training) — дорога фаза, яка відбувається один раз для кожної моделі. Моделі показують величезні обсяги тексту, і вона поступово підлаштовує свої внутрішні параметри — мільярди чисел, — щоб дедалі краще передбачати наступний токен. На це йдуть місяці роботи тисяч GPU (дорогих чипів, на яких працюють такі моделі), і займаються цим лабораторії, а не ви.
  • Інференс (inference) — те, що відбувається щоразу, коли ви користуєтеся моделлю. Параметри заморожені, з вашого чату модель нічого не вчиться. Вона просто проганяє текст уперед, токен за токеном.

З цього випливає висновок, який багатьом здається неочевидним: модель вас не пам’ятає. Закрийте чат, почніть новий — і вона нічого не знає про попередню розмову. Усе, що вона «знає» про вас, має поміститися в те, що ви їй надсилаєте. А це підводить нас до контекстного вікна.

Контекстне вікно

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

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

Один запит у контекстному вікні
Асистент для програмування з лімітом у 8 000 токенів
~0tokens
/ 8,000
press play to simulate
press play to simulate
0/5

Що видно в цій симуляції:

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

Керувати тим, що потрапляє в це вікно, а що лишається за його межами, — настільки важливе вміння, що в нього є власна назва й власний урок: контекстна інженерія (context engineering). У цьому курсі багато відсилань на кшталт «докладніше в іншому уроці», і це навмисно: кожна ідея має власний докладний розбір.

Розмова крок за кроком

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

З кожним повідомленням контекст росте
press the button below to send the first message
sent to the modelnothing yet — every message is sent in full

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

Усе — це один і той самий виклик

Чат, агенти, інструменти, RAG — усе це один і той самий виклик моделі, який повторюють з різним текстом.

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

Усе інше, що трапиться вам далі, — це той самий виклик, лише з іншим текстом у контексті:

  • Інструменти та виклик функцій (function calling) — у своєму продовженні модель просить запустити функцію; ваш код запускає її й вставляє результат назад у вигляді тексту.
  • RAG — ваш код знаходить потрібні документи й додає їх до контексту перед викликом.
  • Агенти — цикл викликів: на кожному кроці продовження моделі називає наступну дію, ваш код її виконує, а результат повертається на вхід.

Механізм один — передбачити продовження; змінюється тільки текст. Коли ви це зрозумієте, «розробка зі ШІ» перестане здаватися загадкою: це рішення про те, який текст подати на вхід і що робити з текстом, який вийшов на виході.

Чому моделі вигадують

Якщо модель така добра, чому вона впевнено стверджує те, що просто хибно, — вигадані джерела, неіснуючі функції, неправильні дати?

Тому що вона передбачає правдоподібний текст, а не правдивий. Здебільшого «правдоподібне» і «правдиве» збігаються — тому LLM такі корисні, — але це не одне й те саме. Коли модель доходить до місця, де вона не знає відповіді, вона не зупиняється й не мовчить. Вона продовжує текст так, як це виглядає найприродніше за статистикою. У такого збою є назва: галюцинація.

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

Правило інженера

Ніколи не сприймайте відповідь моделі як джерело істини. Ставтеся до неї як до доброго чорновика, який потрібно перевірити, — і проєктуйте продукт так, щоб перевірка була дешевою або автоматичною.

Абзац про ШІ та AGI

Чи складається передбачення наступного токена в «справжній інтелект»? Про це постійно сперечаються. Відповідь з інженерного погляду така: для вашої щоденної роботи це поки що не має значення. Те, що ми маємо сьогодні, — це вузький ШІ: інструменти з великими можливостями, яким і далі потрібна людина, щоб поставити мету, перевірити результат і відповідати за наслідки. Чи досягнемо ми AGI — систем із загальними здібностями на рівні людини — і коли, це захопливе питання, але воно нічого не змінює в тому, як ви створюєте надійну функцію цього року.

Перевірте себе

Ви двічі поставили те саме запитання й отримали дві різні відповіді. Що сталося?

Ви закрили чат і відкрили новий. Чому модель більше не знає вашого імені?

Чому модель іноді впевнено повідомляє вигаданий факт?

Є запитання?

Застрягли чи виникли запитання щодо цієї дорожньої карти? Заходьте до Telegram-каналу — залюбки все обговоримо.