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

Происхождение материалов

Книга переведена из исходного репозитория 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).