Товары в корзине: 0 шт Оформить заказ
Стр. 1 

42 страницы

Купить ГОСТ Р 57700.36-2021 — бумажный документ с голограммой и синими печатями. подробнее

Цена на этот документ пока неизвестна. Нажмите кнопку "Купить" и сделайте заказ, и мы пришлем вам цену.

Распространяем нормативную документацию с 1999 года. Пробиваем чеки, платим налоги, принимаем к оплате все законные формы платежей без дополнительных процентов. Наши клиенты защищены Законом. ООО "ЦНТИ Нормоконтроль"

Наши цены ниже, чем в других местах, потому что мы работаем напрямую с поставщиками документов.

Способы доставки

  • Срочная курьерская доставка (1-3 дня)
  • Курьерская доставка (7 дней)
  • Самовывоз из московского офиса
  • Почта РФ

Устанавливает методику определения реальной производительности высокопроизводительных вычислительных систем (ВВС) в задачах, использующих алгоритмы на основе сверточных нейронных сетей (СНС), методику верификации реализаций СНС, а также рекомендательные требования к вычислительным системам и программному обеспечению (ПО). Методика оценки производительности и требования к вычислительным системам и ПО, установленные настоящим стандартом, рекомендуются для использования при оценке производительности вычислительных систем, применяемых для решения задач, использующих алгоритмы на основе СНС. Методика верификации реализаций СНС рекомендуется для использования при реализации алгоритмов на основе СНС

 Скачать PDF

 
Дата введения01.01.2022
Актуализация01.01.2022

Этот ГОСТ находится в:

High-performance computing systems. Performance evaluation of high-performance computing systems on algorithms using convolutional neural network

Стр. 1
стр. 1
Стр. 2
стр. 2
Стр. 3
стр. 3
Стр. 4
стр. 4
Стр. 5
стр. 5
Стр. 6
стр. 6
Стр. 7
стр. 7
Стр. 8
стр. 8
Стр. 9
стр. 9
Стр. 10
стр. 10
Стр. 11
стр. 11
Стр. 12
стр. 12
Стр. 13
стр. 13
Стр. 14
стр. 14
Стр. 15
стр. 15
Стр. 16
стр. 16
Стр. 17
стр. 17
Стр. 18
стр. 18
Стр. 19
стр. 19
Стр. 20
стр. 20
Стр. 21
стр. 21
Стр. 22
стр. 22
Стр. 23
стр. 23
Стр. 24
стр. 24
Стр. 25
стр. 25
Стр. 26
стр. 26
Стр. 27
стр. 27
Стр. 28
стр. 28
Стр. 29
стр. 29
Стр. 30
стр. 30

ГОСТР

57700.36—

2021

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ТЕХНИЧЕСКОМУ РЕГУЛИРОВАНИЮ И МЕТРОЛОГИИ

НАЦИОНАЛЬНЫЙ

СТАНДАРТ

РОССИЙСКОЙ

ФЕДЕРАЦИИ

ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ

Оценка производительности высокопроизводительных вычислительных систем на алгоритмах, использующих сверточные нейронные сети

Издание официальное

Москва

Российский институт стандартизации 2021

Предисловие

1    РАЗРАБОТАН Федеральным государственным унитарным предприятием «Государственный научно-исследовательский институт авиационных систем» (ФГУП «ГосНИИАС») и Федеральным государственным унитарным предприятием «Российский федеральный ядерный центр — Всероссийский научно-исследовательский институт экспериментальной физики» (ФГУП «РФЯЦ-ВНИИЭФ»)

2    ВНЕСЕН Техническим комитетом по стандартизации ТК 700 «Математическое моделирование и высокопроизводительные вычислительные технологии»

3    УТВЕРЖДЕН И ВВЕДЕН В ДЕЙСТВИЕ Приказом Федерального агентства по техническому регулированию и метрологии от 16 сентября 2021 No 980-ст

4    ВВЕДЕН ВПЕРВЫЕ

Правила применений настоящего стандарта установлены в статье 26 Федерального закона от 29 июня 2015 г. № 162-ФЗ «О стандартизации в Российской Федерации». Информация об изменениях к настоящему стандарту публикуется в ежегодном (по состоянию на 1 января текущего года) информационном указателе «Национальные стандарты», а официальный текст изменений и поправок — в ежемесячном информационном указателе «Национальные стандарты». В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ближайшем выпуске ежемесячного информационного указателя «Национальные стандарты». Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)

©Оформление. ФГБУ «РСТ». 2021

Настоящий стандарт не может быть полностью или частично воспроизведен, тиражирован и распространен в качестве официального издания без разрешения Федерального агентства по техническому регулированию и метрологии И

6.5 Слой расщепления

6.5.1    Общие сведения

Слой расщепления (англ, split) используется в СНС для усложнения их структуры.

6.5.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (В, X. У, L) соответственно, где В — размер пакета. X — ширина. У — высота. L — глубина. Слой производит две выходные карты признаков с размерами (8. X, У. L1) и (Б. X, У, Z.-L1) таким образом, что применение слоя склейки к выходным картам признаков даст в результате карту признаков, в точности соответствующую входной карте признаков для слоя расщепления.

Примечания

1    Иногда встречаются обобщенные описания слоя расщепления, допускающие большее число измерений у карт признаков, а также допускающие, что в качестве размерности, по которой выполняется расщепление, выступает размерность, отличная от глубины.

2    В СНС. как правило, слой расщепления либо не встречаются, либо встречаются в количестве от нескольких десятков до нескольких сотен.

6.6 Поканальный сверточный слой

6.6.1    Общие сведения

Поканальный сверточный слой (англ, depthwise convolution layer) является вычислительной процедурой. применяемой в СНС в качестве упрощенного варианта сверточного слоя.

6.6.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (8. X. У. L), где Б — размер пакета. X — ширина. У — высота. L — глубина. Также слой располагает L фильтрами, каждый фильтр представляет собой массив с размерами (Rx. Ry). где Rx — ширина ядер фильтров. Ry — высота ядер фильтров. Все фильтры вместе образуют массив с размерами (Rx, Ry. L). Кроме фильтров слой располагает массивом из L смещений, каждое смещение ассоциировано с одним фильтром. Каждый фильтр ассоциирован с конкретным значением индекса глубины входной карты признаков. Вычисления состоят в выборке из входной карты признаков подмассивов с размерами (1. Rx, Ry, 1). взятию фильтра, соответствующего значению индекса глубины выбранного подмассива, поэлементном умножении выбранных значений входной карты признаков со значениями выбранного фильтра, сложением полученных результатов и прибавлением к нему соответствующего значения смещения. В результате получается одно значение выходной карты признаков. Выходная карта признаков имеет размеры (8, ХоаГ Your L), где Xoaf — ширина выходной карты признаков. Youl — высота выходной карты признаков.

Количество вычислений в слое регулируется также шагом свертки S: при выборке из входной карты признаков подмассивов начальные элементы соседних подмассивов отстоят друг от друга по ширине и (или) высоте на величину S.

Для контроля размера выходной карты признаков применяется расширение. При заданных размерах расширения по ширине Рх и по высоте Р, входной массив умозрительно расширяется по ширине и высоте в каждую сторону на величины Рх иР соответственно, при этом считается, что добавляемые значения равны нулю.

У* 2 Ру ~Ry


X f 2 Р_ - Я


(3)


’out


Ширину и высоту выходной карты признаков вычисляют по формулам:

Примечания

1    Иногда поканальный сверточный слой описывается как модификация сверточного слоя или как сверточный слой с определенными ограничениями на параметры.

2    В СНС. как правило, поканальные евврточные слои либо не встречаются, либо встречаются 8 количестве от нескольких десятков до нескольких сотен.

6.7 Поэлементный слой

6.7.1 Общие сводения

Поэлементный слой (англ, elementwise) используется в СНС для придания им определенных свойств.

6.7.2 Краткое описание слоя

Слой принимает на вход две карты признаков с одинаковыми размерами (В. X, У. L), где В — размер пакета. X — ширина. У — высота, L — глубина. Выходная карта признаков слоя имеет те же размеры и формируется путем поэлементного сложения двух входных карт признаков.

Примечания

1    Чаще всего для обозначения поэлементного слоя используется сокращение «Bitwise». Поэлементный слой является операцией сложения, примененной к массивам в СНС. поэтому иногда понятие поэлементного слоя опускается.

2    Встречаются варианты поэлементного слоя, в которых карты признаков складываются с весовыми коэффициентами. либо вместо операции сложения используется операция умножения.

3    В СНС. как правило, поэлементные спои либо не встречаются, либо встречаются в количестве нескольких десятков.

6.8    Полносвязный слой

6.8.1    Общие сведения

Полносвязный слой {англ, fully connected layer) является вычислительной процедурой в СНС. используемой в конце вычислений для формирования признаков, несущих конкретный понятный пользователю смысл.

6.8.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (В. X, У. L), где В — размер пакета. X — ширина. У — высота. L — глубина. Также слой располагает массивом весов с размерами (F. L, X. У), где F — число выходов. Кроме массива весов слой располагает массивом из F смещений, каждое смещение ассоциировано с одной строкой матрицы весов. Вычисления состоят в умножении матрицы, составленной из значений весов, на вектор, составленный из значений входной карты признаков, и сложении результата с массивом смещений, в результате чего получается выходная карта признаков с размерами (В. 1.1. F).

Примечания

1    Для обозначения полносвязного слоя иногда используются термины «dense», «inner product», реже «linear».

2    Как правило. СНС содержат не более трех полносвязных слоев, расположенных последовательно друг за другом.

6.9    Слой перемешивания

6.9.1    Общие сведения

Слой перемешивания (англ, shuffle layer) используется в СНС для придания им определенных свойств.

6.9.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (В. X, У, L). где В — размер пакета. X — ширина. У — высота. L — глубина. Слою также указан некоторый целочисленный параметр G. задающий число групп каналов. Выходная карта признаков имеет тот же размер, что и входная, но отличается тем. что каждое значение, имевшее во входной карте признаков индекс / по глубине, в выходной карте признаков сохраняет индексы по ширине и высоте, но приобретает новый индекс f по глубине, вычисляемый по формуле

7-(//(L/G)*(/%(L/G))-G).    (4)

Примечания

1    Встречаются реализации слоя перемешивания, в которых формула вычисления индекса глубины в выходном массиве отличается от приведенной.

2    Как правило, в СНС слои перемешивания либо не встречаются, либо встречаются в количестве нескольких десятков.

7 Типовые сверточные нейронные сети

7.1 В настоящем стандарте описаны шесть типовых СНС: «М», «Г». «В». «С», «Р» и «Ш». Перечисленные СНС являются упрощенными аналогами широко распространенных СНС, их архитектуры вместе содержат все типовые слои СНС. Пример широко распространенной СНС приведен на рисунке 2.

7.2    Описания СНС приведены в таблицах Б.1—Б.6 приложения Б. В таблицах приведены все параметры СНС, кроме размера пакета. Выбранное для СНС значение размера пакета является значением размера пакета для каждого слоя СНС.

7.3    СНС в таблицах описаны согласно следующим правилам:

-    каждый слой СНС описан одной строкой таблицы и имеет собственный номер, указанный в графе «Номер п/п»:

-    вычисление прямого хода для СНС представляет собой последовательные вычисления прямого хода для всех слоев СНС в порядке возрастания номеров; вычисление обратного хода для СНС представляют собой последовательные вычисления обратного хода для всех слоев СНС в порядке убывания номеров; вычисление градиента для СНС представляет собой совокупность вычислений градиента для каждого слоя, располагающего весами; изменение значений весов для СНС представляет собой совокупность изменений значений весов для каждого слоя, располагающего весами;

-    в каждой итерации обучения все промежуточные значения, полученные на одном из четырех шагов, остаются постоянными до завершения итерации обучения; значения весов (в том числе фильтров и смещений), полученные на текущей итерации обучения, передаются на следующую итерацию обучения;

-    для каждого СНС входом является входная карта признаков первого слоя, выходом СНС является выходная карта признаков последнего слоя;

-    для каждого слоя указан его тип в графе «Тип»;

-    для каждого слоя в графах «Вх1» и «Вх2» указаны номера слоев, выходные карты признаков которых являются входными картами признаков данного слоя; если у слоя только одна входная карта признаков, то в графе «Вх2» стоит символ «-»; если в графе «Вх1» или «Вх2» указан номер слоя, являющегося слоем расщепления, то к номеру дописывается набор символов «.1», если в качестве соответствующей входной карты признаков используется первая выходная карта признаков слоя расщепления. либо набор символов «.2», если в качестве соответствующей входной карты признаков используется вторая выходная карта признаков слоя расщепления;

-    для каждого слоя в графах «X» и « У» указаны ширина и высота входной карты признаков;

-    для каждого слоя в графах «L1» и «L2» указаны глубины входных карт признаков слоя. Если у слоя только одна входная карта признаков, то в графе «L2» стоит символ «-»;

-    для каждого слоя в графах «Р1» и «F2» указаны глубины выходных карт признаков слоя; если у слоя только одна входная карта признаков, то в графе «F2» стоит символ «-»; если у слоя глубина выходных карт признаков совпадает с глубиной входных карт признаков, то значение в графе «F1» дублирует значение в графе «L1»;

-    для каждого сверточного или покаиального сверточного слоя в графе «Я?» задана величина, которая равна ширине Rx и высоте Ry фильтров; для каждого слоя пулинга в графе «/?» задана величина, которая равна ширине и высотке ядра пулинга. для остальных слоев в графе «Р» стоит символ «-»;

-    для каждого сверточного, покаиального сверточного или слоя пулинга в графе «S» задана величина шага S; для остальных слоев в графе «S» стоит символ «=»;

-    для каждого сверточного, покаиального сверточного или слоя пулинга в графе «Р» задана величина, которая равна расширению РА по ширине и расширению Р/ по высоте; для остальных слоев в графе «Р» стоит символ «-»,

-    для каждого слоя перемешивания в графе «G» задано значение параметра G: для остальных слоев в графе «G» стоит символ «-».

Рисунок 2 — СНС, упрощенной версией которой является СНС «Г»

8 Методика верификации реализации сверточных нейронных сетей

8.1    Методика верификации применяется для верификации реализации СНС и позволяет определить. может ли реализация СНС считаться корректной или эталонной. Методика не исключает наличия других способов, позволяющих заключить, что реализация СНС является эталонной.

8.2    Методика состоит в выполнении следующей последовательности действий:

-    определяется верифицируемая реализация СНС. в частности, осуществляется ли реализация обучения или применения СНС;

-    задается вход СНС и все воса СНС. которые будут использоваться и верифицируемой, и эталонной реализациями СНС; вход СНС должен состоять из случайно выбранных действительных чисел в диапазоне от -127 до 128. веса СНС должны состоять из случайно выбранных действительных чисел в диапазоне от -1 до 1; если реализация осуществляет обучение нейронной сети, то задается также массив невязок, ассоциированный с выходом СНС; массив невязок должен состоять из случайно выбранных действительных чисел в диапазоне от -127 до 128;

-    создается эталонная реализация СНС. при этом для СНС. описанных в настоящем стандарте, эталонная реализация СНС создается согласно описанию, приведенному в настоящем стандарте;

-    с помощью эталонной реализации СНС и с помощью заданных входа СНС и весов СНС вычисляется выход СНС, значения выхода СНС нумеруются и обозначаются ОЩ, где / — номер значения; если реализация осуществляет обучение нейронной сети, то с помощью эталонной реализации СНС и с помощью заданных входа СНС. весов СНС и массива невязок, ассоциированного с выходом СНС, вычисляются значения весов СНС, получаемые после одной итерации обучения, значения весов нумеруются и обозначаются WE[f\. где }— номер значения;

-    с помощью верифицируемой реализации СНС. заданных входа СНС и весов СНС вычисляется выход СНС. значения выхода СНС нумеруются тем же способом, что и значения выхода СНС. полученные с помощью эталонной реализации СНС. и обозначаются OVJi], где / — номер значения; если реализация осуществляет обучение нейронной сети, то с помощью верифицируемой реализации СНС и с помощью заданных входа СНС, весов СНС и массива невязок, ассоциированиого с выходом СНС, вычисляются значения весов СНС. получаемые после одной итерации обучения, значения весов нумеруются тем же способом, что и значения весов СНС. полученные с помощью эталонной реализации СНС, и обозначаются \ЛАЩ, где./ — номер значения:

-    вычисляется среднеарифметическое ОА абсолютных величин ОЕДО и, если реализация осуществляет обучение нейронной сети, среднеарифметическое WA абсолютных величии WE[j]:

-    для всех значений /' выполняется проверка: если абсолютное значение ОЩ*] или абсолютное значение ОЩ меньше, чем ОА 10 "10. то оба значения OE[j] и ОЦ/] полагаются равными 1. Если реализация осуществляет обучение нейронной сети, то для всех значений j выполняется проверка: если абсолютное значение WE\j\ или абсолютное значение VWJ/] меньше, чем WA • 10~10, то оба значения WE\j] и WV\j\ полагаются равными 1;


(5)


- если реализация осуществляет обучение нейронной сети, то вычисляется сумма SUM по всем значениям / и j:


(6)


-    если реализация осуществляет применение нейронной сети, то вычисляется сумма SUM по всем значениям /.

-    вычисляется значение СКО арифметического корня значения SUM:

-    если условия задачи, в интересах которой создана верифицируемая реализация СНС, допускают погрешности вычислений, и для этих погрешностей вычислений можно аналитически определить максимально допустимое значение СКО, то задается значение СКОП, равное максимально допустимому значению СКО; в противном случае задается значение СКОП, равное нулю;

-    если значение СКО меньше 10"6, то считается, что верифицируемая реализация СНС успешно верифицирована и может считаться эталонной, процедура верификации завершается;

-    если значение СКО меньше 10~4, то считается, что верифицируемая реализация СНС успешно верифицирована и может считаться корректной, процедура верификации завершается;

-    если СКО больше 10'\ то верификация не может считаться успешной, а реализация СНС не может считаться корректной, процедура верификации завершается:

-    если реализация СНС осуществляет обучение СНС и значение СКО больше 10’2, то верификация не может считаться успешной, а реализация СНС не может считаться корректной, процедура верификации завершается:

-    если значение СКО оказалось меньше СКОП, то считается, что верифицируемая реализация СНС может считаться корректной, но эталонной считаться не может, процедура верификации завершается;

-    если значение СКО оказалось не меньше СКОП, то считается, что верифицируемая реализация СНС не может считаться корректной, процедура верификации завершается.

9 Методика оценки производительности

9.1    Ключевым компонентом методики оценки производительности ВВС на алгоритмах, использующих СНС. являются тесты производительности, основанные на типовых СНС. приведенных в приложении Б.

9.2    Для обозначения теста производительности применяется специальная нотация. Схема формирования обозначения теста производительности приведена на рисунке 3.

9.3    Тест производительности для обучения применяется согласно следующим правилам:

-    для теста производительности выбирается одна из шести типовых СНС:

-    определяется ВВС. на которой будет запущен тест производительности; в ВВС выделяется максимально возможное число одинаковых с точки зрения программирования и доступа к общим ресурсам (дисковым накопителям, коммуникационным связям) вычислительных ячеек, содержащих основные вычислительные ресурсы ВВС:

-    определяется, какой тип данных будет использован в реализации выбранной для теста производительности СНС на выбранной ВВС; определяется теоретическая пиковая производительность Perf вычислительной ячейки в УсН/с над используемым типом данных;

-    создается высокопроизводительная реализация выбранной для теста производительности СНС, позволяющая выполнять последовательные итерации обучения в одной вычислительной ячейке с использованием выбранного типа данных: реализация СНС должна быть верифицирована с помощью методики, описанной в разделе 8;

-    для каждой вычислительной ячейки создается набор из 1 ООО ООО изображений, каждое из которых по размеру совпадает с входной картой признаков первого слоя выбранной СНС, при этом наборы, используемые разными вычислительными ячейками, не должны совпадать;

-    делается засечка времени Т1 в секундах, одновременно с этим в каждой вычислительной ячейке запускается первая итерация цикла обучения из N итераций (N должно быть не меньше 1000):

-    в начале итерации из набора изображений, назначенного данной вычислительной ячейке, случайным образом выбирается В изображений, из которых составляется массив из В входных карт признаков.

Примечание — Изображения могут храниться в произвольном формате. В равной степени позволяется как заранее составить входные массивы нейронной сети и хранить наборы этих массивов, так и хранить изображения в некотором формате, формируя на основе изображений входной массив нейронной сети из В входных карт признаков непосредственно перед запуском вычислений с этим входным массивом нейронной сети:

-    выполняется прямой ход СНС:

-    массив невязок, ассоциированный с выходной картой признаков последнего слоя СНС. заполняется любыми действительными значениями с плавающей точкой одинарной точности (float);

-    выполняется обратный ход:

-    для всех слоев СНС выполняется вычисление градиента и изменение значений весов;

-    действия, начинающиеся со случайного выбора В изображений и заканчивающиеся вычислением градиентов и изменением значений весов, повторяются N раз;

-    когда все вычислительные ячейки закончили вычисления, делается засечка времени 72 в секундах и вычисляется величина Г = (72 - Л)/ 3.

9.4    Тест производительности для применения СНС применяется согласно следующим правилам:

-    определяется ВВС. на которой будет запущен тест производительности; в ВВС выделяется максимально возможное число одинаковых с точки зрения программирования и доступа к общим ресурсам (дисковым накопителям, коммуникационным связям) вычислительных ячеек, содержащих основные вычислительные ресурсы ВВС:

-    определяется, какой тип данных будет использован в реализации выбранной для теста производительности СНС на выбранной ВВС; определяется теоретическая пиковая производительность Porf вычислительной ячейки в УсН/с над используемым типом данных;

-    создается реализация выбранной для теста производительности СНС, позволяющая выполнять применение нейронной сети в одной вычислительной ячейке с использованием выбранного типа данных: реализация СНС должна быть верифицирована с помощью методики, описанной в разделе 8;

-делается засечка времени 71 в секундах, одновременно с этим в каждой вычислительной ячейке запускается первая итерация цикла из N применений нейронной сети (N должно быть не меньше 1000);

-    произвольным образом выбирается входная карта признаков первого слоя.

-    выполняется прямой ход СНС;

-    произвольный выбор входной карты признаков первого слоя и прямой ход СНС повторяются N раз;

-    когда все вычислительные ячейки закончили вычисления, делается засечка времени 72 в секундах и вычисляется величина 7 = 72 - Л.

С В N 1011 7 Perf


ОРП-


(7)


9.5 Из таблицы 1 выбирается соответствующее выбранной для теста производительности СНС значение С. Значение относительной реальной производительности в процентах вычисляют по формуле

Таблица 1 — Значения вычислительной сложности для типовых СНС. миллиарды УнС

СНС

М

Г

В

С

Р

Ш

Значение С

0.57

1.6

15.5

0.88

3.7

0.15

Г. О. 64«37


J

9.6 Вычисленное значение ОРП является результатом теста производительности и может использоваться вместе с обозначением теста производительности.

Буква, соответствующая типовой СНС

Буква «О» для обучения или буква «П* для применения

Размер пакета в от 1 до 1024

Результат бенчмарка

Рисунок 3 — Нотация обозначения теста производительности

9.7    Вместе с результатом теста производительности рекомендуется приводить комментарий, поясняющий используемый тип данных, способ разделения ВВС на вычислительные ячейки, какие компоненты ВВС не были использованы, значение производительности вычислительной ячейки в УсН/с в выбранном типе данных, особенности использованного программного обеспечения и. если необходимо, пояснение относительно того, как это значение было определено.

9.8    Методика оценки производительности ВВС на алгоритмах, использующих СНС, состоит в получении двух оценок при выполнении следующей последовательности действий:

-    определяется ВВС. для которой выполняется оценка производительности:

-    определяется, выполняется ли оценка производительности для обучения нейронных сетей или для применения нейронных сетей:

-    определяется, какой тип данных используется в реализациях тестов производительности для данной ВВС,

-    задается целое число от 1 до 1024, используемое в качестве размера пакета В для всех тестов производительности;

-    на выбранной ВВС запускаются тесты производительности для всех шести типовых СНС, при этом в зависимости от того, выполняется оценка для обучения нейронных сетей или применения нейронных сетей, должны быть выбраны соответствующие тесты производительности; для обозначения результатов оценки будет использована соответствующая буква: для всех тестов производительности используется тип данных, определенный для данной ВВС. и в качестве размера пакета устанавливается выбранное значение 8;

-    среди полученных шести результатов тестов производительности выбирается одно самое малое значение, для остальных вычисляется их среднеарифметическое значение, оно измеряется в процентах и принимается за первый результат оценки производительности:

-    второй результат оценки производительности формируется путем умножения первого результата на теоретическую пиковую производительность ВВС в УсН/с над используемым типом данных и деления полученного произведения на 100: второй результат измеряется в УсН/с и характеризует реальную производительность ВВС:

-    для обозначения оценки производительности применяется специальная нотация. Схема формирования обозначения оценки производительности приведена на рисунке 4;

-    вместе с результатом оценки производительности рекомендуется приводить комментарий, поясняющий используемый тип данных, способ разделения ВВС на вычислительные ячейки (если этот способ различается для разных СНС. то приводится для каждой СНС), какие компоненты ВВС не были использованы, название теста производительности, результат которого не был учтен при вычислении среднеарифметического значения на шаге 6, результат этого теста производительности, особенности использованного программного обеспечения и значение производительности вычислительной ячейки в УсН/с в выбранном типе данных.

Примечания

1    Первый результат оценки производительности характеризует качество работы ВВС, второй результат оценки характеризует реальную производительность ВВС и предназначен для сравнения ВВС друг с другом. Чем больше значения второго результата оценки, тем больший обьем вычислений может быть выполнен в ВВС за заданное время. Если высокопроизводительные реализации тестов производительности выполнены некачественно, т.е. не обеспечивают эффективного использования вычислительных ресурсов, то значения оценки производительности могут быть в разы меньше достижимых значений и. таким образом, могут неверно характеризовать производительность ВВС.

СНС. П. 8 = 55. 20400



Ь'укп;-! дтя    /'in    ■■    1    ,1гы

Размер пакета в от 1 до 1024


Первый результат оценки производительности


Второй результат оценки производительности


Рисунок 4 — Нотация обозначения оценки производительности


2    Рекомендуется первый и второй результаты оценки производительности всегда приводить вместе для наглядности и избежания неверного трактования получаемых результатов.

10    Требования к программному обеспечению

Следующие требования рекомендуется применять к ПО. используемому при оценке производительности в соответствии с методикой:

-    используемое ПО должно допускать верификацию создаваемых реализаций СНС при условии наличия эталонных реализаций;

-    в случае, если для компонентов ВВС. осуществляющих вычисления, существуют свободно распространяемые высокопроизводительные библиотеки с реализациями вычислений СНС. то либо для реализации тестов производительности должна быть использована хотя бы одна из этих библиотек, либо должно быть обосновано, что применяемые программные средства эффективно используют возможности аппаратуры компонентов ВВС;

-    использование реализаций СНС. написанных без использования аппаратно-зависимых программных компонентов, не допускается.

11    Требования к высокопроизводительным вычислительным системам

11.1 Следующие требования рекомендуется предъявлять к ВВС и вычислительным ячейкам, используемым для применения СНС:

-    должна быть обеспечена аппаратная и программная поддержка вычислений и хранения данных в одном из типов данных: число с плавающей точкой одинарной точности (float), число с плавающей точкой половинной точности (half float), не стандартизованное число с плавающей точкой с разрядностью, не превосходящей 32 или целое число в дополнительном коде с разрядностью, не превосходящей 16;

-    если тип данных, который предполагается использовать для реализаций СНС. отличается от числа с плавающей точкой одинарной точности, то должна быть возможность поддержки реализаций СНС. использующих тип данных, который предполагается использовать;

-    значение теоретической пиковой производительности ВВС. исчисляемой в УсН/с в выбранном типе данных, должно быть не менее чем на 75 % обеспечено однородными вычислительными компонентами:

-    ВВС должна допускать такое разбиение на вычислительные ячейки, чтобы каждая вычислительная ячейка позволяла пользователю запускать независимые программы, включающие реализации СНС. внутри этой ячейки:

-    ВВС должна быть обеспечена ПО. удовлетворяющим требованиям настоящего стандарта.

11.2 Рекомендуется предъявлять к ВВС и вычислительным ячейкам, используемым для обучения СНС. следующие требования:

-должна быть обеспечена аппаратная и программная поддержка вычислений и хранения данных в одном из типов данных, число с плавающей точкой одинарной точности (float) или число с плавающей точкой половинной точности (half float);

-    если для реализаций СНС предполагается использовать числа с плавающей точкой половинной точности, то должна быть возможность поддержки реализаций СНС. использующих числа с плавающей точкой половинной точности;

-    значение теоретической пиковой производительности ВВС. исчисляемой в УсН/с в выбранном типе данных, должно быть не менее чем на 75 % обеспечено однородными вычислительными компонентами:

-    ВВС должна допускать такое разбиение на вычислительные ячейки, чтобы каждая вычислительная ячейка позволяла пользователю запускать независимые программы, включающие реализации СНС. и каждая вычислительная ячейка имела доступ к подсистеме хранения данных, при этом для каждой вычислительной ячейки может быть обеспечен объем не менее 256 Гбайт в подсистеме хранения данных;

-    ВВС должна быть обеспечена ПО. удовлетворяющим требованиям настоящего стандарта.

Приложение А (обязательное)

Поясняющие фрагменты кода для типовых слоев СНС

Приведенные в данном приложении фрагменты кодов написаны на языке С и являются поясняющими. При их написании в целях наглядности были приняты следующие условности:

-    в начале каждого фрагмента объявлены массивы, используемые во фрагменте, но заполнение массивов начальными значениями опущено;

-    объявления параметров слоев и других переменных опущены;

-    в каждом фрагменте после объявления массивов следуют две или четыре секции, разделенные строками, начинающимися с символов «//»;

-    в строках, начинающихся с символов «//», указано, к какому из четырех шагов обучения относится следующая за строкой секция;

-    для слоев, которые не располагают весами, не выполняется никаких действий на шагах вычисления градиента и изменения значений весов, поэтому соответствующие секции для таких слоев опущены;

-    используемые во фрагментах кода данные представлены статическими многомерными массивами типа float для простоты иллюстрации; в реализации СНС способ представления данных может быть выбран произвольно;

-    для корректности работы секции кода, иллюстрирующей прямой ход. необходимо, чтобы перед началом секции были заполнены начальными значениями входная карта признаков и массивы весов (в том числе фильтров и смещений);

-    для корректности работы секции кода, иллюстрирующей обратный ход. необходимо, чтобы перед началом секции были заполнены начальными значениями входная карта признаков, выходная карта признаков, массив невязок. ассоциированный с выходной картой признаков, и массивы весов (в том числе фильтров и смещений):

-    для корректности работы секции кода, иллюстрирующей вычисления градиента, необходимо, чтобы перед началом секции были заполнены начальными значениями входная карта признаков и массив невязок, ассоциированный с выходной картой признаков;

-    для корректности работы секции кода, иллюстрирующей изменение значений весов, необходимо, чтобы перед началом секции были заполнены начальными значениями массивы весов (в том числе фильтры и смещения) и массивы соответствующих им приращений;

-    прямой ход. обратный ход. вычисление фадиента и изменение значений весов проиллюстрированы в одном фрагменте кода для простоты иллюстрации; в реализации СНС вычисления каждого из четырех шагов обучения выполняются совместно для всех слоев сети, при этом вычисления одного шага для всей СНС может быть отделено от вычислений другого шага для всей СНС.

Следующий фрагмент кода поясняет вычисления сверточного слоя.

float IN[B][X][Y][L]; float IN_D[B][X)(Y]IL1; float OUT[B][Xout][Yout][F]: float OUT_D(B][Xout)(Yout][F); float FILTERS(Rx][Ry][Ll[F); float FILTERS_D[Rx][Ry)IL)lF); float BIASESIF]; float BIASES_D[FJ;

II Прямой ход

for (b=0;b<B;b++) for (f=0;f<F;f++) for (x=0;x<Xout;x++) for (y=0:y<Yout;y++) {

OUTMxMf] = BIASESJf]: for (rx = 0;rx<Rx;rx++) for (ry = 0;ry<Ry;ry++) if (x'S+rx-Px >= 0) if (y'S+ry-Py >= 0) if (x'S+rx-Px < X) if (y*S+ry-Py < Y) for (M);I<L;I++)

}


OUT[bMy](f] += IN[b][x*S+rx-Px](y*S+ry-Py][!] * FILTERS{rx][ry)(l)lf];

II Обратный ход

for (b=0;txB:b++) for (l=0;KL;l++) for (x=0;x<X:x++) for (y=0;y<Y:y++)

IN_D[b][x][y][l] = 0; for (b=0;b<B:b++) for (f=0;KL;l++) for (x=0;x<Xoul;x++) for (y=0;y<Yout;y++) for (rx = 0;rx<Rx:rx++) for (ry = 0;ry<Ry;ry++) if (x’S+rx-Px >= 0) if (y'S+ry-Py >= 0) if (x’S+rx-Px < X) if (y’S+ry-Py < Y) for (f=0;f<F;f++)

IN_D|b}{x*S+rx-Px][y’S+ry-Py][l] += OUT_D[b)[x][y][f] * FILTERS{rx][ry)[IJ[f];

II Вычисление градиента

for (f=0;f<F;f++) for (l=0;l<L;l++) for (rx = 0:rx<Rx;rx++) for (ry = 0;ry<Ry;ry++) {

FILTERS_D[rx][rylp](f] = 0; for (b=0;b<B;b++) for (x=0;x<Xout;x++) for (y=0:y<Yout;y++) if (x’S+rx-Px >= 0) if (y’S+ry-Py >= 0) if (x’S+rx-Px < X) if (y’S+ry-Py < Y)

FILTERS_D[rx][rylp][f] += IN(b)[x’S+rx-Px][y’S+ry-Py]pj * OUT_D[b][x][y](f].

)

for (f=0;f<F:f++) {

BIASES_D[fj = 0; for (b=0;b<B;b++) for (x=0;x<Xout;x++) for (y=0;y<Yout;y++)

BIASES_D[f] += OUT_D[b][x][y][f];

}

II Изменение значений весов

for (f=0;f<F.-f++) {

BIASES[f] += (BIASES_D[f]V'B: for (rx=0;rx<Rx:rx++) for (ry=0:ry<Ry;ry++> for (l=0;KL:l++)

FILTERS(rx)(ry][IJ(f] += (FILTERS_D[rxHrylPHf]yB;

}

В последнем фрагменте IN — входная карта признаков. OUT — выходная карта признаков, FILTERS — массив фильтров, BIASES — массив смещений. IN_D — массив невязок, соответствующий входной карте признаков. OUT_D — массив невязок, соответствующий выходной карге признаков. FILTERS_D — массив приращений фильтров. BIASES_D — массив приращений смещений.

Следующий фрагмент кода поясняет вычисления слоя пулинга с операцией выбора максимального.

float IN(B][X)[Y][L]: float IN_D[B][XJIYJ(L]; float OUTlB)(Xout]{Yout][L]: float OUT_D[B][XoutHYoutHL];

Содержание

1    Область применения..................................................................1

2    Нормативные ссылки..................................................................1

3    Термины и определения................................................................1

4    Сокращения и обозначения.......................... 3

5    Общие положения....................................................................4

6    Типовые операции в сверточных нейронных сетях..........................................4

6.1    Сверточный слой.............................. 4

6.2    Слой пулинга......................................................................5

6.3    Слой ректификации................................................................6

6.4    Слой склейки......................................................................6

6.5    Слой расщепления............ 7

6.6    Поканальный сверточный слой.......................................................7

6.7    Поэлементный слой................................................................7

6.8    Полносвязный слой................................................................8

6.9    Слой перемешивания...............................................................8

7    Типовые сверточные нейронные сети.....................................................8

8    Методика верификации реализации сверточных нейронных сетей............................10

9 Методика оценки производительности...................................................11

10 Требования к программному обеспечению..............................................13

11    Требования к высокопроизводительным вычислительным системам.........................13

Приложение А (обязательное) Поясняющие фрагменты кода для типовых слоев СНС............15

Приложение Б (обязательное) Параметры типовых сверточных нейронных сетей.................24

И Прямой ход

for (b=0;b<B;b++) for (N0: KL:I++) for (x=0;x<Xout;x++) for (y=0;y<Yout;y++) {

FIRST = 0;

for (rx = 0;rx<Rx;rx++) for (ry = 0;ry<Ry;ry++) if ({x*S+rx-Px >= 0)&& (y’S+ry-Py >= 0)&& if (x’S+rx-Px < X)&& if (y’S+ry-Py < Y)) { if (FIRST == 0) {

FIRST = 1:

RES = INlbHx*S+rx-Px][y’S+ry-Py][l];

} else {

if (RES < IN[b][x’S+rx-Px][y*S+ry-Py](l])

RES = IN[b](x'S+rx-Pxlly*S+ry-Pyl(l];

}

} else { if (FIRST — 0) {

FIRST = 1;

RES = 0:

}efse { if (RES < 0)

RES = 0;

}

}

OUTIbMyHl] = RES;

}

II Обратный ход

for (b=0;b<B;b++) for (N0:l<U++) for (x=0;x<X;x++) for (y=0;y<Y;y++)

IN_D[b][x]Iylp] = 0; for (b=0;b<B;b++) for (1=0: l<L:l++) for (x=0;x<Xout;x++) for (y=0;y<Yout:y++) for (rx = 0:rx<Rx;rx++) for (ry = 0;ry<Ry.ry++) if ((x'S+rx-Px >= 0>&& (y*S+ry-Py >= 0)&& if (x’S+rx-Px < X)&& if (y’S+ry-Py < Y)) if (IN[b](x'S+rx-PxHy*S+ry-Py][l] == OUT[b)[x](y][l])

IN_D[b]{x*S+rx-Px][y’S+ry-Py][l] += OUT_Dfb][xMy][l);

Следующий фрагмент кода поясняет вычисления слоя пулинга с операцией вычисления среднего.

float IN[B][X][Y][L]; float IN_D{B][X](Y](L1: float OUT[B][Xout][Yout][L): float OLfT_D(B][Xout][Yout][L|;

II Прямой ход

for (b=0;b<B;b++) for (1=0; l<L:l++) for (x=0;x<Xout;x++) for (y=0;y<Youty++) {

RES = 0;

for (rx = 0;rx<Rx;rx++) for (ry = 0;ry<Ry:ry++)

Введение

Развитие вычислительной техники делает возможным постоянное расширение числа прикладных задач, решаемых с помощью технологий искусственного интеллекта. В частности, повсеместное применение в задачах компьютерного зрения находят алгоритмы на основе сверточных нейронных сетей (СНС). Распространение СНС повлекло за собой создание различных специализированных архитектур вычислителей.

СНС обладают своей спецификой, не позволяющей объективно оценить реальную производительность вычислителя или вычислительной системы с помощью только общих технических характеристик. Возникла необходимость в специальной методике для оценки реальной производительности различных вычислительных систем в задачах, использующих алгоритмы на основе СНС.

В настоящем стандарте описана методика оценки производительности высокопроизводительных вычислительных систем (ВВС) и их частей на алгоритмах, использующих СНС. Методика была разработана с целью максимального упрощения задачи оценки производительности для лиц. не знакомых с СНС. сделать возможным оценку производительности без использования источников информации, отличных от настоящего стандарта, в то же время позволяя эффективно применять методику для оценки вычислительных систем любого типа и размера.

В качестве необходимых данных для создания эталонных реализаций тестов производительности в настоящем стандарте приведены описания типовых операций СНС и описания типовых нейронных сетей. Для создания высокопроизводительных реализаций СНС в настоящем стандарте приведена методика верификации реализации СНС. Высокопроизводительные реализации СНС используются в описанной в настоящем стандарте методике оценки производительности.

В настоящем стандарте также приведены рекомендуемые требования к программному обеспечению (ПО), используемому при тестировании производительности согласно приведенной методике, и вычислительным системам, применяемым для вычислений СНС. Несоблюдение требований к ПО может привести либо к невозможности выполнения оценки производительности, либо к получению значений реальной производительности в разы меньших по сравнению со значениями, которые могут быть практически получены на той же вычислительной технике. Несоблюдение требований к вычислительным системам может привести к применению для вычислений СНС ВВС. заведомо не способных продемонстрировать на них удовлетворительный уровень производительности.

Методику оценки производительности, описанную в настоящем стандарте, рекомендуется применять. в том числе, при составлении требований технического задания на ВВС и их части, при составлении требований на прикладное ПО. реализующее вычисления СНС на ВВС и их частях, при описании характеристик ВВС. которые предполагается применять для алгоритмов, использующих СНС.

НАЦИОНАЛЬНЫЙ СТАНДАРТ РОССИЙСКОЙ ФЕДЕРАЦИИ

ВЫСОКОПРОИЗВОДИТЕЛЬНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ

Оценка производительности высокопроизводительных вычислительных систем на алгоритмах, использующих сверточные нейронные сети

H»gh-perfomance computing systems. Performance evaluation of high-perfomance computing systems on algorithms

using convolutional neural network

Дата введения — 2022—01—01

1    Область применения

Настоящий стандарт устанавливает методику определения реальной производительности высокопроизводительных вычислительных систем (ВВС) в задачах, использующих алгоритмы на основе сверточных нейронных сетей (СНС). методику верификации реализаций СНС. а также рекомендательные требования к вычислительным системам и программному обеспечению (ПО).

Методика оценки производительности и требования к вычислительным системам и ПО. установленные настоящим стандартом, рекомендуются для использования при оценке производительности вычислительных систем, применяемых для решения задач, использующих алгоритмы на основе СНС. Методика верификации реализаций СНС рекомендуется для использования при реализации алгоритмов на основе СНС.

2    Нормативные ссылки

В настоящем стандарте использована нормативная ссылка на следующий стандарт:

ГОСТ Р 57700.27 Высокопроизводительные вычислительные системы. Термины и определения

Примечание — При пользовании настоящим стандартом целесообразно проверить действие ссылочных стандартов в информационной системе общего пользования — на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет или по ежегодному информационному указателю «Национальные стандарты», который опубликован по состоянию на 1 января текущего года, и по выпускам ежемесячного информационного указателя «Национальные стандарты» за текущий год. Если заменен ссылочный стандарт, на который дана недатированная ссылка, то рекомендуется использовать действующую версию этого стандарта с учетом всех внесенных в данную версию изменений. Если заменен ссылочный стандарт, на который дана датированная ссылка, то рекомендуется использовать версию этого стандарта с указанным выше годом утверждения (принятия). Если после утверждения настоящего стандарта в ссылочный стандарт, на который дана датированная ссылка, внесено изменение, затрагивающее положение, на которое дана ссылка, то это положение рекомендуется применять без учета данного изменения. Если ссылочный стандарт отменен без замены, то положение. в котором дана ссылка на него, рекомендуется применять в части, не затрагивающей эту ссылку.

3 Термины и определения

В настоящем стандарте применены термины по ГОСТ Р 57700.27, а также следующие термины с соответствующими определениями:

3.1 искусственный интеллект (artificial intelligence): Комплекс технологических и программных решений, приводящих к результату, аналогичному или превосходящему результат интеллектуальной

Издание официальное

деятельности человека (включая способность к самообучению), и используемых для решения прикладных задач на основе данных, в том числе с помощью систем компьютерного зрения, систем обработки естественного языка, рекомендательных систем и интеллектуальных систем поддержки принятия решений и робототехники.

3.2    машинное обучение (machine learning): Процесс обучения алгоритмов искусственного интеллекта с использованием вычислительной техники.

3.3    обучение (training): Процесс создания или улучшения определенной функциональности алгоритмов искусственного интеллекта либо путем использования набора данных в качестве примеров для предполагаемого отношения вопрос/ответ, либо путем обеспечения положительной или отрицательной обратной связи с выходными данными, полученными для соответствующих входных данных.

3.4    нейронная сеть (neural network): Алгоритм из класса алгоритмов искусственного интеллекта, представляющий собой предопределенную последовательность действий с множеством регулируемых параметров. в котором значения выходных данных сложным образом зависят от значений входных данных.

3.5    алгоритм (algorithm): Точно установленное предписание о выполнении в определенном порядке некоторой последовательности операций, однозначно ведущих к решению той или иной конкретной задачи.

3.6    среда машинного обучения (machine learning framework): Программное обеспечение, упрощающее создание пользователем реализаций СНС. обучение СНС и применение СНС.

3.7    тест производительности (benchmark): Типовая тестовая программа, используемая при тестировании производительности вычислительной системы или ее части.

3.8    умножение с накоплением (multiply-accumulate, MAC): Трехоперандная математическая операция с = а • Ь * с или четырехоперандиая математическая операция d = а • Ь + с. являющаяся комбинацией из операций умножения и сложения, применяемая в качестве единицы исчисления вычислительной сложности алгоритмов на базе СНС.

3.9    относительная реальная производительность (relative real performance): Отношение реальной производительности к теоретической пиковой производительности.

3.10    вычислительная ячейка (computing cell): Часть ВВС, которая может включать в себя части подсистем ВВС. в том числе вычислительные узлы ВВС. выделение которой удобно с точки зрения высокопроизводительной реализации конкретной программы.

Примечание — Вычислительные ячейки ВВС не могут пересекаться друг с другом.

3.11    однородные вычислительные компоненты (homogeneous computing components): Компоненты ВВС с одинаковым функционалом и характеристиками.

3.12    слой нейронной сети (neural network layer): Фрагмент нейронной сети, который можно выделить в отдельную типовую параметризованную процедуру.

3.13    обучение методом обратного распространения ошибки (back propagation): Итеративный способ обучения, кахздая итерация которого состоит из четырех шагов: прямого хода, обратного хода, вычисления градиента и изменения значений весов.

3.14    сверточный слой (convolutional layer): Тип слоя нейронной сети, в основе которого лежат процедуры свертки и матричного умножения.

3.15    сверточная нойронная сеть (convolutional neural network): СНС: Вид нейронной сети, в которой используются сверточные слои.

3.16    вход нейронной сети (input): Начало нейронной сети как алгоритма.

3.17    входной массив нейронной сети (input): Массив данных, подаваемый на вход нейронной сети.

3.18    выход нейронной сети (output): Конец нейронной сети как алгоритма.

3.19    выходной массив нейронной сети (output): Массив данных, генерируемый нейронной сетью на выходе нейронной сети.

3.20    веса (weights): Параметры нейронной сети, настраиваемые во время процесса машинного обучения.

3.21    архитектура нейронной сети (neural network architecture): Описание нейронной сети, в котором приведено, из каких слоев состоит нейронная сеть, каковы параметры этих слоев, описан процесс передачи данных между этими слоями, а также входом и выходом нейронной сети, но не указаны конкретные значения весов нейронной сети.

3.22    применение нейронной сети (inference): Использование нейронной сети как алгоритма для получения выходных данных по входным данным с целью извлечения практической пользы.

3.23    размер пакета (batch size, batchsize): Параметр, устанавливающий для процесса обучения количество комплектов входных массивов нейронной сети, обрабатываемых нейронной сетью в одной итерации обучения, либо устанавливающий для применения нейронной сети количество одновременно обрабатываемых комплектов входных данных.

3.24    реализация сверточной нейронной сети (implementation of a convolutional neural network): Прикладная программа или программный компонент, выполняющая вычисления, заданные нейронной сетью как алгоритм, для процедуры обучения нейронной сети или для процедуры применения нейронной сети.

3.25    эталонная реализация сверточной нейронной сети (reference implementation of a convolutional neural network): Реализация сверточной нейронной сети, относительно которой принимается допущение, что она не содержит ошибок, а погрешности округлений и вычислений в ней можно игнорировать.

Примечание — Эталонная реализация сверточной нейронной сети также является корректной реализацией сверточной нейронной сети.

3.26    корректная реализация сверточной нейронной сети (correct implementation of a convolutional neural network): Реализация сверточной нейронной сети, которая не обязательно считается эталонной, но для которой известно, что она выдает корректный результат с допустимой точностью.

3.27    высокопроизводительная реализация сверточной нейронной сети (high-performance implementation of a convolutional neural network): Реализация сверточной нейронной сети, реализованная таким образом, чтобы она выдавала корректный результат с допустимой точностью за минимальное время.

3.28    прямой ход (forward): Первый из четырех шагов обучения методом обратного распространения ошибки, заключающийся в применении нейронной сети и получении выходных данных по заданным входным.

3.29    карты признаков (feature map): Промежуточные массивы данных, возникающие во время вычислений прямого хода в сверточной нейронной сети.

Примечание — Для общности к картам признаков также относятся входной и выходной массивы нейронной сети.

3.30    обратный ход (backward): Второй из четырех шагов обучения методом обратного распространения ошибки, заключающийся в вычислении специальных промежуточных данных, облегчающих вычисления следующего шага.

3.31    невязки (residual): Промежуточные данные, возникающие во время вычислений обратного хода в сверточной нейронной сети аналогично тому, как карты признаков возникают во время вычислений прямого хода.

3.32    вычисление градиента (gradient calculation): Третий из четырех шагов обучения методом обратного распространения ошибки, заключающийся в вычислении массива приращений для весов.

3.33    градиент (gradient): Массив приращений для весов.

3.34    изменение значений весов (updating weights). Четвертый из четырех шагов обучения методом обратного распространения ошибки, заключающийся в замене текущих весов нейронной сети новыми значениями с использованием градиента.

3.35    итерация обучения (training iteration): Итерация процесса обучения методом обратного распространения ошибки, состоящая из последовательных вызовов четырех шагов обучения.

3.36    фильтр (filter): Массив с определенной структурой, в который объединяются веса некоторых слоев сверточной нейронной сети.

3.37    смощоние (bias): Один из типов весов, используемый в различных слоях сверточной нейронной сети.

3.38    ядро лулинга (pooling kernel): Прямоугольная рамка, умозрительная прикладываемая к входной карте признаков в слое пулинга.

3.39    канал карты признаков (channel): Группа значений, выделяемая в карте признаков, объединяющая значения карты признаков с одним индексом глубины.

3.40    шаг сверткн/шаг пулинга (stride): Величина, регулирующая число вычислений в слое нейронной сети.

3.41    расширение (padding): Воличина, регулирующая ширину и высоту выходной карты признаков.

4 Сокращения и обозначения

В настоящем стандарте применены следующие сокращения и обозначения:

В    —    размер    пакета;

X    —    ширина    (входной)    карты признаков;

У    —    высота    (входной) карты признаков:

Хаи1    —    ширина выходной карты признаков;

Youl — высота выходной карты признаков:

L. LI, L2 — глубина (число каналов) входной карты признаков; F, FI, F2 — глубина выходной карты признаков;

Rx    —    ширина фильтра свертки или ядра пулинга;

Ry    —    высота фильтра свертки или ядра пулинга;

R    —    ширина и высота фильтра свертки или ядра пулинга;

S    —    шаг свертки или пулинга;

Рх    —    расширение по    ширине;

Ру    —    расширение по    высоте;

Р    —    расширение по    ширине и высоте:

ReLU — урезанный линейный модуль (rectified linear unit);

G    —    число групп каналов для слоя перемешивания;

Вх1    — первая входная карта признаков;

Вх2    — вторая входная карта признаков;

ОРП    — относительная реальная производительность;

СКО    — среднеквадратическое отклонение;

СКОП    — порог среднеквадратического отклонения;

УсН    — операция умножения с накоплением,

УсН/с — число операций умножений с накоплением в секунду;

5 Общие положения

Оценку производительности выполняют следующим образом:

-    с помощью описания типовых слоев СНС, приведенных в разделе 6. реализуются отдельные функции, выполняющие вычисления отдельных слоев;

-    с помощью описания типовых СНС, приведенных в разделе 7, и реализованных функций, создаются эталонные реализации типовых СНС;

-    помимо эталонной реализации, создаются также высокопроизводительные реализации СНС, верифицируемые с помощью эталонных реализаций и методики верификации, описанной в разделе 8;

-    оценка производительности осуществляется согласно методике, описанной в раздело 9.

6 Типовые операции в сверточных нейронных сетях

Большинство СНС состоят из слоев, типы которых описаны в данном разделе. Встречаются также и другие типы слоев СНС, однако для целей оценки производительности достаточно использовать описанные в настоящем стандарте типы. Для каждого слоя (см. приложение А) приведен один или два поясняющих фрагмента кода на языке С. Эти фрагменты кода не являются полноценными текстами программ, они приведены в качестве описания последовательности математических операций, выполняемых в слое.

6.1    Сверточный слой

6.1.1    Общие сведения

Сверточный слой является основной вычислительной процедурой в СНС. Наличие сверточного слоя в нейронной сети позволяет классифицировать эту нейронную сеть как сверточную.

6.1.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (В. X. Y. L). где В — размер пакета. X — ширина, У — высота. L — глубина (число каналов, англ, channel). Также слой располагает F фильтрами. каждый фильтр представляет собой массив с размерами (Rx. Ry. L), где Rx — ширина ядер фильтров, Ry — высота ядер фильтров. Все фильтры вместе образуют массив с размерами (Rx. R/ L. F).

Кроме фильтров слой располагает массивом из F смещений, каждое смещение ассоциировано с одним фильтром. Вычисления состоят в выборке из входной карты признаков подмассивов с размерами (1, Rx. Ry L). выборке фильтра, поэлементном умножении выбранных значений входной карты признаков со значениями выбранного фильтра, сложением полученных результатов и прибавлением к нему соответствующего значения смещения. В результате получается одно значение выходной карты признаков. Выходная карта признаков имеет размеры (б. ХоиГ Yout. F), где ХоШ — ширина выходной карты признаков, Yaut — высота выходной карты признаков. Схема работы сверточного слоя проиллюстрирована на рисунке 1.

Количество вычислений в слое регулируется шагом свертки S: при выборке из входной карты признаков подмассивов начальные элементы соседних подмассивов отстоят друг от друга по ширине и (или) высоте на величину S.

Для контроля размера выходной карты признаков применяется расширение. При заданных размерах расширения по ширине Рх и по высоте Ру входная карта признаков умозрительно расширяется по ширине и высоте в каждую сторону на величины Рх и Р. соответственно, при этом считается, что добавляемые значения равны нулю.

X ♦ 2 Р -Я


(1)






Рисунок 1 — Вычисления сверточного слоя для одного фильтра со смещением, равным нулю, и значениями параметров X = У = 4. Рх = Ру = 1. Rx = Ry = 3. Sx = Sy = 1


Ширину и высоту выходной карты признаков вычисляют по формулам:

Примечания

1    Встречаются также описания сверточного слоя, содержащие дополнительные параметры помимо описанных выше параметров. При этом слой также можно классифицировать как сверточный, если найдется набор значений дополнительных параметров, при фиксации которых слой выполняет те же вычисления, что и сверточный слой.

2    Как правило. СНС содержат от нескольких единиц до нескольких сотен сверточных слоев.

6.2 Слой пулинга

6.2.1    Общие сведения

Слой пулинга (англ, pooling layer) применяется в СНС для уменьшения ширины и высоты карт признаков, используемых в СНС.

6.2.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (В. X. Y. L). где В — размер пакета, X — ширина. Y — высота, L — глубина. Для слоя определяется одна из двух операций — выбор максимального (англ, max pooling) или вычисление среднего (англ, average pooling). Для пулинга заданы ширина Rx и высота Ry ядра пулинга. Вычисления состоят в выборке из входной карты признаков подмассивов с размерами (1. Rx, Ry, 1) и вычислений над выбранными значениями определенной операции. В результате получается одно значение выходной карты признаков. Выходная карта признаков имеет размеры (В. ХоиГ Youf L). где Х^, — ширина выходной карты признаков. Yoof — высота выходной карты признаков.

Количество вычислений в слое регулируется также шагом пулинга S: при выборке из входной карты признаков подмассивов начальные элементы соседних подмассивов отстоят друг от друга по ширине и (или) высоте на величину S.

Для контроля размера выходной карты признаков применяется расширение. При заданных размерах расширения по ширине Рх и по высоте Ру входная карта признаков умозрительно расширяется по ширине и высоте в каждую сторону на величины Рх и Ру соответственно, при этом считается, что добавляемые значения равны нулю.

Y Y f2 Py-Rr


X.2P-R,


*


(2)


Ширину и высоту выходной карты признаков вычисляют по формулам:

В некоторых реализациях ширина и (или) высота выходной карты признаков могут быть больше значений, полученных по приведенной формуле, на единицу.

Примечания

1    Встречаются также описания слоя пулинга. содержащие дополнительные параметры помимо описанных выше параметров. При этом спой также можно классифицировать как слой пулинга. если найдется набор значений дополнительных параметров, при фиксации которых слой выполняет те же вычисления, что и слой пулинга.

2    Иногда для слоя пулинга определяется параметр режима округления (англ, ceil mode) или другие особые режимы использования расширения. В этих случаях расчет тех значений выходного массива, которые по ширине и высоте имеют крайние индексы, может отличаться от приведенного выше.

3    Иногда слой пулинга определяется как глобальный (англ, global). Это означает, что размеры ядра пулинга выбираются равными ширине и глубине входной карты признаков.

4    Как правило. СНС содержат от нескольких единиц до нескольких десятков слоев пулинга.

6.3 Слой ректификации

6.3.1    Общие сведения

Слой ректификации (англ, rectified linear unit — урезанный линейный модуль) используется в СНС для придания им определенных свойств.

6.3.2    Краткое описание слоя

Слой принимает на вход карту признаков с размерами (8. X. У L), где 8 — размер пакета. X — ширина, V — высота, L — глубина, при этом выходная карта признаков имеет те же размеры, что и входная. Вычисления состоят в том. что значения входной карты признаков копируются в выходную карту признаков, после чего отрицательные значения в выходной карте признаков заменяются нулевыми значениями.

Примечания

1    Чаще всего для обозначения слоя ректификации используется аббревиатура «ReLUo.

2    Встречаются различные варианты слоев, являющиеся модификациями слоя ректификации, со схожим функционалом. Как правило, в названиях этих слоев фигурирует аббревиатура «ReLU».

3    Как правило, в СНС слой ректификации регулярно следуют сразу после сверточных или других слоев.

6.4 Слой склейки

6.4.1    Общие сведения

Слой склейки (англ, concat) используется в СНС для усложнения их структуры.

6.4.2    Краткое описание слоя

Слой принимает на вход две карты признаков с размерами (Б. X, У, L1) и (8. X. У, L2) соответственно. где В — размер пакета. X — ширина. У — высота. Z.1 и L2 — глубины. Выходная карта признаков слоя имеет размеры (8. X. У. Z.1+L2) и формируется путем расположения друг за другом L1 значений из первой входной карты признаков и L2 значений из второй входной карты признаков для каждой пары индексов ширины и высоты.

Примечания

1    Иногда встречаются обобщенные описания слоя склейки, допускающие большее число измерений у карт признаков, а также допускающие, что в качестве размерности, по которой выполняется склейка, выступает размерность. отличная от глубины.

2    В СНС. как правило, слой склейки либо не встречаются, либо встречаются в количестве от нескольких десятков до нескольких сотен.