Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Обозначения

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

Рассмотрим простое утверждение: «Увеличение повышает пропускную способность». Для исследователя ML означает размер батча. Для инженера-аппаратчика означает пропускную способность. Обе трактовки верны в своих областях, но в ML-системах нам нужны оба понятия в одном уравнении — отсюда необходимость единого последовательного соглашения.

Железный закон систем машинного обучения

Для последовательных фаз исполнения декомпозиция производительности по железному закону такова:

Каждая переменная выбрана намеренно, чтобы не совпадать с обычной ML-терминологией.

СимволОпределениеЕдиницаПочему именно этот символ?
ВремясекундыОднозначно. Фактическое время выполнения операции.
Объем данныхбайтыИзбегает совпадения с (размер набора данных). В законах масштабирования означает обучающие токены. Здесь нам нужны байты, прошедшие через память. Индекс устраняет неоднозначность.
Пропускная способностьбайт/сИзбегает совпадения с (размер батча). В литературе по системам часто означает пропускную способность, а в ML — размер батча. Обозначение сохраняет соглашение ML.
ОперацииFLOPОбщее число операций с плавающей запятой. Аккуратно выглядит в формулах (в отличие от «»).
Пиковая скоростьFLOP/sИзбегает совпадения с (параметры). В презентациях Roofline для производительности часто используют , а в ML — для числа параметров. Обозначение сохраняет соглашение ML.
Эффективность—Загрузка аппаратуры . Избегает совпадения со скоростью обучения .
ЗадержкасекундыИзбегает совпадения с (функция потерь). Фиксированное время накладных расходов (запуск ядра, RTT сети). Индекс отличает его от функции потерь.

Почему эти выборы важны

Без аккуратных обозначений предложения становятся двусмысленными:

«Уменьшение улучшает производительность».

У предложения два возможных прочтения:

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

С нашими обозначениями можно записать точно:

«Уменьшение за счет квантования FP32 в INT8 сокращает трафик памяти параметров вчетверо, а (обучающие данные) остается неизменным».

Наше обозначение устраняет эту неоднозначность: « ограничивает пропускную способность» допускает только одно прочтение.

Варианты с индексами

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

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

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

Уравнение деградации

Уравнение деградации — подогнанная локальная модель. Одно лишь расхождение не определяет направление изменения точности, поэтому оценивается по размеченным исходам. Некоторые символы ниже, например , встречаются в тексте глав, а не в уравнении.

СимволОпределениеЕдиница/типПримечания
Точность в момент скалярТочность модели после того, как она проработала в эксплуатации время .
Начальная точностьскалярТочность модели в момент развертывания.
Подогнанная чувствительностьскалярЛокальный коэффициент, оцененный по исходам на заявленном диапазоне; не универсальная константа. (Не длина волны.)
Текущее распределениераспределениеРаспределение данных в момент . (Не параметры — для числа параметров используйте .)
Обучающее распределениераспределениеРаспределение данных в момент обучения.
Статистическое расхождениескаляр Измеряет, насколько ушло от . Обычные варианты: расхождение Кульбака–Лейблера, полная вариация, расстояние Вассерштейна. (Каллиграфический, чтобы не совпадать с = размер набора данных.)
Порог реакциискаляр Эксплуатационный порог для расследования; он не запускает переобучение автоматически.

Следствие для энергии

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

СимволОпределениеЕдиницаПримечания
Полная энергияджоулиПолная энергия, потребленная ML-нагрузкой и разложенная на члены перемещения данных и вычислений.
Энергия на перемещенный байтджоули/байтЭффективная стоимость перемещения; полная энергия зависит также от перемещенных байтов и выполненных операций.
Энергия на операциюджоули/FLOPЭнергетическая стоимость одной арифметической операции.

Обозначения глубокого обучения

Книга следует стандартным соглашениям глубокого обучения (Goodfellow et al., 2016) с явным различением системных переменных.

СимволОпределениеРазмерность/тип
Размер батчаЦелое. Число образцов, обрабатываемых параллельно. (Никогда не пропускная способность.)
ПараметрыЦелое. Общее число скалярных параметров модели, включая веса и смещения. (Никогда не пиковые FLOP/s.)
Размер набора данныхЦелое. Число обучающих образцов или токенов. (Никогда не объем данных в байтах — используйте .)
Длина последовательностиЦелое. Число токенов или временных шагов.
Размерность скрытого состоянияЦелое. Размер вектора скрытого состояния.
Размерность головы вниманияЦелое. Размерность скрытого состояния одной головы в слоях внимания.
Число слоевЦелое. Общее число слоев в сети.
Число голов вниманияЦелое. Число голов внимания в слое многоголового внимания.
Число голов ключ–значениеЦелое. Число голов ключ–значение в групповом (grouped-query) или многозапросном (multi-query) внимании.
Индекс слояЦелое. Индекс слоя. Используйте вместо голого при индексации слоев, потому что совпадает с потерями и задержкой.
Функция потерьСкаляр. Целевая функция, которую минимизируют при обучении.
Скорость обученияСкаляр. Размер шага оптимизатора. (Никогда без индекса для эффективности аппаратуры — используйте .)
Параметры моделиНабор параметров, часто трактуемый как вектор. Множество всех обучаемых параметров.
РаспределениеВероятностная масса или плотность случайной величины. Для общих распределений используйте строчное , чтобы не совпадать с (число параметров).
Условное распределениеУсловная вероятность или плотность. Эту форму используйте для общих зависимостей меток; и оставьте для обучающего и текущего распределений в уравнении деградации.
Вероятность событияВероятность события . Используйте для утверждений о событиях, например ; для распределений используйте и .

Латинские матрицы и векторы набираются полужирным (, ); скаляры, размерности, индексы и отдельные элементы матриц остаются курсивом (, , , ). Общий символ параметров — единственное обычное исключение, и он остается курсивом. Локальная матричная алгебра следует тому же правилу полужирного: операнды-матрицы полужирные (, , ), как в общем матричном умножении (GEMM) . Полужирная форма отмечает матричный операнд и отличается от курсивного скалярного размера батча , который в скалярных контекстах остается размером батча.

Обозначения производительности, обслуживания и памяти

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

СимволОпределениеЕдиница/типПримечания
Арифметическая интенсивностьFLOP/байтFLOP нагрузки на перемещенный байт. Модель Roofline использует как независимую переменную.
Точка перехода RooflineFLOP/байт. Предпочитается эта явная форма вместо краткой записи со звездочкой, чтобы смысл оставался ясным в тексте.
Достижимая скорость вычисленийFLOP/sГраница Roofline: . Использует , а не , потому что величина — скорость.
Утилизация FLOP моделибезразмернаяПолезные FLOP/s модели, деленные на доступные пиковые FLOP/s. Текстовая аббревиатура не перегружает .
Коэффициент сжатиябезразмерныйРазмер без сжатия, деленный на размер после сжатия. Сжатая полезная нагрузка имеет несжатого размера; индекс избегает голого .
Одновременность запросовзапросыСреднее число запросов в обработке в устойчивой системе обслуживания ( по закону Литтла). Избегает совпадения с как числом устройств в распределенных системах.
Интенсивность приходазапросы/сИнтенсивность прихода запросов. Индекс избегает совпадения с как чувствительностью деградации или интенсивностью отказов.
Время запроса в системесекундыСквозная задержка очереди и обслуживания для закона Литтла. Отличается от , фиксированного члена задержки в железном законе.
Время обслуживания батчасекундыВремя обслуживания батча размера .
Эффективная скорость обслуживаниязапросы/сСкорость обслуживания при батчинге, обычно .
Загрузка обслуживаниябезразмернаяЗагрузка очереди или сервера. Используется вместо голого , которое в распределенных контекстах зарезервировано за отношением коммуникации к вычислениям.
Полный объем памятибайтыСумма явных компонентов памяти; избегает неоднозначности голого .
Память весовбайтыПамять, занятая параметрами модели.
Память градиентовбайтыПамять, занятая сохраненными градиентами.
Память состояния оптимизаторабайтыМоменты, дисперсии, основные веса и другие буферы оптимизатора.
Память активацийбайтыСохраненные активации для обратного прохода или промежуточные данные обслуживания.
Размер хранения элементабайты/элементБайты на один хранимый элемент тензора.

Единицы измерения и точность

  • Физические единицы: книга во всем тексте использует метрические единицы СИ — метры, килограммы, секунды, ватты и градусы Цельсия, в соответствии со стандартной инженерной и научной практикой. Если исходные данные были приведены во внесистемных единицах, книга переводит их в СИ и в скобках указывает исходные значения. Между числом и единицей всегда ставится пробел (например, 100 мс, 2 ТБ/с).
  • Данные и память: книга использует только десятичные приставки СИ: КБ = байт, МБ = , ГБ = , ТБ = . Двоичные приставки в тексте не встречаются; все емкости, пропускные способности и размеры моделей приводятся в десятичных единицах (например, 80 ГБ, 2 ТБ/с, 102 МБ).
  • Вычисления: обозначения различают число операций и скорости. Общий объем работы измеряется в FLOP (например, GFLOP, TFLOP), а пропускная способность — в FLOP/s с десятичными приставками (например, GFLOP/s, TFLOP/s).
    • 1 TFLOP = FLOP
    • 1 TFLOP/s = FLOP в секунду
    • Арифметическая интенсивность обычно выражается в FLOP/байт как единичное отношение (операции с плавающей запятой на перемещенный байт). Это единица отношения, а не символ общего объема работы или пропускной способности.
  • Валюта: суммы в долларах обозначаются знаком доллара ($); если не указано иное, стоимости в долларах — это доллары США (USD).
  • Точность:
    • FP64: двойная точность (8 байт)
    • FP32: одинарная точность (4 байта)
    • TF32: TensorFloat-32 (режим вычислений тензорных ядер с 19-битным представлением; входы и хранение остаются FP32)
    • FP16: половинная точность (2 байта, стандартный диапазон)
    • BF16: brain float (2 байта, широкий динамический диапазон)
    • FP8: четверть точности (1 байт, формат E4M3 или E5M2)
    • FP4: 4-битный формат с плавающей запятой
    • INT8: 8-битное целое (1 байт)
    • INT4: 4-битное целое; более низкие целочисленные точности следуют тому же шаблону записи INTn заглавными буквами (например, INT3, INT2)

Краткая справка: разрешение коллизий

Частые точки коллизий в литературе по системам машинного обучения:

СимволЗначение в MLЗначение в системахСоглашение книги
Размер батчаПропускная способностьРазмер батча. Для пропускной способности используйте .
ПараметрыПиковые FLOP/sПараметры. Для пиковой скорости используйте .
Размер набора данныхОбъем данныхРазмер набора данных. Для перемещенных байтов используйте .
ПотериЗадержкаПотери . Для задержки используйте .
Скорость обученияЭффективностьСкорость обучения. Для эффективности используйте .

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