Acceleration libraries

Головною особливістю багатоядерних прискорювачів, таких як GPU, є їх архітектура, що добре паралелізується. Це дозволяє їм прискорювати обчислення, що базуються на операціях на основі матриць, які є головною обчислювальною одиницею багатьох реалізацій ML/DL. Виробники часто пропонують можливість покращити конфігурацію обладнання за допомогою встановлення багатоядерних прискорювачів, щоб покращити роботу машини/кластера. Також зазвичай використовуються прискорені бібліотеки, які забезпечують високо оптимізовані примітиви, алгоритми та функції доступу до паралельних потужностей графічних процесорів (табл. 2).

NVIDIA CUDA (Compute Unified Device Architecture) – паралельна обчислювальна платформа та модель програмування, розроблена NVIDIA для загальних обчислень на графічних процесорах. Бібліотеки CUDA дозволяють прискорити обчислення в різних областях, таких як лінійна алгебра, обробка зображень та відео, DL та графічна аналітика. Інструментарій NVIDIA CUDA забезпечує середовище розробки для створення високопродуктивних прикладних програм для GPU

Бібліотека NVIDIA CUDA Deep Neural Network (cuDNN) є прискореною графічним процесором бібліотекою примітивів DNN. CuDNN забезпечує високоточні налаштування для стандартних процедур, таких як згортання вперед і назад, об’єднання, нормалізація та активація. Це дозволяє користувачам DL зосередитись на навчанні NN та розробці програмних додатків, а не витрачати час на налаштування продуктивності GPU низького рівня. CuDNN використовується багатьма фреймворками DL, наприклад Caffe2, MatLab, CNTK, TensorFlow, Theano та PyTorch.

Бібліотека OpenCL (Open Computing Language), розроблена Khronos, забезпечує сумісність для неоднорідного обладнання будь-якого постачальника.

Intel MKL (Intel Math Kernel Library)  оптимізує код з мінімальними зусиллями для майбутніх поколінь процесорів Intel. Він сумісний з багатьма компіляторами, мовами, операційними системами, а також моделями зв’язування та багатопоточності. Це прискорює математичні процедури обробки, збільшує продуктивність застосувань та скорочує час розробки. Ця готова до використання математична бібліотека включає: лінійну алгебру, швидкі перетворення Фур’є (FFT), глибокі нейронні мережі (DNN), векторну статистику та пристосування даних, векторну математику та різні вирішувачі

Таблиця 2 Прискорені бібліотеки найбільших світових виробників

Іншими бібліотеками паралельного програмування, які підтримують прискорювання обчислень, є:

  • OpenMP: інтерфейс програмування додатків (API), який підтримує багатопрофільне багатопроцесорне програмування спільної пам’яті. Він складається з набору директив компілятора, підпрограм бібліотеки та змінних оточення, які впливають на поведінку часу виконання.
  • Open-MPI: відкритий код, вільна реалізація специфікацій MPI. Програмне забезпечення Open MPI досягає високої продуктивності, і воно досить сприйнятливе до участі спільноти. MPI визначається як інтерфейс передачі повідомлень(Message Passing Interface) – стандартизований API, який зазвичай використовується для паралельних та/або розподілених обчислень. Він написаний MPI Forum.

Додаток, побудований за допомогою гібридної моделі паралельного програмування, може працювати на комп’ютерному кластері з використанням OpenMP та MPI, таким чином, що OpenMP використовується для паралелізму всередині (багатоядерного) вузла, тоді як MPI використовується для паралелізму між вузлами. Більш докладно про прискорювачі та прискорені обчислення можна отримати в DEEP-HybridDataCloud Deliverable D4.1 для прискорювачів та HPC. В останні роки прискорювачі успішно використовуються в багатьох областях, таких як текст, зображення, обробка звуку та розпізнавання образів. Приклади використання DNN:

  • Обробка зображень та відео: супутникові зображення (наприклад, пожежі, посуха, хвороби сільськогосподарських культур, містобудування), космос (зображення телескопа), розпізнавання образів біології (наприклад, рослини, клітини, бактерії), розпізнавання медичних зображень (наприклад, магнітно-резонансна томографія, комп’ютерна томографія, рентгенівські зображення, сонографія), автоматичні анотації з зображеннями або звуками  [Hafiane 2017] ;
  • Мова і мовлення: обробка та розпізнавання тексту, розпізнавання мовлення, машинний переклад, обробка природної мови;
  • Безпека: аутентифікація біометричних даних (таких як люди, обличчя, хода), виявлення аномалій, виявлення вторгнень;
  • Бізнес-розвідка: страхування, фінансові ринки, прогнози акцій та обмінного курсу;
  • Робототехніка та відеоігри: автономна навігація (наприклад, автомобіль, безпілотник, літак, підводний човен), відеоігри (такі як Atari, Dota, Starcraft).