Галоўная / Артыкулы / Практычныя прытамулі: ваша модель ШІ (LLMs) не працюе на Python.

Практычныя прытамулі: ваша модель ШІ (LLMs) не працюе на Python.

Практычныя прыказкі: ваша модель AI (LLMs) не запускаецца на Python: контракты, перакантрольваннія і месцы для коду для команд, якіе викорыстоўваюць гэты патэрн.

2027 слоў

Наступныя прытамлівкі паказваюць практычны шлях разв’язкі проблемы «Ваша модель AI (LLMs) не працюе на Python». Акцэнт ставіцца на контракты, пераконтроўкі та месця для коду, які можна легка заменіць, а не на мотывацыйныя аспекты. Калі працуеце на стадіі агляду, спачатку запісайце контракт: неабходныя даны, сигнал успеху та тое, што відбываецца у разы частковай нявыполненасці. Такі список дапамагае залишацца чыстасаблівым пад час пазнейшых змян у кодзе. Запісвайце час выконання та вартасьць токенав або запытак праза функцыйнальныя рэзултаты. Відразувая візуабельнае прадставленне вартасцей, ухіліваецца ад неспакою пад час пераходу з дэмаверсіі ў спяльныя сераўы.

output = model(input)

Пачнём з чагось простага

Праця на стадіях будзе эфектывней, якщо ўваходзіць у прыемнае паводле як меркавана паверхня. Запісайце адны ідеальны прыклад, адну справу з бягам і прыметку пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Зберагаюце настройкі пазначаныя окола коду прыемнай. Файлы сэрвеіру, хранення секретных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаць адбавляць контроль без неабяжнага чытання всіх дадзеных. Закрепіце інтэрпретара і файл з правіламі залежнасцей пры тэхнічным навучэнні. Разлікы межаў лептапа і системы CI ёсць найчастэйшым таямным факторам, які спрабоўвае зламаць працэс деманстрацыі API.

Input
  ↓
Matrix Multiplication
  ↓
ReLU
  ↓
Matrix Multiplication
  ↓
Output
y = relu(x @ W + b)
relu()
x @ W

Парадокс

Этап парадоксальнайяе працюе належна, калі яго спрыяваць як да змеры. Запісаўце адна «золатая» транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць масштабы. Дакументаваце як успішны, так і вярнучыся шляхы. Перапрыбуткі, людзкія контрольныя пункты і обработка некоректных паведамленняў ёсць часткай продукту, а не пасляднім дапрацоўкам. Закрепіце інтэрпретара і файл з блокаванням залежнасцяў пры тлумачэнні цикла. Разлік межаў між ноутбукам і CI — гэта самая частая тыхая працэсная памилка ў дэманстраціях API.

AI Model
   ↓
PyTorch / TensorFlow
   ↓
Computational Graph
   ↓
Intermediate Representation (IR)
   ↓
Optimisations
   ↓
Lowering
   ↓
Hardware-specific Code
   ↓
Machine Instructions
   ↓
CPU / GPU / NPU

Шаг 1: вы пішаце на Python

Этап №1, які вы пісваеце, працюе найэфектыўней, калі яго розглядаць як мерыемую паверхню. Зафіксавайце адны ідеальны прымер роботы, адзін кейс неудачы і прыметкі па адвярненню роботы пры расшырэнні масштаба. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшае, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Зафіксавайце інтэрпретара і файл з правіламі залежнасцяў пры навучэнні роботы з цикламі. Разлік межаў між ноутбукам і системай CI — гэта самая частая прычына тых, чыя дэманстраціі API перестаюць працаваць без явных сігналоў. Этап №1, які вы пісваеце, працюе найэфектыўней, калі яго розглядаць як мерыемую паверхню. Зафіксавайце адны ідеальны прымер роботы, адзін кейс неудачы і прыметкі па адвярненню роботы пры расшырэнні масштаба. Запісвайце часы виконання і косты токеноў або запытаў разам з функцыйнальнымі рэзультатамі. Відразувая візуальную інформацыю пра косты, можна ухіліцца ад неспакою, калі процес пераходзіць з дэманстрацыі ў спяльныя сераўеры.

y = torch.relu(x @ W + b)

Этап 2: Модэль стае графам

Для другога крока – стадіі модэлі – пярэд зменым кодам неабходна ясная дэфініцыя вхідных дадзеных, адпаведнага адпаведальніка крока і крэтарыяў завершэння. Аперацыйныя працавнікі павінны магчымаецца перзапускаць крок з вядомага пункта контролю, не прымушаныя здогадвацца пра схованы стан. Конфігурацыю трэба захаваць праз аддзел ад коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных дадзеных і флагі функцыйяў павінны знаходзіцца ў адном месцы, якое працавнікі можуць пераглядаць, не чытаючы весь граф. Неабходна аддзеліць стварэнне кліента ад цыклу перадачы паведамленняў, каб было можна змяніць прадаўцоў без перапісвы машыны стану размовы.

y = relu(x @ W + b)

Крок 3: Оптымізацыя

Для стадіі оптымізацыі, яка ўскладнена 3-й ступенем, пярэд тым, як зменіць код, неабходна вялічыні вхідных дадзеных, адпаведальную особу за даную ступень і крэтыяры завершэння. Аперацыёныя працавнікі должны магчымае запускаць ступень з вядомай точкі контролю, не падозрываючы прыхованы стан. Неабходна адначасова документаванне шляху успеху і шляху вяснавання проблем. Перапрыбуткі, людзкія контралі і обработка некоректных паведамленняў є часткай продукту, а не яго пазнейшай дапрацоўкі. Неабходна аддзеліць стварэнне кліента ад цыклу паведамленняў, ўпэўніваючыся тым, што прадаўцы можна будзе заменіць без перапісвання машыны стану размовы.

MatMul
   ↓
Add
   ↓
ReLU

Ступень 4: Проміжная рэпрэзентацыя

Для стадіі промежуточнай рэпрэзентацыі Караўку 4 неабходна прадзефінаваць вхідныя даны, адпаведальную особу за караўку і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае перайсці на выкананне караўкі з вядомага пункту контролю, не спрабоўваючы здагадвацца пра схованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптаў. Калі караўка не выйшла, прычына неудачы павінна вказываць на адзін конкрэтны элемент, а не на заплутаны ланцужок задач. Раздзеліце стварэнне кліента ад цыклу перадачы паведамленняў, каб было можна змяніць прадаўцаў без перапісвання машыны стану дыялогу. Для стадіі промежуточнай рэпрэзентацыі Караўку 4 неабходна прадзефінаваць вхідныя даны, адпаведальную особу за караўку і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае перайсці на выкананне караўкі з вядомага пункту контролю, не спрабоўваючы здагадвацца пра схованы стан. Запісвайце час выканання і кост токенаў або запытаў разам з функцыйнаімі рэзультатамі. Відразлівасць костаў з самага пачатку запобегае неспакойным рашчыткам, калі траекторыя пераходзіць з дэмаверсіі.

до спяўнелічаных сэрвісаў.

Source Code
Machine Code
variables
functions
loops
tensors
shapes
matrix operations
convolutions
attention
memory layouts

Шаг 5: Зніжэнне

Калі працуеце над стадзіяй зніжэння ў рамках Шага 5, спачатку запісайце угоду: неабходныя даны, сігнал успеху і тое, што выканаецца у разы частковай нявыполненасці. Такі список пераканаецца дапамагае залічваць пазнейшыя змены ў кодзе. Зберагаюце настройкі праза код аплікацыі. Файлы сэрвіса, хранільнікі секретных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў. Запісвайце ідэнтыфікатор запиту, ідэнтыфікатор моделі і час адпаведзення за кожны вызов. Без такога лёгкага следу періядычныя памылкі прадастаўця выглядаюць як багі аплікацыі.

High-level ML operation
          ↓
Tensor operation
          ↓
Lower-level operation
          ↓
Hardware-oriented operation
          ↓
Machine instructions

Шаг 6: Нарэшце уключаецца апаратура

Калі працюеце над 6-ым крокам – стадзіяю апаратнага забезпечэння, спачатку запісайце контракт: неабяжлівыя вхідныя даны, сигнал успеху і тое, што выканаецца у разе частковага абярэння. Такі список пераканаецца у тым, што пазнейшыя змены коду будуць чыстымі. Документавайце як шлях успеху, так і шлях вярнення. Перапрыбуткі, людзкіе контралі і обработка некоректных паведамленняў ёсць часткай продукту, а не пазнейшым дапрацоўкам. Зявляйце логі з ідэнтыфікаторам запиту, ідэнтыфікаторам моделі і часам затрымкі праз кожны вызов. Без такога следу періодычныя абярэння прадаўцоў выглядаюць як багі ў прыемніку.

model(input)
y = relu(x @ W + b)

То куды ж пайшаў Python?

Калі працуеце над практыкам «So where did Python stage», спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выходзіць на частым невялікім браке. Такі список дапамагае заставіць пазнейшыя змены коду быць праўдзівымі. Валічыце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выходзіць, брак павінен адносіцца да адной відповядальнасці, а не да заплутанага ланцоўка дзеянняў. Запісвайце ідэнтыфікатор запиту, ідэнтыфікатор моделі і час адпаведзення праз кожны вызов. Без такога следу періодычныя браки падрыхтавальніка выглядаюць як багі ў самай прыемлівасці. Калі працуеце над практыкам «So where did Python stage», спачатку запісайце умовы викорыстоўвання: неабходныя даны, сігнал успеху і тое, што выходзіць на частым невялікім браке. Такі список дапамагае заставіць пазнейшыя змены коду быць праўдзівымі. Запісвайце час выконання і кост токена або запиту разам з функцыональнымі рэзультатамі. Відразувая візуабільнасць костаў запобегае неспакойным рахункам, калі прыемлівасць пераходзіць з дэмаверсіі ў спяльныя сераўры.

Штучны інтэлект — гэта не толькі моделі

Штучныя інтэлекты працуюць найкраща, калі іх розглядаць як мерыемую структуру. Запісаўце адна «золатая» версія коду, адзін прыклад неудачы і запіс пра вярнэнне да поперадней версіі, прычаму расширяеце сферу ўжыцтва. Храніце настройкі параду ўнутры коду прыемленае. Файлы сераўіснага сэрвісу, базы секретных даных і пазнакі функцый должны знаходзіцца ў адном месцы, куды аператары можаць пераглядаць без неабяжнага чытання всіх элементаў структуры. Закрепіце інтэрпретара і файлы з інформацыяй пра залежнасці ўсё раней, чым почніце вучыць алгорытмы циклаў. Разніця ў версіях коду межы ноутбукам і сервісам CI є самай частаяй прычыной тых, калі дэманстрацыі API перестаюць працаваць без явных сігналіваў.

Data → Model → Prediction
Model
  ↓
Compiler
  ↓
Hardware

Чаму компаніям, якіе працуюць з штучным інтэлектам, патрэбны компіляторы?

Компаніям, які працююць з штучным інтэлектам, лепей працаваць, калі ўсе розглядаць як вимерную структуру. Зафіксавайце адны ідеальны прыклад, адну справу з нявезенням і прыказку па адкатаванню раней, чым расширваць масштабы. Запісвайце адночасна шлях успеху і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкі контроль і обработка некоректных паведамленняў є частью продукту, а не етапамі далейшай наладкі. Зафіксавайце інтэрпретара і файл з правіламі залежнасцяў раней, чым почынать трэніраванне циклу. Разніця ў роботе на ноутбуку і у середавішчы CI — гэта самая частая непазначальная проблема пад час дэманстрацый API.

WHAT
The ML model wants to compute
HOW
A specific piece of hardware should execute it efficiently

Тое, што вам падабалося найбольш

Этап, які вы знайшлі, працюе найэфективней, калі яго розглядаць як вимерную паверхню. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню роботы перш чым расширваць масштаб. Валіце малыя, тэставаныя елементы замест велікіх скрыптов. Калі якась зе ступеней не выконваецца, прычына неудачы павінна вказываць на адную адпаведальнасць, а не на заплутаны ланцюг задач. Зафіксавайце інтэрпретара і файл з правіламі залежнасцяў пры вучэнні циклу. Разлік межаў між ноутбукам і системай CI — гэта самая частая тыха проблема падчас дэманстрацый API. Этап, які вы знайшлі, працюе найэфективней, калі яго розглядаць як вимерную паверхню. Запісаўце адна ідеальная транскрыпцыя, адзін прыклад неудачы і прыметку па адвярненню роботы перш чым расширваць масштаб. Запісвайце часы виконання і косты токенав або запытаў разам з функцыйнальнымі рэзультатамі. Відразувая візуалізацыя костаў запобегае неспакойным рахункам, калі процес пераходзіць з дэмы на спяльныя среды.

Source Code
    ↓
Lexer
    ↓
Parser
    ↓
AST
    ↓
IR
    ↓
Optimisation
    ↓
Machine Code
ML Model
    ↓
ML Representation
    ↓
ML IR
    ↓
Optimisation
    ↓
Lowering
    ↓
Hardware Code

І тут у вас з’яўляецца новы запитанне

Для тэатру, і тут у вас ёсць сцэна: перш чым зменіць код, неабяжна задаць вхідныя даны, адпаведальнага за крок і критэрыя завершэння. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан. Конфігурацыю трэба залічыць параду ад коду прыкладнення. Файлы сераўіса, хранільнікі секрэтных данных і флагі функцыйяў должны знаходзіцца ў аднам месцы, якое аператары можаць пераглядаць, не чытаяўшы весь граф. Раздзеліце стварэнне кліента ад цыклу паведамленняў, каб можна было змініць прадаўцоў без перапісвання машыны стану размовы.

Simple ML Language
        ↓
       Parser
        ↓
      ML AST
        ↓
       ML IR
        ↓
   Simple Optimiser
        ↓
    Lowering
        ↓
   LLVM / Backend

Заключныя меркі

Для стадіі «Фінальная думка» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю без адгадвання захаванага стану.

model(input)

Чэк-ліст для эксплуатацыі

Для стадіі «Чэк-ліст для эксплуатацыі» неабяжна ўзначыць вхідныя даны, адпаведальнага за крок і крэтыры завершэння пры перадзеяванні коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю без адгадвання захаванага стану.

Спрытваце гэты ўражак як кантракт межа вхіднымі дадзеннямі і паверыранымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху і не прымайце часткова завершання без паведамлення.

Аддзельце стварэнне кліента ад циклу паведамленняў, ўпрымкі да чаго можна будзе змяніць без перапісвання машыны стану дыялогу.

Зберагаце ў кэшы стабільныя інструкцыі системы і схемы інструментаў. Перадзял падобных паведамленняў ёсць частым выкліком.

Фіксуйце версіі залежнасцяў і запісвуйце хэш адпаведнага зображэння, якое было выкарыстоўвана для дэманстрацыі. Возможнасць павтарэння перад прыватнымі знаннямі.

Дакументаваце як шлях успеху, так і шлях вярнення да нормы. Практыка павторных спроб, кантроль людзямі і обработка непрацэсаваных паведамленняў ёсць частью продукту, а не пасляднім дапрацоўкам.

Перш чым запускать даныя стэк, заморозьце версіі, зафіксавце «золаты» транскрыпты для критычных шляхоў і паказваце способы адвярнення змян. У спільных сераўерах неабходны ліміты частоты запытоў, перакананні ў правах на выкарыстоўванне ресурсаў і чысткі власнік для змены секрэтных даных. Валіце надзейнасць працы над красавімі, але разовымі дэманстрацыямі.

Прыметкі для 3443330c9254: не кладзіце ключы прадаўцаў у репазітарый, задаце максимальную кантитатыву токеноў на сесію і зберагачыце транскрыпты празаўседліва з фіксатамі для ацэнкі, каб пазнейшыя змены моделей заставаліся порównанымі.