Original Title: Train Me If You Can: Decentralized Learning on the Deep Edge
Source: doi.org/10.3390/app12094653
Disclaimer: Summary generated by AI based on the provided document. Please refer to the original paper for full scientific accuracy.

បង្ហាត់ខ្ញុំប្រសិនបើអ្នកអាច៖ ការរៀនតាមបែបវិមជ្ឈការនៅលើ Deep Edge

ចំណងជើងដើម៖ Train Me If You Can: Decentralized Learning on the Deep Edge

អ្នកនិពន្ធ៖ Diogo Costa (Centro Algoritmi, Universidade do Minho), Miguel Costa (Centro Algoritmi, Universidade do Minho), Sandro Pinto (Centro Algoritmi, Universidade do Minho)

ឆ្នាំបោះពុម្ព៖ 2022, Applied Sciences

វិស័យសិក្សា៖ Machine Learning

១. សេចក្តីសង្ខេបប្រតិបត្តិ (Executive Summary)

បញ្ហា (The Problem)៖ ការបណ្តុះបណ្តាលម៉ូដែលរៀនដោយម៉ាស៊ីន (Machine Learning) នៅលើឧបករណ៍ផ្ទាល់ (Edge devices) ដែលមានធនធានផ្ទុកនិងកម្លាំងគណនាមានកម្រិត ជួបប្រទះនូវបញ្ហាទំហំអង្គចងចាំនិងភាពយឺតយ៉ាវ ដែលធ្វើឱ្យក្បួនដោះស្រាយស្តង់ដារដូចជា SGD មិនអាចដំណើរការបាន។

វិធីសាស្ត្រ (The Methodology)៖ អ្នកស្រាវជ្រាវបានបង្កើតក្បួនដោះស្រាយថ្មីមួយឈ្មោះថា Lightweight SGD (L-SGD) ដោយធ្វើបច្ចុប្បន្នភាពលើប្រព័ន្ធគណនា (Chain-rule) ដើម្បីកាត់បន្ថយការប្រើប្រាស់អង្គចងចាំ និងបានបែងចែកវាជាពីរប្រភេទសម្រាប់ធ្វើការវាយតម្លៃ។

លទ្ធផលសំខាន់ៗ (The Verdict)៖

២. ការវិភាគលើប្រសិទ្ធភាព និងដែនកំណត់ (Performance & Constraints)

វិធីសាស្ត្រ (Method) គុណសម្បត្តិ (Pros) គុណវិបត្តិ (Cons) លទ្ធផលគន្លឹះ (Key Result)
Standard SGD (Float-32)
ក្បួនដោះស្រាយ SGD ស្តង់ដារ (Float-32)
ជាវិធីសាស្រ្តមូលដ្ឋានដែលមានស្ថេរភាពក្នុងការបង្ហាត់ម៉ូដែល និងធានាបាននូវភាពសុក្រឹតខ្ពស់។ វាងាយស្រួលក្នុងការអនុវត្តលើប្រព័ន្ធកុំព្យូទ័រធំៗដែលមានថាមពលគណនាខ្លាំង។ ប្រើប្រាស់អង្គចងចាំ (Memory footprint) ច្រើនទ្វេដងនៃទំហំម៉ូដែល និងមានភាពយឺតយ៉ាវ ដែលមិនស័ក្តិសមទាល់តែសោះសម្រាប់ឧបករណ៍ខ្នាតតូច (Edge devices)។ ទាមទារអង្គចងចាំ ១35,៦៣២ Bytes និងប្រើពេល ៧៥,០៩ មីលីវិនាទី/គំរូ (លើទិន្នន័យ MNIST)។
L-SGD (Float-32)
ក្បួនដោះស្រាយ L-SGD ប្រភេទ Float-32
កាត់បន្ថយការប្រើប្រាស់អង្គចងចាំបានយ៉ាងច្រើន និងបង្កើនល្បឿនក្នុងការបង្ហាត់បានលឿនជាងមុន ដោយរក្សាបាននូវកម្រិតភាពសុក្រឹតប្រហាក់ប្រហែលនឹង SGD ស្តង់ដារ។ នៅតែត្រូវការប្រព័ន្ធ Floating-Point Unit (FPU) នៅលើបន្ទះឈីបដើម្បីទទួលបានល្បឿនលឿនបំផុត។ លឿនជាង SGD ស្តង់ដារ ៤,២០ ដង និងប្រើប្រាស់អង្គចងចាំត្រឹមតែ ២,៨០% ប៉ុណ្ណោះ (៣,៧៨៤ Bytes)។
L-SGD (Int-8)
ក្បួនដោះស្រាយ L-SGD ប្រភេទ Quantized (Int-8)
សន្សំសំចៃទំហំអង្គចងចាំបានកម្រិតអតិបរមា និងមានដំណើរការលឿនបំផុត ដែលស័ក្តិសមបំផុតសម្រាប់ការកែសម្រួលម៉ូដែល (Model tweaking) ក្នុងប្រព័ន្ធ Federated Learning។ មិនអាចប្រើសម្រាប់បង្ហាត់ម៉ូដែលពីចំណុចដំបូង (Training from scratch) បានទេ ដោយសារបញ្ហា Saturation នៃទិន្នន័យនៅពេលតម្លៃ Loss មានទំហំធំ។ សន្សំសំចៃអង្គចងចាំបាន ៧២,៨២% បន្ថែមទៀត និងលឿនជាង L-SGD (Float-32) ចំនួន ២,៤៨ ដង។

ការចំណាយលើធនធាន (Resource Cost)៖ ការអនុវត្តក្បួនដោះស្រាយនេះតម្រូវឱ្យមានឧបករណ៍ផ្នែករឹងខ្នាតតូចដែលមានតម្លៃសមរម្យ ប៉ុន្តែទាមទារចំណេះដឹងផ្នែកកម្មវិធីកម្រិតទាប (Low-level programming) ស៊ីជម្រៅ។

៣. ការពិនិត្យសម្រាប់បរិបទកម្ពុជា/អាស៊ីអាគ្នេយ៍

ភាពលំអៀងនៃទិន្នន័យ (Data Bias)៖

ការសិក្សានេះប្រើប្រាស់ទិន្នន័យស្តង់ដារអន្តរជាតិ (MNIST និង CogDist) ដើម្បីធ្វើតេស្តល្បឿន និងអង្គចងចាំលើផ្នែករឹង STM32L4R5ZIT6។ ទោះបីជាមិនបានផ្តោតលើទិន្នន័យប្រជាសាស្ត្រកម្ពុជាផ្ទាល់ក៏ដោយ ការរកឃើញនេះមានតម្លៃខ្លាំងណាស់ ព្រោះវាបង្ហាញថាការបង្ហាត់ម៉ូដែល ML អាចធ្វើទៅបានលើឧបករណ៍តម្លៃថោក ដែលអនុញ្ញាតឱ្យប្រទេសកំពុងអភិវឌ្ឍន៍ប្រើប្រាស់បច្ចេកវិទ្យា AI ដោយមិនពឹងផ្អែកលើអ៊ីនធឺណិតល្បឿនលឿន ឬកុំព្យូទ័រខ្នាតធំ។

លទ្ធភាពនៃការអនុវត្ត (Applicability)៖

វិធីសាស្រ្តនេះមានសក្តានុពលខ្ពស់ណាស់សម្រាប់ប្រទេសកម្ពុជា ពិសេសក្នុងការបង្កើតប្រព័ន្ធ IoT ឆ្លាតវៃដែលមានតម្លៃថោក ឯករាជ្យពីអ៊ីនធឺណិត និងរក្សាភាពឯកជនបានល្អ។

ជារួម ការរៀនតាមបែបវិមជ្ឈការ (Federated Learning) លើឧបករណ៍ Deep Edge អាចជួយកម្ពុជាអភិវឌ្ឍប្រព័ន្ធ AI ខ្នាតតូចប្រកបដោយសុវត្ថិភាព សន្សំសំចៃ និងអាចពង្រីកវិសាលភាពបានយ៉ាងទូលំទូលាយ។

៤. ផែនការសកម្មភាពសម្រាប់និស្សិត (Actionable Roadmap)

ដើម្បីអនុវត្តតាមការសិក្សានេះ និស្សិតគួរអនុវត្តតាមជំហានខាងក្រោម៖

  1. ១. ស្វែងយល់ពីមូលដ្ឋានគ្រឹះ Embedded Systems និងភាសា C: និស្សិតគប្បីចាប់ផ្តើមរៀនសរសេរកូដដោយប្រើភាសា C/C++ សម្រាប់គ្រប់គ្រងមីក្រូកុងត្រូល័រ ពិសេសស្ថាបត្យកម្ម Arm Cortex-M តាមរយៈការអនុវត្តផ្ទាល់នៅលើ STM32 Nucleo Boards
  2. ២. សិក្សាពី Edge AI និងបណ្ណាល័យគណនាកម្រិតទាប: ត្រូវស្វែងយល់ពីរបៀបដំណើរការម៉ូដែល ML លើឧបករណ៍តូចៗ ដោយប្រើប្រាស់ឧបករណ៍ដូចជា TensorFlow Lite for Microcontrollers និង CMSIS-NN ដើម្បីយល់ពីការអនុវត្តវគ្គ Inference និងរចនាសម្ព័ន្ធទិន្នន័យ។
  3. ៣. ស្វែងយល់ពីការធ្វើ Quantization និង Optimization: សិក្សាស៊ីជម្រៅលើរូបមន្តគណិតវិទ្យានៃ Stochastic Gradient Descent (SGD) និងយន្តការ Backpropagation រួមទាំងការអនុវត្ត Int-8 Quantization ដើម្បីដឹងពីរបៀបកាត់បន្ថយទំហំម៉ូដែលមិនឱ្យបាត់បង់ភាពសុក្រឹត។
  4. ៤. អនុវត្តការសាកល្បង Federated Learning ខ្នាតតូច: សាកល្បងតភ្ជាប់ Microcontrollers ពីរ ឬបីបញ្ជូលគ្នា រួចបង្ហាត់ម៉ូដែលសាមញ្ញ (ឧ. ការបែងចែកប្រភេទសីតុណ្ហភាព) ហើយបញ្ជូនតែប៉ារ៉ាម៉ែត្រ (Weights) ទៅកាន់កុំព្យូទ័រមេតាមរយ: FedAvg Algorithm តាមបណ្តាញ Wi-Fi ឬ Bluetooth មូលដ្ឋាន។

៥. វាក្យសព្ទបច្ចេកទេស (Technical Glossary)

ពាក្យបច្ចេកទេស ការពន្យល់ជាខេមរភាសា (Khmer Explanation) និយមន័យសាមញ្ញ (Simple Definition)
Federated Learning ជាវិធីសាស្ត្រនៃការបណ្តុះបណ្តាលម៉ូដែលបញ្ញាសិប្បនិម្មិត (AI) ដោយមិនចាំបាច់បញ្ជូនទិន្នន័យឆៅទៅកាន់ម៉ាស៊ីនមេ (Cloud Server) នោះទេ ពោលគឺឧបករណ៍នីមួយៗរៀនពីទិន្នន័យរបស់ខ្លួនផ្ទាល់ ហើយបញ្ជូនតែចំណេះដឹង (Parameters) ដែលរៀនរួចទៅកាន់ម៉ាស៊ីនមេដើម្បីចងក្រងជាម៉ូដែលរួមមួយ។ ប្រៀបដូចជាសិស្សរៀនមេរៀនរៀងៗខ្លួននៅផ្ទះ ហើយយកតែចំណេះដឹងដែលយល់ច្បាស់មកប្រាប់គ្រូ ដើម្បីសង្ខេបចែករំលែកទៅសិស្សដទៃ ដោយមិនចាំបាច់យកសៀវភៅកំណត់ហេតុផ្ទាល់ខ្លួនមកបង្ហាញឡើយ។
Stochastic Gradient Descent (SGD) ជាក្បួនដោះស្រាយគណិតវិទ្យាដែលប្រើសម្រាប់ស្វែងរកតម្លៃល្អបំផុត (កាត់បន្ថយកំហុសឱ្យនៅទាបបំផុត) ក្នុងការបណ្តុះបណ្តាលបណ្តាញសរសៃប្រសាទសិប្បនិម្មិត ដោយធ្វើការកែតម្រូវទម្ងន់ (Weights) នៃម៉ូដែលបន្តិចម្តងៗតាមទិសដៅនៃកំហុសដែលបានគណនា។ ប្រៀបដូចជាមនុស្សដែលត្រូវបិទភ្នែកដើរចុះពីកំពូលភ្នំ ដោយប្រើជើងស្ទាបរកទិសដៅដែលចំណោតចុះក្រោមខ្លាំងបំផុត ដើម្បីឆាប់ទៅដល់ជើងភ្នំ។
Quantization គឺជាដំណើរការបំប្លែងទិន្នន័យពីទម្រង់ចំនួនទសភាគ (Floating-point) ដែលស៊ីទំហំអង្គចងចាំធំ ទៅជាទម្រង់ចំនួនគត់ (Integer) តូចៗដូចជា 8-bit ដើម្បីកាត់បន្ថយទំហំផ្ទុក និងបង្កើនល្បឿនគណនាដោយមិនសូវធ្វើឱ្យបាត់បង់ភាពសុក្រឹតរបស់ម៉ូដែលឡើយ។ ដូចជាការបង្រួមរូបថតដែលមានទំហំធំ (ច្បាស់ខ្លាំងពេកដែលមិនចាំបាច់) ឱ្យមកតូចល្មម ដើម្បីងាយស្រួលផ្ញើ ឬរក្សាទុកក្នុងទូរស័ព្ទដៃ ប៉ុន្តែយើងនៅតែអាចមើលស្គាល់ថារូបនោះជារូបអ្វី។
Deep Edge សំដៅលើឧបករណ៍អេឡិចត្រូនិកខ្នាតតូចបំផុត (ដូចជាសេនស័រ មីក្រូកុងត្រូល័រ ឧបករណ៍ពាក់លើខ្លួន) ដែលស្ថិតនៅជិតប្រភពទិន្នន័យបំផុត និងមានសមត្ថភាពគណនាផ្ទាល់ខ្លួនតិចតួចបំផុត ដោយមិនពឹងផ្អែកទាំងស្រុងលើប្រព័ន្ធ Cloud ឡើយ។ ដូចជាមេភូមិដែលប្រចាំការនៅមូលដ្ឋានផ្ទាល់ ហើយអាចសម្រេចចិត្តលើបញ្ហាតូចតាចបានភ្លាមៗ ដោយមិនបាច់រង់ចាំសួរយោបល់ពីថ្នាក់ខេត្ត។
Memory footprint ជាទំហំសរុបនៃអង្គចងចាំ (RAM ឬ Storage) ដែលកម្មវិធី ឬក្បួនដោះស្រាយមួយត្រូវការប្រើប្រាស់ ដើម្បីដំណើរការប្រតិបត្តិការរបស់ខ្លួនឱ្យបានជោគជ័យ។ ដូចជាទំហំផ្ទៃតុដែលអ្នកត្រូវការសម្រាប់ដាក់សៀវភៅ និងឧបករណ៍សិក្សានៅពេលកំពុងធ្វើលំហាត់ ប្រសិនបើកិច្ចការកាន់តែស្មុគស្មាញ អ្នកត្រូវការទំហំតុរឹតតែធំ។
Microcontroller Unit (MCU) ជាកុំព្យូទ័រខ្នាតតូចបំផុតដែលរួមបញ្ចូលប្រព័ន្ធដំណើរការ (CPU) អង្គចងចាំ (Memory) និងរន្ធតភ្ជាប់ (I/O) នៅលើបន្ទះឈីបតែមួយ ដែលភាគច្រើនប្រើសម្រាប់បញ្ជាឧបករណ៍អេឡិចត្រូនិកជាក់លាក់ណាមួយ (Embedded systems)។ ដូចជាខួរក្បាលតូចមួយដែលមានមុខងារចងចាំនិងបញ្ជា ដែលគេបង្កប់នៅក្នុងម៉ាស៊ីនបោកគក់ ឬទូរទឹកកកឆ្លាតវៃ ដើម្បីឱ្យវាដំណើរការដោយស្វ័យប្រវត្តិ។
Node Delta នៅក្នុងក្បួនដោះស្រាយ L-SGD ថ្មីនេះ វាគឺជាប៉ារ៉ាម៉ែត្ររួមបញ្ចូលគ្នាតែមួយដែលតំណាងឱ្យការសាយភាយកំហុស (Error propagation) សម្រាប់ណឺរ៉ូននីមួយៗ ដែលជួយកាត់បន្ថយការគណនាស្ទួន និងសន្សំសំចៃការប្រើប្រាស់អង្គចងចាំបានយ៉ាងច្រើន។ ដូចជាការសរសេរសរុបវិក្កយបត្រថ្លៃម្ហូបតែមួយសន្លឹកសម្រាប់តុមួយ ជំនួសឱ្យការកត់វិក្កយបត្រដាច់ដោយឡែកៗសម្រាប់មនុស្សម្នាក់ៗក្នុងតុនោះ ដែលជួយសន្សំសំចៃក្រដាសនិងពេលវេលា។
Backpropagation ជាយន្តការមួយនៅក្នុងការបង្ហាត់ម៉ូដែល AI ដែលបញ្ជូនទិន្នន័យកំហុស (Error) ពីលទ្ធផលចុងក្រោយ ត្រឡប់ថយក្រោយទៅគ្រប់ស្រទាប់នៃបណ្តាញសរសៃប្រសាទវិញ ដើម្បីកែតម្រូវទម្ងន់ (Weights) នៃណឺរ៉ូននីមួយៗឱ្យកាន់តែសុក្រឹតនៅពេលក្រោយ។ ដូចជាការផ្ដល់មតិកែលម្អ (Feedback) ពីអ្នកគ្រប់គ្រងទៅកាន់បុគ្គលិកគ្រប់ផ្នែក បន្ទាប់ពីគម្រោងមួយមានការខ្វះខាត ដើម្បីឱ្យបុគ្គលិកកែប្រែចំណុចខ្សោយរបស់ខ្លួនសម្រាប់គម្រោងបន្ទាប់។

៦. ប្រធានបទពាក់ព័ន្ធ (Further Reading)

អត្ថបទដែលបានបោះពុម្ពនៅលើ KhmerResearch ដែលទាក់ទងនឹងប្រធានបទនេះ៖

ប្រធានបទ និងសំណួរស្រាវជ្រាវដែលទាក់ទងនឹងឯកសារនេះ ដែលអ្នកអាចស្វែងរកបន្ថែម៖