Ефективне розгортання моделі штучного інтелекту на периферійних пристроях за допомогою апаратного та програмного забезпечення | B4N1

Ефективне розгортання моделі штучного інтелекту на периферійних пристроях за допомогою апаратного та програмного забезпечення

7 months ago · b4n1 Tiempo de lectura: 3 min

Ефективне розгортання моделі штучного інтелекту на периферійних пристроях за допомогою апаратно-програмного спільного проектування

Вступ

Поширення периферійних пристроїв створило нові можливості для розгортання додатків штучного інтелекту (AI) у режимі реального часу, створюючи такі програми, як розумні будинки, автономні транспортні засоби та промислова автоматизація. Однак обмежені обчислювальні ресурси та обмеження потужності периферійних пристроїв створюють значні проблеми для розгортання моделі ШІ. У цій статті ми досліджуємо перетин ШІ, програмної інженерії та архітектури для оптимізації продуктивності периферійних пристроїв, використовуючи останні досягнення в ефективності моделі ШІ та методи спільного проектування програмно-апаратного забезпечення.

Проблеми розгортання моделі AI на периферійних пристроях

Пристрої Edge характеризуються обмеженими обчислювальними ресурсами, включаючи процесор, пам’ять і енергоспоживання. Традиційні моделі штучного інтелекту, які часто розроблені для хмарного розгортання, не оптимізовані для периферійних пристроїв. В результаті вони можуть призвести до:

  • Зниження продуктивності: моделі штучного інтелекту можуть працювати неефективно на периферійних пристроях, що призводить до повільного часу відгуку та зниження точності.
  • Енергоспоживання: моделі зі штучним інтелектом можуть споживати значну кількість електроенергії, що може викликати занепокоєння для периферійних пристроїв із живленням від батареї.
  • Обмеження пам’яті: моделям штучного інтелекту може знадобитися великий обсяг пам’яті, що може бути проблемою для крайніх пристроїв з обмеженими ресурсами пам’яті.

Техніки спільного проектування апаратно-програмного забезпечення

Щоб вирішити ці проблеми, багатообіцяючим рішенням стали методи спільного проектування апаратного та програмного забезпечення. Ці методи передбачають розробку як апаратних, так і програмних компонентів периферійного пристрою в тандемі, оптимізуючи їх для розгортання моделі ШІ.

1. Обрізка моделі

Обрізка моделі передбачає видалення непотрібних ваг і зв’язків із моделі ШІ, зменшення її розміру та вимог до обчислень. Цю техніку можна застосовувати як до нейронних мереж, так і до дерев рішень.

імпортний факел
імпортувати torch.nn як nn

клас ModelPruning(nn.Module):
    def __init__(self):
        super(ModelPruning, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        повернути x

модель = ModelPruning()
pruned_model = torch.nn.utils.prune_l1_unstructured(модель, 'вага', 0,1)

2. Дистиляція знань

Дестиляція знань передбачає передачу знань із великої, складної моделі штучного інтелекту до меншої та простішої. Цю техніку можна використовувати для зменшення розміру та обчислювальних вимог моделі ШІ.

імпортний факел
імпортувати torch.nn як nn

клас KnowledgeDistillation(nn.Module):
    def __init__(self):
        super(KnowledgeDistillation, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        повернути x

teacher_model = ModelPruning()
student_model = KnowledgeDistillation()

3. Квантування

Квантування передбачає зниження точності вагових коефіцієнтів і активацій моделі ШІ, що зменшує обчислювальні вимоги моделі ШІ.

імпортний факел
імпортувати torch.nn як nn

клас Quantization(nn.Module):
    def __init__(self):
        super(Quantization, self).__init__()
        self.fc1 = nn.Linear(784, 128)
        self.fc2 = nn.Linear(128, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = self.fc2(x)
        повернути x

модель = ModelPruning()
quantized_model = torch.quantization.quantize_dynamic(модель, {torch.nn.Linear}, dtype=torch.qint8)

5-10 найбільш часто використовуваних команд/фрагментів

Команда/ Фрагмент Опис
torch.nn.utils.prune_l1_unstructured(модель, 'вага', 0,1) Обрізка моделі з використанням регулярізації L1
torch.quantization.quantize_dynamic(model, {torch.nn.Linear}, dtype=torch.qint8) Квантування за допомогою динамічного квантування
torch.nn.utils.kldistance(teacher_model, student_model) Дистиляція знань за допомогою дивергенції KL
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) Відсікання градієнта за допомогою значення градієнта кліпу
torch.nn.utils.remove_weight_norm(model.fc1) Видалення нормалізації ваги за допомогою видалення норми ваги
torch.nn.utils.fuse_conv_bn_eval(model.fc1) Згорткове злиття шарів за допомогою 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]
    }
  },
  "параметри": {
    "назва": {
      "display": правда,
      "text": "Порівняння точності"
    },
    "легенда": {
      "дисплей": правда
    }
  }
}

Висновок

Ефективне розгортання моделі штучного інтелекту на периферійних пристроях вимагає поєднання методів спільного проектування апаратного та програмного забезпечення. Відрізання моделі, дистиляція знань і квантування – це деякі методи, які можна використовувати для зменшення розміру та вимог до обчислень моделей AI. Використовуючи ці методи, розробники можуть створювати моделі штучного інтелекту, які оптимізовані для периферійних пристроїв, уможливлюючи додатки в реальному часі, такі як розумні будинки, автономні транспортні засоби та промислова автоматизація.

Майбутня робота

Майбутня робота в цій галузі включає:

  • Розробка нових методів спільного проектування апаратного та програмного забезпечення: дослідники та розробники можуть вивчати нові методи оптимізації моделей AI для крайніх пристроїв.
  • Покращення алгоритмів скорочення моделі та дистиляції знань: розробка ефективніших алгоритмів скорочення моделі та дистиляції знань може призвести до кращої продуктивності та точності.
  • Дослідження використання інших моделей штучного інтелекту: інші моделі штучного інтелекту, такі як дерева рішень і випадкові ліси, можна вивчити для розгортання периферійних пристроїв.

Продовжуючи розвивати сферу спільного проектування апаратного та програмного забезпечення, ми можемо створювати ефективніші та результативні моделі штучного інтелекту для периферійних пристроїв, забезпечуючи широкий спектр застосувань і варіантів використання.


¿Tienes preguntas?

Hablemos

Contáctame en LinkedIn