Товч хариулт: Хиймэл оюун ухааны загваруудыг оновчтой болгохын тулд нэг үндсэн хязгаарлалтыг (хоцрогдол, зардал, санах ой, чанар, тогтвортой байдал, эсвэл нэвтрүүлэх чадвар) сонгоод, дараа нь ямар нэгэн зүйлийг өөрчлөхөөсөө өмнө найдвартай суурь шугамыг тогтооно. Эхлээд дамжуулах хоолойн саадыг арилгаад, дараа нь холимог нарийвчлал болон багцлах зэрэг эрсдэл багатай олзыг хэрэглэнэ; хэрэв чанар хэвээр байвал хөрвүүлэгч/ажиллах хугацааны хэрэгсэл рүү шилжиж, шаардлагатай үед тоон үзүүлэлт эсвэл нэрэлтээр загварын хэмжээг багасгана.
Гол дүгнэлтүүд:
Хязгаарлалт : Нэг эсвэл хоёр зорилтот үзүүлэлтийг сонгоно уу; оновчлол нь чөлөөт хожил биш, харин буулт хийх нөхцөл юм.
Хэмжилт : Бодит ажлын ачааллыг p50/p95/p99, дамжуулах чадвар, ашиглалт болон санах ойн оргилуудын тусламжтайгаар тодорхойл.
Шугам хоолой : Загварт хүрэхээс өмнө токенжуулалт, өгөгдөл ачаалагч, урьдчилан боловсруулалт болон багцлах үйлдлийг засах.
Үйлчлэх : Кэш хийх, зориудаар багцлах, зэрэгцээ тохируулга хийх, мөн сүүлний хоцрогдолыг сайтар хянаж байх.
Хашлага : Гүйцэтгэлийн өөрчлөлт бүрийн дараа алтан заавар, даалгаврын үзүүлэлт, цэгэн шалгалтыг ажиллуул.

🔗 Хиймэл оюун ухааны загваруудыг хэрхэн үр дүнтэй үнэлэх вэ
Загваруудыг шударга, найдвартайгаар үнэлэх гол шалгуур, алхамууд.
🔗 Бодит үзүүлэлтээр хиймэл оюун ухааны гүйцэтгэлийг хэрхэн хэмжих вэ.
Харьцуулахын тулд жишиг үзүүлэлт, хоцрогдол, өртөг болон чанарын дохионуудыг ашиглана уу.
🔗 Үйлдвэрлэлийн өмнө хиймэл оюун ухааны загваруудыг хэрхэн турших вэ
Практик туршилтын ажлын урсгал: өгөгдлийн хуваалт, стрессийн тохиолдлууд болон хяналт.
🔗 Контент бүтээхэд хиймэл оюун ухааныг хэрхэн ашиглах вэ
Бүтцийн зааварчилгаа болон давталтын тусламжтайгаар санаагаа ноорог болгон хурдан хувиргах.
1) "Оновчтой болгох" гэдэг нь практик дээр юу гэсэн үг вэ (Учир нь хүн бүр үүнийг өөр өөрөөр ашигладаг) 🧠
Хүмүүс "хиймэл оюун ухааны загварыг оновчтой болгох" гэж хэлэхдээ дараах зүйлийг хэлж магадгүй юм
-
Илүү хурдан болгох (хоцрогдол багатай болгох)
-
Үүнийг хямд болгох (GPU-ийн цагийг багасгах, үүлэн хэрэглээг багасгах)
-
Жижигрүүлэх (санах ойн хэмжээ, захын байршуулалт)
-
Илүү нарийвчлалтай болгох (чанарын сайжруулалт, хий үзэгдэл багасах)
-
Илүү тогтвортой болгох (бага хэлбэлзэл, үйлдвэрлэлийн доголдол бага байх)
-
Үйлчилгээг хялбар болгох (гүйцэтгэл, багцлах, урьдчилан таамаглах боломжтой гүйцэтгэл)
Бага зэрэг ядаргаатай үнэн энд байна: та эдгээрийг бүгдийг нь нэг дор хамгийн их байлгах боломжгүй. Оновчлол гэдэг нь бөмбөлөг шахахтай адил юм - нэг талыг нь оруулаад нөгөө тал нь гарч ирдэг. Үргэлж биш ч гэсэн хангалттай олон удаа та буулт хийхээр төлөвлөх хэрэгтэй.
Тиймээс ямар нэгэн зүйлд хүрэхээсээ өмнө үндсэн хязгаарлалтаа :
-
p95 хоцрогдол ( AWS CloudWatch хувь хэмжээ ) болон сүүлний гүйцэтгэл ( “сүүлийн хоцрогдол”-ын шилдэг туршлага -д анхаарлаа хандуулна 📉
-
цаг хугацаанаас чанар хүртэл болон GPU ашиглалтад анхаарлаа хандуулдаг
-
RAM болон тэжээлийн талаар санаа тавьдаг 🔋
2) Хиймэл оюун ухааны загвар оновчлолын сайн хувилбар ямар харагддаг вэ ✅
Оновчлолын сайн хувилбар нь зүгээр л "квантчилал хэрэглэж, залбирах" биш юм. Энэ бол систем юм. Хамгийн сайн тохиргоонууд нь ихэвчлэн дараахь зүйлстэй байдаг
-
Таны итгэдэг суурь шугам
Хэрэв та одоогийн үр дүнгээ хуулбарлаж чадахгүй бол ямар нэгэн зүйлийг сайжруулсан гэдгээ мэдэхгүй байж болно. Энгийн... гэхдээ хүмүүс үүнийг алгасдаг. Дараа нь тэд эргэлддэг. -
гэсэн тодорхой зорилтот хэмжүүр нь
тодорхойгүй байна. "Ижил чанарын оноотой үед p95 хоцрогдолыг 900мс-ээс 300мс болгон бууруулах" нь бодит зорилт юм. -
Чанарын төлөөх хашлага Гүйцэтгэлийн
ялалт бүр чимээгүй чанарын бууралтад хүргэх эрсдэлтэй. Танд тест, үнэлгээ, эсвэл ядаж эрүүл мэндийн цогц хэрэгтэй. -
Тоног төхөөрөмжийн мэдлэг
Нэг график процессор дээрх "хурдан" загвар нь нөгөө график процессор дээр мөлхөж болно. CPU нь өөрийн гэсэн онцгой эмх замбараагүй байдал юм. -
Давтагдах өөрчлөлтүүд, том тэсрэлтийн дахин бичвэр биш.
Таван зүйлийг нэг дор өөрчлөхөд гүйцэтгэл сайжирна гэдэг нь яагаад гэдгийг та мэдэхгүй. Энэ нь ... түгшүүр төрүүлдэг.
Оновчлол нь гитараа тохируулахтай адил мэдрэмж төрүүлэх ёстой - бага зэрэг тохируулга хийгээд, анхааралтай сонсоод, давтана уу 🎸. Хэрэв хутгаар жонглёрдож байгаа юм шиг санагдаж байвал ямар нэгэн зүйл буруу байна.
3) Харьцуулсан хүснэгт: Хиймэл оюун ухааны загваруудыг оновчтой болгох түгээмэл сонголтууд 📊
Доорх нь нийтлэг оновчлолын хэрэгсэл/арга барилуудын хурдан бөгөөд бага зэрэг замбараагүй харьцуулсан хүснэгт юм. Үгүй ээ, энэ нь төгс "шударга" биш - бодит амьдрал ч бас тийм биш.
| Хэрэгсэл / Сонголт | Үзэгчид | Үнэ | Яагаад ажилладаг вэ |
|---|---|---|---|
PyTorch torch.compile ( PyTorch баримт бичиг ) |
PyTorch хүмүүс | Үнэгүй | График барих + хөрвүүлэгчийн аргууд нь зардлыг хэмнэж чадна... заримдаа энэ нь ид шид юм ✨ |
| ONNX ажиллах хугацаа ( ONNX ажиллах хугацааны баримт бичиг ) | Байршуулалтын багууд | Чөлөөт маягийн | Хүчтэй дүгнэлтийн оновчлол, өргөн дэмжлэг, стандартчилагдсан үйлчилгээнд сайн |
| TensorRT ( NVIDIA TensorRT баримт бичиг ) | NVIDIA байршуулалт | Төлбөртэй мэдрэмжүүд (ихэвчлэн багцалсан) | Түрэмгий цөмийн нэгдэл + нарийвчлалтай харьцах, товшиход маш хурдан |
| DeepSpeed ( ZeRO баримт бичиг ) | Сургалтын багууд | Үнэгүй | Санах ой + дамжуулах чадварын оновчлол (ZeRO гэх мэт). Тийрэлтэт хөдөлгүүр шиг санагдаж болно |
| FSDP (PyTorch) ( PyTorch FSDP баримт бичиг ) | Сургалтын багууд | Үнэгүй | Параметрүүд/градиентуудыг хувааж, том загваруудыг аймшигтай болгодог |
| бит-байт квантжуулалт ( бит-байт ) | LLM-ийн мэргэжилтнүүд | Үнэгүй | Бага битийн жин, санах ойн асар их хэмнэлт - чанараас хамаарна, гэхдээ пөөх 😬 |
| Нэрэлт ( Хинтон нар, 2015 ) | Бүтээгдэхүүний багууд | "Цаг хугацааны зардал" | Жижиг оюутны загвар нь зан төлөвийг өвлөн авдаг бөгөөд энэ нь ихэвчлэн урт хугацааны хамгийн сайн хөрөнгө оруулалтын өгөөж юм |
| Тайрах ( PyTorch тайрах заавар ) | Судалгаа + бүтээгдэхүүн | Үнэгүй | Үхсэн жинг арилгана. Дасгалжуулалттай хослуулан хэрэглэхэд илүү үр дүнтэй |
| Flash Attention / хайлсан цөмүүд ( FlashAttention цаас ) | Гүйцэтгэлийн нердүүд | Үнэгүй | Хурдан анхаарал, илүү сайн ой санамж. Трансформеруудын жинхэнэ ялалт |
| Triton Inference Server ( Динамик багцжуулалт ) | Операци/инфра | Үнэгүй | Үйлдвэрлэлийн үйлчилгээ, багцлах, олон загварын дамжуулах хоолой - аж ахуйн нэгжийнх шиг мэдрэмж төрүүлдэг |
Хуурамч хүлээн зөвшөөрөлтийг форматлах нь: "Үнэ" нь замбараагүй байна, учир нь нээлттэй эхийн хувилбар нь танд амралтын өдрүүдээр дибаг хийхэд хүргэж болзошгүй бөгөөд энэ нь ... үнэ юм. 😵💫
4) Хэмжилтээс эхэл: Өөрийнхөө үнэнч сэтгэлгээтэй адил профайл 🔍
Хэрэв та энэ гарын авлагаас зөвхөн нэг зүйлийг хийвэл үүнийг хий: зөв хэмжилт хий.
Миний өөрийн туршилтаар хамгийн том "оновчлолын нээлтүүд" нь ичмээр энгийн зүйлийг нээснээс үүдэлтэй юм:
-
өгөгдөл ачаалагч нь GPU-г өлсгөж байна
-
CPU-ийн урьдчилсан боловсруулалтын саад бэрхшээл
-
цөмийг хэт ачаалалтай ажиллуулахад хүргэдэг жижиг багцын хэмжээ
-
удаан токенизаци (токенизаторууд чимээгүй хорон санаатнууд байж болно)
-
санах ойн хуваагдал ( PyTorch CUDA санах ойн хуваарилалтын тэмдэглэл )
-
нэг давхаргат давамгайлсан тооцоолол
Юуг хэмжих вэ (хамгийн бага хэмжээ)
-
Хоцрогдол (p50, p95, p99) ( Хоцрогдлын хувь хэмжээ дээрх SRE )
-
Гүйцэтгэл (токен/секунд, хүсэлт/секунд)
-
GPU ашиглалт (тооцоолол + санах ой)
-
VRAM / RAM оргилууд
-
1 мянган токен тутамд ногдох зардал (эсвэл нэг дүгнэлт тутамд)
Практик профайлын сэтгэлгээ
-
Танд хамаатай нэг нөхцөл байдлын талаар танилцуулна уу (тоглоомын тухай санаа биш).
-
Бүх зүйлийг жижигхэн "төгс тэмдэглэлийн дэвтэрт" тэмдэглэ.
Тийм ээ, энэ нь уйтгартай... гэхдээ энэ нь таныг дараа нь өөрөө газлайт хийхээс аврах болно.
(Хэрэв та эхлэхэд тодорхой хэрэгсэл хүсч байвал: PyTorch Profiler ( torch.profiler docs ) болон Nsight Systems ( NVIDIA Nsight Systems ) нь ихэвчлэн сэжигтэй байдаг.)
5) Өгөгдөл + Сургалтын Оновчлол: Чимээгүй Супер Хүч 📦🚀
Хүмүүс загварын архитектурт хэт автаж, дамжуулах хоолойг мартдаг. Үүний зэрэгцээ дамжуулах хоолой нь GPU-ийн талыг чимээгүйхэн шатаадаг.
Хурдан гарч ирдэг хялбар ялалтууд
-
Холимог нарийвчлал ашиглана уу (тогтвортой үед FP16/BF16) ( PyTorch AMP / torch.amp ).
Ихэвчлэн илүү хурдан, ихэвчлэн сайн байдаг ч тоон гажуудлыг анхаарч үзээрэй. -
Багцын хэмжээ хязгаарлагдмал үед градиент хуримтлал 🤗 Хурдасгах гарын авлага )
Санах ойг дэлбэрэхгүйгээр оновчлолыг тогтвортой байлгадаг. -
Градиент шалгах цэг ( torch.utils.checkpoint )
Арилжаа нь санах ойд тооцоолдог - илүү том контекстүүдийг боломжтой болгодог. -
Үр дүнтэй токенжуулалт ( 🤗 Токенжуулагч )
Токенжуулалт нь хэмжээний хувьд саад тотгор болж болзошгүй. Энэ нь дур булаам биш; энэ нь чухал юм. -
Өгөгдөл ачаалагчийн тохиргоо
Илүү олон ажилчид, пин санах ой, урьдчилан татаж авах - үзэмжгүй боловч үр дүнтэй 😴➡️💪 ( PyTorch гүйцэтгэлийн тохируулгын гарын авлага )
Параметрийн үр ашигтай нарийн тохируулга
Хэрэв та том загваруудыг нарийн тохируулж байгаа бол PEFT аргууд (LoRA маягийн адаптер гэх мэт) нь гайхалтай хүчтэй хэвээр байхын зэрэгцээ сургалтын зардлыг эрс бууруулж чадна ( 🤗 Трансформеруудын PEFT гарын авлага , LoRA цаас ). Энэ бол "бид яагаад үүнийг өмнө нь хийгээгүй юм бэ?" гэсэн мөчүүдийн нэг юм.
6) Архитектурын түвшний оновчлол: Загварыг зөв хэмжээтэй болгох 🧩
Заримдаа оновчтой болгох хамгийн сайн арга бол ... ажилд хэтэрхий том загвар ашиглахаа болих явдал юм. Би мэднэ ээ, энэ бол доромжлол 😄.
Хэд хэдэн үндсэн зүйл дээр дуудлага хийнэ үү:
-
Танд бүрэн хэмжээний ерөнхий тагнуулын мэдрэмж хэрэгтэй юу эсвэл мэргэжилтэн хэрэгтэй юу гэдгээ шийдээрэй.
-
Контекст цонхыг том биш, харин шаардлагатай хэмжээгээр нь том байлгаарай.
-
Одоо байгаа ажилд сургагдсан загварыг ашиглана уу (ангиллын ажлын ангиллын загвар гэх мэт).
Зөв хэмжээг сонгох практик стратегиуд
-
Ихэнх хүсэлтийн хувьд
жижиг гол хэсэг рүү шилж. Дараа нь "хэцүү асуултууд"-ыг илүү том загвар руу чиглүүл. -
Хоёр үе шаттай тохиргоог ашиглаарай.
Загварын ноорог хурдан гардаг, загвар нь илүү хүчтэй байдаг тул баталгаажуулдаг эсвэл засварладаг.
Энэ нь нарийн нямбай, залхмаар ч үр дүнтэй найзтайгаа бичихтэй адил юм. -
Гаралтын уртыг багасгах
Гаралтын жетонууд нь мөнгө, цаг хугацаа шаарддаг. Хэрэв таны загвар хөдөлгөөнгүй байвал та хөдөлгөөнгүй байдлын төлбөрийг төлнө.
Багууд богино үр дүнг хэрэгжүүлэх замаар зардлаа эрс бууруулж байхыг би харсан. Энэ нь өчүүхэн мэт санагдаж байна. Энэ нь үр дүнтэй.
7) Хөрвүүлэгч + График Оновчлол: Хурд хаанаас гардаг вэ 🏎️
Энэ бол "компьютерийг илүү ухаалаг болгох" давхарга юм.
Нийтлэг аргууд:
-
Операторын нэгдэл (цөмүүдийг нэгтгэх) ( NVIDIA TensorRT “давхаргын нэгдэл” )
-
Тогтмол нугалах (урьдчилан тооцоолох тогтмол утгууд) ( ONNX Runtime графикийн оновчлол )
-
Цөмийн сонголт нь техник хангамжид тохируулагдсан
-
Python-ы ачааллыг багасгахын тулд график барих
torch.compileoverview )
Энгийнээр хэлбэл: таны загвар математикийн хувьд хурдан боловч үйл ажиллагааны хувьд удаан байж магадгүй. Хөрвүүлэгчид үүний заримыг нь засдаг.
Практик тэмдэглэл (өөрөөр хэлбэл сорви)
-
Эдгээр оновчлолууд нь загварын хэлбэрийн өөрчлөлтөд мэдрэмтгий байж болно.
-
Зарим загварууд нь маш их хурдасдаг бол зарим нь бараг хөдөлдөггүй.
-
Заримдаа хурд нэмсэн ч, гайхмаар шавьж гарч ирдэг - яг л гремлин орж ирсэн шиг 🧌
Гэсэн хэдий ч энэ нь ажиллаж байх үед хамгийн цэвэр ялалтуудын нэг юм.
8) Тоон үзүүлэлт, тайралт, нэрэлт: Уйлахгүйгээр жижигрүүлэх (Хэтэрхий их) 🪓📉
Энэ бол хүмүүсийн хүсч буй хэсэг... учир нь энэ нь үнэгүй тоглолт шиг сонсогдож байна. Тийм байж болно, гэхдээ та үүнийг мэс засал мэтээр хандах хэрэгтэй.
Квантжуулалт (бага нарийвчлалтай жин/идэвхжүүлэлт)
-
Дүгнэлтийн хурд болон санах ойн хувьд маш сайн
-
Эрсдэл: чанар буурдаг, ялангуяа ирмэгийн хайрцагнууд дээр
-
Хамгийн сайн туршлага: чичиргээ биш, харин бодит туршилтын багц дээр үнэлэх
Таны сонсох нийтлэг амтууд:
-
INT8 (ихэвчлэн хатуу) ( TensorRT квантлагдсан төрлүүд )
-
INT4 / бага бит (их хэмнэлт, чанарын эрсдэл нэмэгддэг) ( бит ба битийн к битийн квантжуулалт )
-
Холимог тоон үзүүлэлт (бүх зүйл ижил нарийвчлал шаарддаггүй)
Тайрах (параметрүүдийг устгах)
-
"Чухал биш" жин эсвэл бүтцийг арилгана ( PyTorch тайрах заавар )
-
Чанарыг сэргээхийн тулд ихэвчлэн давтан сургалт шаардлагатай байдаг
-
Хүмүүсийн бодож байгаагаас ч илүү сайн ажилладаг... болгоомжтой хийвэл
Нэрэх (суралцагч багшаасаа суралцдаг)
Энэ бол миний хувийн дуртай урт хугацааны хөшүүрэг. Нэрэлт нь ижил төстэй ажилладаг жижиг загварыг бий болгож чаддаг бөгөөд энэ нь хэт квантжуулалтаас илүү тогтвортой байдаг ( Мэдлэгийг мэдрэлийн сүлжээнд нэрэх нь ).
Төгс бус зүйрлэл: нэрэлт гэдэг нь нарийн төвөгтэй шөлийг шүүлтүүрээр хийгээд ... жижиг шөл авахтай адил юм. Шөл ингэж ажилладаггүй ч та санааг нь ойлгож байна 🍲.
9) Үйлчлэх ба дүгнэлт: Жинхэнэ тулааны бүс 🧯
Та загварыг "оновчтой" болгосон ч гэсэн муу үйлчилгээ үзүүлж болно. Үйлчилгээ нь хоцрогдол болон өртөг бодитой болдог газар юм.
Үйлчлэх нь чухал ялалтууд
-
Багцлах нь
дамжуулах чадварыг сайжруулдаг. Гэхдээ хэтрүүлбэл хоцрогдолыг нэмэгдүүлдэг. Тэнцвэржүүл. ( Тритон динамик багцлах ) -
Кэш хийх
Давтагдсан контекстүүдийн хувьд кэш хийх болон KV-кэшийг дахин ашиглах нь асар их байж болно. ( KV кэшийн тайлбар ) -
Гаралтын урсгал
Хэрэглэгчид нийт хугацаа ижил байсан ч илүү хурдан гэж мэдэрдэг. Ойлголт чухал 🙂. -
Токен тус бүрээр нэмэлт зардлыг бууруулах
Зарим стекүүд токен тус бүрээр нэмэлт ажил хийдэг. Үүнийг багасгаснаар та их хэмжээний хожил авах болно.
Сүүлний хоцрогдолд анхаарлаа хандуулаарай
Таны p99 гамшиг тохиолдож байхад таны дундаж үзүүлэлт гайхалтай харагдаж магадгүй. Харамсалтай нь хэрэглэгчид сүүл хэсэгт амьдардаг. ( “Сүүлийн хоцрогдол” болон дундаж үзүүлэлтүүд яагаад худлаа хэлдэг вэ )
10) Тоног төхөөрөмжийн оновчлол: Загварыг машинтай тохируул 🧰🖥️
Тоног төхөөрөмжийн талаарх мэдлэггүйгээр оновчлол хийх нь дугуйг шалгахгүйгээр уралдааны машиныг тохируулахтай адил юм. Мэдээж та үүнийг хийж чадна, гэхдээ энэ нь жаахан тэнэг хэрэг.
GPU-ийн анхаарах зүйлс
-
Санах ойн зурвасын өргөн нь ихэвчлэн хязгаарлах хүчин зүйл болдог бөгөөд түүхий тооцоолол биш юм
-
Илүү том хэмжээтэй бүтээгдэхүүнүүд тусалж чадна, гэхдээ тэдгээр нь тус болохгүй бол
-
Цөмийн нэгдэл болон анхаарлын оновчлол нь трансформаторын хувьд асар том юм ( FlashAttention: IO-мэдрэмжтэй яг анхаарал )
CPU-ийн анхаарах зүйлс
-
Урсгалжуулалт, векторжуулалт болон санах ойн байршил нь маш чухал юм
-
Токенизацийн нэмэлт ачаалал давамгайлж болно ( 🤗 “Хурдан” токенизаторууд )
-
Та GPU-ээс өөр квантжуулалтын стратеги хэрэгтэй байж магадгүй
Ирмэг/хөдөлгөөнт байдлын талаарх асуудлууд
-
Санах ойн ул мөр нэгдүгээрт тавигдаж байна
-
Төхөөрөмжүүд ... сэтгэл хөдлөлийн хэлбэлзэлтэй байдаг тул саатлын хэлбэлзэл чухал юм
-
Жижиг, мэргэшсэн загварууд нь ихэвчлэн том ерөнхий загваруудыг илүүд үздэг
11) Чанартай хашлага: Өөрийгөө хорхой болгон "оновчлох" хэрэггүй 🧪
Хурдны ялалт бүр чанарын шалгалттай хамт ирдэг. Эс тэгвээс та баярлаж, илгээж, дараа нь "туслах яагаад гэнэт далайн дээрэмчин шиг яриад байгаа юм бэ?" гэх мэт мессеж хүлээн авах болно 🏴☠️
Прагматик хашлага:
-
Алтан заавар (таны үргэлж шалгадаг зааварчилгааны тогтмол багц)
-
Даалгаврын үзүүлэлтүүд (нарийвчлал, F1, BLEU, юу ч тохирох)
-
Хүний толбо шалгах (тийм ээ, үнэхээр)
-
Регрессийн босго (“X%-иас хэтрэхгүй уналт зөвшөөрөгдөх”)
Мөн алдааны горимуудыг хянах:
-
форматлах шилжилт
-
татгалзах зан үйлийн өөрчлөлт
-
хий үзэгдлийн давтамж
-
хариу урвалын уртын инфляци
Оновчлол нь зан төлөвийг гайхалтай байдлаар өөрчилж чадна. Өвөрмөц. Цочромтгой. Урьдчилан таамаглаж болохуйц, эргээд харахад.
12) Шалгах хуудас: Хиймэл оюун ухааны загваруудыг алхам алхмаар хэрхэн оновчтой болгох вэ ✅🤖
хиймэл оюун ухааны загваруудыг хэрхэн оновчтой болгох талаар тодорхой үйл ажиллагааны дарааллыг хүсч байвал хүмүүсийг эрүүл ухаантай байлгахад туслах ажлын урсгал энд байна:
-
Амжилтыг тодорхойлох
1-2 үндсэн үзүүлэлтийг сонгоно уу (хоцрогдол, зардал, нэвтрүүлэх чадвар, чанар). -
суурь профайлыг хэмжих
, p50/p95 бичлэг хийх, санах ой, зардлыг хэмжих. ( PyTorch Profiler ) -
Дамжуулах хоолойн саад бэрхшээлийг засах.
Өгөгдөл ачаалах, токенжуулах, урьдчилан боловсруулах, багцлах. -
Бага эрсдэлтэй тооцооллын ялалтыг ашиглах
Холимог нарийвчлал, цөмийн оновчлол, илүү сайн багцжуулалт. -
Хөрвүүлэгч/ажиллах хугацааны оновчлолыг
График барих, дүгнэлт гаргах, операторын нэгдэл ашиглан туршиж үзээрэй. (torch.compileзаавар , ONNX ажиллах хугацааны баримт бичиг ) -
Загварын өртгийг бууруул.
Болгоомжтой тоон үзүүлэлт гаргаж, боломжтой бол нэрж, шаардлагатай бол тайрч ав. -
Тохируулгын үйлчилгээ
Кэш хийх, зэрэгцээ байдал, ачааллын тест хийх, сүүлний хоцрогдлын засварууд. -
Чанарыг баталгаажуулах
Регрессийн тестийг ажиллуулж, гаралтыг зэрэгцүүлэн харьцуулна уу. -
Давталт
Жижиг өөрчлөлтүүд, тодорхой тэмдэглэл, давталт. Үзэсгэлэнгүй - үр дүнтэй.
Тийм ээ, энэ нь "Тармуур дээр гишгэхээ хэрхэн болих вэ" гэсэнтэй илүү төстэй санагдаж байгаа ч гэсэн хиймэл оюун ухааны загваруудыг хэрхэн оновчтой болгох вэ гэсэн
13) Нийтлэг алдаанууд (Бидний адил давтахгүйн тулд) 🙃
-
Хэмжилт хийхээсээ өмнө оновчтой болгох нь
цаг хугацаа алдах болно. Тэгээд буруу зүйлийг итгэлтэйгээр оновчтой болгоно... -
Ганц жишиг мөрдлөг хийх нь Жишиг
үзүүлэлтүүд орхигдсоноор худлаа болдог. Таны ажлын ачаалал бол үнэн. -
Санах ойг үл тоомсорлох нь санах
ойн асуудлууд удаашрал, гацалт, чичиргээ үүсгэдэг. ( PyTorch дахь CUDA санах ойн хэрэглээг ойлгох ) -
Хэт эрт квантлах
Бага битийн квант нь гайхалтай байж болох ч эхлээд аюулгүй алхмуудаас эхэл. -
Буцаах төлөвлөгөө байхгүй.
Хэрэв та хурдан буцаах боломжгүй бол байршуулалт бүр стресс үүсгэдэг. Стресс нь алдаа үүсгэдэг.
Төгсгөлийн тэмдэглэл: Оновчтой болгох хүний арга 😌⚡
Хиймэл оюун ухааны загваруудыг хэрхэн оновчтой болгох вэ гэдэг нь ганцхан хакердах ажил биш. Энэ бол давхаргатай үйл явц юм: хэмжих, дамжуулах хоолойг засах, хөрвүүлэгч болон ажиллах хугацааг ашиглах, үйлчлэлийг тохируулах, дараа нь шаардлагатай бол загварыг квантжуулалт эсвэл нэрэлтээр багасгах. Үүнийг алхам алхмаар хийж, чанартай хамгаалалтын хашлага хадгалж, "илүү хурдан мэдрэгдэж байна" гэсэн хэмжүүрт итгэж болохгүй (таны мэдрэмж сайхан, таны мэдрэмж профайлер биш).
Хэрэв та хамгийн богино хугацаанд авахыг хүсвэл:
-
Эхлээд хэмж🔍
-
Дараа нь дамжуулах хоолойг оновчтой болго 🧵
-
Дараа нь загвараа оновчтой болго 🧠
-
Тэгвэл үйлчилгээгээ оновчтой болгоорой 🏗️
-
Чанарын хяналтыг үргэлж хийж байгаарай ✅
Хэрэв энэ нь тус болж байвал өөртөө сануулаарай: зорилго нь "төгс загвар" биш. Зорилго нь хурдан, боломжийн үнэтэй, найдвартай, ихэнх шөнө унтаж чадах загвар юм...
Түгээмэл асуултууд
Хиймэл оюун ухааны загварыг оновчтой болгох нь практик дээр юу гэсэн үг вэ
"Оновчтой болгох" гэдэг нь ихэвчлэн нэг үндсэн хязгаарлалтыг сайжруулахыг хэлнэ: хоцрогдол, зардал, санах ойн ул мөр, нарийвчлал, тогтвортой байдал, эсвэл үйлчилгээний нэвтрүүлэх чадвар. Хамгийн хэцүү хэсэг нь буулт хийх явдал юм - нэг хэсгийг түлхэх нь нөгөө хэсгийг нь гацааж болзошгүй. Практик арга бол тодорхой зорилтыг (p95 хоцрогдол эсвэл хугацаанаас чанар хүртэл) сонгоод түүндээ чиглэсэн оновчлол хийх явдал юм. Зорилгогүй бол "сайжруулах" амархан боловч алдах болно.
Чанарыг чимээгүйхэн алдагдуулахгүйгээр хиймэл оюун ухааны загваруудыг хэрхэн оновчтой болгох вэ
Хурд эсвэл зардлын өөрчлөлт бүрийг чимээгүй регрессийн болзошгүй хувилбар гэж үз. Алтан заавар, даалгаврын хэмжүүр, хурдан хүний байр шалгалт зэрэг хамгаалалтын хашлага ашиглаарай. Хүлээн зөвшөөрөгдөх чанарын зөрүүний тодорхой босгыг тогтоож, гарцыг зэрэгцүүлэн харьцуул. Энэ нь тээвэрлэлтийн дараа "илүү хурдан" гэсэн ойлголт "яагаад үйлдвэрлэлд гэнэт хачин болсон бэ?" болж хувирахаас сэргийлнэ.
Оновчтой болгохын өмнө юуг хэмжих хэрэгтэй
Хоцрогдлын хувь хэмжээ (p50, p95, p99), нэвтрүүлэх чадвар (секунд/токен эсвэл хүсэлт/секунд), GPU ашиглалт болон оргил VRAM/RAM-аас эхэл. Хэрэв зардал нь хязгаарлалт бол таамаглал тус бүрийн зардлыг эсвэл 1 мянган токен тус бүрийг хянана уу. Тоглоомын заавар биш, харин таны үйлчилж буй бодит нөхцөл байдлыг тодорхойл. Жижиг "төгс тэмдэглэл" хөтлөх нь алдааг таамаглах, давтахаас зайлсхийхэд тусална.
Сургалтын гүйцэтгэлд хурдан бөгөөд эрсдэл багатай ялалтууд
Холимог нарийвчлал (FP16/BF16) нь ихэвчлэн хамгийн хурдан эхний хөшүүрэг байдаг боловч тоон хазайлтыг анхаарч үзээрэй. Хэрэв багцын хэмжээ хязгаарлагдмал бол градиент хуримтлал нь санах ойг хэтрүүлэхгүйгээр оновчлолыг тогтворжуулж чадна. Градиент шалгах цэг нь бага санах ойн оронд нэмэлт тооцооллыг сольж, илүү том контекстийг идэвхжүүлдэг. Токенжуулалт болон өгөгдөл ачаалагчийн тохиргоог үл тоомсорлож болохгүй - тэд GPU-г чимээгүйхэн өлсгөж чадна.
torch.compile, ONNX Runtime, эсвэл TensorRT-г хэзээ ашиглах вэ
Эдгээр хэрэгслүүд нь үйл ажиллагааны нэмэлт ачааллыг чиглүүлдэг: график барих, цөмийн нэгдэл, ажиллах үеийн графикийн оновчлол. Тэд цэвэр дүгнэлтийн хурдыг өгч чаддаг боловч үр дүн нь загварын хэлбэр болон техник хангамжаас хамааран өөр өөр байдаг. Зарим тохиргоо нь ид шид мэт санагддаг бол зарим нь бараг хөдөлдөггүй. Хэлбэрийн өөрчлөлт болон хааяа нэг "гремлин" алдаануудад мэдрэмтгий байдлыг хүлээж байгаарай - бодит ажлын ачааллынхаа өмнө болон дараа хэмжинэ үү.
Квантчлал үнэ цэнэтэй эсэх, хэт хол явахаас хэрхэн зайлсхийх вэ
Квантжуулалт нь санах ойг багасгаж, дүгнэлтийг хурдасгаж болох ч чанар нь захын тохиолдлуудад алдагдаж болзошгүй. Бага битийн сонголтууд (INT4/k-bit гэх мэт) нь илүү өндөр эрсдэлтэй илүү их хэмнэлтийг авчирдаг. Хамгийн аюулгүй зуршил бол бодит туршилтын багц дээр үнэлж, гаралтыг харьцуулах явдал юм, дотоод мэдрэмж биш. Эхлээд аюулгүй алхмуудаас эхэл, дараа нь шаардлагатай бол зөвхөн бага нарийвчлалтайгаар үргэлжлүүл.
Загварын хэмжээг багасгахын тулд тайрах болон нэрэх хоёрын ялгаа
Тайралт нь "үхмэл жин"-ийн параметрүүдийг арилгадаг бөгөөд чанарыг сэргээхийн тулд ихэвчлэн давтан сургалт шаарддаг, ялангуяа эрчимтэй хийгдсэн тохиолдолд. Нэрэлт нь жижиг сурагчийн загварыг илүү том багшийн зан авирыг дуурайлган сургадаг бөгөөд энэ нь хэт их тоон үзүүлэлтээс илүү урт хугацааны ROI байж болно. Хэрэв та ижил төстэй ажиллаж, тогтвортой байдаг жижиг загварыг хүсч байвал нэрэлт нь ихэвчлэн илүү цэвэр зам юм.
Үйлчилгээг сайжруулах замаар дүгнэлтийн зардал болон хоцрогдолыг хэрхэн бууруулах вэ
Үйлчилгээ нь оновчлол мэдэгдэхүйц болдог газар юм: багцлах нь нэвтрүүлэх чадварыг нэмэгдүүлдэг боловч хэтрүүлэн хийвэл хоцрогдолд нөлөөлж болзошгүй тул болгоомжтой тохируулна уу. Контекст давтагдах үед кэшлэх (шууд кэшлэх болон KV-кэшийг дахин ашиглах) нь асар их байж болно. Нийт хугацаа ижил байсан ч урсгалын гаралт нь хүлээн зөвшөөрөгдсөн хурдыг сайжруулдаг. Мөн стек дээрээ токен тус бүрийн нэмэлт зардлыг хайж үзээрэй - токен тус бүрийн бага хэмжээний ажил хурдан нэмэгддэг.
Хиймэл оюун ухааны загваруудыг оновчтой болгоход сүүлний хоцрогдол яагаад маш чухал вэ
Дундаж үзүүлэлтүүд гайхалтай харагдаж болох ч p99 нь гамшиг болж, хэрэглэгчид сүүл хэсэгт амьдрах хандлагатай байдаг. Сүүлний хоцрогдол нь ихэвчлэн чичиргээнээс үүдэлтэй байдаг: санах ойн хуваагдал, CPU-ийн урьдчилсан боловсруулалтын огцом өсөлт, токенжуулалтын удаашрал эсвэл багцлах муу зан төлөв. Тийм ч учраас гарын авлага нь хувь хэмжээ болон бодит ажлын ачааллыг онцолсон байдаг. Хэрэв та зөвхөн p50-г оновчтой болговол "санамсаргүй байдлаар удаан мэдрэгдэх" туршлагыг дамжуулж болно
Лавлагаа
-
Amazon Web Services (AWS) - AWS CloudWatch-ийн хувь хэмжээ (статистикийн тодорхойлолт) - docs.aws.amazon.com
-
Google - The Tail at Scale (сүүлний хоцрогдлын шилдэг туршлага) - sre.google
-
Google - Үйлчилгээний түвшний зорилтууд (SRE Book) - хоцрогдлын хувь хэмжээ - sre.google
-
PyTorch - torch.compile - docs.pytorch.org
-
PyTorch - FullyShardedDataParallel (FSDP) - docs.pytorch.org
-
PyTorch - PyTorch Profiler - docs.pytorch.org
-
PyTorch - CUDA семантик: санах ойн менежмент (CUDA санах ойн хуваарилалтын тэмдэглэл) - docs.pytorch.org
-
PyTorch - Автомат Холимог Нарийвчлал (torch.amp / AMP) - docs.pytorch.org
-
PyTorch - torch.utils.checkpoint - docs.pytorch.org
-
PyTorch - Гүйцэтгэлийн тохируулгын гарын авлага - docs.pytorch.org
-
PyTorch - Тайрах заавар - docs.pytorch.org
-
PyTorch - PyTorch дахь CUDA санах ойн хэрэглээг ойлгох нь - docs.pytorch.org
-
PyTorch - torch.compile заавар / тойм - docs.pytorch.org
-
ONNX ажиллах хугацаа - ONNX ажиллах хугацааны баримтжуулалт - onnxruntime.ai
-
NVIDIA - TensorRT баримтжуулалт - docs.nvidia.com
-
NVIDIA - TensorRT квантлагдсан төрлүүд - docs.nvidia.com
-
NVIDIA - Nsight системүүд - developer.nvidia.com
-
NVIDIA - Triton Inference Server - динамик багцжуулалт - docs.nvidia.com
-
DeepSpeed - ZeRO 3-р шатны баримтжуулалт - deepspeed.readthedocs.io
-
bitsandbytes (bitsandbytes-суурь) - bitsandbytes - github.com
-
Тэврэлттэй царай - Хурдасгах: Градиент хуримтлалын гарын авлага - huggingface.co
-
Тэврэлтийн царай - Токенизаторын баримт бичиг - huggingface.co
-
Тэврэлтийн царай - Трансформерууд: PEFT гарын авлага - huggingface.co
-
Тэврэлт царай - Трансформерууд: KV кэшийн тайлбар - huggingface.co
-
Тэврэлттэй царай - Трансформерууд: "Хурдан" токенизаторууд (токенизаторын ангиуд) - huggingface.co
-
arXiv - Мэдлэгийг мэдрэлийн сүлжээнд нэрэх нь (Хинтон нар, 2015) - arxiv.org
-
arXiv - LoRA: Том хэлний загваруудын доод зэрэглэлийн дасан зохицол - arxiv.org
-
arXiv - FlashAttention: IO-Awareness ашиглан хурдан бөгөөд санах ойд хэмнэлттэй нарийн анхаарал төвлөрүүлэх - arxiv.org