`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

Sergey Petrenko

Сеанс викриття магії в AI

+33
голоса

Проблема з хайпом навколо технологій полягає в тому, що з'являється величезна кількість інформаційного шуму, який робить технологію якимось різновидом чарівництва. Так було з криптовалютами, і тепер таке саме спостерігається навколо AI та LLM. Тим більше, що спробувати той самий ChatGPT нескладно – це вам не з криптогаманцем розбиратися, – і спілкування у звичному інтерфейсі вебчату чи месенджера дає якісь розумні відповіді. Тож широкій аудиторії цілком віриться у твердження «AI можна натренувати так-то і так-то». І це дійсно так – натренувати можна, ось тільки безпосередній процес тренування якраз і стає тією самою «магією», яка за всіма правилами фокуса має залишитися незрозумілою профанам.

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

Отже, як же можна «натренувати» AI для вирішення якихось специфічних завдань? Наприклад, ви хочете, щоб AI виконував роботу підтримки у вашому бізнесі, відповідаючи на постійні запитання користувачів. У вас є якась кількість інформації – база знань, – для відповідей на запитання, можливо, у вас є архів спілкування з користувачами, де є правильні відповіді на часті запитання.

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

Фактично, у цьому варіанті основна роль LLM – це розпізнати непередбачуване запитання користувача, зіставити його з наявною інформацією і зв'язно сформулювати релевантну відповідь. Якщо провести аналогію, то це така робота оператора підтримки, коли його з вулиці без підготовки посадили відповідати на запитання, давши кілька сторінок фактичної інформації. Він і відповідає, а коли клієнт інтернет-провайдера раптом скаржиться на озноб і ломоту в кістках, він каже щось на кшталт «Ну, взагалі суто по-людськи я вам раджу теплий чай із малиною».

Мінуси такого підходу очевидні – обсяг промпта сильно обмежений і ви не зможете вкласти туди щось дійсно об'ємисте. Крім того, попри постійне зниження цін на доступ до LLM, постійно надсилати об'ємистий шматок інформації в промпті може виявитися накладним. Якщо у вас невеликий магазин або бізнес, асортимент товарів чи послуг якого обмежується кількома позиціями, можливо, вам цього вистачить. А ми підемо далі.

Наступна опція, яку досі часто обирають, – це Custom GPT в OpenAI (або Assistants, якщо ви використовуєте API). Практично, ви працюєте з тією ж моделлю LLM, тільки в промпті ви даєте винятково інструкції, а всю інформацію можете завантажити у вигляді файлів, і модель буде нею керуватися під час відповіді на питання. У цьому разі ви не так обмежені розміром контексту (128K токенів для GPT, наприклад), оскільки можна завантажити до 20 файлів, об'ємом у пів гігабайта кожен, тобто всього 10 ГБ інформації. Якщо повертатися до аналогії з підтримкою, то цього разу людина з вулиці має докладну інструкцію, як відповідати на запитання, і доволі об'ємну бібліотеку, в якій можна знайти необхідні факти.

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

Якщо ви хочете отримати більш гнучке рішення порівняно з Custom GPT, вам треба рухатися в бік RAG-бота. RAG – Retrieval-Augmented Generation – це підхід, який базується на вилученні моделлю інформації із зовнішніх джерел і генерації відповіді на основі знайденого. Загалом він робить те саме, що й Custom GPT з увімкненим file search – отримує запит, шукає в певних джерелах інформацію за ним і формулює зв'язну відповідь. Головна відмінність від попереднього пункту полягає в тому, що ви не обмежені вибором одного провайдера, не маєте обмежень щодо обсягу інформації в зовнішніх джерелах, кількості та характеру джерел, частоти їхнього оновлення. Утім, зворотний бік цих можливостей полягає в тому, що вам доведеться зайнятися розробкою – навіть розгортання готового рішення для пошуку за джерелами потребуватиме певної кваліфікації. А якщо захочете написати щось своє, наприклад, з використанням text embeddings і векторної бази, то доведеться і код писати. Або спантеличити цим той самий AI – у моєму випадку він цілком впорався.

Масштабність розробки можна знизити, якщо вдатися до Function Call – можливості, яка є і в OpenAI, і в Anthropic, і навіть у багатьох відкритих моделей. Фактично, ви надсилаєте в API промпт, у якому вказуєте, щоб модель викликала певну функцію (наприклад, ваш пошук за джерелами) під час відповіді на певні види запитань (або всі запитання).

У такого підходу є ще низка переваг, але розгляньмо ще один варіант спочатку. Часто кажуть «Я натренував модель» і це виглядає вищим пілотажем. Звісно, здебільшого не йдеться про повний процес навчання – у міру розвитку моделей це стає нереальним технічно для пересічних розробників. Частіше говорять про fine-tuning (тонке підстроювання) наявної моделі – це може бути як відкрита модель на базі Llama, так і низка моделей OpenAI. Anthropic не надає такої можливості.

Що являє собою fine-tuning? Ви берете наявну модель і завантажуєте в неї навчальний набір даних, що містить специфічне знання в тій галузі, де ви хочете використовувати модель. Наприклад, це базова інформація про вашу галузь, яскраві приклади запитань і відповідей, нормативні документи тощо. Модель, навчаючись на даних, перебудовує вихідні параметри, «засвоюючи» базову логіку вашої діяльності, специфічні терміни, стиль відповідей користувачам, велику кількість фактичної інформації.

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

Щоправда, мінуси цього підходу добре простежуються і в аналогії. Навчання навіть у випадку з fine-tuning – процес не моментальний і не дуже дешевий. Підготовка даних для навчання – процес досить складний. Якщо ваша модель має відповідати на запитання, що стосуються якоїсь свіжої інформації, процес навчання доведеться повторювати регулярно. Крім того, під час fine-tuning модель не зберігає весь корпус даних явно – тому вона може «не згадати» конкретний факт або конкретний текст документа. Знову ж таки напрошується аналогія з людиною – навіть чудово підготовлений фахівець може забути конкретне формулювання з якогось рідкісного документа, хоча цілком розуміє його логіку.

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

Я попереджав, що текст буде дуже спрощено описувати можливості «навчання» моделей для власних завдань – у ньому немає більшості технічних деталей, хоча можна написати кілька статей про реалізацію пошуку, підготовку датасетів, тестування навченої моделі тощо. Але, сподіваюся, що принаймні в який бік копати стало зрозуміліше.

Сеанс викриття магії в AI

Комп’ютерний розум: генеративний штучний інтелект у рішеннях AWS

+33
голоса

Напечатать Отправить другу

Читайте также

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT