Правильны выбор розміру LLM: направлення, выкарыстоўванне і ацэнка на адпаведнасць розміру самага модэля.
Выучыце, як выбіраць межу малых і вялікіх мовных модэляў на адпаведнасць навантажэнню, вырахоўваць косць за кожную успешную задачу, а таксама спачатку викорыстоўваць механізмы направлення, RAG, кэшавання і пераканання.
Колькасць параметраў лёгка выкорыстоваць для стварэння заголовакаў, і ёсць спрага адносіцца да іх як да прамаркера якосці продукту: модель на 70 мільярдаў параметраў павінна перамагаць модель на 7 мільярдаў, таму самая большая модель, яку вы можете сабе дазволіць, павінна быць безпечным выборам. У рэальных умовах такі спрощаны падход быстра перастае работаць. Большыя моделі зазвычай коштаюць дорожэ за кожны вызов, адпавядаюць медленней, збільшуюцы навантажэння на інфраструктуру і часта рашаюць проблемы, якіх у вашам прыемніку няма. Шэры рукаводзіць паказвае, як выбіраць модель на адной заснове навантажэння, а не розмеру, як разумецца з вартасцю, часам адпаведзення і можлівымі бядаў, а таксама якія архітектурныя элементы (маршрутызацыя, запошук, верыфікацыя, кэшаванне і сам код) зазвычай даюць большых рэзультатаў, чым проста апгрэйд.
Чаму тэза «чым больш, тым лепш» перестае работаць у рэальных умовах
Інтуіцыя зрозумелая. Інжынеры працоўнікаў праграмнае абладнання гадзіны за гадамі бачылі, як апгрэйды апаратнага забезпечэння прыносяць практычныя выгоды: быстрэйшы CPU, большая колькасць RAM, большыя дыскі і новейшы GPU практычна завжды ўлучшуюць кантрольную сістэму. Калі моделі мовы сталаў большымі і болей спроможнымі, здавалася прыродным перанесці гэтую ментальную модель. Якшо адна модель мыслі лепей, чым іншая, то чаму хтось мусіць навмысна выбраць слабейшую?
Адказ з’яўляецца тады, калі модель выканае рэальную задачу. Запыт, які вы ставяце, пераходзіць з „Калькі модель ўсёга розумнейшая?“ на „Калькі модель дае найлепыя рэзультаты для гэтай конкретной задачы?“. Это аблічна разныя запыты. Найбольшая па велічыне модель можа дастаць адносна лепшы адказ, пры тым як працюе значна медленней. Яе викорыстанне можа коштаць у калькі разоў больш. Для простага крока класыфікаціі яна може быць безпраганной, даваць адказы, якія занадта дугі для прадставлення ў інтерфейсе, выкарыстоўваць усю наявную кантэкстовую меморыю і ускладніць процес розмешчэння. Найважлівейшае — яна може рашаць проблему, якой у вас на самай працэ няма.
Пачніце з обсягу работы, а не з колькасці параметраў
Болей надзеяны спосаб выбору модэлі — це пачатак з апісаў самай работы. Перш чым пораўняваць якія-небудзь модэлі, адпаведзіце на следуючыя запыты:
- Як выглядае вхідны даны?
- Какія рэзультаты апэктываюцца?
Гэтыя апошнія пытанні ёсць справжнімі інжынерскімі пытаннямі, і рэшты гэтага кяліку прызначаны для ўтварэння адпаведзей на яны: чаму найбольшы модель не ўсега є апошняя найкращая, як выбіраць межы маленькіх і вялікіх модэляў, калі вялікая модель дзе-небудзь справды прадстаўляе сабою цэннасць, і як выглядае розумны дизайн для практычнага выкарыстоўвання.
Адна продукт-падтрымка, два абсалютна разныя навантажэння
Разглянем прыклад аплікацыі падтрымкі для предпрыема. Пользователь запішвае «Скасаваць мой пароль». Чаго павінен дасягнуць шар AI? Найбольш верагодна, што ён проста распазнае намерэнне і перакладзе яго ў адпаведную катэгорію, каб аплікацыя могла перадаць задачу у фіксаваны, дэтерміністычны процес обработкі.
PASSWORD_RESET
Для падбору такой катэгоріі не трэба складных моделей для рассудкавання. Перадача такога запиту через такія моделі была б сумнівным выборам у дизайне, адколі лёгкая модель чы ўсьмо можа справіцца з цим за дапамогою падбору ключоўых слоў і правілаў.
Тепер уявім другі запит: еўропейскія кліенты з учорашньага розгляду сталкуюцца з періядычнымі неудачамі платежаў, і пользователь хоча, каб система поравняла змяны пасля розгляду з логамі службы платежаў, выявіла верагодныя прычыны неудач, ацэніла, чы не ўжо задействаван механізм паўтарных спроб, і запропанавала план вярнення да пачатковага стану. Для такога запиту трэба набагато больш:
- Адзыявленне супаўязаных змян у разгортанні та лог-данных
- Моцны контэкст
- Здатнасць чытаць і розумець код
- Аналіз выходных данаў лог-файлаў
- Мышлэнне, якое абходзіць калькі шагоў
- Корэляцыя падзеяў у розных системах
- Чыстая тэхнічная адпаведзь
- Чыстае стаўленне да неяснасцей
У такім случае более моцны модель можа справжнья падняць цэннасць. Памылка — не ў вжыванні большай модэлі; яна крыўдзіцца ў тым, што гэтыя два запиты спрыймаюцца як адна і тая ж робота.
Функцыональная дэфініцыя цэннасці модэлі
Корыстны спосаб прыняцтва рашэння — грубая хіюрістыка:
Цэннасць модэлі = здатнасць × надзеямасць × корыстнасць ÷ кост
Это не формула, якую трэба вырахаваць. Це спосаб мышлення. Модель, яка на 10% ўжо спроможнейшая, але у пяць разоў дорожэйшая і у тры разы медленнейшая, не ўсега являецца лепшым варыянтам для працы. Так сама модель, якая ўжо дужа дешавая, але ненадзейна для вашай задачы, таксама ўжо паслаблена выбор. Тое, што вы оптымізаваеце, — гэта не максимальная спроможнасць, а найбольшая корыстная спроможнасць за единицу костов, часу адпаведзення і складнасці.
Чаму вялікія моделі ўаблажаюць, і дзе з’яўляюцца абмежэння
Выбіранне вялікіх модэляў не ёсць ірасыональным, таму што яны маюць рэальныя перавагі. Яны часта краща справляюцца з сложнымыя міркуваннямі, аддаюць стабільнейшыя рэзултаты па разным заданням, болей граматна інтэрпретуюць нечысткія інструкцыі, эфектываўша керуюць складнымі кодавымі базамі, патрабуюць менш спецыфічных падказак для выпання задач і можу быць набліжна ўжо спроможнейшыя па справжняя складная праця.
Тады чаму бы не вжываць найсильнейшую модель у всіх ситуацыях? Таму што працэўнае выкарыстоўванне стварае абмежэнняя, якія рэдка калі бачыцца ў показніках табеля лідэраў. Уявіце канечную точку, якая обробляе 100 000 запытоў на дзень. Якшто большая модель коштуе значна больш за адну выкліканне, гэта разныця стае рэальной; яна паслявісяўць у бюджэте інфраструктуры. Якшо большая модель таксама працюе медленней, корыстувачы гэта заўважаюць. Якшо яна склонна да давальніцтва дужа дзялёных адказоў, зростае кількасць токенаў, якія витрачаюцца. А якшо прыложэнне выканае тыячы маленьких задач, адправка кожнай з іх да прыглушанага модэлю для рассуджэння — гэта проста марнацькасць.
Выбір модэлі — это задача оптымізацыі, а не конкурс популярнасці.
Модэль, якая знаходзіцца на вершыне табеля критэрыяў, не павінна быць той, якая стварае найкращае прыложэнне.
Колькасць параметраў — толькі адна з вялічын.
Порэшчанні межы моделяй частацай сфокусаваюцца на ўжыме: 7B, 13B, 34B, 70B, сотні мільярдаў. Толькі ужым сам по сабе мало ўказвае на падходзямасць. Практычнае порэшчанне ахватваяць калькі параметраў адразу, напрыклад:
- здатнасць выпалняць конкрэтную задачу
- затрымка, як час до першага токена, так і загальны час генеравання
- выцэнка за запит і за адной успешна выпаленай задачы
- праўоцэс пад прынятым навантажэннем
- велічына контексту, якая насправды патрэбна для задачы
- надзеямасць і адносна стабільнасць пад час паўтаральных запускаў
- варыянты размешчэння, укладаючы локальнае або прыватнае хоставанне
- контролюемасць
Контролюемасць заслуговае на ўвагу, таму што яе лёгка праціснуць. Модель можа быць высокаяпасаблівай, але ёй можа быць важка падтрымвацца ў межах. У корпаратыўных робочых практыках праўдападабнае паведанне часта мае большую цэню, чым креатыўнасць.
Структураваны выкарыстоўваньне — гэта іншая мета
Возьмім выкарыстоўваньне рачынкі. Цям патрэбна фіксаваная структура, як та, што паказана нижэй, а не деталізаваны твор пра дакумент.
{
"invoiceNumber": "...",
"invoiceDate": "...",
"vendor": "...",
"total": 0
}
Гэтам часу важна надзеяны, правільна сформаваны выхідны дадзеныя, якія код, які працуе пасля, можа парсаваць ў кожны раз. Гэта аднае з метаў оптымізацыі, не адносна загальнай спроможнасці рассуджання, і меншыя або болей обмежаныя моделі часта добра яе адпаведзяюць, особліва калі яны аднаўляюцца з перакананнем схэмы.
Затрымка: першая пастка у прыменэнні
У дэмаверсіі шасцячасовая пауза здаецца нормальной. Рэсультат ўражаючы, вы яго дзеліцеся з камандай, і всі задоволены. Але якщо той самы процес размістіць пад кнопкай у рэальным прыемліку, атмасфера зменяецца: корыстувач нажымае кнопку, паказваецца індыкатор загрузкі, і прыходзіць тры, пяць, восьмі секунд. У такі момент ніхто не захопляецца інтэлектам моделі — усі думаюць, чаму прыемлік такі повольны.
Затрымка ёсць атракцыям продукту, і ў інтерактыўным програмнаму забезпечэнні яна мае вельмі важлівое значэнне.
Чаму большыя моделі зазвычай адпавядаюць повольней
Точныя зв’язкі залежаць ад багато фактараў: архітектура моделі, апаратна частка, тэхнологіяы сервірування, квантавацыя, групаванне дадзенняў, колькість гэнераваных токенаў, размер прыказу і дизайн моделі. Але як загальная тэндэнцыя, моделі, якія выкалічваюць большыя вычысловыя зусиллі, патрабуюць большых рэсурсоў на кожны токен і можу вярнуць рэзультаты повольней. Гэта мае наібольша значымасць у:
- інтерфейсы чату
- асыстэнты для напісання коду і функцыя автадаптавання
- голасовыя асыстэнты
- інструменты падтрымкі кляўэнтаў
- інтэрактывныя панелі керування
- робочыя практыкі з агентамі, дзе час чакання нарастае ў кожным кроцы
Функцыя автадаптавання чыста і ясна выказвае гэты момент. Прыпуск коду, які трэба чакаць пяць секунд, вядомы не як автадаптавання, а як перакрыцэнне. Меншы модель, якая адпавядае практычна мгновэна, часта ў дзiesяць разоў корыстнейшая, чым моцнейшыя моделі, якія змушають разработчыка чакаць.
Стрімаванне паспяшае спрыйманне, а не вычысленні
Стрімаванне — это стандартны спосаб зменшыць вочную дужыну часу чакання. Без яго корыстнік нічога не бачыць, пакуль не будзе готава ўсё адпаведзенне:
[wait...]
Hello! Here is the answer...
За дапамогою стрімавання тэкст падае на экран праз адпрыем лічбовых елементаў:
Hello
Hello, here
Hello, here is
Hello, here is the
Hello, here is the answer...
Неабяжна чыстая разліка. Стрімаванне зменшае вярбованы латэнс, таму што першыя словы з’являюцца быстра, але яно не зменшае колькасць выкарыстоўваных ресурсаў чы загальны час, пакуль не будзе готава адпаведь. Цэў улучшэнне корыстніка, а не оптымізацыя працэсаў, і яно нічога не робіць для неінтэрактыўных элементаў, такіх як класыфікатор у рамках пайплайну.
Косць: вымеры за кожны успешны заданні
Багато пратотыпаў становяцца дорогімі системамі самэ ў гэты момант. У перыод разработкі выкарыстоўваны ресурсы здаюцца незначнымі: аднам інжынеру падае калькі запитоў, і ніхто не думае пра счытанні. Потым пачынаеся рэальны трафік, і кожны запит можа несці значна большы масштаб дадзеных, чым проста паведамленне корыстніка:
- багато адночасовых корыстнікаў
- калькі запитоў за сесыю
- дзялёныя запиты
- завучаныя дакументы
- рэзультаты інструментаў
- історыя кантактаў
- сгенераваныя адпаведзі
Колькасць токенаў быстра расте, і выбор модэлі становіцца вельмі значным фактарам.
Болей адрадны показнік, чым цена за кожны вызыв, — гэта косць правільнага выканання задачы. Порашчыліце два гіпотэтычныя модэлі (цыфры ўказаны для ілюстрацыі, а не як рэзультаты теставання):
- Модэль А: $0,01 за кожны запит, 90% тачнасць выканання задачы, пра 1,11 запитоў патрэбна для аднаго успеху, прыблізна $0,011 за адну задачу, выкананую правільна.
- Модэль Б: $0,05 за кожны запит, 96% тачнасць выканання задачы, пра 1,04 запитоў патрэбна для аднаго успеху, прыблізна $0,052 за адну задачу, выкананую правільна.
Апэктыўваная колькасць спроб — это проста адна, дзеленая на шчыткість, таму косць за адну успехоўную спробу — это цена запытку, дзеленая на точнасць. Якщо Модэль B коштае у пяці разоў больш, хоча павышае рэзультаты толькі незначна, то падпрыёмство можа разумна выбраць Модэль A. Ситуацыя змінюецца, калі неправильны адказ мае вялікія наследкі, напрыклад, калі ён вызывае вярненне грошаў, проблемы з адпаведнасцю чы перывод служб. Самэльчына прычына — косць завжды трэба ацэніваць разам з наследкамі няудачы, а не сама па сабе.
Модэлі з вялікімі розмарамі для проблем малага розмару
Звычны анти-шаблон выглядае так: кожна прыходзячая паведамленне класифікуецца як жалоба, запытка або запытка прызначэння грошаў назад, і кожна з іх прабівае да самага супертачнага доступнага модэлю. Прычына — зручнасць: адна API, адна запытка, адны модэль, і ўсё готава. Але архітектура не стосуецца таго, каб адна складовая была здатная на все; яна стосуецца падбору адной складовай для кожнага заведамчыка. Для простой класыфікацыі існуюць такія варыянты:
- дэтэрміністычныя правілы
- ембеддынгі
- маленькі мовны модэль
- спецыяльны класыфікатор
- большы модэль, прызначаны для случаў з нізкай доверлівасцю
Пяршы варыянт ведае да аднаго з найэфектывнейшых шаблонаў для практычнага выкарыстоўвання.
Эскаліяцыя: дорогі модэль як працоўнік з рашэнням асаблівых случаў
Простакавы дизайн адправляе все без адліканняя да большага модэлю:
Every request
↓
Large model
Дыяграма эскалірацыі дазволяе дашчаваму модэлю спачатку прабавіцца і пераканацца, насколькі ён упэўнены:
Every request
↓
Small/cheap model
↓
Confidence check
↓
┌───────────────┐
│ │
High confidence Low confidence
│ │
Fast answer Large model
Адказы з высокай ступенем упэўненасці вяртаюцца негайна; толькі неясныя кейсы пераходзяць да большага модэля. Дорогі модэль перестае быць стандартным варыянтом і становіцца працоўнікам з рашэнням асобых ситуацый. Гэты патэрн залежыць ад наявнасці надзеянага сигналу упэўненасці, такога як калібраваны рэйтынг класыфікатора, згода между методамі або верыфікатора, який можа адхіліць некоректны выход, таму трэба пераканацца, насколькі часта некалітэрныя адказы праскальзваюць через галузь „высокай упэўненасці“, прычым паклікаючыся на яе.
Рулюванне запитамі между роўнемі модэляў
Калі вы так думаеце, модэлі перестаюць выглядаць як канкурэнты і стаюць сябрамі спецыялізаваных працоўнікаў. Маршрутазёр можа стаяць перед кількома рэвярамі і выбраць правы для кожнага запиту, праз спяльны крок верыфікацыі прытаманны ўсім запитам перш чым яны дасягнуць корыстніка:
User Request
|
v
Request Router
|
+-----------+-----------+
| | |
v v v
Simple Medium Complex
| | |
v v v
Small LLM Mid Model Large Model
| | |
+-----------+-----------+
|
v
Validation Layer
|
v
Response
Маршрутазёру патрэбна якаясь уява пра складнасць. Найпростейшая версія — это маленькі набор катэгарыяў:
SIMPLE
MEDIUM
COMPLEX
Логіка дыстрыбюцыі можа быць настолькі простая, як пераключанне на адпаведны вердыкт класіфікатора. Прыклад нижэй напісаны на C#, але мова ў гэтым некалькі значыць; тая ж структура чыста падходзіць і для сервіса на TypeScript.
public async Task<string> ProcessAsync(Request request)
{
var complexity = await classifier.ClassifyAsync(request);
return complexity switch
{
Complexity.Simple =>
await smallModel.GenerateAsync(request),
Complexity.Medium =>
await mediumModel.GenerateAsync(request),
Complexity.Complex =>
await largeModel.GenerateAsync(request),
_ => throw new InvalidOperationException()
};
}
Важна ўсё тая архітектурная позыцыя, яку выражае код: не кожны запит заслуговы на максимальную ступень інтелігентнасці. Якщо така пазычка будзе застосавана адносова стабільна, яна можа значна змяніць эканоміку AI-сістэмы. Згадаўце, што сам класіфікатор дадае адзін вызов і певную затрымку для кожнага запиту, таму ён павінен быць значна дешэвей, чым моделі, к якім ён перадае запиты, а неканальная катэгорія павінна спрацаваць з явнымі проблемамі, як гэта робіцца у стандартным варыянте.
Калі прасоць — у знаннях, а не ў інтелігентнасці
Іншы часты рефлекс — „Модель не знае нашу внутраню дакументацыю, таму давайце перейдзем да большай моделі“. Размер не вирашае проблему нехваткі знанняў. Калі інформацыя є ексклюзывной, недавняй або высока спецыялізаванай, проблема заключаецца ў доступе да знанняў, а не ў сіле разумовых вычынкаў. Самэ гэтае прыбліжае ся да рашэння, якое дае метод Retrieval-Augmented Generation (RAG). Базовы прайсепт выглядае так:
User Question
|
v
Embedding / Retrieval
|
v
Relevant Documents
|
v
Prompt + Retrieved Context
|
v
Language Model
|
v
Answer
Якщо корыстувач запитае працэўніку вашай компаніі пра внутршную політыку вярнення грошаў для корпоратыўных кліянтаў, ніякі універсальны модель, як бы вялікі ён не быў, не знае адпаведзення. Вам трэба падаць неабходны текст у запит. Чырвонейшае розгляд таго, як працюе гэты крок атрымання інфармацыі, можна знайсці ў нашамай інструкцыі па тым, як системы RAG атрымляюць свежую інфармацыю за запатранням.
Выправіце канал падачы інфармацыі раней, чым модель
Гэта ведае да прынцыпу, які варта перайняць як правіло:
Папрабуйце паспрацаваць над тым, што вы падаеце модэлі, прычаму перш чым апградаваць саму модэль.
Команды часта намагаюцца выправіць паслабленыя адпаведзенні, пераходячы на большую модэль, калі рэальная прычына лежыць інде:
- слабкае атрымання інфармацыі
- нерелевантныя дакументы
- відсутняя метааданая
- паслабленая разбівка на часткі
- недастатковы контэкст
У такіх случаях прычыной не ў самай модэлі, а ў процесе обработкі інформацыі.
Якосьць контексту важлівейя за його колькасць
Великі прызматы контексту выглядаюць вражаюча, але большая колькасць контексту не значыць автаматычна лепшае рашэнне. Калі модэлі даюць 200 сторанак дасягненняў, калі адпаведныя адказы ўсё роўна знаходзяцца у двух параграфах, тэхнічна ёй даюць неабходную інформацыю, але практычна задача становіцца сложнейшай, таму што ёй трэба знаходзіць патрэбны сигнал серед шуму. Занадта вялікі контекст часта прыводзіць да:
- высокай спрабоўкі токенаў
- задзейнення
- высокіх костаў
- відволікання ўвагі
- рызыку наяўнасці суперасунковай інформацыі
Лепшай метай є якомога меншая колькасць высакачасовага контексту, які ўсё роўна дазволяе модэлі даць правильны адказ. Самэ таму зроўнасцевыя системы RAG інвестуюць так много супрацоў у слой адзысквання інформацыі, выкарыстоўваючы такія методы, як:
- семантычныя та гібрыдныя пошукавыя функцыі
- фільтраўванне на адметадах
- перапісва запиту корыстніка
- переранжаванне кандыдатскіх тэкстаў
- падтрымка актуальнасці дакументаў
- стварэнне правільна структураваных частак
Галюцынаціяў трэба пераканваць, а не выкарыстоўваць большыя моделі
Некамфортная правда: выкарыстоўванне дастаткова моцнай моделі не прыводзіць да зникнення галюцынацыяў. Моцнейшыя моделі дзе-жа здольны правільна атрымляць больш фактов і краща разумець розныя задачы, але мовная модель застаецца толькі генератаром тексту, а не джэрелам правды, якое можна выкарыстоўваць як базу дадзенаў. Таму рашэнне лежыць у дизайне: трэба дадаць явную пераканавальную процедуру ў праграмны тыраж, напрыклад:
User Request
↓
Retrieve Evidence
↓
Generate Answer
↓
Validate Claims
↓
Return Response
Для высакацэнных рабочых практык можна яго змоцняць так:
- цітатамі, якія вядуць да доказаў
- структураванымі выходамі, якія пераканваюцца па схеме
- пераканаваннем па бізнес-правілах
Дазвольце модэлю рассуждаваць, а програмнаму забезпечэнню выкананы правілы
Гэта стварае важны межы ў архітектураы. Якщо ад модэля запрашваюць вылічыць суму рахунку, немае прычын даверяць яго арыфмэтыцы, калі ваша прыкладна програма можа вылічыць гэта точна. Замест таго раздзеліце абавясанні:
Model:
Extract line items
Application:
Calculate subtotal
Application:
Calculate tax
Application:
Calculate total
Model:
Explain the result
Модэль выкалывае элементы рахунку і пояснюе рэзультат; прыкладная програма вылічае суму без урахоўвання податку і загальную суму. Кожная частка выканае тое, у чым яна надзейна, і ціфры, якія бачыць корыстнік, завжды будуць правильныя за прыродой.
Дзе маленькія модэлі ўжываюцца эфектыўна, і дзе яны не падходзяць
Маленькія мовныя модэлі часта канчатыся як „менш розумныя“, што тэхнічна правда ў багатых сцэнарыях. Але інжынерыя не стосуецца толькі розуму, і маленькія модэлі даюць конкрэтныя прынады:
- меншыя витраты на обработку
- меншыя затрымкі
- простейшая аддача на местныя сістэмы
- меншыя трэбаванні да інфраструктуры
- патэнцыяльна вышыя парадкі обработкі
- простейшая масштабаванне
- хораша падходнасць для спецыяльных задач
- корыстнасць у ситуаціях на перымай лініи
- патэнцыяльна кращая прыватнасць праз аддачу на местныя сістэмы
Яны ўсё болей прываблівыя для класыфікацыі, выдавання інформацыі, стварэння апুстатак, маршрутацыі, автадаптавання, простых трансфармацый і рабочых процэсаў, спецыялізаваных на певных сферах. Якщо вы хочаце глыбэй разабраць гэты трэнд, наша аналіз малых спецыялізаваных модэляў, якія перамагаюць велікія LLM-модэлі прадстаўляе гэта болей дакладна.
Аднак малы размер не значыць апошнія кращасць. Дзеяныя задачы выклікаюць патрэбу больш моцных можаўносцей, чым у малага модэля: сложныя міркування на адной з вельмі большых колькасцяў джэральнаў, складны аналіз коду, сложныя задачы планавання чы тонкія інтэрпретацыі. У такіх случаях моцнейшы модэль можа практычна апрацаваць такія задачы. І адныя, і другія падходы ўскладнююць выбор. "Всегда вжываць самыя большыя" — значыць марнаваць грошы, а "всегда вжываць самыя малыя" — гарантуе низкія стандарты якасці. Кращая правіла:
Іспользуйце самую маленькую модель, яка падчыряецца стандартам якасці вашага прыемліка.
Завантажэння, якія практычны для вялікіх модэляў
Нічыга з гэтага не ўскладнюе викорыстоўвання вялікіх модэляў. Яны чырваёна практычныя, і дзеяныя завантажэння явна компенсуюць дадатковыя можлівасці.
Складны багатыэтапны расчунак
Калі функцыя залежыць ад ланцоўскага расчунку, моцнейшыя модэлі можу даць значна лепшыя рэзультаты.
Работа з жорсткім кодаваннем
Вялікія модэлі практычны для складных вакантнасцей, незнайомых баз коду, архітэктурных рашэнняў і сложных сеансаў дыбаггінгу.
Неодназначная нейтаральная мова
Дзеяныя запыткі не падпадаюць пад заранее визначаныя катэгоріі. Моцнейшы модэль зазвычай лепш разумее нюансы і намеры.
Сінтэз з многа дакументаў
Калі для адказу трэба сумавац інфармацыю з многах источнаў, тады спроможнасць модэлі становіцца важлівейшай.
Рабочыя процесы агента
Агент зазвычай должен:
- разумець цель
- планаваць дзеянні
- выбіраць інструменты
- пераканальваць рэзультаты
- восстанавляцца пасля неудач
- перасматраць план
- заканчыць задачу
Гэта заўсёды сложнейша, чым класыфікацыя, і вжыванне моцнейшай модэлі ўсё абгрунтаванае. Тест у кожным случаў аднойчынны: вжывайце большыя модэлі, калі ўсё іх дадатковае спроможнасць даўае цэннасць, якую можна вымерыць.
Эксплуатацыйныя витраты хутрагаі архітектуры
Існуюць витраты, якія ніколі не паказваюцца ў тэстах на пераверанне: сложнасць архітектуры. Найпростейшы можлівы дизайн — адна прыкладка, адна большая модэль, адны адказ:
Application
↓
Large Model
↓
Response
Тепер уявіце оптымізацыю всьго аднойчынна:
Application
↓
Router
↓
Classifier
↓
Small Model
↓
Confidence Evaluator
↓
RAG
↓
Reranker
↓
Large Model
↓
Validator
↓
Fallback Model
↓
Human Review
Гэты пайплайн можа стварыць лепейкі систему, але ён таксама прыносіць многа больш заўважэнняя, і кожна з іх прыносіць:
- дадатковы монітарынг і логі
- нэвядомыя способы збою
- большую площу для тэставання
- дадатковую інфраструктуру для роботы
- сложнейшую разгрузку
- большыя ведамасці, якія команда павінна маты, каб ёю кераваць
Таму оптымізацыя павінна быць цялеспрямованай. Стварэнне архітектуры з семи модэляў, каб заэканаміць каля калька цэн за запыт, рэдкая разваўляецца як хорашы варыянт; дадавайце кожны слой толькі тады, калі памеры паказваюць, што ўтрата на його адтрыманне є цэлеспрадным.
Ацэнівайце на адной сваёй навантажэнні, а не за рэйтингамі
Публічныя показнікі є толькі пунктам выйску, а не рашэннем. У вашай прыкладнай програме є свойі показнікі, і толькі яны маюць значэнне. Для падрабніка перагледу кода AI набор для ацэнкі можа включаць:
- Уязвемасці, связаныя з атакамі типу SQL injection
- Условы супернаганяння
- Блакібіцы, связаныя з нуль-рэферэнсамі
- Недастаткі ў автарызацыі
- Некоректнае адрабатаванне выключэнняў
- Проблемы з працою
- Паляганні, якія нарабліваюць архітектурныя недастаткі
Для асистента падтрымкі кляўэнта трэба вымерваць разныя показнікі:
- Саліднасць з правіламі
- Точнасць фактов
- Тон
- Точнасць пераводу справы на вышэйшы ранг
- Падход да адмовы
- Адпаведнасць структураванага выходу
Набор для ацэнкі должен як можно больш прымемліваць рэальны трафік.
Стварыце інструмент для парабярання
Базовы процэс прост: збіраюце запиты, падобныя да тых у рэальных умовах, з прынятнымі рэзультатамі, запускаеце кожную з модэляў проты яных і парабяруеце.
Production-like prompts
↓
Expected outcomes
↓
Run Model A
↓
Run Model B
↓
Compare
↓
Measure
Корыстныя показнікі, якія трэба фіксаваць пасля кожнага запуску:
- Правільнасць і завершэнне задання
Калі гэта ўжо є, выбор модэлі стае інжынерным рашэннем, а не простаю згадкай, і вы можете практычна перзапускаць той самы працэс кожны раз, калі прадаўца выкладзе новую версію модэлі.
Чатырохкрокавы процэс выбору модэлі
Для новай функцыяналіяў ШІ падходзіць просты, можна повтароўны процэс.
Крок 1: Точна апісаць задачу
Не пачынайце з пытання «Калькі модэлі нам вярнуць?» Пачніце з пытання «Калькі самэго точна мусi адрабатаць модэлі?» і запісайце адпаведны адказ конкрэтна:
Input:
Customer email
Output:
Intent + urgency + recommended workflow
Такая спецыфікацыя, з чысткім вхідным і чысткім выходным дадзеннем, ў разы корыстнейшая, чым расплывчатая мета.
Крок 2: Апісацыя таго, што значыць «дасканальна»
Перш чым працаваць з чым-небудзь, неабяжна задаць чысткія критэрыя адзынакоўвання. Напрыклад:
Intent accuracy >= target threshold
Structured output must always validate
Response should normally arrive within target latency
Фактычныя прагі залежаць ад прыемленае; гэта, што мае значэння, — гэтыя прагі ўжо існуюць да таго часу, калі вы пораўнюеце модэлі, тады рэзультаты не можна пазгодзіць пасля.
Шаг 3: Спачатку прыменіце самы маленькі працэспрасны модэль
Гэты шаг команды часта прахоўваюць. Пачніце з малага, выконайце вимеры, і як толькі все працуе — зупініцеся. Перайдзіце да наступнага шагу толькі у разе неудачы:
Small Model
↓
Evaluation
↓
Pass? ── Yes → Ship
|
No
↓
Larger Model
↓
Evaluation
↓
Pass? ── Yes → Ship
|
No
↓
Stronger architecture/model
По суті, вы падымаецеся па лесвіце можлівасцяў па аднам ступеню за раз, і кожны ступень трэба здобіць за счытком неудачных ацэнкаў.
Шаг 4: Оптымізавайце ахвотную систему
Перш чым перайсці да наступнага ступеня, пераканайцеся ў стане рэшты системы:
- Чы вярнюецца падчас запрашэння правильны матэрыял?
- Чы запит є одназначным?
- Чы кожны элемент контэксту дзейсна релевантны?
- Чы выхідная інфармацыя пераканана пры вжыванні?
Удосконаленні ў гэтым аспекте іноды зовсім пазбавляюць неабяжнасці від использовання большога модэля.
Іншыя способы, якія варта выкарыстоўваць перад апдэйтом
Інструкцыі як контракты
Інжынерія інструкцый — гэта не магія, але паслаба прызначання задачы можа змусіць нават спроможны модэль працаваць паслаба. Поручыце нечыткую інструкцыю:
Analyze this customer message.
з іншай, якая визначае адказ і правіла дзейства ў разы неяснасці:
Analyze the customer message.
Return JSON with:
- intent
- urgency
- sentiment
- recommended_action
Do not invent information that isn't present.
If the intent is unclear, return "unknown".
Другая версія задае модэлі чыстаю контракт: польны з іменамі, явна заборона на выдуманы факты і вяліканутая значэнне для адміністрацыі. Дадзенне калькі прыкладоў часта дапамагае ўсё больш паспеліць рэзультаты. Аднак існуе меры. Жадная колькасць формулюванняў у запитах не дае модэлі спосабнасцяў, якіх яна фундаментальна не мае, а калі такая спосабнасць відсутня, змены запитоў даюць все меньшы эфект. Спрыянне модэлі трэба спрацоўваць як адны з слоёў процесу оптымізацыі, а не як цэлакоўтае рашэння.
Тонкая налаадка, RAG чы адпраўка?
Іншая частая рэакцыя на слабыя рэзультаты — «давайце зробімо тонкую налаадку». Інодзе гэта абоўсумова правільна, але спачатку трэба дыаганаваць проблему:
- Якщо модэлі не хапае актуальных чы спецыфічных для компаніі знанняў, такіх як сягоднішняя політыка, тады адзыскванне інформацыі зазвычай є кращым выходам, чым тонкая налаадка, адтак знання зменяюцца, а переналаадка є повольная.
Падбор правільнага спосабу адлагоджэння да рэальных проблем заўсёды эканоміць час і грошы.
Caching: простая, але эфектывная оптымізацыя
Caching — гэта не самая прыемная, але вельмі эфектывная метода. Якщо корыстувачы постаўляюць запиты на кшталт „Якая у вас політыка варыцьбы?“, немае прычыны кожны раз вызываць модель. Калі адпаведзь стабільны, яго трэба зберагчыць у кэшы. У прыкладзе на C# падаўна спачатку пераглядаецца кэш, модель вызываецца толькі ў разы браку інфармацыі, а рэзультат зберагчыцца на 30 хвілін:
public async Task<string> GetAnswerAsync(string question)
{
var key = CreateCacheKey(question);
var cached = await cache.GetStringAsync(key);
if (cached is not null)
return cached;
var answer = await model.GenerateAsync(question);
await cache.SetStringAsync(
key,
answer,
TimeSpan.FromMinutes(30));
return answer;
}
Праўdziва семантычная кэшаванне ўскладненая больш, чым простае падабранне строк, адтолькі ўжо два запыты з разным формулюваннем можу маты адно і тое ж адпаведзенне, і патрэбна політіка для анулювання адпаведзенняў, калі змянююцыся падставны факты. Архітэктурная ідея застаецца незменнай:
Найшырэйшы запыт да ШІ — гэта той, які вы ніколі не выканаеце.
Той жа прынцып застосоўваецца да усунення дуплікацый, прадзейнавання, дэтерміністычных адпаведзенняў, паўтарнага выкарыстоўвання рэзультаатаў пошуку, кэшавання прымоваў, калі це падтрымваеяцца прадаўцам, а таксама да простага паўтарнага выкарыстоўвання адпаведзенняў. Перш чым плаціць за дадатковыя вычысленні, пазбудзіцеся тых, якія вам не трэбаюць.
Спрыяйце выкарыстоўванню токенаў як бюджэту ресурсаў
Калі вы спачатку будзеце розглядаць систему AI як распраўленую систему, токены стануць ўсьмою енергіяй, якую трэба кантролюваць. Традыцыйныя сервісы кантролююць CPU, память, сеть і зберагчык. Аплікацыі AI дадаюць токены вхідных даных, токены выходных даных, розмер контексту і час аналізу, што робіць проектаванне запитоў прычынай проблем з выдатнасцю.
Разгляньце можлівасць адправкі цэлаг історыя кансацыі разам з кожным запитам. Запіты становяцца все дыявольскімі, а да іх прыўязваюцца таксама згаданыя дакументы, выходныя даны інструментаў, інструкцыі системы і пярэднія дзеянні агента. Просты запит можа стаць вельмі масівным пакетам даных. Болей эфектыўны дизайн выбірае толькі значыцыйную частку історыі пры адзначэнні даных і стварае компактны контекст:
Conversation
↓
Relevant history selection
↓
Retrieval
↓
Compact context
↓
Model
замест таго, каб перадаваць усё, што система колі-небудзь бачыла:
Everything we've ever seen
↓
Model
Большы контекст ніколі не ўзлегка: за яго трэба платіць грошыма, затрымкамі і, часта, якасцю адпаведзей.
Агенты паўтараюць кожнае з гэтых рашэнняў
Сістэмы з агентамі робяць выбір моделей ўсё болей значным. Адна толькі запатэнне ад корыстувальніка можа перацягнуты на многа крокаў:
User Request
↓
Planning
↓
Tool Selection
↓
Search
↓
Database Query
↓
Code Execution
↓
Analysis
↓
Final Response
Якщо кожны крок выконваецца на самай дорогай модэлі, затраты можу растаць стрэмганна. Аднак крокам рэдка патрабуецца адна і тая ж спроможнасць. Сумешана прызначэння можа выглядаць так:
Intent classification → Small model
Simple tool selection → Small model
Complex planning → Large model
Data extraction → Small model
Final explanation → Medium model
Это гетэрагенная архітектура ШІ, і самэ гэта ўсё больш выбіраюць багато прыменных сістэм: не адна велікая модэль, якая робіць усё, а калькі модэляў, інструментаў, детерміністычных складовых, каналоў адзыскві і верыфікатораў, якія працуюць разам. Наш аналіз прычын, чаму затраты на агентскі ШІ растаць стрэмганна детальней розглядае сторону затрактаванняў.
Спакульвайце модэлі як членоў команды
Прыгодная аналагія: уявіце троха інжынераў. Адны ёсць высокапоставлены, дорогі і перавантажаны. Адны — апытны і карабкавы. Адны — младшы, але дужа швядкий у викананні павтаральных задач. Вы не будзеце даваць кожную задачу высокапоставленаму інжынеру. Вы распадзіце роботу па ступеню складнасці:
Simple repetitive task
→ Engineer C
Normal feature
→ Engineer B
Complex architecture problem
→ Engineer A
Моделі можна тратаваць так сама. Меньшая модель не ўсё ж «паслабленая»; яна можа проста падходзіць для вялікай часткі задач. Ключовая навык — распадзець роботу на часткі. Уместо пошукі адной моделі, якая справляецца з усім, раздзеліце робочы процес так, каб кожны компонент виканаў ту частку, яю ён выконвае найлепей. Такі падход дазволяе краща масштабавацца.
Аднае цэлым: архітектура-прамерк
Спалучаючы гэтыя ідэі, дапаможнік AI для падпрыемства мога быць структураваны так:
User
|
v
API / Gateway
|
v
Request Router
|
+-------------+-------------+
| |
v v
Simple Request Complex Request
| |
v v
Small Model Planner
|
+------------+------------+
| | |
v v v
Search Database Tools
| | |
+------------+-------------+
|
v
Context
|
v
Strong Model
|
v
Validator
|
+------+------+
| |
Valid Invalid
| |
v v
Response Retry/Fallback
Зверніце увагу на тое, чаго не выканаўляецца: ад найбольшага модэлю не прасяць робіць усё. Простыя запиты падаюць да малага модэлю. Складныя запиты праходзяць через планавальнік, який збірае доказы з пошуку, баз дадзеных і інструментаў, і толькі пасля чаго сильны модэль працюе з падготавленым контекстам. Валідатор пераканальвае выходны результат, а некоректныя рэзультаты спрычыняюць прабую зноў або варыянт на выключэнне. Дизайн спакоюецца на:
- рутэры, які выбірае шлях
- средства для збору доказаў
- дэтэрміністычныя системы для точной працы
- модэлі, спецыялізаваныя па ролі
- валідацыю, а таксама стратэгіі прабоў зноў і варыянтаў на выключэнне
Хутчэй модэль ёсць часткай системы, а не самаю системай.
Дзесяць частых памылак
- Спачатку выбіраецца модэль, а проблема описваецца пазней. Гэты порядак зворачаны; спачатку неабходна чыткая характарызація обсягу работы.
Спіс пытанняў для выбору модэлю
Калі падыходзіць час выбраць модэль, разглядзіце этыя пытанні па порядку:
- Чы можа дэтэрміністычны код яго рашыць? Якщо так, напісце код. Не выкарыстоўвайце AI проста таму, што ён доступны.
- Чы задача простая і павтаральная? Спробуйце маленькі модэль.
Гэты чыртак ўжо больш карысны, чым запытанне пра тое, які модэль ёсць найбольшым у наявнасці.
Запытанне, якое варта задаць высокім інжынерам AI
Прыгожае запытанне пад час адбору на паводзе архітектуры AI: "Чаму проста не выбраць наймоцнейшы модэль на рынку для всіх задач?"
Слабая адказка заканчываецца фразай «маленькія модэлі ўжо дышчы». Гэта правда, але непаштоўна. Сильная адказка уключае можлівасці для выпання конкрэтнага завадзя, надзеямасць, час адпаведы і праўільнасць обробкі, косцы, колькі контэкста патрэбна, маршрутызацыю між модэлямі, выкарыстоўванне інфармацыі, задачы, якія павінен выпануць код, атрыбутывацыю, косцы некалькіх неудач і аперацыйны трыбут.
Нэйчымнае пытанне: «Як вы зможаце падтвердзіць, што выбраная вам модэль дастаткова хораша?» Адказка павінна стосавацца атрыбутывацыі, а не думак, пастаў у сяброўскіх мерадзях, скрыншотаў табелі лідэраў чы презентацый прадавца. Тое, што виршае пытанне, — это ваша рабочая навантажэння, вашы даны і вашы показнікі.
Пашаговая оптымізацыя існуючага прыемніка
Калі функцыя ІІ ўжо занадта медленная чы дорогая, не спяшайце негаўна заменіць модэль. Усё-такі систематычна выявляйце прычыны:
- Зьвяржыце паказнікі. Складзіце статыстыку колькасці запитоў, токенав уводу і выходу, часу адпаведзьбы, кантэкста памялі, часткі бягучых каштоў і успеху заданняў.
- Знайдзіце дорогія завантажэння. Адначыце, якія типы запитоў спрацоўваюць большай часткай рэсурсаў.
- Адмахніце непатрэбныя вызовы. Іспользуйце кэшаванне, детерміністычную логіку, усуненне дуплікацый і прадзеянне.
- Зменшыце кантэкст памялі. Адмовіцеся ад нерэлевантнай історыі і дакументаў.
- Паспрабавайце паўнейшае адналічэнне. Верніце кращыя доказы, а не большыя.
- Спробуйце меньшы модэль. Пераканайцеся, што якасць застаецца прыемной.
- Уведзіце механізм направлення. Падаюце толькі складныя кейсы да моцнэйшых модэляў.
- Параболіце тое, што мае значэнне. Як толькі трэба, прыменяйце схемы, правілы, інструменты і перагляд з боку людзей.
Якщо гэта здаецца вам знайомым, так і ўжо трэба. По суті, гэта тая ж самая методыка, якая викорыстоўваецца для оптымізацыі звычайных програм.
Найлепшая архітектура ШІ зазвычай ёст кіхрыдная
Абразыя пра тое, што аплікацыя ШІ — це фронтэнд, які запрашае API LLM і вяртае адпаведны адказ, зменшаецца:
Frontend
↓
LLM API
↓
Response
Рэальныя аплікацыі все больш нагадвають шлюз, які координуе правілы, выкарыстоўванне дадзеных, модэлі, інструменты і процесы верыфікацыі:
Application
|
v
AI Gateway
|
+-----------+-----------+
| | |
v v v
Rules Retrieval Models
| | |
+-----------+-----------+
|
v
Tools
|
v
Validation
|
v
Application
Такія проекты спаўнююць класычную інжынерію програм з машынным навучэнням, мовнымі моделямі та методамі выкарыстоўвання дадзеных, а таксама базамі дадзеных, API, меры безпекі, можлівасцямі адзоравання і бізнес-логікай, напісанай у вачынку. Гэта хорашыя новіны для інжынераў програм: інжынерія ШІ не заменяе інжынерію програм, а дадае ёй моцны новы элемент.
Адаптавацыя падходу таксама дапамагчы: перастаць спытвацца, який модэль ўжо самы розумны, і пачаць спытвацца, якая система ўжо самая розумная. Выдающыся модэль у паслабна спроектаванай системе можа даць жахлівыя рэзультаты, тады калі модэль сярэдней спроможнасці ў добра спроектаванай архітектуры може стварыць выключны продукт. Хорашыя системы компенсуюць слабасі модэля за дапамогою аптрыману і інструментаў, маршрутацыі і кэшавання, структураваных выходных данных і пераканання ў ўсуненні памылак, коду для точной роботы і стацыонарнай ацэнкі. У гэтым сенсе спроможнасць ШІ ёсць атрыбутам архітектуры, а не толькі модэля.
Пачніце з малага і прыкрепляйце новыя функцыі на адпаведныя доказы
Разумная стандартная стратэгія для будзь-каго новага функцыоналу ШІ практычна выказана ў гэтым алгорытме:
Start
|
v
Define the workload
|
v
Can code solve the problem?
/ \
Yes No
| |
Use code v
Try small model
|
v
Evaluate
|
+----------+----------+
| |
Pass Fail
| |
Ship v
Improve architecture
|
v
Evaluate
|
v
Try stronger model
|
v
Evaluate
Ён запобегае ад вельмі распашчатай памылкі: выдаванню грошаў на проблему, якую могла бы рашыць кращая інжынерная практыка.
Інодзе правы модэль — гэта ўсё-такі не модэль
Урок не ў тым, што маленькія моделі лепшыя; гэта было б настолькі ж некалькана, як і протыяўнае тверджэнне. Правильная модель — гэта тая, якая задовольняе трэбаванні заведама, выважваючы можлівасці і надзеямостнасць проты затрымкі, косту і складнасці. Інодзе гэта маленькая модель, інодзе велікая, інодзе ўжытакаецца комбінацыя, а інодзе ўжо не маўкія-модель. Якщо тип запытку можна адрабатваць простаю структурам, падобной да гэтай, няма прычыны выклікаць LLM:
if (request.Type == "PasswordReset")
{
return StartPasswordResetWorkflow();
}
Гэта не анті-МАІ; гэта хорашая інжынерная практыка. Вы не купіце сервера з необмежаным CPU для службы, якой патрэбны два ядра, або не выдзеліце тэрабайт памяці для процесу, які выкарыстоўвае 4 ГБ. Той самы логік працуе і з моделямі: можлівасці, якія вам не патрэбны, — гэта косцы, якія вам не патрэбны.
Ключовыя выводы
- Заменіце фразу „Калькольнейшы модель, яку мы можамі сабе дазволіць?“ на „Калькольнейшая архітектура, яка надзеямоўна рашае гэту проблему?“ Гэты вопыт сама сабою спрабоўвае прывести вас да тэмы маршрутацыі, выкарыстоўвання дадзеных, кэшавання, детерміністычнага коду, ацэнкі, часу адпаведзення і карыстоўвання методаў адбору на выключэнне нештарактных ситуацыяў.
- Оцэнюйце моделі па вартасці за адной успешнай задачы, узважаючы на наследкі няправильнай адпаведзі, а не па цэне за кожны вызов чы колькасці параметраў.
- Вважайце нехапяючыя знанні проблемай выкарыстоўвання дадзеных, а арытмэтыку чы правілы — проблемай програмнага забезпечэння; ні адна з гэтых проблем не рашаецца за дапамогою большай моделі.
- Выбірайце самую маленькую модель, якая праходзіць ацэнку, створаную на базе вашых рэальных дадзеных, і пераходзіце на большую толькі праз наяўнасць пераконліваеў.
- Залучайце якомога простэйшую архітектуру, калі гэта ўзгодна з эканамічнымі выгадамі, і продовжайце ведаць пасля запуску, таму што моделі, запросы і корыстувальнікі постаўляюцься змянамі.
Спачатку разрабатывайце рашэнне адказа на проблему, а пасля выбірайце модель, яка падходзіць да гэтага рашэння. Інодзе такая модель будзе вельмі большой, інодзе — на дзівоцтва маленькай, а інодзе найрозумнейшым рашэннем будзе вовсе не выкарыстоўваць модель.
Спадневаная літэратура
- Retrieval-Augmented Generation Explained: Fixing LLM Knowledge Gaps — Дазвольце дазнацца, чаму LLM-ы ствараюць халюцинаціі і становяцца застарэлымі, а пасля пазнакоміцца з крокамі, якімі метод RAG запошчае даны, разбивае іх на часткі, уключае ў векторны простар і дапамагае паспрабаваць адказаць на запытанні.
- RAG vs Agentic RAG vs Graph RAG: Choosing the Right Retrieval Architecture — Дазвольце дазнацца, чаму просты метод RAG не справляецца з запытаннямі, якія выкалікаюць кальцынацію па колькіх етапах, і з структураванымі даннымі, а таксама як методы з агентамі та на базе графа рашаюць разныя слабасі.