ការដាក់ពង្រាយគំរូ AI ប្រកបដោយប្រសិទ្ធភាពលើឧបករណ៍ Edge តាមរយៈ Hardware-Software Co-Design | B4N1

ការដាក់ពង្រាយគំរូ AI ប្រកបដោយប្រសិទ្ធភាពលើឧបករណ៍ Edge តាមរយៈ Hardware-Software Co-Design

7 months ago · b4n1 Read time: 2 min

** ការដាក់ពង្រាយគំរូ AI ប្រកបដោយប្រសិទ្ធភាពលើឧបករណ៍ Edge តាមរយៈ Hardware-Software Co-Design**

សេចក្តីផ្តើម

ការរីកសាយភាយនៃឧបករណ៍គែម បានបង្កើតឱកាសថ្មីសម្រាប់កម្មវិធី Artificial Intelligence (AI) ដែលត្រូវដាក់ឱ្យប្រើប្រាស់ក្នុងពេលវេលាជាក់ស្តែង ដោយបើកដំណើរការកម្មវិធីដូចជាផ្ទះឆ្លាតវៃ យានជំនិះស្វ័យប្រវត្តិ និងស្វ័យប្រវត្តិកម្មឧស្សាហកម្ម។ ទោះជាយ៉ាងណាក៏ដោយ ធនធានគណនាមានកម្រិត និងឧបសគ្គថាមពលនៃឧបករណ៍គែម បង្កបញ្ហាប្រឈមយ៉ាងសំខាន់សម្រាប់ការដាក់ពង្រាយគំរូ AI ។ នៅក្នុងអត្ថបទនេះ យើងនឹងស្វែងយល់ពីចំនុចប្រសព្វនៃ AI វិស្វកម្មផ្នែកទន់ និងស្ថាបត្យកម្ម ដើម្បីបង្កើនប្រសិទ្ធភាពនៃដំណើរការឧបករណ៍គែម ដោយប្រើប្រាស់ការជឿនលឿនថ្មីៗនៅក្នុងប្រសិទ្ធភាពនៃគំរូ AI និងបច្ចេកទេសសហរចនាផ្នែករឹង-សូហ្វវែរ។

បញ្ហាប្រឈមនៃការដាក់ពង្រាយគំរូ AI នៅលើឧបករណ៍គែម

ឧបករណ៍ Edge ត្រូវបានកំណត់លក្ខណៈដោយធនធានកុំព្យូទ័រដែលមានកម្រិត រួមទាំង CPU អង្គចងចាំ និងការប្រើប្រាស់ថាមពល។ ម៉ូដែល AI ប្រពៃណី ដែលជារឿយៗត្រូវបានរចនាឡើងសម្រាប់ការដាក់ពង្រាយផ្អែកលើពពក មិនត្រូវបានធ្វើឱ្យប្រសើរសម្រាប់ឧបករណ៍គែមនោះទេ។ ជាលទ្ធផលពួកគេអាចនាំឱ្យមាន៖

  • ការថយចុះនៃការអនុវត្ត៖ ម៉ូដែល AI ប្រហែលជាមិនដំណើរការប្រកបដោយប្រសិទ្ធភាពលើឧបករណ៍គែម ដែលនាំឱ្យពេលវេលាឆ្លើយតបយឺត និងកាត់បន្ថយភាពត្រឹមត្រូវ។
  • ** ការប្រើប្រាស់ថាមពល **៖ ម៉ូដែល AI អាចប្រើប្រាស់ថាមពលដ៏សំខាន់ ដែលអាចជាកង្វល់សម្រាប់ឧបករណ៍គែមដែលប្រើថ្ម។
  • ឧបសគ្គនៃអង្គចងចាំ៖ ម៉ូដែល AI អាចត្រូវការអង្គចងចាំច្រើន ដែលអាចជាបញ្ហាប្រឈមសម្រាប់ឧបករណ៍គែមដែលមានធនធានអង្គចងចាំមានកំណត់។

បច្ចេកទេសរចនា Hardware-Software Co-Design

ដើម្បីដោះស្រាយបញ្ហាប្រឈមទាំងនេះ បច្ចេកទេសរចនាផ្នែករឹង-សូហ្វវែរបានលេចចេញជាដំណោះស្រាយដ៏ជោគជ័យមួយ។ បច្ចេកទេសទាំងនេះពាក់ព័ន្ធនឹងការរចនាទាំងផ្នែករឹង និងផ្នែកទន់នៃឧបករណ៍គែមមួយស្របគ្នា ធ្វើឱ្យពួកវាប្រសើរឡើងសម្រាប់ការដាក់ពង្រាយគំរូ AI ។

** ១. ការកាត់ចេញគំរូ **

ការកាត់ចេញគំរូពាក់ព័ន្ធនឹងការដកទម្ងន់ និងការតភ្ជាប់ដែលមិនចាំបាច់ចេញពីគំរូ AI ដោយកាត់បន្ថយទំហំ និងតម្រូវការគណនារបស់វា។ បច្ចេកទេសនេះអាចត្រូវបានអនុវត្តទាំងបណ្តាញសរសៃប្រសាទ និងដើមឈើការសម្រេចចិត្ត។

``ពស់ថ្លាន់ នាំចូលពិល នាំចូល torch.nn ជា nn

ថ្នាក់ ModelPruning(nn.Module)៖ def init (ខ្លួនឯង)៖ ទំនើប(ការកាត់ចេញគំរូដោយខ្លួនឯង)។ init() self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 10)

def ទៅមុខ (ខ្លួនឯង x)៖
    x = torch.relu(self.fc1(x))
    x = self.fc2(x)
    ត្រឡប់ x

គំរូ = ModelPruning() pruned_model = torch.nn.utils.prune_l1_unstructured(គំរូ, 'ទម្ងន់', 0.1)


### ** ២. ចំរុះចំណេះដឹង **

ការចម្រាញ់ចំណេះដឹងពាក់ព័ន្ធនឹងការផ្ទេរចំណេះដឹងពីគំរូ AI ធំ និងស្មុគស្មាញទៅតូចជាង និងសាមញ្ញជាង។ បច្ចេកទេសនេះអាចត្រូវបានប្រើដើម្បីកាត់បន្ថយទំហំ និងតម្រូវការគណនានៃគំរូ AI ។

``ពស់ថ្លាន់
នាំចូលពិល
នាំចូល torch.nn ជា nn

ថ្នាក់ KnowledgeDistillation(nn.Module)៖
    def __init__ (ខ្លួនឯង)៖
        អស្ចារ្យ (ចំណេះដឹងផ្តាច់មុខ) __init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def ទៅមុខ (ខ្លួនឯង x)៖
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        ត្រឡប់ x

Teacher_model = ModelPruning()
student_model = KnowledgeDistillation()

** ៣. បរិមាណ **

Quantization ពាក់ព័ន្ធនឹងការកាត់បន្ថយភាពជាក់លាក់នៃទម្ងន់គំរូ AI និងការធ្វើឱ្យសកម្ម កាត់បន្ថយតម្រូវការគណនានៃគំរូ AI ។

``ពស់ថ្លាន់ នាំចូលពិល នាំចូល torch.nn ជា nn

ថ្នាក់ Quantization(nn.Module)៖ def init (ខ្លួនឯង)៖ អស្ចារ្យ (បរិមាណ ខ្លួនឯង)។ init() self.fc1 = nn.Linear(784, 128) self.fc2 = nn.Linear(128, 10)

def ទៅមុខ (ខ្លួនឯង x)៖
    x = torch.relu(self.fc1(x))
    x = self.fc2(x)
    ត្រឡប់ x

គំរូ = ModelPruning() quantized_model = torch.quantization.quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8)


** កំពូល 5-10 ពាក្យបញ្ជា / អត្ថបទដែលប្រើច្រើនបំផុត **

| ពាក្យបញ្ជា/សង្ខេប | បរិយាយ |
| ---| ---|
| `torch.nn.utils.prune_l1_unstructured(គំរូ, 'ទម្ងន់', 0.1)` | ការកាត់ចេញតាមគំរូដោយប្រើ L1 normalization |
| `torch.quantization.quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8)` | Quantization ដោយប្រើ dynamic quantization |
| `torch.nn.utils.kldistance(teacher_model, student_model)` | ការចម្រាញ់ចំណេះដឹងដោយប្រើ KL divergence |
| `torch.nn.utils.weight_norm(model.fc1)` | ការធ្វើឱ្យទម្ងន់ធម្មតាដោយប្រើបទដ្ឋានទម្ងន់ |
| `torch.nn.utils.clip_grad_norm_(model.parameters(), 1.0)` | ការកាត់តាមជម្រាលដោយប្រើ clip grad norm |
| `torch.nn.utils.clip_grad_value_(model.parameters(), 1.0)` | ការ​ច្រឹប​ពណ៌​ជម្រាល​ដោយ​ប្រើ​តម្លៃ clip grad |
| `torch.nn.utils.remove_weight_norm(model.fc1)` | ការ​ដក​ទម្ងន់​ចេញ​ឱ្យ​មាន​ភាព​ធម្មតា​ដោយ​ប្រើ​ការ​ដក​ទម្ងន់​ធម្មតា |
| `torch.nn.utils.fuse_conv_bn_eval(model.fc1)` | ការលាយស្រទាប់ Convolutional ដោយប្រើ fuse conv bn eval |
| `torch.nn.utils.fuse_bn_eval(model.fc2)` | ការលាយបញ្ចូលគ្នាធម្មតាជាបាច់ដោយប្រើ fuse bn eval |
| `torch.nn.utils.fuse_bn_eval(model.fc1)` | ការលាយបញ្ចូលគ្នាធម្មតាជាបាច់ដោយប្រើ fuse bn eval |

** ការមើលឃើញ **


`` គំនូសតាង
{
  "type": "របារ",
  "ទិន្នន័យ"៖ {
    "labels": ["ការកាត់ចេញតាមគំរូ", "ការចម្រាញ់ចំណេះដឹង", "បរិមាណ"],
    "សំណុំទិន្នន័យ"៖ {
      "label": "ភាពត្រឹមត្រូវ",
      "ទិន្នន័យ"៖ [0.9, 0.85, 0.8]
    }
  },
  "ជម្រើស"៖ {
    "ចំណងជើង"៖ {
      "បង្ហាញ": ពិត,
      "text": "ការប្រៀបធៀបភាពត្រឹមត្រូវ"
    },
    "រឿងព្រេង"៖ {
      "បង្ហាញ": ពិត
    }
  }
}

សេចក្តីសន្និដ្ឋាន

ការដាក់ពង្រាយគំរូ AI ប្រកបដោយប្រសិទ្ធភាពលើឧបករណ៍គែម ទាមទារការរួមបញ្ចូលគ្នានៃបច្ចេកទេសរចនាផ្នែករឹង និងផ្នែកទន់។ ការកាត់ចេញតាមគំរូ ការចម្រាញ់ចំណេះដឹង និងបរិមាណគឺជាបច្ចេកទេសមួយចំនួនដែលអាចត្រូវបានប្រើដើម្បីកាត់បន្ថយទំហំ និងតម្រូវការគណនានៃគំរូ AI ។ តាមរយៈការប្រើប្រាស់បច្ចេកទេសទាំងនេះ អ្នកអភិវឌ្ឍន៍អាចបង្កើតគំរូ AI ដែលត្រូវបានធ្វើឱ្យប្រសើរសម្រាប់ឧបករណ៍គែម ដោយបើកដំណើរការកម្មវិធីក្នុងពេលជាក់ស្តែងដូចជាផ្ទះឆ្លាតវៃ យានជំនិះស្វ័យប្រវត្តិ និងស្វ័យប្រវត្តិកម្មឧស្សាហកម្ម។

ការងារអនាគត

ការងារនាពេលអនាគតនៅក្នុងតំបន់នេះរួមមាន:

  • ** ការអភិវឌ្ឍន៍បច្ចេកទេសរចនាផ្នែករឹង-សូហ្វវែរថ្មី**៖ អ្នកស្រាវជ្រាវ និងអ្នកអភិវឌ្ឍន៍អាចស្វែងរកបច្ចេកទេសថ្មីសម្រាប់បង្កើនប្រសិទ្ធភាពម៉ូដែល AI សម្រាប់ឧបករណ៍គែម។
  • ** ធ្វើអោយប្រសើរឡើងនូវការកាត់ចេញគំរូ និងក្បួនដោះស្រាយចំរាញ់ចំរុះចំនេះដឹង**៖ ការបង្កើតក្បួនដោះស្រាយដែលមានប្រសិទ្ធភាពជាងមុនសម្រាប់ការកាត់ចេញគំរូ និងចំហរចំរុះចំនេះដឹងអាចនាំអោយមានដំណើរការល្អ និងភាពត្រឹមត្រូវជាងមុន។
  • ការស៊ើបអង្កេតលើការប្រើប្រាស់គំរូ AI ផ្សេងទៀត៖ គំរូ AI ផ្សេងទៀត ដូចជាដើមឈើការសម្រេចចិត្ត និងព្រៃចៃដន្យ អាចត្រូវបានរុករកសម្រាប់ការដាក់ពង្រាយឧបករណ៍គែម។

តាមរយៈការបន្តជំរុញផ្នែកនៃការរចនាផ្នែករឹង-សូហ្វវែរ យើងអាចបង្កើតគំរូ AI ដែលមានប្រសិទ្ធភាព និងមានប្រសិទ្ធភាពជាងមុនសម្រាប់ឧបករណ៍គែម ដែលអនុញ្ញាតឱ្យមានកម្មវិធី និងករណីប្រើប្រាស់យ៉ាងទូលំទូលាយ។


Have Questions?

Let's Talk

Contact me on LinkedIn