ចម្លើយខ្លី៖ ដើម្បីធ្វើឱ្យគំរូ AI មានប្រសិទ្ធភាពបំផុត សូមជ្រើសរើសការរឹតបន្តឹងចម្បងមួយ (ភាពយឺតយ៉ាវ តម្លៃ អង្គចងចាំ គុណភាព ស្ថេរភាព ឬអត្រាទិន្នផល) បន្ទាប់មកចាប់យកមូលដ្ឋានដែលអាចទុកចិត្តបានមុនពេលផ្លាស់ប្តូរអ្វីមួយ។ យកចំណុចកកស្ទះនៃបំពង់បង្ហូរចេញជាមុនសិន បន្ទាប់មកអនុវត្តការទទួលបានហានិភ័យទាបដូចជាភាពជាក់លាក់ចម្រុះ និងការបាច់។ ប្រសិនបើគុណភាពនៅតែមាន សូមបន្តទៅឧបករណ៍ចងក្រង/ឧបករណ៍ពេលដំណើរការ ហើយបន្ទាប់មកកាត់បន្ថយទំហំគំរូតាមរយៈការវាស់បរិមាណ ឬការចម្រាញ់នៅពេលដែលត្រូវការ។
ចំណុចសំខាន់ៗ៖
ការរឹតបន្តឹង ៖ ជ្រើសរើសរង្វាស់គោលដៅមួយ ឬពីរ។ ការបង្កើនប្រសិទ្ធភាពគឺជាទេសភាពនៃការសម្របសម្រួល មិនមែនជាការឈ្នះដោយសេរីនោះទេ។
ការវាស់វែង ៖ វិភាគបន្ទុកការងារពិតប្រាកដជាមួយ p50/p95/p99 កម្រិតបញ្ជូន ការប្រើប្រាស់ និងកំពូលអង្គចងចាំ។
បំពង់បង្ហូរប្រេង ៖ ជួសជុលការធ្វើសញ្ញាសម្ងាត់ កម្មវិធីផ្ទុកទិន្នន័យ ការដំណើរការជាមុន និងការចាត់ថ្នាក់មុនពេលប៉ះគំរូ។
ការបម្រើ ៖ ប្រើប្រាស់ការ caching ការ batching ដោយចេតនា ការលៃតម្រូវ concurrency និងតាមដានយ៉ាងដិតដល់លើភាពយឺតយ៉ាវនៃ tail។
របាំងការពារ ៖ ដំណើរការការណែនាំដ៏ល្អបំផុត រង្វាស់ភារកិច្ច និងការត្រួតពិនិត្យភ្លាមៗបន្ទាប់ពីការផ្លាស់ប្ដូរការអនុវត្តនីមួយៗ។

🔗 របៀបវាយតម្លៃគំរូ AI ប្រកបដោយប្រសិទ្ធភាព
លក្ខណៈវិនិច្ឆ័យ និងជំហានសំខាន់ៗ ដើម្បីវិនិច្ឆ័យគំរូដោយយុត្តិធម៌ និងអាចទុកចិត្តបាន។
🔗 របៀបវាស់ស្ទង់ដំណើរការ AI ជាមួយនឹងម៉ែត្រិចពិតប្រាកដ
ប្រើប្រាស់ស្តង់ដារ ភាពយឺតយ៉ាវ តម្លៃ និងសញ្ញាគុណភាពដើម្បីប្រៀបធៀប។
🔗 របៀបសាកល្បងគំរូ AI មុនពេលផលិត
លំហូរការងារសាកល្បងជាក់ស្តែង៖ ការបំបែកទិន្នន័យ ករណីស្ត្រេស និងការត្រួតពិនិត្យ។
🔗 របៀបប្រើ AI សម្រាប់ការបង្កើតខ្លឹមសារ
ប្រែក្លាយគំនិតទៅជាសេចក្តីព្រាងលឿនជាងមុនជាមួយនឹងការជំរុញដែលមានរចនាសម្ព័ន្ធ និងការធ្វើម្តងទៀត។
១) អ្វីដែលពាក្យ "បង្កើនប្រសិទ្ធភាព" មានន័យក្នុងការអនុវត្ត (ពីព្រោះមនុស្សគ្រប់គ្នាប្រើវាខុសគ្នា) 🧠
នៅពេលដែលមនុស្សនិយាយថា "ធ្វើឱ្យគំរូ AI ប្រសើរឡើង" ពួកគេអាចមានន័យថា៖
-
ធ្វើឱ្យវាលឿនជាងមុន (ភាពយឺតយ៉ាវទាប)
-
ធ្វើឱ្យវាមានតម្លៃថោកជាង (ម៉ោង GPU តិចជាងមុន ការចំណាយលើ Cloud ទាបជាង)
-
ធ្វើឱ្យវាតូចជាងមុន (ទំហំអង្គចងចាំ ការដាក់ពង្រាយគែម)
-
ធ្វើឱ្យវាកាន់តែត្រឹមត្រូវ (ការកែលម្អគុណភាព ការយល់ច្រឡំតិចជាងមុន)
-
ធ្វើឱ្យវាមានស្ថេរភាពជាងមុន (ភាពខុសគ្នាតិចជាងមុន ការបរាជ័យតិចជាងមុនក្នុងការផលិត)
-
ធ្វើឱ្យវាកាន់តែងាយស្រួលក្នុងការបម្រើ (បរិមាណផលិតកម្ម ការវេចខ្ចប់ និងដំណើរការដែលអាចព្យាករណ៍បាន)
នេះជាការពិតដែលរំខានបន្តិច៖ អ្នកមិនអាចបង្កើនប្រសិទ្ធភាពទាំងអស់នេះក្នុងពេលតែមួយបានទេ។ ការបង្កើនប្រសិទ្ធភាពគឺដូចជាការច្របាច់ប៉េងប៉ោងមួយ - រុញម្ខាងចូល ហើយម្ខាងទៀតនឹងលេចចេញមក។ មិនមែនជានិច្ចទេ ប៉ុន្តែជាញឹកញាប់គ្រប់គ្រាន់ដែលអ្នកគួរតែរៀបចំផែនការសម្រាប់ការសម្របសម្រួល។.
ដូច្នេះមុននឹងប៉ះអ្វីមួយ សូមជ្រើសរើស ការរឹតបន្តឹងចម្បង ៖
-
ប្រសិនបើអ្នកកំពុងបម្រើអ្នកប្រើប្រាស់ផ្ទាល់ អ្នកយកចិត្តទុកដាក់ចំពោះ ភាពយឺតយ៉ាវ p95 ( AWS CloudWatch percentiles ) និងដំណើរការកន្ទុយ ( ការអនុវត្តល្អបំផុត "ភាពយឺតយ៉ាវកន្ទុយ" ) 📉
-
ប្រសិនបើអ្នកកំពុងហ្វឹកហាត់ អ្នកយកចិត្តទុកដាក់ចំពោះ គុណភាពពេលវេលា និងការប្រើប្រាស់ GPU 🔥
-
ប្រសិនបើអ្នកកំពុងដាក់ពង្រាយនៅលើឧបករណ៍ អ្នកយកចិត្តទុកដាក់ចំពោះ RAM និងថាមពល 🔋
២) កំណែល្អនៃការបង្កើនប្រសិទ្ធភាពគំរូ AI មើលទៅដូចអ្វី ✅
កំណែល្អនៃការបង្កើនប្រសិទ្ធភាពមិនមែនគ្រាន់តែជា "អនុវត្តបរិមាណ និងអធិស្ឋាន" នោះទេ។ វាគឺជាប្រព័ន្ធមួយ។ ការរៀបចំដ៏ល្អបំផុតជាធម្មតាមាន៖
-
មូលដ្ឋានដែលអ្នកទុកចិត្ត
ប្រសិនបើអ្នកមិនអាចបង្កើតលទ្ធផលបច្ចុប្បន្នរបស់អ្នកឡើងវិញបានទេ អ្នកមិនអាចដឹងថាអ្នកបានកែលម្អអ្វីនោះទេ។ សាមញ្ញ... ប៉ុន្តែមនុស្សរំលងវា។ បន្ទាប់មកពួកគេវិលវល់។ -
រង្វាស់គោលដៅច្បាស់លាស់មួយ
គឺ “លឿនជាងមុន” គឺមិនច្បាស់លាស់ទេ។ “កាត់បន្ថយភាពយឺតយ៉ាវនៃ p95 ពី 900ms មកត្រឹម 300ms នៅពិន្ទុគុណភាពដូចគ្នា” គឺជាគោលដៅពិតប្រាកដមួយ។ -
របាំងការពារសម្រាប់គុណភាព
រាល់ការឈ្នះលើការអនុវត្តតែងតែប្រឈមនឹងការតំរែតំរង់គុណភាពដោយស្ងៀមស្ងាត់។ អ្នកត្រូវការការធ្វើតេស្ត ការវាយតម្លៃ ឬយ៉ាងហោចណាស់ក៏ត្រូវការឈុតសុខភាពផ្លូវចិត្តផងដែរ។ -
ការយល់ដឹងអំពីផ្នែករឹង
ម៉ូដែល "លឿន" នៅលើ GPU មួយអាចវារលើ GPU មួយទៀតបាន។ CPU គឺជាប្រភេទពិសេសនៃភាពវឹកវររបស់វា។ -
ការផ្លាស់ប្តូរដដែលៗ មិនមែនជាការសរសេរឡើងវិញភ្លាមៗនោះទេ។
នៅពេលដែលអ្នកផ្លាស់ប្តូររឿងប្រាំក្នុងពេលតែមួយ ហើយដំណើរការប្រសើរឡើង អ្នកមិនដឹងថាហេតុអ្វីទេ។ ដែលជារឿង… គួរឲ្យព្រួយបារម្ភ។
ការបង្កើនប្រសិទ្ធភាពគួរតែមានអារម្មណ៍ដូចជាការលៃតម្រូវហ្គីតា - ការកែតម្រូវតិចតួច ស្តាប់ឱ្យច្បាស់ ធ្វើម្តងទៀត 🎸។ ប្រសិនបើវាមានអារម្មណ៍ដូចជាការលេងកាំបិត នោះមានអ្វីមួយខុសប្រក្រតី។.
៣) តារាងប្រៀបធៀប៖ ជម្រើសពេញនិយមដើម្បីបង្កើនប្រសិទ្ធភាពម៉ូដែល AI 📊
ខាងក្រោមនេះគឺជាតារាងប្រៀបធៀបរហ័ស និងរញ៉េរញ៉ៃបន្តិចនៃឧបករណ៍/វិធីសាស្រ្តបង្កើនប្រសិទ្ធភាពទូទៅ។ ទេ វាមិន "យុត្តិធម៌" ឥតខ្ចោះទេ - ជីវិតពិតក៏មិនដូច្នោះដែរ។.
| ឧបករណ៍ / ជម្រើស | ទស្សនិកជន | តម្លៃ | ហេតុអ្វីបានជាវាដំណើរការ |
|---|---|---|---|
PyTorch torch.compile ( ឯកសារ PyTorch ) |
អ្នកគាំទ្រ PyTorch | ឥតគិតថ្លៃ | ល្បិចចាប់យកក្រាហ្វ + កម្មវិធីចងក្រងអាចកាត់បន្ថយការចំណាយ… ពេលខ្លះវាអស្ចារ្យណាស់ ✨ |
| ONNX Runtime ( ឯកសារ ONNX Runtime ) | ក្រុមដាក់ពង្រាយ | សេរី | ការបង្កើនប្រសិទ្ធភាពនៃការសន្និដ្ឋានដ៏រឹងមាំ ការគាំទ្រយ៉ាងទូលំទូលាយ ល្អសម្រាប់ការបម្រើស្តង់ដារ |
| TensorRT ( ឯកសារ NVIDIA TensorRT ) | ការដាក់ពង្រាយ NVIDIA | អារម្មណ៍ដែលបានបង់ប្រាក់ (ជារឿយៗត្រូវបានដាក់ជាបាច់) | ការលាយបញ្ចូលគ្នាយ៉ាងសកម្មនៃខឺណែល + ការគ្រប់គ្រងដ៏ជាក់លាក់ លឿនខ្លាំងនៅពេលវាចុច |
| DeepSpeed ( ឯកសារ ZeRO ) | ក្រុមបណ្តុះបណ្តាល | ឥតគិតថ្លៃ | ការបង្កើនប្រសិទ្ធភាពអង្គចងចាំ + អត្រាលំហូរ (ZeRO ។ល។)។ អាចមានអារម្មណ៍ដូចជាម៉ាស៊ីនយន្តហោះប្រតិកម្ម |
| FSDP (PyTorch) ( ឯកសារ PyTorch FSDP ) | ក្រុមបណ្តុះបណ្តាល | ឥតគិតថ្លៃ | ប៉ារ៉ាម៉ែត្រ/ជម្រាល Shards ធ្វើឱ្យម៉ូដែលធំៗមិនសូវគួរឱ្យខ្លាច |
| ការវាស់បរិមាណ bitsandbytes ( bitsandbytes ) | អ្នកជួសជុល LLM | ឥតគិតថ្លៃ | ទម្ងន់ប៊ីតទាប ការសន្សំសំចៃអង្គចងចាំយ៉ាងច្រើន - គុណភាពអាស្រ័យទៅលើវា ប៉ុន្តែ អូយ 😬 |
| ការចម្រាញ់ ( Hinton et al., 2015 ) | ក្រុមផលិតផល | «ការចំណាយពេលវេលា» | គំរូសិស្សតូចៗទទួលមរតកឥរិយាបថ ជាធម្មតា ROI ល្អបំផុតក្នុងរយៈពេលវែង |
| ការកាត់ចេញ ( ការបង្រៀនកាត់ចេញដោយប្រើ PyTorch ) | ការស្រាវជ្រាវ + ផលិតផល | ឥតគិតថ្លៃ | កាត់បន្ថយទម្ងន់ស្លាប់។ ដំណើរការបានល្អជាងនៅពេលផ្គូផ្គងជាមួយនឹងការហ្វឹកហាត់ឡើងវិញ។ |
| ការយកចិត្តទុកដាក់ Flash / គ្រាប់ធញ្ញជាតិរលាយ ( ក្រដាសយកចិត្តទុកដាក់ Flash ) | អ្នកចូលចិត្តសម្តែង | ឥតគិតថ្លៃ | ការយកចិត្តទុកដាក់លឿនជាងមុន ឥរិយាបថចងចាំកាន់តែប្រសើរ។ ជ័យជម្នះពិតប្រាកដសម្រាប់ Transformers |
| ម៉ាស៊ីនបម្រើការសន្និដ្ឋាន Triton ( ការចាត់ថ្នាក់ថាមវន្ត ) | ប្រតិបត្តិការ/ហេដ្ឋារចនាសម្ព័ន្ធ | ឥតគិតថ្លៃ | ការបម្រើផលិតកម្ម ការចាត់ថ្នាក់ជាបាច់ បំពង់បង្ហូរពហុម៉ូដែល - មានអារម្មណ៍ថាដូចជាសហគ្រាស |
ការសារភាពអំពីការធ្វើទ្រង់ទ្រាយនៃភាពចម្លែក៖ “តម្លៃ” គឺមិនស្អាតទេ ព្រោះកម្មវិធីប្រភពបើកចំហនៅតែអាចធ្វើឲ្យអ្នកខាតបង់ចុងសប្តាហ៍នៃការបំបាត់កំហុស ដែលជា… តម្លៃ។ 😵💫
៤) ចាប់ផ្តើមជាមួយនឹងការវាស់វែង៖ ទម្រង់ដូចដែលអ្នកចង់មានន័យ 🔍
ប្រសិនបើអ្នកធ្វើរឿងតែមួយគត់ពីការណែនាំទាំងមូលនេះ សូមធ្វើដូចនេះ៖ វាស់វែងឱ្យបានត្រឹមត្រូវ។.
នៅក្នុងការធ្វើតេស្តផ្ទាល់ខ្លួនរបស់ខ្ញុំ “របកគំហើញនៃការបង្កើនប្រសិទ្ធភាព” ដ៏ធំបំផុតបានមកពីការរកឃើញអ្វីដែលសាមញ្ញគួរឱ្យអាម៉ាស់ដូចជា៖
-
កម្មវិធីផ្ទុកទិន្នន័យកំពុងធ្វើឱ្យ GPU អស់ថាមពល
-
ចំណុចកកស្ទះដំណើរការជាមុនរបស់ CPU
-
ទំហំបាច់តូចៗបណ្តាលឱ្យមានការខាតបង់នៃការបើកដំណើរការខឺណែល
-
សញ្ញាសម្គាល់យឺត (សញ្ញាសម្គាល់អាចជាជនអាក្រក់ស្ងាត់ៗ)
-
ការបំបែកអង្គចងចាំ ( កំណត់ចំណាំអំពីឧបករណ៍បែងចែកអង្គចងចាំ PyTorch CUDA )
-
កុំព្យូទ័រដែលគ្របដណ្ដប់លើស្រទាប់តែមួយ
អ្វីដែលត្រូវវាស់វែង (សំណុំអប្បបរមា)
-
ភាពយឺតយ៉ាវ (p50, p95, p99) ( SRE លើភាគរយនៃភាពយឺតយ៉ាវ )
-
អត្រាទិន្នផល (ថូខឹន/វិនាទី, សំណើ/វិនាទី)
-
ការប្រើប្រាស់ GPU (កុំព្យូទ័រ + អង្គចងចាំ)
-
កំពូល VRAM / RAM
-
តម្លៃក្នុង 1k ថូខឹន (ឬក្នុងមួយការសន្និដ្ឋាន)
ផ្នត់គំនិតនៃការធ្វើប្រវត្តិរូបជាក់ស្តែង
-
រៀបរាប់អំពីសេណារីយ៉ូមួយដែលអ្នកចាប់អារម្មណ៍ (មិនមែនជាការណែនាំអំពីប្រដាប់ក្មេងលេងទេ)។.
-
កត់ត្រាអ្វីៗគ្រប់យ៉ាងនៅក្នុង “កំណត់ហេតុប្រចាំថ្ងៃដ៏ល្អឥតខ្ចោះ” តូចមួយ។
មែនហើយ វាគួរឱ្យធុញទ្រាន់ណាស់… ប៉ុន្តែវាជួយសង្រ្គោះអ្នកពីការបំភាន់ខ្លួនឯងនៅពេលក្រោយ។
(ប្រសិនបើអ្នកចង់បានឧបករណ៍ជាក់ស្តែងមួយដើម្បីចាប់ផ្តើមជាមួយ៖ PyTorch Profiler ( torch.profiler docs ) និង Nsight Systems ( NVIDIA Nsight Systems ) គឺជាជនសង្ស័យធម្មតា។)
៥) ការបង្កើនប្រសិទ្ធភាពទិន្នន័យ + ការបណ្តុះបណ្តាល៖ មហាអំណាចស្ងប់ស្ងាត់ 📦🚀
មនុស្សចាប់អារម្មណ៍ខ្លាំងលើស្ថាបត្យកម្មគំរូ ហើយភ្លេចដំណើរការនៃប្រព័ន្ធដំណើរការ។ ទន្ទឹមនឹងនេះ ប្រព័ន្ធដំណើរការនេះដុតពាក់កណ្តាលនៃ GPU យ៉ាងស្ងាត់ៗ។.
ជ័យជម្នះងាយៗដែលលេចឡើងយ៉ាងឆាប់រហ័ស
-
ប្រើភាពជាក់លាក់ចម្រុះ (FP16/BF16 កន្លែងដែលមានស្ថេរភាព) ( PyTorch AMP / torch.amp )
ជាធម្មតាលឿនជាង ជារឿយៗល្អ - ប៉ុន្តែត្រូវប្រយ័ត្នចំពោះភាពចម្លែកនៃលេខ។ -
ការប្រមូលផ្តុំជម្រាល នៅពេលដែលទំហំបាច់មានកំណត់ ( 🤗 ការណែនាំបង្កើនល្បឿន )
រក្សាការបង្កើនប្រសិទ្ធភាពឱ្យមានស្ថេរភាពដោយមិនផ្ទុះអង្គចងចាំ។ -
ការត្រួតពិនិត្យជម្រាល ( torch.utils.checkpoint )
ជួញដូរគណនាសម្រាប់អង្គចងចាំ - ធ្វើឱ្យបរិបទធំជាងនេះអាចធ្វើទៅបាន។ -
ការធ្វើសញ្ញាសម្ងាត់ប្រកបដោយប្រសិទ្ធភាព ( 🤗 ឧបករណ៍ធ្វើសញ្ញាសម្ងាត់ )
ការធ្វើសញ្ញាសម្ងាត់អាចក្លាយជាបញ្ហាកកស្ទះក្នុងទ្រង់ទ្រាយធំ។ វាមិនមែនជារឿងអស្ចារ្យទេ វាជារឿងសំខាន់។ -
ការលៃតម្រូវកម្មវិធីផ្ទុកទិន្នន័យ
កម្មករកាន់តែច្រើន អង្គចងចាំដែលបានខ្ទាស់ ការទាញយកជាមុន - មិនបង្ហាញប៉ុន្តែមានប្រសិទ្ធភាព 😴➡️💪 ( មគ្គុទ្ទេសក៍លៃតម្រូវដំណើរការ PyTorch )
ការលៃតម្រូវប៉ារ៉ាម៉ែត្រប្រកបដោយប្រសិទ្ធភាព
ប្រសិនបើអ្នកកំពុងកែលម្អម៉ូដែលធំៗ វិធីសាស្ត្រ PEFT (ដូចជាអាដាប់ទ័ររចនាប័ទ្ម LoRA) អាចកាត់បន្ថយថ្លៃដើមនៃការហ្វឹកហ្វឺនយ៉ាងច្រើន ខណៈពេលដែលនៅតែរឹងមាំគួរឱ្យភ្ញាក់ផ្អើល ( 🤗 មគ្គុទ្ទេសក៍ Transformers PEFT , ឯកសារ LoRA )។ នេះគឺជាពេលវេលាមួយក្នុងចំណោមពេលវេលាទាំងនោះដែលនិយាយថា "ហេតុអ្វីបានជាយើងមិនធ្វើបែបនេះពីមុន?"។
៦) ការបង្កើនប្រសិទ្ធភាពកម្រិតស្ថាបត្យកម្ម៖ កំណត់ទំហំគំរូឱ្យបានត្រឹមត្រូវ 🧩
ពេលខ្លះវិធីល្អបំផុតដើម្បីបង្កើនប្រសិទ្ធភាពគឺ… ឈប់ប្រើគំរូដែលធំពេកសម្រាប់ការងារ។ ខ្ញុំដឹងហើយ វាជាការប្រមាថ 😄។.
ធ្វើការហៅទូរស័ព្ទលើចំណុចសំខាន់ៗមួយចំនួន៖
-
សម្រេចចិត្តថាតើអ្នកត្រូវការភាពវៃឆ្លាតទូទៅពេញលេញ ឬអ្នកឯកទេស។.
-
រក្សាបង្អួចបរិបទឲ្យធំតាមដែលវាត្រូវការ មិនមែនធំជាងនេះទេ។.
-
ប្រើប្រាស់គំរូដែលបានបណ្តុះបណ្តាលសម្រាប់ការងារដែលកំពុងធ្វើ (គំរូចាត់ថ្នាក់សម្រាប់ការងារចាត់ថ្នាក់ និងផ្សេងៗទៀត)។.
យុទ្ធសាស្ត្រជាក់ស្តែងសម្រាប់ការកំណត់ទំហំត្រឹមត្រូវ
-
ប្តូរទៅឆ្អឹងខ្នងតូចជាង សម្រាប់សំណើភាគច្រើន
បន្ទាប់មកបញ្ជូន "សំណួរពិបាកៗ" ទៅកាន់គំរូធំជាង។ -
ប្រើការរៀបចំពីរដំណាក់កាល
សេចក្តីព្រាងគំរូរហ័ស ការផ្ទៀងផ្ទាត់គំរូដ៏រឹងមាំ ឬកែសម្រួល។
វាដូចជាការសរសេរជាមួយមិត្តភក្តិដែលរើសអើង - រំខាន ប៉ុន្តែមានប្រសិទ្ធភាព។ -
កាត់បន្ថយប្រវែងនៃលទ្ធផល
ថូខឹនលទ្ធផលចំណាយប្រាក់ និងពេលវេលា។ ប្រសិនបើគំរូរបស់អ្នកដំណើរការយឺត អ្នកនឹងចំណាយសម្រាប់ការដំណើរការយឺត។
ខ្ញុំធ្លាប់បានឃើញក្រុមការងារកាត់បន្ថយការចំណាយយ៉ាងច្រើនដោយអនុវត្តទិន្នផលខ្លីជាង។ វាមានអារម្មណ៍ថាតូចតាច។ វាដំណើរការ។.
៧) ការបង្កើនប្រសិទ្ធភាពកម្មវិធីចងក្រង + ក្រាហ្វ៖ ល្បឿនមកពីណា 🏎️
នេះគឺជាស្រទាប់ “ធ្វើឱ្យកុំព្យូទ័រធ្វើកិច្ចការកុំព្យូទ័រឆ្លាតវៃជាងមុន”។.
បច្ចេកទេសទូទៅ៖
-
ការបញ្ចូលគ្នានៃប្រតិបត្តិករ (ផ្សំខឺណែល) ( NVIDIA TensorRT “ការបញ្ចូលគ្នានៃស្រទាប់” )
-
ការបត់ថេរ (គណនាតម្លៃថេរជាមុន) ( ការបង្កើនប្រសិទ្ធភាពក្រាហ្វពេលដំណើរការ ONNX )
-
ការជ្រើសរើសខឺណែល ត្រូវបានលៃតម្រូវទៅតាមផ្នែករឹង
-
ការចាប់យកក្រាហ្វ ដើម្បីកាត់បន្ថយបន្ទុក Python ( ទិដ្ឋភាពទូទៅ
torch.compile)
និយាយឲ្យសាមញ្ញទៅ គំរូរបស់អ្នកអាចលឿនតាមគណិតវិទ្យា ប៉ុន្តែយឺតតាមប្រតិបត្តិការ។ កម្មវិធីចងក្រងជួសជុលចំណុចនោះខ្លះ។.
កំណត់ចំណាំជាក់ស្តែង (ហៅកាត់ថា ស្លាកស្នាម)
-
ការបង្កើនប្រសិទ្ធភាពទាំងនេះអាចងាយនឹងរងផលប៉ះពាល់ដោយការផ្លាស់ប្តូររូបរាងគំរូ។.
-
ម៉ូដែលខ្លះបង្កើនល្បឿនខ្លាំង ម៉ូដែលខ្លះទៀតស្ទើរតែមិនរើ។.
-
ពេលខ្លះអ្នកទទួលបានល្បឿនកើនឡើង និងកំហុសឆ្គងដ៏គួរឱ្យងឿងឆ្ងល់ - ដូចជាសត្វក្អែកមួយបានផ្លាស់ទីចូល 🧌
យ៉ាងណាក៏ដោយ នៅពេលដែលវាដំណើរការ វាគឺជាជ័យជម្នះដ៏ស្អាតស្អំបំផុតមួយ។.
៨) បរិមាណនីយកម្ម ការកាត់ចេញ ការចម្រាញ់៖ តូចជាងមុនដោយមិនយំ (ច្រើនពេក) 🪓📉
នេះជាផ្នែកដែលមនុស្សចង់បាន… ពីព្រោះវាស្តាប់ទៅដូចជាការសម្តែងដោយសេរី។ វាអាចជាដូច្នោះមែន ប៉ុន្តែអ្នកត្រូវតែព្យាបាលវាដូចជាការវះកាត់។.
បរិមាណនីយកម្ម (ទម្ងន់/ការធ្វើឱ្យសកម្មដែលមានភាពជាក់លាក់ទាបជាង)
-
ល្អសម្រាប់ល្បឿនសន្និដ្ឋាន និងការចងចាំ
-
ហានិភ័យ៖ គុណភាពធ្លាក់ចុះ ជាពិសេសនៅលើករណីគែម
-
ការអនុវត្តល្អបំផុត៖ វាយតម្លៃលើសំណុំតេស្តពិតប្រាកដ មិនមែនលើអារម្មណ៍ទេ
រសជាតិទូទៅដែលអ្នកនឹងឮអំពី៖
-
INT8 (ជាញឹកញាប់រឹង) ( ប្រភេទបរិមាណ TensorRT )
-
INT4 / ប៊ីតទាប (សន្សំបានច្រើន ហានិភ័យគុណភាពកើនឡើង) ( bitsandbytes k-bit quantization )
-
បរិមាណចម្រុះ (មិនមែនអ្វីៗទាំងអស់ត្រូវការភាពជាក់លាក់ដូចគ្នាទេ)
ការកាត់ចេញ (លុបប៉ារ៉ាម៉ែត្រចេញ)
-
លុបទម្ងន់ ឬរចនាសម្ព័ន្ធ "មិនសំខាន់" ចេញ ( ការបង្រៀនកាត់ចេញពី PyTorch )
-
ជាធម្មតាត្រូវការការបណ្តុះបណ្តាលឡើងវិញដើម្បីស្តារគុណភាពឡើងវិញ
-
ដំណើរការបានល្អជាងអ្វីដែលមនុស្សគិត… នៅពេលធ្វើដោយប្រុងប្រយ័ត្ន
ការចម្រាញ់ (សិស្សរៀនពីគ្រូ)
នេះគឺជាឧបករណ៍រយៈពេលវែងដែលខ្ញុំចូលចិត្តផ្ទាល់ខ្លួន។ ការចម្រាញ់អាចបង្កើតគំរូតូចជាងដែលមានឥរិយាបថស្រដៀងគ្នា ហើយវាជាញឹកញាប់មានស្ថេរភាពជាងការធ្វើបរិមាណខ្លាំង ( ការចម្រាញ់ចំណេះដឹងក្នុងបណ្តាញសរសៃប្រសាទ )។
ពាក្យប្រៀបធៀបមិនល្អឥតខ្ចោះ៖ ការចម្រាញ់គឺដូចជាការចាក់ស៊ុបស្មុគស្មាញមួយឆ្លងកាត់តម្រង ហើយទទួលបាន… ស៊ុបតូចមួយ។ នោះមិនមែនជារបៀបដែលស៊ុបដំណើរការទេ ប៉ុន្តែអ្នកយល់ពីគំនិតនោះហើយ 🍲។.
៩) ការបម្រើ និងការសន្និដ្ឋាន៖ តំបន់សមរភូមិពិតប្រាកដ 🧯
អ្នកអាច "បង្កើនប្រសិទ្ធភាព" គំរូមួយ ហើយនៅតែបម្រើវាបានមិនល្អ។ ការបម្រើគឺជាកន្លែងដែលភាពយឺតយ៉ាវ និងថ្លៃដើមក្លាយជាការពិត។.
ការបម្រើជ័យជម្នះដែលសំខាន់
-
ការធ្វើជាបាច់ធ្វើ
ឲ្យប្រសើរឡើងនូវអត្រាដំណើរការ។ ប៉ុន្តែបង្កើនភាពយឺតយ៉ាវប្រសិនបើអ្នកធ្វើវាលើសកម្រិត។ វាមានតុល្យភាព។ ( ការធ្វើជាបាច់ថាមវន្ត Triton ) -
ការដាក់ឃ្លាំងសម្ងាត់
ការដាក់ឃ្លាំងសម្ងាត់តាមរយៈការបញ្ចូលឃ្លាំងសម្ងាត់ និងការប្រើប្រាស់ KV-cache ឡើងវិញអាចមានទំហំធំសម្រាប់បរិបទដែលធ្វើម្តងហើយម្តងទៀត។ ( ការពន្យល់អំពី KV cache ) -
លទ្ធផលស្ទ្រីម
អ្នកប្រើប្រាស់មានអារម្មណ៍ថាវាលឿនជាងមុន ទោះបីជាពេលវេលាសរុបស្រដៀងគ្នាក៏ដោយ។ ការយល់ឃើញគឺសំខាន់ 🙂។ -
ការកាត់បន្ថយការចំណាយលើថូខឹនម្តង
មួយៗ ជង់ខ្លះធ្វើការងារបន្ថែមក្នុងមួយថូខឹន។ កាត់បន្ថយការចំណាយនោះ ហើយអ្នកឈ្នះធំ។
ប្រយ័ត្នចំពោះភាពយឺតយ៉ាវនៃកន្ទុយ
មធ្យមភាគរបស់អ្នកអាចមើលទៅអស្ចារ្យ ខណៈពេលដែល p99 របស់អ្នកគឺជាគ្រោះមហន្តរាយ។ ជាអកុសល អ្នកប្រើប្រាស់រស់នៅក្នុងកន្ទុយ។ ( “ភាពយឺតយ៉ាវកន្ទុយ” និងមូលហេតុដែលមធ្យមភាគកុហក )
១០) ការបង្កើនប្រសិទ្ធភាពដោយយល់ដឹងពីផ្នែករឹង៖ ផ្គូផ្គងម៉ូដែលទៅនឹងម៉ាស៊ីន 🧰🖥️
ការធ្វើឱ្យប្រសើរឡើងដោយមិនចាំបាច់មានការយល់ដឹងអំពីផ្នែករឹងគឺដូចជាការលៃតម្រូវរថយន្តប្រណាំងដោយមិនចាំបាច់ពិនិត្យសំបកកង់។ ពិតណាស់ អ្នកអាចធ្វើវាបាន ប៉ុន្តែវាជារឿងឆោតល្ងង់បន្តិច។.
ការពិចារណាលើ GPU
-
កម្រិតបញ្ជូនអង្គចងចាំច្រើនតែជាកត្តាកំណត់ មិនមែនជាការគណនាឆៅទេ
-
ទំហំបាច់ធំជាងនេះអាចជួយបាន រហូតដល់ពួកវាមិន
-
ការលាយបញ្ចូលគ្នានៃខឺណែល និងការបង្កើនប្រសិទ្ធភាពការយកចិត្តទុកដាក់គឺមានសារៈសំខាន់ខ្លាំងណាស់សម្រាប់ឧបករណ៍បំលែងថាមពល ( FlashAttention: IO-aware exact attention )
ការពិចារណាលើ CPU
-
ខ្សែស្រឡាយ វ៉ិចទ័រ និងទីតាំងអង្គចងចាំមានសារៈសំខាន់ខ្លាំងណាស់
-
ការចំណាយលើការធ្វើសញ្ញាសម្ងាត់អាចគ្របដណ្ដប់ ( 🤗 ការធ្វើសញ្ញាសម្ងាត់ "លឿន" )
-
អ្នកប្រហែលជាត្រូវការយុទ្ធសាស្ត្របរិមាណខុសពីនៅលើ GPU
ការពិចារណាអំពីគែម / ទូរស័ព្ទចល័ត
-
ស្នាមជើងអង្គចងចាំក្លាយជាអាទិភាពលេខមួយ
-
ភាពខុសគ្នានៃភាពយឺតយ៉ាវមានសារៈសំខាន់ ពីព្រោះឧបករណ៍… មានអារម្មណ៍មិនស្រួល
-
ម៉ូដែលតូចៗដែលមានជំនាញវិជ្ជាជីវៈច្រើនតែយកឈ្នះម៉ូដែលធំៗទូទៅ
១១) របាំងការពារគុណភាព៖ កុំ «ធ្វើឲ្យខ្លួនឯងប្រសើរឡើង» ទៅជាកំហុសឆ្គង 🧪
រាល់ការឈ្នះល្បឿនគួរតែមានការត្រួតពិនិត្យគុណភាព។ បើមិនដូច្នោះទេ អ្នកនឹងអបអរសាទរ ផ្ញើ ហើយបន្ទាប់មកទទួលបានសារដូចជា "ហេតុអ្វីបានជាជំនួយការស្រាប់តែនិយាយដូចចោរសមុទ្រ?" 🏴☠️
របាំងការពារជាក់ស្តែង៖
-
ការណែនាំមាស (សំណុំនៃការណែនាំថេរដែលអ្នកតែងតែសាកល្បង)
-
រង្វាស់ភារកិច្ច (ភាពត្រឹមត្រូវ, F1, BLEU, អ្វីក៏ដោយដែលសមស្រប)
-
ការត្រួតពិនិត្យចំណុចរបស់មនុស្ស (មែនហើយ ធ្ងន់ធ្ងរណាស់)
-
កម្រិតនៃការតំរែតំរង់ ("មិនអនុញ្ញាតឱ្យធ្លាក់ចុះលើសពី X%")
តាមដានរបៀបបរាជ័យផងដែរ៖
-
ការរសាត់ទម្រង់
-
ការផ្លាស់ប្តូរឥរិយាបថបដិសេធ
-
ភាពញឹកញាប់នៃការយល់ច្រឡំ
-
ការបំប៉ោងប្រវែងឆ្លើយតប
ការបង្កើនប្រសិទ្ធភាពអាចផ្លាស់ប្តូរឥរិយាបថតាមរបៀបគួរឱ្យភ្ញាក់ផ្អើល។ ចម្លែក។ រំខាន។ អាចទស្សន៍ទាយបាន នៅពេលគិតទៅក្រោយ។.
១២) បញ្ជីត្រួតពិនិត្យ៖ របៀបធ្វើឱ្យប្រសើរឡើងនូវគំរូ AI មួយជំហានម្តងៗ ✅🤖
ប្រសិនបើអ្នកចង់បានលំដាប់ប្រតិបត្តិការច្បាស់លាស់សម្រាប់ វិធីបង្កើនប្រសិទ្ធភាពគំរូ AI នេះគឺជាលំហូរការងារដែលមានទំនោរធ្វើឱ្យមនុស្សមានសុខភាពល្អ៖
-
កំណត់ភាពជោគជ័យ
ជ្រើសរើសរង្វាស់ចម្បងចំនួន 1-2 (ភាពយឺតយ៉ាវ ថ្លៃដើម ល្បឿនដំណើរការ គុណភាព)។ -
វាស់ស្ទង់បន្ទុកការងារពិតប្រាកដនៃប្រវត្តិរូបមូលដ្ឋាន
កត់ត្រា p50/p95 អង្គចងចាំ និងថ្លៃដើម។ ( PyTorch Profiler ) -
ជួសជុលការកកស្ទះនៃបំពង់បង្ហូរទិន្នន័យ
ការផ្ទុកទិន្នន័យ ការបង្កើតថូខឹន ការដំណើរការជាមុន និងការរៀបចំជាបាច់។ -
អនុវត្តការឈ្នះការគណនាដែលមានហានិភ័យទាប
ភាពជាក់លាក់ចម្រុះ ការបង្កើនប្រសិទ្ធភាពខឺណែល ការបាច់កាន់តែប្រសើរ។ -
សាកល្បងការបង្កើនប្រសិទ្ធភាពកម្មវិធីចងក្រង/ពេលដំណើរការ
ការចាប់យកក្រាហ្វ ពេលវេលាដំណើរការសន្និដ្ឋាន ការបញ្ចូលគ្នានៃប្រតិបត្តិករ។ ( ការបង្រៀនtorch.compileឯកសារ ONNX Runtime ) -
កាត់បន្ថយថ្លៃដើមម៉ូដែល។
ផលិតបរិមាណដោយប្រុងប្រយ័ត្ន ចម្រាញ់ប្រសិនបើអ្នកអាចធ្វើបាន កាត់ចេញប្រសិនបើសមរម្យ។ -
លៃតម្រូវការបម្រើការ
ផ្ទុកក្នុងឃ្លាំងសម្ងាត់ ការដំណើរការក្នុងពេលដំណាលគ្នា ការធ្វើតេស្តផ្ទុក និងការជួសជុលភាពយឺតយ៉ាវកន្ទុយ។ -
ផ្ទៀងផ្ទាត់គុណភាព
ដំណើរការការធ្វើតេស្តតំរែតំរង់ និងប្រៀបធៀបលទ្ធផលជាមួយគ្នា។ -
ធ្វើម្តងទៀតនូវ
ការផ្លាស់ប្តូរតូចៗ កំណត់ចំណាំច្បាស់លាស់ ធ្វើម្តងទៀត។ មិនបង្ហាញ - មានប្រសិទ្ធភាព។
ហើយមែនហើយ នេះនៅតែជា របៀបធ្វើឱ្យប្រសើរឡើងនូវគំរូ AI ទោះបីជាវាមានអារម្មណ៍ដូចជា "របៀបឈប់ជាន់លើតុងរួច" ក៏ដោយ។
១៣) កំហុសទូទៅ (ដូច្នេះអ្នកកុំធ្វើវាម្តងទៀតដូចយើងដទៃទៀត) 🙃
-
ការបង្កើនប្រសិទ្ធភាពមុនពេលវាស់វែង
អ្នកនឹងខ្ជះខ្ជាយពេលវេលា។ ហើយបន្ទាប់មកអ្នកនឹងបង្កើនប្រសិទ្ធភាពរឿងខុសដោយទំនុកចិត្ត... -
ការដេញតាមស្តង់ដារតែមួយ
ស្តង់ដារកុហកដោយការខកខាន។ បន្ទុកការងាររបស់អ្នកគឺជាការពិត។ -
ការមិនអើពើនឹងអង្គចងចាំ
បញ្ហាអង្គចងចាំបណ្តាលឱ្យមានការថយចុះ ការគាំង និងការញ័រ។ ( ការយល់ដឹងអំពីការប្រើប្រាស់អង្គចងចាំ CUDA នៅក្នុង PyTorch ) -
ការកំណត់បរិមាណច្រើនពេកលឿនពេក ការកំណត់
បរិមាណប៊ីតទាបអាចជារឿងអស្ចារ្យ ប៉ុន្តែត្រូវចាប់ផ្តើមជាមួយជំហានដែលមានសុវត្ថិភាពជាងជាមុនសិន។ -
គ្មានផែនការត្រឡប់ក្រោយទេ
ប្រសិនបើអ្នកមិនអាចត្រឡប់ក្រោយបានលឿនទេ រាល់ការដាក់ពង្រាយនឹងក្លាយជាភាពតានតឹង។ ភាពតានតឹងបង្កើតកំហុស។
កំណត់ចំណាំបិទ៖ វិធីសាស្ត្ររបស់មនុស្សដើម្បីបង្កើនប្រសិទ្ធភាព 😌⚡
របៀបបង្កើនប្រសិទ្ធភាពគំរូ AI មិនមែនជាការ hack តែមួយមុខនោះទេ។ វាជាដំណើរការដែលមានស្រទាប់ជាច្រើន៖ វាស់វែង ជួសជុល pipeline ប្រើ compilers និង runtimes លៃតម្រូវ serving បន្ទាប់មកបង្រួមគំរូដោយប្រើ quantization ឬការចម្រាញ់ប្រសិនបើអ្នកត្រូវការ។ ធ្វើវាមួយជំហានម្តងៗ រក្សារបាំងការពារដែលមានគុណភាព ហើយកុំទុកចិត្តថា "វាមានអារម្មណ៍ថាលឿនជាង" ជារង្វាស់ (អារម្មណ៍របស់អ្នកគឺស្រស់ស្អាត អារម្មណ៍របស់អ្នកមិនមែនជា profiler ទេ)។
ប្រសិនបើអ្នកចង់បានការវេចខ្ចប់ខ្លីបំផុត៖
-
វាស់វែងជាមុនសិន🔍
-
បង្កើនប្រសិទ្ធភាពបំពង់បង្ហូរប្រេងបន្ទាប់ 🧵
-
បន្ទាប់មកធ្វើឱ្យគំរូប្រសើរឡើង 🧠
-
បន្ទាប់មក បង្កើនប្រសិទ្ធភាពការបម្រើ 🏗️
-
ត្រួតពិនិត្យគុណភាពជានិច្ច ✅
ហើយប្រសិនបើវាជួយបាន សូមរំលឹកខ្លួនឯងថា៖ គោលដៅមិនមែនជា "គំរូដ៏ល្អឥតខ្ចោះ" នោះទេ។ គោលដៅគឺជាគំរូដែលមានល្បឿនលឿន មានតម្លៃសមរម្យ និងអាចទុកចិត្តបានគ្រប់គ្រាន់ដែលអ្នកអាចគេងលក់ស្រួលនៅពេលយប់... ស្ទើរតែរាល់យប់ 😴។.
សំណួរដែលសួរញឹកញាប់
អ្វីដែលការធ្វើឱ្យប្រសើរឡើងនូវគំរូ AI មានន័យនៅក្នុងការអនុវត្តជាក់ស្តែង
«ការបង្កើនប្រសិទ្ធភាព» ជាធម្មតាមានន័យថា ការកែលម្អការរឹតបន្តឹងចម្បងមួយ៖ ភាពយឺតយ៉ាវ តម្លៃ ទំហំនៃអង្គចងចាំ ភាពត្រឹមត្រូវ ស្ថេរភាព ឬអត្រាការបម្រើ។ ផ្នែកដែលពិបាកគឺការសម្របសម្រួល - ការជំរុញផ្នែកមួយអាចធ្វើឱ្យផ្នែកមួយទៀតមានបញ្ហា។ វិធីសាស្រ្តជាក់ស្តែងមួយគឺជ្រើសរើសគោលដៅច្បាស់លាស់ (ដូចជាភាពយឺតយ៉ាវ p95 ឬពេលវេលាដល់គុណភាព) ហើយបង្កើនប្រសិទ្ធភាពឆ្ពោះទៅរកវា។ បើគ្មានគោលដៅទេ វាងាយស្រួលក្នុងការ «កែលម្អ» ហើយនៅតែចាញ់។.
របៀបបង្កើនប្រសិទ្ធភាពម៉ូដែល AI ដោយមិនធ្វើឱ្យខូចគុណភាពដោយស្ងាត់ៗ
ចូរចាត់ទុករាល់ការផ្លាស់ប្តូរល្បឿន ឬថ្លៃដើមថាជាការតំរែតំរង់ស្ងាត់ៗដែលអាចកើតមាន។ ប្រើរបាំងការពារដូចជាការណែនាំមាស ម៉ែត្រវាស់ភារកិច្ច និងការត្រួតពិនិត្យចំណុចរហ័សរបស់មនុស្ស។ កំណត់កម្រិតច្បាស់លាស់សម្រាប់ការរសាត់គុណភាពដែលអាចទទួលយកបាន ហើយប្រៀបធៀបលទ្ធផលជាមួយគ្នា។ នេះរារាំង "វាលឿនជាង" ពីការប្រែក្លាយទៅជា "ហេតុអ្វីបានជាវាស្រាប់តែក្លាយជាចម្លែកនៅក្នុងផលិតកម្ម?" បន្ទាប់ពីអ្នកដឹកជញ្ជូន។.
អ្វីដែលត្រូវវាស់វែងមុនពេលអ្នកចាប់ផ្តើមធ្វើឱ្យប្រសើរឡើង
ចាប់ផ្តើមជាមួយភាគរយនៃភាពយឺតយ៉ាវ (p50, p95, p99), អត្រាទិន្នផល (ថូខឹន/វិនាទី ឬសំណើ/វិនាទី), ការប្រើប្រាស់ GPU និង VRAM/RAM កំពូល។ តាមដានថ្លៃដើមក្នុងមួយការសន្និដ្ឋាន ឬក្នុង 1k ថូខឹន ប្រសិនបើថ្លៃដើមជាឧបសគ្គ។ គូសបញ្ជាក់ពីសេណារីយ៉ូពិតដែលអ្នកបម្រើ មិនមែនជាការណែនាំអំពីប្រដាប់ក្មេងលេងទេ។ ការរក្សា "កំណត់ហេតុប្រចាំថ្ងៃល្អឥតខ្ចោះ" តូចមួយជួយអ្នកជៀសវាងការទាយ និងធ្វើកំហុសម្តងទៀត។.
ជ័យជម្នះរហ័ស និងមានហានិភ័យទាបសម្រាប់ការអនុវត្តការហ្វឹកហាត់
ភាពជាក់លាក់ចម្រុះ (FP16/BF16) ជារឿយៗគឺជាឧបករណ៍ចាប់សញ្ញាដំបូងដែលលឿនបំផុត ប៉ុន្តែត្រូវប្រយ័ត្នចំពោះភាពមិនប្រក្រតីនៃលេខ។ ប្រសិនបើទំហំបាច់មានកំណត់ ការប្រមូលផ្តុំជម្រាលអាចធ្វើឱ្យការបង្កើនប្រសិទ្ធភាពមានស្ថេរភាពដោយមិនធ្វើឱ្យអង្គចងចាំខូច។ ការត្រួតពិនិត្យជម្រាលដោះដូរការគណនាបន្ថែមសម្រាប់អង្គចងចាំទាប ដែលអាចឱ្យបរិបទធំជាង។ កុំមើលរំលងការធ្វើសញ្ញាសម្ងាត់ និងការលៃតម្រូវកម្មវិធីផ្ទុកទិន្នន័យ - ពួកវាអាចធ្វើឱ្យ GPU អត់ឃ្លានដោយស្ងាត់ៗ។.
ពេលណាត្រូវប្រើ torch.compile, ONNX Runtime ឬ TensorRT
ឧបករណ៍ទាំងនេះផ្តោតលើផ្នែកប្រតិបត្តិការលើសចំណុះ៖ ការចាប់យកក្រាហ្វ ការលាយខឺណែល និងការបង្កើនប្រសិទ្ធភាពក្រាហ្វពេលដំណើរការ។ ពួកវាអាចផ្តល់នូវការបង្កើនល្បឿននៃការសន្និដ្ឋានស្អាត ប៉ុន្តែលទ្ធផលប្រែប្រួលទៅតាមរូបរាងម៉ូដែល និងផ្នែករឹង។ ការរៀបចំខ្លះមានអារម្មណ៍ដូចជាវេទមន្ត ឯការរៀបចំខ្លះទៀតស្ទើរតែមិនផ្លាស់ទី។ រំពឹងថានឹងមានភាពរសើបចំពោះការផ្លាស់ប្តូររូបរាង និងកំហុស "gremlin" ម្តងម្កាល - វាស់មុន និងក្រោយលើបន្ទុកការងារពិតប្រាកដរបស់អ្នក។.
ថាតើការធ្វើបរិមាណមានតម្លៃឬអត់ និងរបៀបជៀសវាងការទៅឆ្ងាយពេក
ការធ្វើបរិមាណអាចកាត់បន្ថយអង្គចងចាំ និងបង្កើនល្បឿននៃការសន្និដ្ឋាន ជាពិសេសជាមួយ INT8 ប៉ុន្តែគុណភាពអាចរអិលលើករណីគែម។ ជម្រើសប៊ីតទាប (ដូចជា INT4/k-bit) នាំមកនូវការសន្សំកាន់តែច្រើនជាមួយនឹងហានិភ័យខ្ពស់។ ទម្លាប់ដែលមានសុវត្ថិភាពបំផុតគឺការវាយតម្លៃលើសំណុំតេស្តពិតប្រាកដ និងប្រៀបធៀបលទ្ធផល មិនមែនអារម្មណ៍ពិតទេ។ ចាប់ផ្តើមជាមួយជំហានដែលមានសុវត្ថិភាពជាងមុនជាមុនសិន បន្ទាប់មកទៅភាពជាក់លាក់ទាបជាងមុន លុះត្រាតែចាំបាច់។.
ភាពខុសគ្នារវាងការកាត់ចេញ និងការចម្រាញ់សម្រាប់ការកាត់បន្ថយទំហំគំរូ
ការកាត់ចេញលុបប៉ារ៉ាម៉ែត្រ "ទម្ងន់ស្លាប់" ហើយជារឿយៗត្រូវការការបណ្តុះបណ្តាលឡើងវិញដើម្បីស្តារគុណភាពឡើងវិញ ជាពិសេសនៅពេលធ្វើយ៉ាងសកម្ម។ ការចម្រាញ់បណ្តុះបណ្តាលគំរូសិស្សតូចជាងឲ្យធ្វើត្រាប់តាមឥរិយាបថរបស់គ្រូធំជាង ហើយវាអាចជា ROI រយៈពេលវែងខ្លាំងជាងការធ្វើបរិមាណខ្លាំង។ ប្រសិនបើអ្នកចង់បានគំរូតូចជាងដែលមានឥរិយាបថស្រដៀងគ្នា និងនៅមានស្ថេរភាព ការចម្រាញ់ច្រើនតែជាផ្លូវស្អាតជាង។.
របៀបកាត់បន្ថយថ្លៃដើមនៃការសន្និដ្ឋាន និងភាពយឺតយ៉ាវតាមរយៈការកែលម្អការបម្រើ
ការបម្រើគឺជាកន្លែងដែលការបង្កើនប្រសិទ្ធភាពក្លាយជាជាក់ស្តែង៖ ការធ្វើជាបាច់បង្កើនអត្រាទិន្នផល ប៉ុន្តែអាចប៉ះពាល់ដល់ភាពយឺតយ៉ាវប្រសិនបើធ្វើលើសកម្រិត ដូច្នេះត្រូវកែសម្រួលវាដោយប្រុងប្រយ័ត្ន។ ការរក្សាទុកក្នុងឃ្លាំងសម្ងាត់ (ការរក្សាទុកក្នុងឃ្លាំងសម្ងាត់ភ្លាមៗ និងការប្រើប្រាស់ឡើងវិញនូវឃ្លាំងសម្ងាត់ KV) អាចមានទំហំធំនៅពេលដែលបរិបទធ្វើម្តងទៀត។ ទិន្នផលស្ទ្រីមធ្វើអោយប្រសើរឡើងនូវល្បឿនដែលយល់ឃើញ ទោះបីជាពេលវេលាសរុបគឺស្រដៀងគ្នាក៏ដោយ។ សូមរកមើលការចំណាយលើថូខឹនម្តងមួយៗនៅក្នុងជង់របស់អ្នកផងដែរ - ការងារក្នុងមួយថូខឹនតូចៗកើនឡើងយ៉ាងលឿន។.
ហេតុអ្វីបានជាភាពយឺតយ៉ាវរបស់កន្ទុយមានសារៈសំខាន់ខ្លាំងណាស់នៅពេលធ្វើឱ្យប្រសើរឡើងនូវគំរូ AI
មធ្យមភាគអាចមើលទៅអស្ចារ្យ ខណៈពេលដែល p99 គឺជាគ្រោះមហន្តរាយ ហើយអ្នកប្រើប្រាស់ច្រើនតែរស់នៅក្នុងកន្ទុយ។ ភាពយឺតយ៉ាវកន្ទុយច្រើនតែមកពីភាពច្របូកច្របល់៖ ការបែកខ្ញែកអង្គចងចាំ ការកើនឡើងនៃការដំណើរការ CPU ជាមុន ការថយចុះនៃសញ្ញាសម្ងាត់ ឬឥរិយាបថបាច់មិនល្អ។ នោះហើយជាមូលហេតុដែលការណែនាំសង្កត់ធ្ងន់លើភាគរយ និងបន្ទុកការងារពិតប្រាកដ។ ប្រសិនបើអ្នកគ្រាន់តែបង្កើនប្រសិទ្ធភាព p50 អ្នកនៅតែអាចបញ្ជូនបទពិសោធន៍ដែល "មានអារម្មណ៍ថាយឺតដោយចៃដន្យ"។
ឯកសារយោង
-
Amazon Web Services (AWS) - ភាគរយ AWS CloudWatch (និយមន័យស្ថិតិ) - docs.aws.amazon.com
-
Google - The Tail at Scale (ការអនុវត្តល្អបំផុតសម្រាប់ភាពយឺតយ៉ាវនៃកន្ទុយ) - sre.google
-
Google - គោលបំណងកម្រិតសេវាកម្ម (សៀវភៅ SRE) - ភាគរយនៃភាពយឺតយ៉ាវ - 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 - ការយល់ដឹងអំពីការប្រើប្រាស់អង្គចងចាំ CUDA នៅក្នុង PyTorch - 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 - ការធ្វើជាបាច់ថាមវន្ត - docs.nvidia.com
-
ឯកសារ DeepSpeed - - deepspeed.readthedocs.io
-
bitsandbytes (គ្រឹះ bitsandbytes) - bitsandbytes - github.com
-
ឱបមុខ - បង្កើនល្បឿន៖ មគ្គុទ្ទេសក៍ប្រមូលផ្តុំជម្រាល - huggingface.co
-
មុខឱប - ឯកសារសញ្ញាសម្គាល់ - huggingface.co
-
មុខឱប - Transformers: មគ្គុទ្ទេសក៍ PEFT - huggingface.co
-
មុខឱប - ការពន្យល់អំពី Transformers: KV cache - huggingface.co
-
មុខឱប - Transformers: ឧបករណ៍បំលែងសញ្ញាសម្ងាត់ "លឿន" (ថ្នាក់ឧបករណ៍បំលែងសញ្ញាសម្ងាត់) - huggingface.co
-
arXiv - ការចម្រាញ់ចំណេះដឹងនៅក្នុងបណ្តាញសរសៃប្រសាទ (Hinton et al., 2015) - arxiv.org
-
arXiv - LoRA៖ ការសម្របខ្លួនកម្រិតទាបនៃគំរូភាសាធំៗ - arxiv.org
-
arXiv - FlashAttention៖ ការយកចិត្តទុកដាក់ច្បាស់លាស់ និងរហ័ស មានប្រសិទ្ធភាពក្នុងការចងចាំ ជាមួយនឹង IO-Awareness - arxiv.org