ចម្លើយខ្លី៖ ដើម្បីធ្វើឱ្យគំរូ 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 ទេ)។
ប្រសិនបើអ្នកចង់បានការវេចខ្ចប់ខ្លីបំផុត៖
-
វាស់វែងជាមុនសិន🔍
-
បង្កើនប្រសិទ្ធភាពបំពង់បង្ហូរប្រេងបន្ទាប់ 🧵
-
បន្ទាប់មកធ្វើឱ្យគំរូប្រសើរឡើង 🧠
-
បន្ទាប់មក បង្កើនប្រសិទ្ធភាពការបម្រើ 🏗️
-
ត្រួតពិនិត្យគុណភាពជានិច្ច ✅
ហើយប្រសិនបើវាជួយបាន សូមរំលឹកខ្លួនឯងថា៖ គោលដៅមិនមែនជា "គំរូដ៏ល្អឥតខ្ចោះ" នោះទេ។ គោលដៅគឺជាគំរូដែលមានល្បឿនលឿន មានតម្លៃសមរម្យ និងអាចទុកចិត្តបានគ្រប់គ្រាន់ដែលអ្នកអាចគេងលក់ស្រួលនៅពេលយប់... ស្ទើរតែរាល់យប់ 😴។.
ឧទាហរណ៍ជាក់ស្តែង៖ ការបង្កើនប្រសិទ្ធភាពនៃកម្មវិធីសង្ខេបសំបុត្រគាំទ្រ 🎟️⚡
សេណារីយ៉ូ
ស្រមៃមើលក្រុម SaaS តូចមួយដែលប្រើប្រាស់គំរូ AI ដើម្បីសង្ខេបសំបុត្រជំនួយដែលចូលមកមុនពេលភ្នាក់ងារមនុស្សឆ្លើយតប។ គំរូនេះដំណើរការ ប៉ុន្តែវាយឺត៖ ភ្នាក់ងាររង់ចាំយូរពេកសម្រាប់សេចក្តីសង្ខេប ហើយក្រុមហ៊ុនកំពុងចំណាយច្រើនជាងការរំពឹងទុកសម្រាប់ការសន្និដ្ឋាន។.
គោលដៅមិនមែនធ្វើឱ្យគំរូ "កាន់តែប្រសើរឡើង" តាមគ្រប់មធ្យោបាយដែលអាចធ្វើទៅបាននោះទេ។ ក្រុមការងារជ្រើសរើសឧបសគ្គចម្បងមួយ៖ កាត់បន្ថយភាពយឺតយ៉ាវនៃ p95 ខណៈពេលដែលរក្សាគុណភាពសង្ខេបដែលអាចទទួលយកបាន។.
គោលដៅរបស់ពួកគេគឺច្បាស់លាស់៖
កាត់បន្ថយភាពយឺតយ៉ាវនៃ p95 ពីប្រហែល 2.4 វិនាទីមកក្រោម 1.2 វិនាទី ដោយមានកំហុសសង្ខេបធ្ងន់ធ្ងរមិនលើសពីមួយនៅក្នុងសំណុំតេស្ត 50 សន្លឹក។.
អ្វីដែលដំណើរការការងារត្រូវការ
ដើម្បីធ្វើឱ្យរឿងនេះអាចអនុវត្តបានជាក់ស្តែង ក្រុមការងារបានប្រមូលផ្តុំ៖
សំណុំតេស្តមាសចំនួន ៥០ សន្លឹក ដែលមានសំបុត្រខ្លី មធ្យម និងមិនស្អាត
រចនាប័ទ្មសង្ខេបដែលរំពឹងទុក៖ ចំណុចចំនួន ៣ គ្មានការពិតដែលបង្កើតឡើង រួមបញ្ចូលភាពបន្ទាន់ប្រសិនបើជាក់ស្តែង
រង្វាស់មូលដ្ឋាន៖ ភាពយឺតយ៉ាវនៃ p50, p95, p99, ថូខឹនដែលបានបង្កើត, តម្លៃក្នុងមួយសំបុត្រ និងចំនួនកំហុស
បញ្ជីត្រួតពិនិត្យការវាយតម្លៃដោយមនុស្សសាមញ្ញមួយ
ចូលប្រើកំណត់ហេតុគំរូ ចំនួនថូខឹន និងការកំណត់បាច់/ការដំណើរការក្នុងពេលដំណាលគ្នា
ជម្រើសត្រឡប់វិញប្រសិនបើគុណភាពធ្លាក់ចុះ
ចំណុចសំខាន់៖ ពួកគេមិនចាប់ផ្តើមជាមួយនឹងការវាស់វែងបរិមាណទេ។ ដំបូង ពួកគេពិនិត្យមើលថាតើបំពង់បង្ហូរប្រេងកំពុងខ្ជះខ្ជាយពេលវេលាឬអត់។.
ឧទាហរណ៍នៃការណែនាំ
សម្រាប់សំបុត្រជំនួយនីមួយៗ សូមសង្ខេបបញ្ហារបស់អតិថិជនជាចំណុចបីយ៉ាងច្បាស់លាស់។.
រួមបញ្ចូល៖
-
បញ្ហាចម្បង
-
តំបន់ផលិតផលណាមួយដែលបានរៀបរាប់
-
ភាពបន្ទាន់ ឬផលប៉ះពាល់អាជីវកម្ម ប្រសិនបើបានបញ្ជាក់
កុំបង្កើតព័ត៌មានលម្អិតដែលបាត់។ ប្រសិនបើអតិថិជនមិនផ្តល់ព័ត៌មានគ្រប់គ្រាន់ទេ សូមនិយាយថា "មិនបានបញ្ជាក់"។.
រក្សាសេចក្តីសង្ខេបឱ្យតិចជាង ៨០ ពាក្យ។.
របៀបសាកល្បងវា
ដំណើរការសំបុត្រចំនួន ៥០ ដូចគ្នាតាមរយៈការរៀបចំចាស់ និងថ្មី។.
សម្រាប់ការរត់នីមួយៗ សូមកត់ត្រា៖
ភាពយឺតយ៉ាវនៃ p50, p95 និង p99
សញ្ញាសម្គាល់ទិន្នផលជាមធ្យម
តម្លៃក្នុងសំបុត្រចំនួន 1,000 សន្លឹក
ចំនួននៃសេចក្ដីសង្ខេបដែលមានព័ត៌មានលម្អិតដែលបានបង្កើត
ចំនួននៃសេចក្ដីសង្ខេបដែលត្រូវការសរសេរឡើងវិញដោយមនុស្ស
បន្ទាប់មកសាកល្បងករណីឆ្គងៗមួយចំនួន៖
សំបុត្រដែលមានលេខបីដាច់ដោយឡែកពីគ្នា
សាររបស់អតិថិជនដែលខឹងសម្បារយ៉ាងខ្លាំង
សំបុត្រមិនច្បាស់លាស់ដែលស្ទើរតែគ្មានព័ត៌មានលម្អិត
សំបុត្រដែលមានកំណត់ហេតុដែលបានបិទភ្ជាប់
សំបុត្រដែលអតិថិជនលើកឡើងពីការលុបចោលគណនីរបស់ពួកគេ
នេះចាប់យកការបរាជ័យទូទៅដែលការធ្វើឱ្យប្រសើរឡើងធ្វើឱ្យគំរូលឿនជាងមុនប៉ុន្តែមិនសូវប្រុងប្រយ័ត្ន។.
លទ្ធផល
លទ្ធផលបង្ហាញដោយផ្អែកលើពេលវេលា សំបុត្រគំរូចំនួន 50 មុន និងក្រោយការឆ្លងកាត់ការធ្វើឲ្យប្រសើរឡើងចំនួនបី៖
បន្ទាត់មូលដ្ឋាន៖
ភាពយឺតយ៉ាវនៃ p95៖ 2.4 វិនាទី
ភាពយឺតយ៉ាវនៃ p99៖ 3.1 វិនាទី
ប្រវែងលទ្ធផលជាមធ្យម៖ ១៤២ ពាក្យ
ការសរសេរឡើងវិញរបស់មនុស្ស៖ ១១ ក្នុងចំណោម ៥០
កំហុសធ្ងន់ធ្ងរទាក់ទងនឹងព័ត៌មានលម្អិតដែលបង្កើតឡើងដោយប្រឌិត៖ ៣ ក្នុងចំណោម ៥០
បន្ទាប់ពីការបង្កើនប្រសិទ្ធភាព៖
ភាពយឺតយ៉ាវនៃ p95៖ 1.1 វិនាទី
ភាពយឺតយ៉ាវនៃ p99៖ 1.6 វិនាទី
ប្រវែងលទ្ធផលជាមធ្យម៖ ៦១ ពាក្យ
ការសរសេរឡើងវិញរបស់មនុស្ស៖ ៥ ក្នុងចំណោម ៥០
កំហុសធ្ងន់ធ្ងរទាក់ទងនឹងព័ត៌មានលម្អិតដែលបង្កើតឡើងដោយប្រឌិត៖ ១ ក្នុងចំណោម ៥០
អ្វីដែលបានផ្លាស់ប្តូរ៖
ក្រុមបានកំណត់ប្រវែងនៃលទ្ធផលត្រឹម 80 ពាក្យ
ពួកគេបានរៀបចំសំបុត្រដែលមានអាទិភាពទាបជាក្រុមៗចំនួន ៨ សន្លឹក។
ពួកគេបានរក្សាទុកបរិបទគោលការណ៍ផលិតផលដដែលៗក្នុងឃ្លាំងសម្ងាត់
ពួកគេបានបើកភាពជាក់លាក់ចម្រុះបន្ទាប់ពីបញ្ជាក់ពីគុណភាពដែលបានរក្សា
ពួកគេបានទុកការវាស់វែងបរិមាណសម្រាប់ពេលក្រោយ ពីព្រោះគោលដៅភាពយឺតយ៉ាវត្រូវបានសម្រេចរួចហើយ។
តម្លៃក៏បានធ្លាក់ចុះនៅក្នុងឧទាហរណ៍នេះផងដែរ ដោយសារតែគំរូនេះបានបង្កើតថូខឹនតិចជាងមុន។ ប្រសិនបើការរៀបចំចាស់បានបង្កើតប្រហែល 142 ពាក្យក្នុងមួយសំបុត្រ ហើយការរៀបចំថ្មីបានបង្កើតប្រហែល 61 ពាក្យ ប្រវែងទិន្នផលបានធ្លាក់ចុះប្រហែល 57%។ នោះគឺជារង្វាស់ដែលក្រុមអាចផ្ទៀងផ្ទាត់ដោយផ្ទាល់ពីកំណត់ហេតុ។.
អ្វីដែលអាចខុសបាន
កំហុសដ៏គួរឱ្យទាក់ទាញបំផុតគឺការបង្កើនប្រសិទ្ធភាពសម្រាប់ល្បឿនដោយខ្លួនឯង។ ការសង្ខេបលឿនជាងមុនដែលបង្កើតការសន្យាសងប្រាក់វិញមិនមែនជាការកែលម្អទេ។.
កំហុសងាយៗផ្សេងទៀត៖
សាកល្បងតែសំបុត្រស្អាតប៉ុណ្ណោះ
មិនអើពើនឹងភាពយឺតយ៉ាវ p99
ភ្លេចប្រៀបធៀបប្រវែងទិន្នផល
ការផ្លាស់ប្តូរការកំណត់បាច់ និងម៉ូដែលក្នុងពេលតែមួយ
ការប្រើប្រាស់ភាពយឺតយ៉ាវជាមធ្យមជំនួសឱ្យភាពយឺតយ៉ាវកន្ទុយ
ការអះអាងថា "គុណភាពនៅតែដដែល" ដោយគ្មានបញ្ជីត្រួតពិនិត្យការវាយតម្លៃ
ច្បាប់ពិនិត្យឡើងវិញដែលមានសុវត្ថិភាពជាងគឺសាមញ្ញ៖ ប្រសិនបើមានសេចក្តីសង្ខេបច្រើនជាង 2 ក្នុងចំណោម 50 បង្កើតព័ត៌មានលម្អិតសំខាន់ៗ សូមត្រឡប់ក្រោយ ហើយស៊ើបអង្កេត។.
សម្ភារៈសិក្សាជាក់ស្តែង
នេះជារបៀបដែលការបង្កើនប្រសិទ្ធភាពគំរូ AI ដ៏រឹងមាំមើលទៅក្នុងការអនុវត្ត៖ ជ្រើសរើសការរឹតបន្តឹងមួយ វាស់ស្ទង់ប្រព័ន្ធបច្ចុប្បន្ន យកកាកសំណល់ចេញជាមុនសិន អនុវត្តការផ្លាស់ប្តូរដែលមានហានិភ័យទាប បន្ទាប់មកពិនិត្យមើលគុណភាពជាមួយនឹងការធ្វើតេស្តដ៏គួរឱ្យធុញទ្រាន់ ប៉ុន្តែមានតម្លៃ។ ជ័យជម្នះមិនមែនគ្រាន់តែជាគំរូលឿនជាងមុននោះទេ។ វាគឺជាគំរូលឿនជាងមុនដែលអ្នកនៅតែអាចទុកចិត្តបាន។.
សំណួរដែលសួរញឹកញាប់
អ្វីដែលការធ្វើឱ្យប្រសើរឡើងនូវគំរូ 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 - ZeRO ដំណាក់កាលទី 3 - 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