Обзор бесплатной версии Matlab
MatLab – представляет собой интерактивную среду по программированию, которая массово применяется как учеными, так и инженерными специалистами для выполнения численных расчетов, визуализации и анализирования самых разных данных. Одновременно с этим программа является высокоуровневым программным языком, заметно отличающимся от обычных C/C+, Java, Pascal и иных наличием возможности по сокращению времени нахождения ответа на типовые задачи.
Помимо этого, описываемый язык очень гибкий в плане создания новых алгоритмов, оказывает поддержку при управлении потоками, а также дает возможность применять сложные комплексы данных. Приложение представлено большим набором инструментов для взаимодействия с матрицами данных. Сегодня скачать MatLab для Windows 10 можно без особых сложностей.
Преимущества и недостатки Matlab
+ язык прост для изучения;
+ язык характеризуется наличием простого, интуитивно понятного синтаксиса;
+ наличие больших возможностей;
MATLAB в образовании
+ регулярные обновления;
+ программная среда дает возможность его преобразовывать в быстрый код на C++/C;
— наличие узкой направленности;
— высокая стоимость ПО.
Основные возможности
- наличие высокоуровневого языка по программированию, необходимого в научной, инженерной сферах;
- наличие интегрированной среди разрабатывания;
- визуализация данных;
- разрабатывание алгоритмов;
- наличие инструментария для физического, графического и событийного построения;
- построение и прототипирование HIL;
- наличие собственных функций стремительного преобразования Фурье и линейной алгебры.
Официальный русский дистрибутив Matlab |
Быстрая установка без лишних диалоговых окон |
Скачивание через бесплатный Torrent-файл (Ubar Torrent) |
Скачать Matlab.exe
Скачать Matlab.zip
*Внимание! При скачивании стандартного установщика вам потребуется предустановленный архиватор, его можно Найти тут
Источник: win10soft.ru
Моделирование систем в MATLAB
Программное обеспечение MathWorks MATLAB представляет собой высокоуровневый язык технических расчетов, интерактивную среду разработки алгоритмов и современный инструмент анализа данных. MathWorks MATLAB по сравнению с традиционными языками программирования (C/C++, Java, Pascal, FORTRAN) позволяет на порядок сократить время решения типовых задач, что значительно упрощает разработку новой техники и алгоритмов.
MathWorks MATLAB представляет собой основу всего семейства продуктов MathWorks и является главным инструментом для решения широкого спектра научных и прикладных задач, в таких областях как: моделирование объектов и разработка систем управления, проектирование коммуникационных систем, обработка сигналов и изображений, измерение сигналов и тестирование, финансовое моделирование, вычислительная биология и другие.
MATLAB 01 Начало работы
Сейчас MATLAB — это основной инструмент инженера-разработчика систем управления. В мире насчитывается более 1 млн. зарегистрированных пользователей этого программного пакета. MATLAB вошел в стандартную практику инженерных расчетов во многом благодаря огромной и уникальной библиотеке функций и инструментальных средств, предназначенных для различных областей науки и техники.
MATLAB — это интегрированное средство разработки, моделирования, аппаратной реализации и тестирования систем управления, которое ассистирует инженеру на всех этапах проектной деятельности (рисунок 2.1).
Рисунок 2.1. Задачи по проектированию систем управления, решаемые в MATLAB: Design — разработка моделей объекта управления и регуляторов, Implementation — реализация алгоритмов управления в железе, Test and verification — проверка корректности работы и качества управления
Разработка систем управления начинается с моделирования. Динамика объекта управления может быть описана различным образом с применением инструментов MathWorks: в виде дифференциальных уравнений, дискретных разностных уравнений, цифровых автоматов и алгоритмов, написанных на формальных языках. Любая модель может быть представлена визуально в виде схемы из составных блоков в среде Simulink, что позволяет использовать наиболее подходящий подход к моделированию каждой подсистемы объекта управления.
Если не известны физические принципы работы объекта управления, можно использовать средства для идентификации динамических систем в MATLAB, что позволяет строить модели по результатам измерений, полученных от реального объекта. Идентификация систем в MATLAB позволяет быстро и визуально получить модели объектов управления без детального знания их структуры и принципов работы.
Большинство объектов управления представляет собой физические системы, которые состоят из типовых элементов, связанных конструктивно и функционально. Среда Simulink в MATLAB поддерживает построение моделей систем на основе моделей стандартных механических, электрических, электромагнитных, гидравлических, пневматических и теплотехнических компонентов (например, идеальной пружины, пневмоцилиндра, электродвигателя и т.д.). Такой подход позволяет эффективно создавать модели сложных систем, которые структурно и функционально соответствуют реальным объектам управления. В случае использования нестандартных компонентов есть возможность дополнить библиотеку физических компонентов новыми элементами, которые могут быть заданы в виде системы дифференциальных уравнений и соединением других компонентов.
Модели физических объектов в библиотеке компонентов содержат такие физические параметры, например как масса, электрическое сопротивление, сечение трубопровода и т.д.. Эти параметры могут быть не известны для конкретных компонентов в объекте управления. В Simulink встроено средство Simulink Design Optimization, которое позволяет по экспериментальным данным, полученным в результате измерений реального объекта, подобрать физические параметры модели для согласования результатов моделирования и измерений.
Моделирование воздействия окружающей среды, например атмосферы, силы тяжести, ветра, и магнитного поля Земли, возможно с
Simulink и Aerospace Blockset. Можено создавать пользовательские экологические модели из блоков Simulink и на основе табличных данных.
Как только точная модель объекта управления создана, разработчик анализирует и разрабатывает регуляторы с обратной связью и стратегии управления с разомкнутой обратной связью, используя инструменты MathWorks MATLAB.
На каждом этапе проектирования важно знать насколько разрабатываемый объект соответствует требуемым спецификациям качества и корректности функционирования. Для этого в MATLAB Simulink встроены средства критического анализа систем управления и верификации, которые позволяют:
- • оценивать ключевые эксплуатационные параметры, такие как перерегулирование, время переходного процесса и устойчивость;
- • линеаризовать и определять частотные характеристики нелинейных моделей Simulink;
- • моделировать и анализировать эффекты параметрической неопределенности на производительности и устойчивости систем управления.
Встроенное средство Simulink Control Design избавляет от необходимости ручного подбора параметров и многократного повторения моделирования, обеспечивая систематический метод настройки одноконтурных и многоконтурных системы управления в среде Simulink. Ключевые функции:
- • автоматическая настройка ПИД-регуляторов,
- • интерактивные методы классической линейной теории управления: метод корневого годографа, диаграммы Боде, [1]
С помощью средства Simulink Optimization можно улучшить производительность системы управления и оптимизировать другие ее характеристики, осуществляя параметрическую настройку в соответствии с введенными критериями оптимальности. Например, можно оптимизировать коэффициенты усиления регулятора, чтобы удовлетворить ограничениями на время переходного процесса и величину перерегулирования. Или совместно оптимизировать физические и алгоритмические параметры объекта управления и регулятора, чтобы максимизировать качество работы системы в целом.
Средство Stateflow позволяет разрабатывать и моделировать дискретную логику работы систем управления: алгоритмы и циклограммы, а также контролирующую логику, обеспечивающую переключение режимов работы регулятора, обработку исключительных ситуаций, а также обнаружение неисправностей, их изоляцию и восстановление (fault detection, isolation, and recovery — FDIR).
После того, как система управления разработана и протестирована на моделях, имеется возможность модифицировать ее для реализации в оборудовании. Например, можно указать формат данных каждого сигнала в системе для программной реализации с использованием арифметики с фиксированной точкой [15].
Разработанную в MATLAB модель системы управления можно реализовать на встраиваемом контроллере (на основе микроконтроллера или ПЛК) посредством автоматической генерации программного кода. С этим подходом разработчик может получить очень эффективный код для своего контроллера и избежать ошибок, которые могут произойти при интерпретации функционала модели MATLAB во время ручного написания программы, реализующей систему управления в реальном аппаратном обеспечении. Имеется возможность транслировать функционал модели системы управления в следующее представление:
• ANSI/ISO С и C++ код для микропроцессоров и микроконтроллеров; [2]
логических контроллеров (ПЛК, PLC) и программируемых контроллеров автоматизации (РАС);
• Verilog и VHDL код для цифровых программируемых логических интегральных схем (ПЛИС, FPGA).
MATLAB предоставляет инструменты для всестороннего тестирования систем управления, используя моделирование, тестирование в реальном времени и методы формальной верификации.
Тестирование алгоритмов управления позволяет найти проектные ошибки прежде, чем создать аппаратные средства и создать производственное программное обеспечение. Такое тестирование на ранних стадии уменьшает потребность в дорогих и труднодоступных прототипах, а также экспериментах с реальным объектом управления. Чтобы выполнить тестирование при моделировании необходимо объединить модель объект управления и алгоритм управления в одну модель и проверить поведение системы с обратной связью. Для эффективной проверки можно разработать модель объекта управления большей точности, используя дополнительные экспериментальные данные или используя сторонние модели, предоставляемые в рамках программы MathWorks Connections Program.
Если моделирование в реальном времени или физический прототип системы доступны, можно выполнить тестирование алгоритма управления в реальном времени. Возможные варианты для этого:
- • реализация системы управления на встраиваемом контроллере (или его макете) и тестирование с прототипом объекта управления (часто это называется быстрое прототипирование систем управления); [3]
- • моделирование системы управления и части объекта управления в реальном масштабе времени, синхронно с работой физических прототипов отдельных частей объекта управления — все также в рамках HIL-тестирования.
MATLAB обеспечивает дополнительные инструменты для верификации и тестирования разработанных систем управления, которые включают контроль выполнения алгоритмов управления:
- • запуск тестовых ситуаций (test cases) при моделировании системы управления и анализ покрытия кода, включая покрытие по веткам/условиям (MC/DC);
- • использование методов формальной верификации для автоматического построения тестов, которые обеспечивают 100 % покрытие кода управляющей логики;
- • отладка кода в аппаратном обеспечении, реализующем функции регулятора, с выводом диагностических сообщений и трассировкой ошибок.
- [1] поддержка усовершенствованных стратегий управления, такихкак рабастное управление, управление по прогнозирующей модели и нечеткая логика.
- [2] IEC 61131 структурированный текст (ST) для программируемых
- [3] моделирование системы управления в реальном масштабе времени, синхронно с работой физического объекта управления, осуществляя взаимодействие модели с датчиками и актуатарами через специальное аппаратное обеспечение — такой подход называется hardware-in-the-loop (HIL) тестирование;
Источник: m.studref.com
Программа матлаб что это такое
Первым шагом на пути создания математических алгоритмов является изучение структуры программы и набора математических операций, доступных языку программирования. В частности, в данной главе будут рассмотрены математические операции и функции пакета MatLab, связанные с обработкой как скалярных, так и матричных переменных.
1.1. Структура программы пакета MatLab
Как правило, каждая программа в MatLab представляет собой функцию и начинается с ключевого слова function, за которым через пробел следует ее название. Например,
function Lab1
a = 5;
b = 2;
c = a*b;
Данная программа заключена в функции с именем Lab1 и вычисляет произведение двух переменных а и b. При сохранении программы в m-файл рекомендуется указывать имя файла, совпадающее с именем функции, т.е. в данном случае – Lab1.
Следует отметить, что в одном m-файле можно задавать множество дополнительных функций. Для этого достаточно написать в конце листинга основной программы еще одно ключевое слово function и задать ее имя, например,
function Lab1
a = 5;
b = 2;
c = a*b;
out_c(c); % вызов функции out_c()
function out_c(arg_c) % определение функции out_c()
disp(arg_c);
Обратите внимание, что функцию out_c() можно вызывать в основной программе до ее определения. Это особенность языка MatLab, позволяющая не беспокоиться программисту о последовательности задания функций. В приведенном примере функция out_c() имеет один входной параметр с именем arg_c, который выводится на экран (в командное окно MatLab) с помощью встроенной функции disp(). В итоге, при выполнении приведенной программы в командном окне MatLab будет отображено значение переменной c.
Дополнительные функции можно оформлять и в отдельных m-файлах. Например, если есть необходимость какую-либо функцию описать в одном m-файле, а вызывать ее в другом, то это можно реализовать следующим образом.
function Lab1
a = 5;
b = 2;
c = square(a,b); % вызов функции square()
out_c(c); % вызов функции out_c()
При выполнении функции Lab1 система MatLab вызовет функцию square из файла square.m. Это будет сделано автоматически, т.к. встроенные функции языка MatLab определены также и вызываются из файлов, имена которых, как правило, соответствуют именам вызываемых функций. Обратите также внимание на то, что функция square() не только принимает два аргумента a и b, но и возвращает их произведение с помощью переменной res. Представленный синтаксис следует использовать всякий раз, когда требуется возвратить результат вычислений основной программе. В четвертой главе данного пособия более подробно изложены конструкции вызова функций для реализации разнообразных алгоритмов.
Копирование информации со страницы разрешается только с указанием ссылки на данный сайт
Источник: scask.ru
Какие есть циклы в Матлаб, что такое Zeros в MatLab, как выйти из цикла
В официальной документации к Матлаб синтаксис цикла «for» описан таким образом:
Syntax
for index = values
program statemens
end
Если перевести на русский язык описание цикла, то получаем следующее:
Syntax
for =
end
Рассмотрим несколько простых примеров использования цикла «for» в Матлаб.
for d = 100: 1.0: 0.0
disp(d)
end
В этом примере мы запустили цикл, при котором программа будет перебирать числа от 100 до 0 с шагом 1 и выводить их на экран. Программа начнет отсчет со 100 и остановится на 0.
Еще один просто й пример использования цикла «for»:
Syntax
d = [3 6 5 3 6 9 5 3 1 0];
n = d(1);
for i=1:length(d)
if n
n = d(i);
end
end
disp(n)
В этом цикле мы запускаем счетчик «i» и меняем его значение от 1 до 10 с шагом 1. Результат выводим на экран.
Вообще, цикл «for» в Матлаб часто используется в тех случаях, когда нужно перебирать числовые значения в определенном диапазоне с определенным шагом.
Цикл «while. end» в Матлаб
В официальной документации к Матлаб можно найти такой шаблон цикла «while. end»:
Syntax
while expression
program statements
end
Если перевести на русский и понятный язык это описание цикла, то получим следующее:
Syntax
while
end
Рассмотрим простой пример использования цикла «while. end» в Матлаб:
Syntax
exp = 100;
while exp > 1
exp = exp-1
end
В этом примере мы имеем цикл «while. end», который будет выполнять действие «exp=exp-1» до тех пор, пока соблюдается условие «exp>1». Таким образом, мы получаем цикл, который будет работать до тех пор, пока соблюдаются условия цикла. Как только условия станут ложными, работоспособность цикла сразу прервется.
Что такое «zeros» в Матлаб?
- векторы — формируются односоставными массивами;
- матрицы — формируются двусоставными массивами;
- тензоры — формируются многосоставными массивами.
- «zeros» — генерирует хранилище, состоящее из нулей;
- «ones» — генерирует хранилище, состоящее из единиц;
- «eye» — генерирует матрицу, состоящую из единиц;
- «rand» — генерирует хранилище компонентов, распределяемых по равномерному принципу;
- «randn» — генерирует хранилище компонентов, распределяемых по нормальному принципу;
- «cross» — реализует произведение нескольких векторов;
- «kron» — реализует произведение тензоров;
- «linspace» — генерирует однолинейное хранилище из равноотстоящих компонентов;
- «logsoace» — генерирует компоненты логарифмической решетки;
- «meshgrid» — генерирует компоненты двусоставной и трехсоставной решетки;
- «:» — формирует векторы и подматрицы.
Заключение
Матлаб, хоть и специфический, но очень интересный язык программирования. Его нет смысла изучать, если вы хотите программировать приложения или веб-сайты. Но если вам нужно проанализировать какие-то технические данные и вывести их понятным графиком, то Матлаб — это то, что нужно.
Сегодня мы рассмотрели какие циклы бывают в Матлаб, а также что такое «zeros». В следующих статьях мы продолжим изучение этого языка.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Источник: codernet.ru
Короли инференса: PyTorch, Tensorflow или MATLAB?
Что вам важнее в DL-проекте, удобство или производительность? Посмотрим на проблему глазами инженера-разработчика сложных систем с элементами искусственного интеллекта. Как типичный инструментарий в этой сфере справляется с обучением и выполнением?
В этой статье мы запустим пару нейросетей в MATLAB и сравним быстродействие ResNet с opensource-фреймворками. Так что, если хотите обсудить, в чем (кроме удобства) коммерческий фреймворк может выиграть у опенсорса, добро пожаловать!
С чего начинается MATLAB-нейросеть?
Наши заказчики охотно используют нейросети в качестве компонентов своих систем машинного зрения, предиктивной аналитики, анализа цифровых сигналов и во многих других областях. Мы часто пользуемся MATLAB, потому что он позволяет нам разработать и задеплоить сложную систему силами совсем небольшой команды, интегрировать все что нужно с другими тулбоксами MATLAB, чтобы за один присест создать и GUI для лабораторного стенда, и сайт, и подключить внешний код на Python, если надо.
Так вот, хоть мы и используем MATLAB в каждом ML/DL проекте, русская версия сравнения сред для глубокого обучения из Википедии не содержит даже строчки про MATLAB.
Это повод поговорить об этом фреймворке и сравнить его с остальными.
Если вы никогда не видели, как запустить нейронку в MATLAB, вот небольшой пример. Предположим, что вам нужно классифицировать эту картинку:
Какой код позволит нам это сделать?
net = resnet50(); % Открываем скачанную нейросеть im = imread(‘cat.png’); % Открываем картинку sz = net.Layers(1).InputSize; % Подгоняем картинку под нужную размерность im = im(1:sz(1),1:sz(2),1:sz(3)); label = classify(net, im) % К какому классу относится наш объект?
И вот, что мы получим в ответ:
label = categorical Egyptian cat
Перед классификатором – кошка египетской породы, а перед нами – высокоуровневый фреймворк. Здесь можно делать fit-predict, а можно скачать и запустить готовую нейросеть. Поэкспериментируем с зашумленными изображениями.
% Получим пары “класс, уверенность” predict_scores = predict(net, im); [scores,indx] = sort(predict_scores, ‘descend’); classNames = net.Layers(end).ClassNames; classNamesTop = classNames(indx(1:5)); % Настраиваем область отображения h = figure; h.Position(3) = 2*h.Position(3); % Сократим ширину окна на 50% ax1 = subplot(1,2,1); ax2 = subplot(1,2,2); % Выводим график image(ax1,im); barh(ax2,scores(5:-1:1)) xlabel(ax2,’Уверенность’) yticklabels(ax2,classNamesTop(5:-1:1)) ax2.YAxisLocation = ‘right’;
Завернём код в небольшой цикл и получим:
Совсем небольшой скрипт, а сколько возможностей. Многие популярные предобученные нейронки уже заложены в MATLAB Deep Learning Toolbox, а те, которых нет, – можно импортировать из ONNX, или из TensorFlow 2, или запустить через интерфейс с Python. Вы легко добавите модуль определения карты глубины на базе MiDaS или повысите разрешение изображения при помощи ESRGAN, и ваш робот будет постить в инстаграм 3D-шедевры в высоком разрешении.
Это далеко не весь функционал: в MATLAB можно рисовать графы сетей и делать контроль версий моделей, а можно просто обучать модели внутри блоков Simulink – достаточно лишь указать им датасет.
Это, конечно, хорошо, но будет ли сеть выполняться достаточно быстро на вашей платформе?
Покажите мне, где нужно ускорить
Самая большая часть времени в проекте уходит на понимание задачи и данных: никто не сможет вернуть время, потраченное на решение ненужной бизнесу задачи, а из мусорных данных получаются в основном мусорные модели.
Порассуждаем на основе диаграммы, которая является вольным переопределением CRISP-DM:
Что трудно ускорить: левая часть схемы выражает околобизнесовые затраты. Ускорить ее может наличие у компании опыта, хорошие практики/шаблоны, продуктивное общение с заказчиком и коллегами, удобство фреймворка, контроль версий, всякие генераторы кода и документации, и так далее. Объективно сравнить фреймворки по этой части довольно трудно.
Что значительно легче ускорить: вся правая часть схемы недавно была прерогативой дата сайентистов, но за последние 10 лет хорошо автоматизировалась (как за счет демократизации отрасли, так и за счет прогресса методов и штук вроде AutoML). В этой статье ограничимся тем, что сравним скорость выполнения и немного скорость обучения нейросетей.
Чего мы ожидаем от высокоуровневого фреймворка в плане скорости разработки?
Скоростного выполнения модели
Фреймворк должен оптимизировать код модели, а также позволять легко ее трансформировать и сравнивать производительность разных версий
Автоподбора модели и легкого перебора гиперпараметров
Графический редактор графов, отладчик интерфейсов (между слоями нейросети, например), скрипты, AutoML, учебные материалы и шаблоны, дружелюбное сообщество
Простого и удобного инструментария для работы с данными
Эксплоративный анализ, визуализация, удобный GUI, рефакторинг, версионирование, создание отчетов
Развёртки и поддержки проекта
Сборка проекта, интеграция всех источников данных и внешних компонентов, распаковка проекта на всех необходимых целевых платформах, симуляция и отладка в любых сценариях
Сравниваем скорость на ResNet-50
Что ж, значит в MATLAB тоже есть нейронки, отлично – не придется вручную писать обратное распространение ошибки. Что дальше? Недавно сотрудник MathWorks David Willingham представил доклад, где он сравнивает быстродействие трех фреймворков: MATLAB, PyTorch и Tensorflow.
David Willingham
Первое представление о различиях можно подсмотреть в уже упомянутой таблице в Википедии. Здесь фреймворки отличаются только лицензией и поддержкой библиотек для параллельных вычислений (OpenCL и OpenMP), что для нас второстепенно.
Сейчас мы изучим результаты сравнения на инференсе, но для начала сравним скорость обучения ResNet-50. Приходится же иногда переобучаться под новый датасет или обучать кастомную архитектуру.
Итак, для сравнения взята стандартная сетка для классификации изображений – ResNet, вариант с 50 слоями. По некоторым бенчмаркам, обучение на ImageNet 1000 на GPU NVIDIA M40 в течение 90 эпох должно занимать 14 дней, по другим – выходит что A100 отработает 50 эпох за десяток часов (AIME). На обучении наши инструменты показывают примерно одинаковые результаты. Может быть, и правда все упирается в железо.
Зато, когда сеть уже обучена, ее производительность будет зависеть от массы факторов, которые интересно изучить. Ее же нужно запускать для каждого пользователя и для каждого примера (фотографии, нового измерения с датчика, речевого сигнала…), на любой платформе, от сервера до бортовых вычислителей автономного робота. Пересылка через всякие интерфейсы и обращение к базам данных может отнять львиную долю времени.
Сравним выполнение моделей. Сначала – быстродействие на CPU.
Быстродействие на CPU
Давайте сравним запуск на CPU нейросети ResNet в таком сценарии: вы работаете на встраиваемой платформе, где нет ускорителей, или в системе, где нет CUDA. Например, сюда входит очень многое из робототехники, от институтских омни-тележек до космических спутников.
Оказывается, код нашей сетки выполняется в MATLAB на CPU чуть быстрее, чем в других фреймворках.
Оказывается, код нашей сетки выполняется в MATLAB на CPU чуть быстрее, чем в других фреймворках. Бенчмарк для CPU построен на Intel Xeon 3.6 GHz – такие солидные частоты редко встречаются на борту. На более приземленном CPU, возможно, код будет вести себя слегка иначе.
А что, если скомпилировать все при помощи MATLAB Coder? Сеть в MATLAB выполняется в 2 раза быстрее, чем на Tensorflow и в 3 раза быстрее, чем на PyTorch. Да, это не самая тяжелая нейросеть, и хорошо изученная к тому же, есть много приемов оптимизации, которые MathWorks могли заложить в предобученную сеть, включенную в MATLAB.
Если у вас робототехнический проект с CPU на борту, то MATLAB – в принципе единственный коробочный продукт, который позволяет обучать модели и запускать их на любой встраиваемой платформе.
Сохранится ли эффект на GPU? Давайте узнаем.
Быстродействие на GPU
Использование GPU позволяет добиться феноменальных скоростей обучения или выполнения нейросетей. при запуске на сравнительно больших объемах данных.
При прогоне через нейросеть на GPU одного примера за один проход (батч размера 1), если запускать сеть через скрипт, MATLAB есть над чем поработать, судя по графикам, 1 батч можно просто запускать на CPU, разницы не будет. Я обещал обсудить ситуации, когда MATLAB проигрывает – это как раз тот случай.
Пересылка из общей памяти в память GPU занимает много времени, и одновременная обработка данных (в виде батча) выгоднее, если в батче больше данных. Но, поскольку код модели и небольшой набор данных все-таки должны поместиться в памяти видеокарты, максимальный размер батча тоже ограничен.
Если в батче 32 примера, то все гораздо лучше. Теперь мы хорошо загружаем видеокарту и все фреймворки демонстрируют примерно одинаковый прирост быстродействия относительно запуска на CPU. Но это не все, можно ускориться. В MATLAB для этого есть два способа скомпилировать нейронку для GPU.
MEX-функции – это оболочки для внешних программ. Они ведут себя в точности так же, как функции MATLAB/Simulink, но могут попутно с выполнением кода MATLAB вызывать внешнюю программу, C/C++ или иной код. Инструментарий MEX генерирует C++ код для GPU, но не требует лицензии на GPU Coder для задач предсказания (predict).
Упакованный в MEX код нейросети ResNet выполняется на GPU почти в 2 раза быстрее на одном изображении (на одном батче), чем в PyTorch или TensorFlow.
Второй способ для получения оптимизированного кода – GPU Coder. Это уже специальный генератор кода для GPU. Чтобы его применить, нужно всего лишь переключить одну галочку в настройках генератора кода (она называется Generate GPU code), после чего мы получаем встраиваемый оптимизированный CUDA-код, не требующий какого-то специального окружения для запуска на целевой платформе.
Автоматически оптимизированная для TensorRT нейросеть выполняется очень быстро – почти в 3 раза быстрее, чем та же сеть на GPU в Tensorflow или PyTorch. И это на одном батче.
Заключение
В своём докладе MathWorks отмечают, что за полгода выполнение ResNet было ускорено почти в 2 раза. Видимо, как в ядре MATLAB, так и в архитектуре нейросети, ещё есть что оптимизировать. Это вселяет оптимизм – будем ожидать, что разработчики и в следующих версиях сохранят такой темп улучшений.
В общем и целом, MATLAB отвечает всем нашим ожиданиям от высокоуровневого фреймворка в том что касается разработки систем с элементами искусственного интеллекта (список критериев – выше). Нам он облегчает и работу с данными, и подбор алгоритмов классического машинного обучения, и подключение глубоких нейросетей, и разработку собственных топологий, если нужно. Так что мы используем его в проектах с ИИ для самых разных заказчиков.
Пожалуйста, расскажите нам в комментариях о своем опыте работы с нейросетями в MATLAB, о бенчмарках или предпочтениях по фреймворкам. Желаем всем очень производительных AI-проектов, выполненных в комфортной среде!
- Блог компании ЦИТМ Экспонента
- Машинное обучение
- Matlab
- Искусственный интеллект
- Инженерные системы
Источник: habr.com