បញ្ហា (The Problem)៖ ការរួមបញ្ចូលប្រព័ន្ធម៉ាស៊ីនរៀន (Machine Learning) ទៅក្នុងឧបករណ៍ Edge/IoT ទាមទារថាមពលកុំព្យូទ័រ និងអង្គចងចាំច្រើន ដែលធ្វើឲ្យមានការលំបាកក្នុងការបណ្តុះបណ្តាលម៉ូដែលដោយផ្ទាល់នៅលើឧបករណ៍ (on-device training) ដែលមានធនធានមានកម្រិត។
វិធីសាស្ត្រ (The Methodology)៖ និក្ខេបបទនេះស្នើឡើងនូវក្របខ័ណ្ឌបណ្តុះបណ្តាលដែលប្រើប្រាស់ធនធានតិចតួច ដោយបញ្ចូលក្បួនដោះស្រាយ Lightweight Stochastic Gradient Descent (L-SGD) ជាមួយនឹងបណ្ណាល័យ PULP-NN ។
លទ្ធផលសំខាន់ៗ (The Verdict)៖
| វិធីសាស្ត្រ (Method) | គុណសម្បត្តិ (Pros) | គុណវិបត្តិ (Cons) | លទ្ធផលគន្លឹះ (Key Result) |
|---|---|---|---|
| ARM Float32 L-SGD (Baseline) វិធីសាស្ត្រ ARM Float32 L-SGD (គោល) |
មានដំណើរការលឿនក្នុងវគ្គ Forward Pass ដោយសារមានអង្គគណនា Floating-Point Unit (FPU) គាំទ្រផ្ទាល់ពីផ្នែករឹង (Hardware)។ | ប្រើប្រាស់អង្គចងចាំច្រើន និងស៊ីថាមពលអគ្គិសនីខ្ពស់ ដែលមិនសូវស័ក្តិសមសម្រាប់ឧបករណ៍ខ្នាតតូចប្រភេទ Ultra-low power នោះទេ។ | ប្រើប្រាស់រយៈពេល ៤.៧៩ms និងទទួលបានភាពត្រឹមត្រូវ ៩០.៦០% លើសំណុំទិន្នន័យ CogDist។ |
| RISC-V Float32 L-SGD (Optimized) វិធីសាស្ត្រ RISC-V Float32 L-SGD (ដែលបានធ្វើឲ្យប្រសើរ) |
អាចដំណើរការបាននៅលើប្រព័ន្ធដែលគ្មាន FPU តាមរយៈការប្រើប្រាស់បណ្ណាល័យគណិតវិទ្យាជំនួស (fast_math.h) ប្រកបដោយប្រសិទ្ធភាព។ | មានដំណើរការយឺតជាងប្រព័ន្ធ ARM (ដែលមាន FPU) ដោយសារប្រតិបត្តិការគណនា Float ត្រូវក្លែងធ្វើ (Emulate) តាមរយៈកម្មវិធីកូដ។ | ប្រើប្រាស់រយៈពេល ១៧ms ជាមួយនឹងភាពត្រឹមត្រូវ ៩២.៩៦% លើសំណុំទិន្នន័យ CogDist។ |
| RISC-V Int8 Quantized L-SGD វិធីសាស្ត្រ RISC-V Int8 Quantized L-SGD |
កាត់បន្ថយការប្រើប្រាស់អង្គចងចាំបានរហូតដល់ ១.៦ ដង និងមានល្បឿនប្រតិបត្តិការលឿនជាង Float32 ដល់ទៅ ២.២ ដង។ | អាចប្រឈមនឹងបញ្ហា Saturation ធ្វើឲ្យប៉ះពាល់ដល់ភាពត្រឹមត្រូវ ប្រសិនបើបណ្តុះបណ្តាលម៉ូដែលពីចំណុចសូន្យ (ទាមទារការប្រើម៉ូដែល Pre-trained)។ | ប្រើប្រាស់រយៈពេលត្រឹមតែ ៩ms ខណៈភាពត្រឹមត្រូវកើនដល់ ៩៦.០០% លើសំណុំទិន្នន័យ CogDist។ |
ការចំណាយលើធនធាន (Resource Cost)៖ ការអនុវត្តគម្រោងនេះទាមទារនូវឧបករណ៍ Hardware ជាក់លាក់ និងកម្មវិធីកូដកម្រិតទាប ព្រមទាំងសំណុំទិន្នន័យសម្រាប់ការសាកល្បង និងចំណេះដឹងផ្នែក C/C++។
ការសិក្សានេះប្រើប្រាស់សំណុំទិន្នន័យទូទៅដូចជា CogDist និង CarEvaluation ដើម្បីវាស់ស្ទង់ដំណើរការនៃស្ថាបត្យកម្មកុំព្យូទ័រ ដោយមិនបានផ្តោតលើភាពលម្អៀងនៃទិន្នន័យ (Data Bias) នោះទេ។ សម្រាប់ការយកមកអនុវត្តនៅប្រទេសកម្ពុជា ការប្រមូលសំណុំទិន្នន័យជាក់ស្តែងក្នុងស្រុក (Local Data) ជារឿងចាំបាច់ ព្រោះអាកប្បកិរិយា ឬទិន្នន័យបរិស្ថាននៅកម្ពុជាអាចមានលក្ខណៈខុសប្លែកពីទិន្នន័យគោល ដែលតម្រូវឲ្យមានការបណ្តុះបណ្តាលម៉ូដែលសាជាថ្មី (Fine-tuning)។
បច្ចេកវិទ្យា TinyML និងស្ថាបត្យកម្ម RISC-V នេះមានសក្តានុពលខ្ពស់ខ្លាំងសម្រាប់ការអភិវឌ្ឍប្រព័ន្ធឆ្លាតវៃនៅកម្ពុជា ជាពិសេសនៅក្នុងតំបន់ដែលមានធនធាន និងការតភ្ជាប់អ៊ីនធឺណិតមានកម្រិត។
សរុបមក ការបណ្តុះបណ្តាលម៉ូដែល AI ដោយផ្ទាល់លើឧបករណ៍ខ្នាតតូច ផ្តល់លទ្ធភាពឲ្យស្ថាប័នកម្ពុជាអាចបង្កើតដំណោះស្រាយបច្ចេកវិទ្យាដែលមានតម្លៃថោក សន្សំសំចៃថាមពលអគ្គិសនី និងរក្សាបាននូវឯកជនភាពទិន្នន័យកម្រិតខ្ពស់។
ដើម្បីអនុវត្តតាមការសិក្សានេះ និស្សិតគួរអនុវត្តតាមជំហានខាងក្រោម៖
| ពាក្យបច្ចេកទេស | ការពន្យល់ជាខេមរភាសា (Khmer Explanation) | និយមន័យសាមញ្ញ (Simple Definition) |
|---|---|---|
| Quantization | គឺជាដំណើរការនៃការបម្លែងទិន្នន័យម៉ូដែលម៉ាស៊ីនរៀនពីទម្រង់ដែលមានទំហំធំ (ដូចជា 32-bit floating-point) ទៅជាទម្រង់តូចជាង (ដូចជា 8-bit integer) ដើម្បីសន្សំសំចៃអង្គចងចាំ និងជួយឲ្យដំណើរការគណនាលឿនជាងមុននៅលើឧបករណ៍ដែលមានធនធានមានកម្រិត។ | ដូចជាការបង្រួមរូបភាពទំហំធំ (HD) ទៅជារូបភាពតូចជាងមុន (SD) ដើម្បីងាយស្រួលផ្ញើ ឬរក្សាទុក តែអ្នកនៅតែអាចមើលដឹងថារូបនោះជារូបអ្វី។ |
| TinyML | ជាបច្ចេកវិទ្យាដែលអនុញ្ញាតឲ្យដំណើរការប្រព័ន្ធបញ្ញាសិប្បនិម្មិត (AI) និងម៉ាស៊ីនរៀន (ML) ដោយផ្ទាល់នៅលើឧបករណ៍អេឡិចត្រូនិកខ្នាតតូចបំផុត (Microcontrollers) ដែលស៊ីថាមពលថ្មតិច និងមិនទាមទារការតភ្ជាប់អ៊ីនធឺណិត។ | ដូចជាការដាក់ខួរក្បាលឆ្លាតវៃខ្នាតតូចមួយទៅក្នុងនាឡិកាដៃ ឬសេនស័រ ដើម្បីឲ្យវាអាចគិតនិងសម្រេចចិត្តដោយខ្លួនឯងបានភ្លាមៗដោយមិនបាច់សួរទៅម៉ាស៊ីនមេ។ |
| RISC-V | គឺជាស្ថាបត្យកម្មកុំព្យូទ័រប្រភេទកូដបើកចំហ (Open-source Instruction Set Architecture) ដែលអនុញ្ញាតឲ្យអ្នកអភិវឌ្ឍន៍អាចយកទៅរចនាបន្ទះឈីបដោយសេរី ងាយស្រួលកែច្នៃ និងសន្សំសំចៃថាមពល ជាពិសេសសម្រាប់ឧបករណ៍ IoT។ | ដូចជាប្លង់សាងសង់ផ្ទះដែលអាចទាញយកមកប្រើដោយឥតគិតថ្លៃ ហើយអ្នកអាចកែច្នៃបន្ថែមបន្ទប់ ឬបន្ថយទំហំតាមតម្រូវការជាក់ស្តែងរបស់អ្នក។ |
| Stochastic Gradient Descent (SGD) | ជាក្បួនដោះស្រាយសម្រាប់បណ្តុះបណ្តាលម៉ូដែលដោយវាធ្វើការកែសម្រួលទម្ងន់ (Weights) របស់ម៉ូដែលបន្តិចម្តងៗ ដោយផ្អែកលើការគណនាកំហុស ដើម្បីឲ្យម៉ូដែលទទួលបានភាពត្រឹមត្រូវខ្ពស់បំផុត។ L-SGD គឺជាទម្រង់កាត់បន្ថយទំហំរបស់វាសម្រាប់ប្រើលើឧបករណ៍តូចៗ។ | ដូចជាមនុស្សម្នាក់ដែលបិទភ្នែកដើរចុះភ្នំ ដោយប្រើជើងស្ទាបរកផ្លូវដែលទេរចុះក្រោមបន្តិចម្តងៗ រហូតដល់អាចដើរទៅដល់ចំណុចទាបបំផុតនៃជ្រលងភ្នំ។ |
| Floating-Point Unit (FPU) | ជាផ្នែកមួយនៃខួរក្បាលកុំព្យូទ័រ (Hardware) ដែលមានតួនាទីពិសេសសម្រាប់ធ្វើការគណនាលេខទសភាគ (លេខមានក្បៀស) យ៉ាងលឿន។ ប្រព័ន្ធកុំព្យូទ័រដែលគ្មាន FPU ត្រូវប្រើកម្មវិធីកូដដើម្បីក្លែងធ្វើការគណនា ដែលធ្វើឲ្យស៊ីពេលយូរជាងមុន។ | ដូចជាការប្រើម៉ាស៊ីនគិតលេខដើម្បីបូកដកលេខក្បៀសវែងៗ ប្រៀបធៀបនឹងការអង្គុយគិតលេខនោះដោយប្រើក្រដាសនិងប៊ិច។ |
| Gradient Saturation | ជាបញ្ហាដែលកើតឡើងនៅពេលបណ្តុះបណ្តាលម៉ូដែលដោយប្រើទិន្នន័យខ្នាតតូច (int8) ដែលធ្វើឲ្យតម្លៃនៃការផ្លាស់ប្តូរធំពេក រហូតដល់ហួសដែនកំណត់អតិបរមានៃ 8-bit ទើបតម្លៃនោះត្រូវកាត់ត្រឹមស្មើគ្នា ដែលធ្វើឲ្យម៉ូដែលបាត់បង់ព័ត៌មាននិងឈប់រៀនសូត្របន្ត។ | ដូចជាការចាក់ទឹកចូលក្នុងកែវតូចមួយ បើចាក់ទឹកច្រើនពេកវានឹងហៀរចេញ ហើយយើងមិនដឹងថាបរិមាណទឹកដែលហៀរចេញនោះមានប៉ុន្មានពិតប្រាកដនោះទេ។ |
| Federated Learning | គឺជាវិធីសាស្ត្របណ្តុះបណ្តាលម៉ាស៊ីនរៀន ដោយឲ្យឧបករណ៍នីមួយៗរៀនពីទិន្នន័យរបស់ខ្លួនផ្ទាល់ រួចបញ្ជូនតែលទ្ធផលនៃការរៀន (Model Updates) ទៅកាន់ម៉ាស៊ីនកណ្តាល ដោយមិនបញ្ជូនទិន្នន័យឯកជន (Raw Data) ឡើយ ដើម្បីរក្សាឯកជនភាព។ | ដូចជាសិស្សម្នាក់ៗធ្វើលំហាត់នៅផ្ទះរៀងខ្លួន រួចផ្ញើតែចម្លើយចុងក្រោយទៅគ្រូដើម្បីបូកសរុប ដោយមិនចាំបាច់យកសៀវភៅព្រាងទៅឲ្យគ្រូមើលនោះទេ។ |
| Backpropagation | គឺជាដំណើរការបញ្ជូនកំហុសត្រឡប់ថយក្រោយនៅក្នុងបណ្តាញសរសៃប្រសាទសិប្បនិម្មិត (Neural Network) ដើម្បីប្រាប់ស្រទាប់នីមួយៗឲ្យដឹងពីទំហំកំហុសរបស់ខ្លួន និងធ្វើការកែតម្រូវទម្ងន់ទិន្នន័យសម្រាប់ការទស្សន៍ទាយលើកក្រោយឲ្យកាន់តែសុក្រឹត។ | ដូចជាថៅកែប្រាប់កំហុសទៅអ្នកចាត់ការ ហើយអ្នកចាត់ការប្រាប់បន្តទៅបុគ្គលិក ដើម្បីឲ្យអ្នកគ្រប់គ្នាជួយកែតម្រូវចំណុចខ្សោយរៀងៗខ្លួនសម្រាប់គម្រោងក្រោយ។ |
អត្ថបទដែលបានបោះពុម្ពនៅលើ KhmerResearch ដែលទាក់ទងនឹងប្រធានបទនេះ៖
ប្រធានបទ និងសំណួរស្រាវជ្រាវដែលទាក់ទងនឹងឯកសារនេះ ដែលអ្នកអាចស្វែងរកបន្ថែម៖