Происхождение материалов
Книга переведена из исходного репозитория harvard-edge/cs249r_book, папка books/vol1/ (том I «Machine Learning Systems», «Introduction to Machine Learning Systems»). Исходные Quarto-файлы преобразованы в Markdown для mdBook, переведены вручную по частям и затем целиком вычитаны (текст, формулы, рисунки, диаграммы, комментарии в коде, ссылки, термины).
Что переведено
Переведено все, что входит в том:
- 16 глав, включая цели обучения, врезки, сноски, таблицы, уравнения, листинги и подписи рисунков;
- введения к четырем частям («Принципы основ», «Принципы построения», «Принципы оптимизации», «Принципы развертывания») с 13 принципами и их якорями
pri-*; - служебные разделы: «Посвящение», «Предисловие», «Заметка автора», «О книге», «Благодарности», «Примечание об использовании ИИ», «Обозначения»;
- пять приложений: «Таксономия D·A·M», «Основы данных», «Основы алгоритмов», «Основы машины», «Системные допущения»;
- глоссарий (530 терминов; английский вариант дан в скобках курсивом) и список литературы (681 запись, которые цитируются в томе; записи приведены на языке оригинала, BibTeX-скобки и LaTeX-акценты преобразованы).
Не перенесено:
- страница SocratiQ (
books/shared/frontmatter/socratiq): она описывает онлайн-функцию сайта, которой в статическом издании нет; - галерея участников GitHub в «Благодарностях» (HTML-таблица): вместо нее дана ссылка на mlsysbook.ai/git;
- LaTeX-диаграммы «карты стека» на полях глав (в английской HTML-версии они тоже не отображаются); поэтому в «О книге» сказано, что в электронном издании они не воспроизводятся.
Встроенные вычисления {python} исходника выполнены локально (mlsysim из репозитория), значения подставлены по выводу кода; блоки, которые в исходнике только выводят значения, в книге оставлены как обычный текст. Если вычисленный блок в конвертации потерялся, он восстановлен пересчетом (например, разбор дивергенции KL и PSI в приложении «Основы данных»).
Рисунки
Все рисунки с текстом локализованы. Оригинальные файлы в исходном репозитории не менялись.
- TikZ (162 рисунка: главы 1–16 и четыре приложения) собраны заново из исходного кода TikZ с русскими подписями. Сборка: pdfLaTeX с кириллическим шрифтом WNCYSS (OT2), преобразование в SVG через
pdftocairo, обрезка по фактической области рисунка. Латинские названия и аббревиатуры (CPU, GPU, SRAM, HBM, NVLink, имена моделей и библиотек) набраны шрифтом Helvetica (T1) через\lat{}, потому что в OT2 латинские буквы выглядят как кириллические. Знаки «+» и «=» в подписях выведены в математическом режиме (в OT2 их нет). Чтобы пары «сх» и «тс» не давали лигатуры WNCYSS (читались бы как «ш» и «ц»), между буквами вставлена пустая группа{}. Десятичный разделитель в подписях — запятая. Геометрия, цвета и формулы не менялись; в нескольких рисунках сужены текстовые блоки или сокращены подписи, чтобы русский текст не налезал на соседние элементы. - Графики matplotlib (блоки
{python}, которые в конвертации не сохранили рисунок, потому что заканчиваютсяplt.show()): код исходника выполнен заново, подписи переведены перехватом строк при выводе, шрифт — DejaVu Sans с кириллицей, десятичная запятая на осях. Данные и оформление не менялись. - Векторные рисунки без
<text>(подписи в виде контуров), включая рисунки на полях (*_margin_*.svg): подписи переведены. Часть рисунков перерисована в matplotlib с той же геометрией и значениями (svg.fonttype = path), в нескольких отредактирован сам файл (подпись заменена, смещена или добавлена). Размер рисунков на полях, заданный в исходнике в долях дюйма, увеличен скриптомscripts/scale_small_svgs.py(каждой единицеviewBoxсоответствует 4 пикселя). - Растровые рисунки с подписями (схемы, скриншоты и графики): надписи закрашены по фону (inpainting) и набраны заново; названия моделей, наборов данных и программ оставлены как имена. Исходные надписи на скриншотах интерфейсов (например, TensorFlow Profiler) оставлены.
- Обложки глав (
webp/cover_*_blueprint_labeled.webp): выноски заменены на русские слова поверх чистой обложки; иллюстрация не менялась. - Рисунки без подписей и рисунки только с буквами D, A, M оставлены без изменений.
images/05_nn_computation/svg/tikz_t05.svgвесит около 2,4 МБ из-за большого числа контуров в градиентных заливках рисунка «Биологический и искусственный нейрон».
Решения по переводу
- Буква «ё» не используется, как и в книгах «Агентные системы машинного обучения» и «Системы физического ИИ» из той же серии.
- Десятичная запятая в тексте (
15,3 процента), в формулах{,}; разделитель тысяч в тексте — пробел, в формулах\,. Доллары в тексте записаны как\$. Запись «N×» в прозе передана оборотом «в N раз» (десятичные дроби и числа 2–4 — «раза»); в таблицах отношения оставлены какN×. - Значения в блоках кода (например,
8.5B,312 TFLOP/s) оставлены как вычислены; английские слова масштаба (million,percent) рядом с числами переведены. - Комментарии, строки документации и строки вывода в листингах переведены; идентификаторы, имена функций, команды и API оставлены.
- Единицы: десятичные приставки СИ (КБ, МБ, ГБ, ТБ), FLOP и FLOP/s, мкс, пДж; емкость аппаратуры напечатана так, как указал производитель.
- Единые термины: квантование (не квантизация), прореживание, дистилляция, вывод (inference; не «инференс»), задержка (не «латентность»), календарное время (wall-clock), раздельные по глубине свертки, тензорные ядра, SRAM на кристалле, межсоединение, шардирование, офлайн, Roofline, «налог на…» (налог на сериализацию, диспетчеризацию, коммуникацию и т. д.), маячные модели, кремниевый контракт, железный закон, стена памяти, перекос обучения и обслуживания, страничные ошибки, начальное значение генератора (seed), «ориентированный на модель/данные» подход, утилизация FLOP модели (MFU), «Значение», «Отличие», «Типичная ошибка» в карточках определений, «вышестоящий» и «нижестоящий» вместо upstream и downstream.
- Названия приложений в ссылках: «Таксономия D·A·M», «Основы данных», «Основы алгоритмов», «Основы машины», «Системные допущения».
- Русские названия принципов: «Данные как код», «Гравитация данных», «Железный закон систем машинного обучения», «Кремниевый контракт», «Фронт Парето», «Закон арифметической интенсивности», «Инвариант энергии перемещения», «Закон Амдала», «Разрыв верификации», «Диагностика статистического дрейфа», «Диагностика перекоса обучения и обслуживания», «Принцип бюджета задержки», «Модель смещения обратной связи».
- Библиографические ссылки оставлены в виде
(Author et al., year); для одинаковых авторов и годов добавлены буквенные индексы по порядку названий вreferences.bib.
Исправления при конвертации
- Удалены артефакты конвертации: отдельные строки
}и}}}после\index{...}, блоки{=latex}(\begingroup,\vspace,\part,\enlargethispage), атрибуты[offset=...]в сносках, Quarto-блоки::: {.content-visible ...}, лишние фигурные скобки после заголовков и сносок. - Якоря приведены к нижнему регистру (
#sec-...,#tbl-...,#fig-...), как в<a id>; нерешенные ссылки@sec-...заменены ссылками на русские разделы; ссылки на главы, части (part_*.md#pri-*) и приложения ведут на русские файлы и якоря. - Формулы, попавшие в обратные кавычки, переведены в обычные; формулы с «кВт·ч» в блоках
$$записаны через\text{кВт}\cdot\text{ч}. - Пункты
- [ ]записаны обычными маркерами: mdBook рисовал рядом с маркером неактивный флажок. - Подписи рисунков, обрезанные конвертером (на
\*и\"), восстановлены из.qmd.
Исправления ошибок исходника
При вычитке найдены неточности английского оригинала. В переводе они исправлены (оригинал в этом репозитории не менялся; стоит сообщить авторам):
- Глава 6, листинг
self_attention_layer: строкаK = matmul(X, W_V)заменена наK = matmul(X, W_K). - Глава 11, пример CPU: «примерно 0 GFLOP/s» (округление значения в TFLOP/s) заменено на около 100 GFLOP/s.
- Глава 11, заблуждение о батче 1 на T4: утверждение «в пределах двукратной разницы с A100» противоречило числам врезки (0,3 против 2,04 TFLOP/s, разница около семи раз); исправлено.
- Глава 14, рисунок на полях
vol1_ml_ops_margin_002.svg: заменен (см. выше). - Приложение «Системные допущения», строка Cerebras WSE-3: «44 000 ГБ SRAM» исправлено на 44 ГБ (в соседнем столбце стоит 44 000 МБ, а точка перехода 5,95 FLOP/байт получена из 21 000 ТБ/с).
- Приложение «Основы данных»: потерявшиеся расчеты разбора «дивергенция KL для обнаружения дрейфа» восстановлены (0,0464; 0,0458 нат; PSI = 0,0922).
- Расчеты врезок (Roofline, очереди, интервал переобучения, размеры KV-кэша, стоимость и углеродный след в главе 15 и др.) пересчитаны; опечатки в числах и единицах исправлены.
Особенности исходника, оставленные как есть
- Глава 9: PPD в одном разделе расшифрован как points per dollar, в другом как performance-per-data; в переводе везде принята расшифровка «производительность на данные (PPD)».
- Глава 12: врезка «Анализ Roofline для вывода BERT» опирается на допущение 85 процентов от пика для батча 32 (автор называет его допущением реализации); пример с MobileNetV2 на EdgeTPU назван иллюстративным.
- Глава 13: окно батчинга в примере ResNet-50 задано для SLO «50 мс p95», в остальных местах речь о p99; примеры Llama 3 сравнивают декодирование на разных ускорителях (A100 и H100).
- Глава 8: оценки стоимости обучения GPT-2 и GPT-4 опираются на внешние источники; они не проверялись.
- Глава 15: в карточке данных MIAP (рисунок
tikz_t05) повторно используются имена узлов TikZ; на вид это не влияет. Термин «conjunctional use» нестандартный, переведен как «сочетание». Число пациентов в исследовании Obermeyer et al. (2019) приведено как в исходнике. - Приложение «Системные допущения»: емкость HBM для B200 в сводной матрице (192 ГБ) и в таблице допущений (180 ГБ) взята из разных паспортов производителя.
Проверки
Из корня репозитория:
python3 scripts/check_books.py: книга проходит.python3 scripts/check_links.py books/intro-ml-systems/src: все относительные ссылки (включая ссылки на якоря и рисунки) ведут на существующие цели.python3 scripts/scale_small_svgs.py books/intro-ml-systems --check: размеры рисунков на полях в порядке.mdbook build books/intro-ml-systems: сборка без ошибок, ошибок KaTeX нет.- В тексте нет смешанных латинско-кириллических слов, буквы «ё» и служебных маркеров конвертера (
{python},{=latex},@sec-,:::). - Книга в каталоге не закоммичена (директория не отслеживается git).