Qısa cavab: Süni intellekt modellərini optimallaşdırmaq üçün bir əsas məhdudiyyət (gecikmə, xərc, yaddaş, keyfiyyət, sabitlik və ya ötürmə qabiliyyəti) seçin, sonra bir şeyi dəyişdirməzdən əvvəl etibarlı bir baza əldə edin. Əvvəlcə boru kəmərindəki maneələri aradan qaldırın, sonra qarışıq dəqiqlik və toplulaşdırma kimi aşağı riskli qazancları tətbiq edin; keyfiyyət uyğun gəlirsə, kompilyator/işləmə vaxtı alətlərinə keçin və yalnız bundan sonra lazım olduqda kvantlaşdırma və ya distillə yolu ilə model ölçüsünü azaldın.
Əsas nəticələr:
Məhdudiyyət : Bir və ya iki hədəf metrikası seçin; optimallaşdırma pulsuz qələbələr deyil, güzəştlər mənzərəsidir.
Ölçmə : p50/p95/p99, məhsuldarlıq, istifadə və yaddaş pikləri ilə real iş yüklərini profilləşdirin.
Boru kəməri : Modelə toxunmadan əvvəl tokenləşdirmə, məlumat yükləyiciləri, əvvəlcədən emal və paketləməni düzəldin.
Servis : Keşləmə, qəsdən toplulaşdırma, paralel tənzimləmə istifadə edin və quyruq gecikməsinə yaxından nəzarət edin.
Mühafizəçilər : Hər performans dəyişikliyindən sonra qızıl tapşırıqlar, tapşırıq ölçümləri və nöqtə yoxlamaları işlədin.

🔗 Süni intellekt modellərini necə effektiv şəkildə qiymətləndirmək olar
Modelləri ədalətli və etibarlı şəkildə qiymətləndirmək üçün əsas meyarlar və addımlar.
🔗 Süni intellekt performansını real ölçülərlə necə ölçmək olar
Müqayisə etmək üçün etalonlardan, gecikmədən, xərcdən və keyfiyyət siqnallarından istifadə edin.
🔗 Süni intellekt modellərini istehsaldan əvvəl necə sınaqdan keçirmək olar
Praktik sınaq iş axını: məlumatların bölünməsi, stress halları və monitorinq.
🔗 Kontent yaratmaq üçün süni intellektdən necə istifadə etməli
Strukturlaşdırılmış tapşırıqlar və təkrarlama ilə ideyaları daha sürətli şəkildə qaralamalara çevirin.
1) "Optimallaşdırma" praktikada nə deməkdir (çünki hər kəs fərqli şəkildə istifadə edir) 🧠
İnsanlar "süni intellekt modelini optimallaşdırın" dedikdə, onlar aşağıdakıları nəzərdə tuta bilərlər:
-
Daha sürətli edin (daha az gecikmə)
-
Daha ucuz edin (daha az GPU saatı, daha az bulud xərci)
-
Daha kiçik edin (yaddaş izi, kənar yerləşdirmə)
-
Daha dəqiq olun (keyfiyyət yaxşılaşdırılması, halüsinasiyaların azalması)
-
Daha sabit hala gətirin (daha az dəyişkənlik, istehsalda daha az nasazlıq)
-
Xidmət göstərməyi asanlaşdırın (ötürmə qabiliyyəti, toplulaşdırma, proqnozlaşdırıla bilən performans)
Bir az əsəbiləşdirici həqiqət budur: bunların hamısını birdən maksimum dərəcədə artıra bilməzsiniz. Optimallaşdırma şarın sıxılması kimidir - bir tərəfini içəri itələyin, digər tərəfi isə çıxır. Həmişə olmasa da, tez-tez kompromislər planlaşdırmalısınız.
əsas məhdudiyyətinizi seçin :
-
İstifadəçilərə canlı xidmət göstərirsinizsə, p95 gecikməsi ( AWS CloudWatch persentilləri ) və quyruq performansı ( “quyruq gecikməsi” ən yaxşı təcrübə ) ilə maraqlanırsınız 📉
-
Əgər məşq edirsinizsə, keyfiyyətə və GPU istifadəsinə əhəmiyyət verirsiniz 🔥
-
Cihazlarda yerləşdirirsinizsə, RAM və gücə 🔋
2) Süni intellekt model optimallaşdırmasının yaxşı versiyası necə görünür ✅
Optimallaşdırmanın yaxşı bir versiyası sadəcə "kvantlaşdırma tətbiq edin və dua edin" demək deyil. Bu, bir sistemdir. Ən yaxşı qurğular adətən aşağıdakılara malikdir:
-
Etibar etdiyiniz bir təməl.
Əgər mövcud nəticələrinizi təkrarlaya bilmirsinizsə, deməli, nəyisə yaxşılaşdırdığınızı bilə bilməzsiniz. Sadə... amma insanlar bunu görməzdən gəlirlər. Sonra isə spiralvari şəkildə dəyişirlər. -
Aydın bir hədəf metrikası olan
"Daha sürətli" qeyri-müəyyəndir. "Eyni keyfiyyət balında p95 gecikməsini 900ms-dən 300ms-ə endir" real bir hədəfdir. -
Keyfiyyət üçün maneələr
Hər bir performans qələbəsi səssiz keyfiyyət reqressiyası riskini daşıyır. Sizə testlər, qiymətləndirmələr və ya heç olmasa ağıl dəsti lazımdır. -
Avadanlıq məlumatlılığı
Bir GPU-da "sürətli" model digərində sürünə bilər. CPU-lar özünəməxsus xaos növüdür. -
Təkrarlanan dəyişikliklər, böyük partlayışın yenidən yazılması deyil.
Beş şeyi eyni anda dəyişdirəndə və performans yaxşılaşanda, bunun səbəbini bilmirsiniz. Hansı ki... narahatedicidir.
Optimallaşdırma gitara kökləmək kimi hiss olunmalıdır - kiçik düzəlişlər edin, diqqətlə qulaq asın, təkrarlayın 🎸. Əgər bıçaqları jonqlyorlaşdırmaq kimi hiss olunursa, deməli, nəsə səhvdir.
3) Müqayisə Cədvəli: Süni intellekt modellərini optimallaşdırmaq üçün məşhur seçimlər 📊
Aşağıda ümumi optimallaşdırma alətlərinin/yanaşmalarının qısa və bir qədər səliqəsiz müqayisə cədvəli verilmişdir. Xeyr, bu, tamamilə "ədalətli" deyil - real həyat da belə deyil.
| Alət / Seçim | Tamaşaçı | Qiymət | Niyə işləyir |
|---|---|---|---|
PyTorch torch.compile ( PyTorch sənədləri ) |
PyTorch xalqı | Pulsuz | Qrafik çəkilişi + kompilyator fəndləri xərci azalda bilər... bəzən bu, sehrdir ✨ |
| ONNX Runtime ( ONNX Runtime sənədləri ) | Yerləşdirmə qrupları | Sərbəst | Güclü nəticə optimallaşdırmaları, geniş dəstək, standartlaşdırılmış xidmət üçün yaxşıdır |
| TensorRT ( NVIDIA TensorRT sənədləri ) | NVIDIA yerləşdirilməsi | Ödənişli vibrasiyalar (çox vaxt paket şəklində) | Aqressiv nüvə birləşməsi + dəqiq idarəetmə, klikləndikdə çox sürətli |
| DeepSpeed ( Zero sənədləri ) | Təlim qrupları | Pulsuz | Yaddaş + ötürmə qabiliyyəti optimallaşdırmaları (ZeRO və s.). Reaktiv mühərrik kimi hiss oluna bilər |
| FSDP (PyTorch) ( PyTorch FSDP sənədləri ) | Təlim qrupları | Pulsuz | Parametrləri/qradiyentləri parçalayır, böyük modelləri daha az qorxulu edir |
| bitsandbytes kvantlaşdırması ( bitsandbytes ) | LLM tinkerləri | Pulsuz | Aşağı bit çəkilər, böyük yaddaş qənaəti - keyfiyyət asılıdır, amma vay 😬 |
| Distillə ( Hinton və digərləri, 2015 ) | Məhsul qrupları | “Zaman dəyəri” | Kiçik tələbə modeli davranışı miras alır, adətən uzunmüddətli ən yaxşı ROI |
| Budama ( PyTorch budama təlimatı ) | Tədqiqat + məhsul | Pulsuz | Ölü çəkini aradan qaldırır. Təlimlə birlikdə daha yaxşı təsir göstərir |
| Flash Diqqət / əridilmiş nüvələr ( FlashAttention kağızı ) | Performans nerds | Pulsuz | Daha sürətli diqqət, daha yaxşı yaddaş davranışı. Transformatorlar üçün əsl qələbə |
| Triton Inference Server ( Dinamik toplulaşdırma ) | Ops/infra | Pulsuz | İstehsal xidməti, partiyalarla çatdırılma, çoxmodelli boru kəmərləri - müəssisəyə xas hiss olunur |
Formatlaşdırma qəribəliyi etirafı: “Qiymət” səliqəsizdir, çünki açıq mənbəli versiyalar sizə həftəsonu səhv düzəltməyə başa gələ bilər ki, bu da... qiymətdir. 😵💫
4) Ölçmədən Başlayın: İstədiyiniz kimi profil yaradın 🔍
Bütün bu təlimatdan yalnız bir şey etsəniz, bunu edin: düzgün ölçün.
Öz sınaqlarımda ən böyük "optimallaşdırma irəliləyişləri" utandırıcı dərəcədə sadə bir şey kəşf etməklə əldə edildi, məsələn:
-
GPU-nu ac qoyan məlumat yükləyicisi
-
CPU əvvəlcədən emal çətinliyi
-
nüvənin başının üstündən işə düşməsinə səbəb olan kiçik partiya ölçüləri
-
yavaş tokenləşdirmə (tokenləşdiricilər sakit cani ola bilər)
-
yaddaş parçalanması ( PyTorch CUDA yaddaş ayırıcı qeydləri )
-
tək qatlı dominant hesablama
Nə ölçmək lazımdır (minimum dəst)
-
Gecikmə (p50, p95, p99) ( Gecikmə persentillərində SRE )
-
Ötürmə qabiliyyəti (tokenlər/san, sorğular/san)
-
GPU istifadəsi (hesablama + yaddaş)
-
VRAM / RAM pikləri
-
1k token üçün qiymət (və ya hər nəticə üçün)
Praktik profilləmə düşüncə tərzi
-
Sizi maraqlandıran bir ssenarini (oyuncaq təklifi deyil) qeyd edin.
-
Hər şeyi kiçik bir "mükəmməl gündəlik"də qeyd edin.
Bəli, bu, darıxdırıcıdır... amma sonradan özünüzü qaz işıqlandırmaqdan xilas edir.
(Əgər başlamaq üçün konkret bir alət istəyirsinizsə: PyTorch Profiler ( torch.profiler docs ) və Nsight Systems ( NVIDIA Nsight Systems ) adətən şübhəlilərdir.)
5) Məlumat + Təlim Optimallaşdırması: Sakit Super Güc 📦🚀
İnsanlar model arxitekturasına aludə olur və prosessorun işini unudurlar. Bu vaxt prosessor qrafik prosessorun yarısını səssizcə yandırır.
Tez ortaya çıxan asan qələbələr
-
Qarışıq dəqiqlikdən istifadə edin (sabit olduqda FP16/BF16) ( PyTorch AMP / torch.amp ).
Adətən daha sürətli, çox vaxt yaxşıdır - lakin rəqəmsal qəribəliklərə diqqət yetirin. -
Partiya ölçüsü məhdud olduqda qradiyent yığılması 🤗 Sürətləndirmə təlimatı )
Yaddaşı partlatmadan optimallaşdırmanı sabit saxlayır. -
Qradiyent yoxlama məntəqəsi ( torch.utils.checkpoint )
Ticarətlər yaddaş üçün hesablanır - daha böyük kontekstləri mümkün edir. -
Səmərəli tokenləşdirmə ( 🤗 Tokenləşdiricilər )
Tokenləşdirmə miqyasda maneəyə çevrilə bilər. Bu, cazibədar deyil; vacibdir. -
Dataloader tuning
Daha çox işçi, sancaqlanmış yaddaş, ön yükləmə - təsirli deyil, amma təsirli 😴➡️💪 ( PyTorch Performans Tuning Təlimatı )
Parametrlərə səmərəli dəqiq tənzimləmə
Əgər böyük modelləri təkmilləşdirirsinizsə, PEFT metodları (məsələn, LoRA tipli adapterlər) təəccüblü dərəcədə güclü qalarkən təlim xərclərini əhəmiyyətli dərəcədə azalda bilər ( 🤗 Transformers PEFT təlimatı , LoRA sənədi ). Bu, "niyə bunu daha əvvəl etmədik?" anlarından biridir.
6) Memarlıq Səviyyəsində Optimallaşdırma: Modelin Düzgün Ölçüsünü Təyin Et 🧩
Bəzən optimallaşdırmanın ən yaxşı yolu... iş üçün çox böyük olan bir modeldən istifadəni dayandırmaqdır. Bilirəm, bu, küfrdür 😄.
Bir neçə əsas məqama zəng edin:
-
Tam ümumi kəşfiyyat vibrasiyasına, yoxsa mütəxəssisə ehtiyacınız olub-olmadığına qərar verin.
-
Kontekst pəncərəsini daha böyük yox, lazım olduğu qədər böyük saxlayın.
-
Əlinizdəki iş üçün təlim keçmiş bir modeldən istifadə edin (təsnifat işi üçün təsnifat modelləri və s.).
Praktik düzgün ölçü strategiyaları
-
Əksər sorğular üçün
daha kiçik bir onurğaya keçin. Daha sonra "çətin sorğuları" daha böyük bir modelə yönləndirin. -
İki mərhələli quraşdırmadan istifadə edin.
Sürətli model qaralamaları, daha güclü model yoxlamaları və ya redaktələri.
Bu, seçici - bezdirici, lakin təsirli bir dostla yazmaq kimidir. -
Çıxış uzunluğunu azaldın
Çıxış tokenləri pul və vaxt tələb edir. Modeliniz boş-boşuna işləyirsə, boş-boşuna pul ödəyirsiniz.
Komandaların daha qısa nəticələr tətbiq etməklə xərcləri kəskin şəkildə azaltdığını görmüşəm. Bu, xırda bir hissdir. İşləyir.
7) Kompilyator + Qrafik Optimallaşdırmaları: Sürət Haradan Gəlir 🏎️
Bu, "kompüterin daha ağıllı kompüter işləri görməsini təmin et" təbəqəsidir.
Ümumi üsullar:
-
Operator füzyonu (nüvələri birləşdirmək) ( NVIDIA TensorRT “qat füzyonu” )
-
Sabit qatlanma (əvvəlcədən hesablanmış sabit dəyərlər) ( ONNX Runtime qrafik optimallaşdırmaları )
-
Nüvə seçimi aparata uyğunlaşdırılıb
-
Python yükünü azaltmaq üçün qrafik çəkilişi
torch.compileoverview )
Sadə dillə desək: modeliniz riyazi cəhətdən sürətli, lakin əməliyyat baxımından yavaş ola bilər. Kompilyatorlar bunun bir hissəsini düzəldirlər.
Praktik qeydlər (ya da çapıqlar)
-
Bu optimallaşdırmalar model forma dəyişikliklərinə həssas ola bilər.
-
Bəzi modellər çox sürətlənir, bəziləri isə çətinliklə hərəkət edir.
-
Bəzən sürət artırıcı və çaşdırıcı bir böcəklə qarşılaşırsan - sanki içəri girən bir qremlin kimi 🧌
Yenə də, işə yaradıqda, ən təmiz qələbələrdən biridir.
8) Kvantlaşdırma, Budama, Distillə: Ağlamadan (Çox) Daha Kiçik 🪓📉
Bu, insanların istədiyi bölmədir... çünki bu, sərbəst performans kimi səslənir. Bu, ola bilər, amma buna əməliyyat kimi yanaşmaq lazımdır.
Kvantlaşdırma (aşağı dəqiq çəkilər/aktivləşdirmələr)
-
Nəticə çıxarma sürəti və yaddaş üçün əladır
-
Risk: keyfiyyət, xüsusən də kənar korpuslarda aşağı düşür
-
Ən yaxşı təcrübə: vibrasiyalarda deyil, real test dəstində qiymətləndirmə aparın
Eşitdiyiniz ümumi dadlar:
-
INT8 (çox vaxt bərk) ( TensorRT kvantlaşdırılmış növləri )
-
INT4 / aşağı bit (böyük qənaət, keyfiyyət riski artır) ( bits və bayt k-bit kvantlaşdırma )
-
Qarışıq kvant (hər şeyin eyni dəqiqliyə ehtiyacı yoxdur)
Budama (parametrləri silmək)
-
"Əhəmiyyətsiz" çəkiləri və ya strukturları aradan qaldırır ( PyTorch budama təlimatı )
-
Keyfiyyəti bərpa etmək üçün adətən yenidən hazırlıq tələb olunur
-
Diqqətlə edildikdə insanların düşündüyündən daha yaxşı işləyir..
Distillə (tələbə müəllimdən öyrənir)
Bu, mənim şəxsi sevimli uzunmüddətli rıçaqdır. Distillə oxşar şəkildə davranan daha kiçik bir model yarada bilər və bu, çox vaxt həddindən artıq kvantlaşdırmadan daha sabitdir ( Neyron Şəbəkəsində Biliklərin Distillə Edilməsi ).
Qeyri-kamil metafora: distillə mürəkkəb bir şorbanı süzgəcdən keçirib daha kiçik bir şorba əldə etmək kimidir. Şorba belə işləmir, amma ideyanı başa düşürsünüz 🍲.
9) Xidmət və Nəticə: Əsl Döyüş Zonası 🧯
Bir modeli "optimallaşdıra" və yenə də pis xidmət göstərə bilərsiniz. Xidmət gecikmə və xərclərin reallaşdığı yerdir.
Xidmət vacib olan qələbələr
-
Toplulaşdırma
Ötürmə qabiliyyətini artırır. Lakin həddindən artıq çox işlətsəniz, gecikməni artırır. Tarazlayın. ( Triton dinamik toplulaşdırması ) -
Keşləmə
Təkrarlanan kontekstlər üçün sorğu keşləməsi və KV-keşin təkrar istifadəsi böyük ola bilər. ( KV keşinin izahı ) -
Axın çıxışı
İstifadəçilər ümumi vaxt oxşar olsa belə, bunun daha sürətli olduğunu hiss edirlər. Qavrayış vacibdir 🙂. -
Token-token əlavə xərclərinin azaldılması
Bəzi steklar hər token üçün əlavə iş görür. Bu əlavə xərcləri azaldın və böyük qazanc əldə edin.
Quyruq gecikməsinə diqqət yetirin
Orta göstəriciniz əla görünə bilər, p99 göstəriciniz isə fəlakətdir. Təəssüf ki, istifadəçilər quyruqda yaşayırlar. ( “Quyruq gecikməsi” və orta göstəricilərin niyə yalan danışdığı )
10) Təchizatdan İstifadə Edilən Optimallaşdırma: Modeli Maşınla Uyğunlaşdırın 🧰🖥️
Avadanlıq məlumatı olmadan optimallaşdırma, təkərləri yoxlamadan yarış avtomobilini tənzimləmək kimidir. Əlbəttə, bunu edə bilərsiniz, amma bu, bir az axmaqlıqdır.
GPU mülahizələri
-
Yaddaşın bant genişliyi çox vaxt məhdudlaşdırıcı amildir, xam hesablama deyil
-
Daha böyük partiya ölçüləri kömək edə bilər, ta ki onlar kömək etməyənə qədər
-
Nüvə birləşməsi və diqqət optimallaşdırmaları transformatorlar üçün çox vacibdir ( FlashAttention: IO-aware dəqiq diqqət )
CPU mülahizələri
-
Yivləmə, vektorlaşdırma və yaddaş lokalizasiyası çox vacibdir
-
Tokenizasiyanın üst hissəsi üstünlük təşkil edə bilər ( 🤗 “Sürətli” tokenizatorlar )
-
GPU-dan fərqli kvantlaşdırma strategiyalarına ehtiyacınız ola bilər
Kənar/mobil mülahizələr
-
Yaddaş izi bir nömrəli prioritetə çevrilir
-
Gecikmə dəyişkənliyi vacibdir, çünki cihazlar... əhval-ruhiyyəlidir
-
Kiçik, ixtisaslaşmış modellər çox vaxt böyük ümumi modelləri üstələyir
11) Keyfiyyətli Məhəccərlər: Özünüzü həşərata “optimallaşdırmayın” 🧪
Hər sürət qələbəsi keyfiyyət yoxlaması ilə gəlməlidir. Əks təqdirdə, qeyd edəcək, göndərəcək və sonra "niyə köməkçi birdən pirat kimi danışır?" kimi bir mesaj alacaqsınız 🏴☠️
Praqmatik mühafizə məhəccərləri:
-
Qızıl tapşırıqlar (həmişə sınaqdan keçirdiyiniz sabit tapşırıqlar dəsti)
-
Tapşırıq metrikləri (dəqiqlik, F1, BLEU, uyğun olan hər şey)
-
İnsan ləkələri ilə yoxlama (bəli, ciddi şəkildə)
-
Reqressiya hədləri (“X%-dən çox düşməyə icazə verilmir”)
Həmçinin nasazlıq rejimlərini izləyin:
-
formatlama sürüşməsi
-
imtina davranış dəyişiklikləri
-
halüsinasiya tezliyi
-
cavab uzunluğu inflyasiyası
Optimallaşdırma davranışı təəccüblü şəkildə dəyişə bilər. Xüsusilə. Qıcıqlandırıcı şəkildə. Gec baxdıqda, proqnozlaşdırıla bilən şəkildə.
12) Yoxlama siyahısı: Süni intellekt modellərini addım-addım necə optimallaşdırmaq olar ✅🤖
Süni İntellekt Modellərini Necə Optimallaşdırmaq olar bölməsi üçün aydın əməliyyatlar ardıcıllığı istəyirsinizsə , insanların ağlını başında saxlamağa kömək edən iş axını aşağıdakı kimidir:
-
Uğuru təyin edin.
1-2 əsas ölçü seçin (gecikmə, xərc, məhsuldarlıq, keyfiyyət). -
Əsas Profilin real iş yükünü, p50/p95 qeydini, yaddaşı, dəyəri ölçün
. ( PyTorch Profiler ) -
Boru kəmərindəki maneələri aradan qaldırın.
Məlumatların yüklənməsi, tokenləşdirilməsi, əvvəlcədən emal edilməsi, paketləşdirilməsi. -
Aşağı riskli hesablama qələbələrini tətbiq edin
Qarışıq dəqiqlik, nüvə optimallaşdırmaları, daha yaxşı toplulaşdırma. -
Kompilyator/işləmə müddəti optimallaşdırmalarını sınayın.
Qrafik çəkilişi, nəticə çıxarma işləmə müddətləri, operator birləşməsi. (torch.compiletəlimatı , ONNX İşləmə müddəti sənədləri ) -
Modelin dəyərini azaldın.
Diqqətlə kəmiyyətləşdirin, mümkün olduqda distillə edin, lazım olduqda budama edin. -
Sazlama xidməti
Keşləmə, paralellik, yük testi, quyruq gecikməsinin düzəldilməsi. -
Keyfiyyəti təsdiqləyin.
Reqressiya testlərini aparın və nəticələri yan-yana müqayisə edin. -
Təkrarlayın
Kiçik dəyişikliklər, aydın qeydlər, təkrarlayın. Görünməz - təsirli.
Bəli, bu, daha çox "dırmıqlara basmağı necə dayandırmaq olar" kimi hiss olunsa da, "Süni intellekt Modellərini Necə Optimallaşdırmaq olar
13) Ümumi Səhvlər (Beləliklə, onları bizim kimi təkrarlamayasınız) 🙃
-
Ölçmədən əvvəl optimallaşdırmaq
Vaxtınızı itirəcəksiniz. Və sonra səhv şeyi inamla optimallaşdıracaqsınız... -
Tək bir etalonu təqib etmək
. Etalonlar buraxılmaqla yalan danışır. İş yükünüz həqiqətdir. -
Yaddaşın nəzərə alınmaması
Yaddaş problemləri yavaşlamalara, çökmələrə və titrəmələrə səbəb olur. ( PyTorch-da CUDA yaddaş istifadəsini anlamaq ) -
Həddindən artıq erkən kvantlama
Aşağı bitlik kvant inanılmaz ola bilər, amma əvvəlcə daha təhlükəsiz addımlarla başlayın. -
Geri qaytarma planı yoxdur.
Əgər tez bir zamanda geri qayıda bilmirsinizsə, hər yerləşdirmə stresli olur. Stress səhvlərə səbəb olur.
Yekun qeydlər: Optimallaşdırmanın İnsan Yolu 😌⚡
Süni intellekt Modellərini Optimallaşdırmaq tək bir hiylə deyil. Bu, çoxşaxəli bir prosesdir: ölçmək, boru kəmərini düzəltmək, kompilyatorlardan və işləmə müddətlərindən istifadə etmək, xidməti tənzimləmək, sonra lazım gələrsə, modeli kvantlaşdırma və ya distillə ilə kiçiltmək. Bunu addım-addım edin, keyfiyyətli mühafizə dirəklərini saxlayın və "daha sürətli hiss olunur" anlayışına bir metrik kimi etibar etməyin (hissləriniz gözəldir, hissləriniz profilləşdirici deyil).
Ən qısa nəticəni istəyirsinizsə:
-
Əvvəlcə ölçün 🔍
-
Növbəti mərhələdə boru kəmərini optimallaşdırın 🧵
-
Sonra modeli optimallaşdırın 🧠
-
O zaman xidməti optimallaşdırın 🏗️
-
Keyfiyyət yoxlamalarını həmişə aparın ✅
Əgər kömək edərsə, özünüzə xatırladın: məqsəd "mükəmməl model" deyil. Məqsəd gecələr yata biləcəyiniz qədər sürətli, əlverişli və etibarlı bir modeldir... əksər gecələr 😴.
Tez-tez verilən suallar
Süni intellekt modelini optimallaşdırmaq praktikada nə deməkdir
“Optimallaşdırmaq” adətən bir əsas məhdudiyyəti təkmilləşdirmək deməkdir: gecikmə, xərc, yaddaş izi, dəqiqlik, sabitlik və ya xidmət ötürmə qabiliyyəti. Çətin tərəfi güzəştlərdir - bir sahəni itələmək digər sahəni zəiflədə bilər. Praktik yanaşma aydın bir hədəf seçmək (məsələn, p95 gecikməsi və ya keyfiyyətə qədər vaxt) və ona doğru optimallaşdırmaqdır. Hədəf olmadan “təkmilləşdirmək” və yenə də itirmək asandır.
Keyfiyyətə zərər vermədən süni intellekt modellərini necə optimallaşdırmaq olar
Hər sürət və ya xərc dəyişikliyinə potensial səssiz reqressiya kimi yanaşın. Qızıl göstərişlər, tapşırıq metrikləri və sürətli insan yoxlamaları kimi qoruyucu vasitələrdən istifadə edin. Məqbul keyfiyyət dəyişikliyi üçün aydın bir hədd təyin edin və nəticələri yan-yana müqayisə edin. Bu, göndərildikdən sonra "daha sürətlidir" ifadəsinin "niyə birdən istehsalda qəribələşdi?" ifadəsinə çevrilməsinin qarşısını alır.
Optimallaşdırmaya başlamazdan əvvəl nələri ölçmək lazımdır
Gecikmə faizləri (p50, p95, p99), ötürmə qabiliyyəti (token/san və ya sorğu/san), GPU istifadəsi və pik VRAM/RAM ilə başlayın. Qiymət məhdudiyyətdirsə, hər nəticə üçün və ya 1k token üçün xərcləri izləyin. Oyuncaq təklifi deyil, xidmət etdiyiniz real ssenarini profil edin. Kiçik bir "perf jurnalı" saxlamaq, səhvləri təxmin etməkdən və təkrarlamaqdan qaçınmanıza kömək edir.
Təlim performansı üçün sürətli və aşağı riskli qələbələr
Qarışıq dəqiqlik (FP16/BF16) tez-tez ən sürətli ilk qoldur, lakin rəqəmsal qəribəliklərə diqqət yetirin. Əgər toplu ölçüsü məhduddursa, qradiyent toplanması yaddaşı pozmadan optimallaşdırmanı sabitləşdirə bilər. Qradiyent yoxlama məntəqəsi daha aşağı yaddaş üçün əlavə hesablamaları dəyişdirir və daha böyük kontekstlərə imkan verir. Tokenizasiyanı və məlumat yükləyicisinin tənzimlənməsini nəzərə almayın - onlar GPU-nu sakitcə ac qoya bilərlər.
torch.compile, ONNX Runtime və ya TensorRT-dan nə vaxt istifadə etməli
Bu alətlər əməliyyat xərclərini hədəfləyir: qrafiklərin çəkilməsi, nüvənin birləşməsi və iş vaxtı qrafik optimallaşdırmaları. Onlar təmiz nəticə çıxarma sürətləndirmələri təmin edə bilərlər, lakin nəticələr modelin formasına və aparat təminatına görə dəyişir. Bəzi qurğular sehr kimi hiss olunur; digərləri isə çətinliklə hərəkət edir. Forma dəyişikliklərinə və bəzən "qremlin" səhvlərinə qarşı həssaslıq gözləyin - real iş yükünüzdə əvvəl və sonra ölçün.
Kvantlaşdırmanın buna dəyər olub-olmadığı və həddindən artıq irəliləməmək üçün necə
Kvantlaşdırma, xüsusən də INT8 ilə yaddaşı azalda və nəticə çıxarmağı sürətləndirə bilər, lakin keyfiyyət kənar hallarda aşağı düşə bilər. Daha aşağı bit seçimləri (məsələn, INT4/k-bit) daha yüksək risklə daha böyük qənaət gətirir. Ən təhlükəsiz vərdiş, daxili hissləri deyil, real test dəstində qiymətləndirmək və nəticələrlə müqayisə etməkdir. Əvvəlcə daha təhlükəsiz addımlarla başlayın, sonra yalnız lazım olduqda daha aşağı dəqiqliyə keçin.
Model ölçüsünün azaldılması üçün budama və distillə arasındakı fərq
Budama "ölü çəki" parametrlərini aradan qaldırır və keyfiyyəti bərpa etmək üçün tez-tez yenidən hazırlıq tələb olunur, xüsusən də aqressiv şəkildə aparıldıqda. Distillə daha kiçik bir tələbə modelini daha böyük bir müəllimin davranışını təqlid etməyə öyrədir və bu, həddindən artıq kvantlaşdırmadan daha güclü uzunmüddətli ROI ola bilər. Bənzər davranan və sabit qalan daha kiçik bir model istəyirsinizsə, distillə tez-tez daha təmiz yoldur.
Xidmət təkmilləşdirmələri vasitəsilə nəticə çıxarma xərclərini və gecikməni necə azaltmaq olar
Servis optimallaşdırmanın hiss olunduğu yerdir: toplulaşdırma ötürmə qabiliyyətini artırır, lakin həddindən artıq edildikdə gecikməyə zərər verə bilər, ona görə də diqqətlə tənzimləyin. Kontekstlər təkrarlandıqda keşləmə (sürətli keşləmə və KV-keşin təkrar istifadəsi) böyük ola bilər. Axın çıxışı, ümumi vaxt oxşar olsa belə, qəbul edilən sürəti artırır. Həmçinin yığınızda token-token əlavə xərclərinə diqqət yetirin - token başına kiçik iş tez bir zamanda toplanır.
Süni intellekt modellərini optimallaşdırarkən quyruq gecikməsinin nə üçün bu qədər vacib olduğu
Orta göstəricilər əla görünə bilər, p99 isə fəlakətdir və istifadəçilər quyruqda yaşamağa meyllidirlər. Quyruq gecikməsi tez-tez titrəmələrdən qaynaqlanır: yaddaş parçalanması, CPU-nun əvvəlcədən emal sıçrayışları, tokenləşdirmə yavaşlamaları və ya zəif toplaşma davranışı. Buna görə də təlimat faizləri və real iş yüklərini vurğulayır. Yalnız p50-ni optimallaşdırsanız, yenə də "təsadüfi olaraq yavaş hiss olunan" bir təcrübə təqdim edə bilərsiniz
İstinadlar
-
Amazon Veb Xidmətləri (AWS) - AWS CloudWatch faizləri (statistika tərifləri) - docs.aws.amazon.com
-
Google - Ölçəkdə Quyruq (quyruq gecikməsinin ən yaxşı təcrübəsi) - sre.google
-
Google - Xidmət Səviyyəsi Məqsədləri (SRE Kitabı) - gecikmə faizləri - sre.google
-
PyTorch - torch.compile - docs.pytorch.org
-
PyTorch - FullyShardedDataParallel (FSDP) - docs.pytorch.org
-
PyTorch - PyTorch Profiler - docs.pytorch.org
-
PyTorch - CUDA semantikası: yaddaş idarəetməsi (CUDA yaddaş ayırıcı qeydləri) - docs.pytorch.org
-
PyTorch - Avtomatik Qarışıq Dəqiqlik (torch.amp / AMP) - docs.pytorch.org
-
PyTorch - torch.utils.checkpoint - docs.pytorch.org
-
PyTorch - Performans Sazlama Təlimatı - docs.pytorch.org
-
PyTorch - Budama Dərsliyi - docs.pytorch.org
-
PyTorch - da CUDA yaddaş istifadəsini anlamaq - docs.pytorch.org
-
PyTorch - torch.compile təlimatı / ümumi məlumat - docs.pytorch.org
-
ONNX İcra Müddəti - ONNX İcra Müddəti Sənədləri - onnxruntime.ai
-
NVIDIA - TensorRT Sənədləri - docs.nvidia.com
-
NVIDIA - TensorRT kvantlaşdırılmış növləri - docs.nvidia.com
-
NVIDIA - Nsight Sistemləri - developer.nvidia.com
-
NVIDIA - Triton Inference Server - dinamik toplulaşdırma - docs.nvidia.com
-
DeepSpeed - ZeRO Mərhələ 3 sənədləri - deepspeed.readthedocs.io
-
bitsandbytes (bitsandbytes-foundation) - bitsandbytes - github.com
-
Qucaqlaşma Üzü - Sürətləndirmə: Qradiyent Yığım Təlimatı - huggingface.co
-
Qucaqlaşma Üzü - Tokenizator sənədləri - huggingface.co
-
Qucaqlaşma Üzü - Transformers: PEFT bələdçisi - huggingface.co
-
Qucaqlaşan Üz - Transformers: KV keşinin izahı - huggingface.co
-
Qucaqlaşan Üz - Transformatorlar: “Sürətli” tokenizerlər (tokenizer sinifləri) - huggingface.co
-
arXiv - Biliyin Neyron Şəbəkəsində Distillə Edilməsi (Hinton və digərləri, 2015) - arxiv.org
-
arXiv - LoRA: Böyük Dil Modellərinin Aşağı Reytinqli Uyğunlaşması - arxiv.org
-
arXiv - FlashAttention: IO-Awareness ilə sürətli və yaddaş baxımından səmərəli dəqiq diqqət - arxiv.org