Обозначения
Инженерия 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 использует как независимую переменную. | |
| Точка перехода Roofline | FLOP/байт | . Предпочитается эта явная форма вместо краткой записи со звездочкой, чтобы смысл оставался ясным в тексте. | |
| Достижимая скорость вычислений | 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.