mirror of
https://github.com/harvard-edge/cs249r_book.git
synced 2026-05-06 01:28:35 -05:00
Adds a link to the latest TinyTorch release in the book's website announcement, providing users with direct access to the project.
513 lines
17 KiB
YAML
513 lines
17 KiB
YAML
project:
|
|
type: book
|
|
output-dir: _book
|
|
preview:
|
|
browser: true
|
|
navigate: true
|
|
|
|
website:
|
|
announcement:
|
|
icon: book
|
|
dismissable: true
|
|
position: below-navbar
|
|
content: |
|
|
<div id="banner">
|
|
🎉 <b>Just Announced:</b> <i>Introduction to Machine Learning Systems</i> will be published by <b>MIT Press</b> in 2026!<br>
|
|
💻 Fully open source at <a href="https://mlsysbook.ai">mlsysbook.ai</a><br>
|
|
🗒️ <a href="contents/frontmatter/changelog/changelog.html">View the full changelog</a><br>
|
|
🔥 Latest release: <a href="https://mlsysbook.github.io/tinytorch">TinyTorch</a><br>
|
|
⭐ Help grow the project: <a href="https://github.com/harvard-edge/cs249r_book">Star on GitHub</a>
|
|
</div>
|
|
|
|
book:
|
|
google-analytics:
|
|
tracking-id: "G-M21L0CBCVN"
|
|
anonymize-ip: true
|
|
version: 4
|
|
|
|
comments:
|
|
hypothesis:
|
|
theme: clean
|
|
openSidebar: true
|
|
|
|
search:
|
|
keyboard-shortcut: ["~", "/"]
|
|
location: sidebar
|
|
|
|
navbar:
|
|
banner:
|
|
text: "Welcome to My Website!"
|
|
href: "https://example.com" # Optional link for the banner text
|
|
background-color: "#FF5733" # Optional background color
|
|
text-color: "#FFFFFF" # Optional text color
|
|
pinned: false
|
|
collapse: true
|
|
back-to-top-navigation: true
|
|
favicon: favicon.png
|
|
cover-image: cover-hardcover-book.png
|
|
cover-image-alt: "Cover image."
|
|
|
|
bread-crumbs: true
|
|
|
|
sidebar:
|
|
collapse-level: 1
|
|
border: true
|
|
pinned: false
|
|
search: true
|
|
|
|
page-navigation: true
|
|
title: "Machine Learning Systems"
|
|
subtitle: "Principles and Practices of Engineering Artificially Intelligent Systems"
|
|
|
|
date: today
|
|
date-format: long
|
|
|
|
author:
|
|
name: Vijay Janapa Reddi
|
|
email: vj@eecs.harvard.edu
|
|
url: https://www.google.com/search?q=Vijay+Janapa+Reddi
|
|
affiliations: Harvard University
|
|
corresponding: true
|
|
roles: "Author, editor and curator."
|
|
|
|
abstract: |
|
|
Machine Learning Systems presents a comprehensive approach to understanding and engineering machine learning (ML). While many resources focus on ML algorithms and model architectures, this book serves as a bridge between theoretical foundations and practical engineering. It emphasizes the systems context that engineers need to master when building AI solutions in the real world. The text progresses from foundational concepts to advanced system design, integrating topics such as data engineering, model optimization, hardware-aware training approaches, and inference acceleration strategies. Throughout the book, readers develop a principled understanding of ML systems engineering, learning to reason about system architectures and address critical challenges in areas including security, privacy, and reliability. While ML applications and tools evolve rapidly, the engineering principles for building ML systems remain largely consistent. This book distills these enduring concepts, making it a resource for anyone seeking to build flexible, efficient, and robust ML systems.
|
|
|
|
----
|
|
|
|
🎙 Listen to the **AI Podcast**,
|
|
created using Google's Notebook LM and inspired by insights drawn from our
|
|
[IEEE education viewpoint paper](https://web.eng.fiu.edu/gaquan/Papers/ESWEEK24Papers/CPS-Proceedings/pdfs/CODES-ISSS/563900a043/563900a043.pdf).
|
|
This podcast provides an accessible overview of what this book is all about.
|
|
|
|
|
|
<audio controls>
|
|
<source src="contents/frontmatter/media/notebooklm_podcast_mlsysbookai.mp3" type="audio/mpeg">
|
|
</audio>
|
|
|
|
----
|
|
|
|
repo-url: https://github.com/harvard-edge/cs249r_book
|
|
repo-branch: widget_quiz
|
|
repo-actions: [edit, issue, source]
|
|
downloads: [pdf, epub]
|
|
sharing: [twitter, facebook]
|
|
reader-mode: true
|
|
page-footer:
|
|
left: |
|
|
Written, edited and curated by Prof. Vijay Janapa Reddi (Harvard University)
|
|
right: |
|
|
This book was built with <a href="https://quarto.org/">Quarto</a>.
|
|
|
|
chapters:
|
|
- text: "---"
|
|
- index.qmd
|
|
- contents/frontmatter/foreword.qmd
|
|
- contents/frontmatter/about/about.qmd
|
|
- contents/frontmatter/changelog/changelog.qmd
|
|
- contents/frontmatter/acknowledgements/acknowledgements.qmd
|
|
- text: "---"
|
|
- contents/frontmatter/socratiq/socratiq.qmd
|
|
- text: "---"
|
|
- part: contents/parts/foundations.qmd
|
|
- contents/core/introduction/introduction.qmd
|
|
- contents/core/ml_systems/ml_systems.qmd
|
|
- contents/core/dl_primer/dl_primer.qmd
|
|
- contents/core/dnn_architectures/dnn_architectures.qmd
|
|
- part: contents/parts/design_principles.qmd
|
|
- contents/core/workflow/workflow.qmd
|
|
- contents/core/data_engineering/data_engineering.qmd
|
|
- contents/core/frameworks/frameworks.qmd
|
|
- contents/core/training/training.qmd
|
|
- contents/core/efficient_ai/efficient_ai.qmd
|
|
- contents/core/optimizations/optimizations.qmd
|
|
- contents/core/hw_acceleration/hw_acceleration.qmd
|
|
- contents/core/benchmarking/benchmarking.qmd
|
|
- part: contents/parts/best_practices.qmd
|
|
- contents/core/ops/ops.qmd
|
|
- contents/core/ondevice_learning/ondevice_learning.qmd
|
|
- contents/core/privacy_security/privacy_security.qmd
|
|
- contents/core/responsible_ai/responsible_ai.qmd
|
|
- contents/core/sustainable_ai/sustainable_ai.qmd
|
|
- contents/core/robust_ai/robust_ai.qmd
|
|
- part: contents/parts/impact_outlook.qmd
|
|
- contents/core/ai_for_good/ai_for_good.qmd
|
|
- contents/core/conclusion/conclusion.qmd
|
|
- text: "---"
|
|
- contents/labs/overview.qmd
|
|
- contents/labs/getting_started.qmd
|
|
# - part:
|
|
- contents/labs/arduino/nicla_vision/nicla_vision.qmd
|
|
# chapters:
|
|
- contents/labs/arduino/nicla_vision/setup/setup.qmd
|
|
- contents/labs/arduino/nicla_vision/image_classification/image_classification.qmd
|
|
- contents/labs/arduino/nicla_vision/object_detection/object_detection.qmd
|
|
- contents/labs/arduino/nicla_vision/kws/kws.qmd
|
|
- contents/labs/arduino/nicla_vision/motion_classification/motion_classification.qmd
|
|
# - part:
|
|
- contents/labs/seeed/xiao_esp32s3/xiao_esp32s3.qmd
|
|
# chapters:
|
|
- contents/labs/seeed/xiao_esp32s3/setup/setup.qmd
|
|
- contents/labs/seeed/xiao_esp32s3/image_classification/image_classification.qmd
|
|
- contents/labs/seeed/xiao_esp32s3/object_detection/object_detection.qmd
|
|
- contents/labs/seeed/xiao_esp32s3/kws/kws.qmd
|
|
- contents/labs/seeed/xiao_esp32s3/motion_classification/motion_classification.qmd
|
|
# - part:
|
|
- contents/labs/seeed/grove_vision_ai_v2/grove_vision_ai_v2.qmd
|
|
# chapters:
|
|
- contents/labs/seeed/grove_vision_ai_v2/setup_and_no_code_apps/setup_and_no_code_apps.qmd
|
|
- contents/labs/seeed/grove_vision_ai_v2/image_classification/image_classification.qmd
|
|
- contents/labs/seeed/grove_vision_ai_v2/object_detection/object_detection.qmd
|
|
# - part:
|
|
- contents/labs/raspi/raspi.qmd
|
|
# chapters:
|
|
- contents/labs/raspi/setup/setup.qmd
|
|
- contents/labs/raspi/image_classification/image_classification.qmd
|
|
- contents/labs/raspi/object_detection/object_detection.qmd
|
|
- contents/labs/raspi/llm/llm.qmd
|
|
- contents/labs/raspi/vlm/vlm.qmd
|
|
# - part:
|
|
- contents/labs/shared/shared.qmd
|
|
# chapters:
|
|
- contents/labs/shared/kws_feature_eng/kws_feature_eng.qmd
|
|
- contents/labs/shared/dsp_spectral_features_block/dsp_spectral_features_block.qmd
|
|
# - text: "---"
|
|
# - part: "RESOURCES"
|
|
# chapters:
|
|
- contents/backmatter/resources/phd_survival_guide.qmd
|
|
- text: "---"
|
|
- contents/backmatter/references.qmd
|
|
|
|
# Quiz configuration for the inject_quizzes.lua filter
|
|
quiz-config:
|
|
# Pattern for quiz file discovery in PDF builds
|
|
file-pattern: "*_quizzes.json"
|
|
# Directory to scan for quiz files
|
|
scan-directory: "contents/core"
|
|
# Whether to enable auto-discovery in PDF builds
|
|
auto-discover-pdf: true
|
|
|
|
bibliography:
|
|
- contents/core/introduction/introduction.bib
|
|
- contents/core/ai_for_good/ai_for_good.bib
|
|
- contents/core/benchmarking/benchmarking.bib
|
|
- contents/core/data_engineering/data_engineering.bib
|
|
- contents/core/dl_primer/dl_primer.bib
|
|
- contents/core/dnn_architectures/dnn_architectures.bib
|
|
- contents/core/efficient_ai/efficient_ai.bib
|
|
- contents/core/ml_systems/ml_systems.bib
|
|
- contents/core/frameworks/frameworks.bib
|
|
- contents/core/hw_acceleration/hw_acceleration.bib
|
|
- contents/core/ondevice_learning/ondevice_learning.bib
|
|
- contents/core/ops/ops.bib
|
|
- contents/core/optimizations/optimizations.bib
|
|
- contents/core/privacy_security/privacy_security.bib
|
|
- contents/core/responsible_ai/responsible_ai.bib
|
|
- contents/core/robust_ai/robust_ai.bib
|
|
- contents/core/sustainable_ai/sustainable_ai.bib
|
|
- contents/core/training/training.bib
|
|
- contents/core/workflow/workflow.bib
|
|
- contents/core/conclusion/conclusion.bib
|
|
|
|
comments:
|
|
giscus:
|
|
repo: harvard-edge/cs249r_book
|
|
|
|
crossref:
|
|
appendix-title: "Appendix"
|
|
appendix-delim: ":"
|
|
|
|
custom:
|
|
- kind: float
|
|
key: vid
|
|
latex-env: vid
|
|
reference-prefix: Video
|
|
|
|
citation: true
|
|
|
|
license: CC-BY-NC-SA
|
|
|
|
filters:
|
|
- lua/sidenote.lua
|
|
- lua/inject-partsummary.lua
|
|
- lua/inject_quizzes.lua
|
|
- diagram
|
|
- custom-numbered-blocks
|
|
- lua/margin-connections.lua
|
|
|
|
diagram:
|
|
engine:
|
|
dot: true
|
|
mermaid: false
|
|
asymptote: false
|
|
tikz:
|
|
execpath: lualatex
|
|
header-includes:
|
|
- '\usepackage{tikz}'
|
|
- '\usepackage{pgfplots}'
|
|
- '\usepackage{pgf-pie}'
|
|
- '\usepackage{amsmath}'
|
|
- '\usepackage{amssymb}'
|
|
- '\usepackage{xcolor}'
|
|
- '\pgfplotsset{compat=1.9}'
|
|
- '\usepgfplotslibrary{fillbetween}'
|
|
- '\usetikzlibrary{angles}'
|
|
- '\usetikzlibrary{arrows.meta}'
|
|
- '\usetikzlibrary{arrows}'
|
|
- '\usetikzlibrary{backgrounds}'
|
|
- '\usetikzlibrary{bending}'
|
|
- '\usetikzlibrary{calc}'
|
|
- '\usetikzlibrary{fit}'
|
|
- '\usetikzlibrary{intersections}'
|
|
- '\usetikzlibrary{positioning}'
|
|
- '\usetikzlibrary{shapes.geometric}'
|
|
- '\usetikzlibrary{shapes}'
|
|
- '\usetikzlibrary{quotes}'
|
|
- '\usetikzlibrary{decorations.pathmorphing}'
|
|
- '\usetikzlibrary{matrix}'
|
|
- '\definecolor{Brown}{rgb}{0.65, 0.16, 0.16}'
|
|
- '\definecolor{BrownL}{rgb}{0.6, 0.4, 0.2}'
|
|
- '\definecolor{BrownLine}{rgb}{0.5, 0.3, 0.1}'
|
|
- '\definecolor{BackColor}{RGB}{255,255,229}'
|
|
- '\definecolor{BackLine}{RGB}{181,181,72}'
|
|
- '\definecolor{BlueD}{RGB}{62,100,125}'
|
|
- '\definecolor{BlueL}{RGB}{209,243,255}'
|
|
- '\definecolor{BlueLine}{RGB}{34,148,189}'
|
|
- '\definecolor{BrownL}{RGB}{233,222,220}'
|
|
- '\definecolor{BrownLine}{RGB}{143,120,116}'
|
|
- '\definecolor{Green}{rgb}{0.0, 0.5, 0.0}'
|
|
- '\definecolor{GreenD}{RGB}{40,117,40}'
|
|
- '\definecolor{GreenL}{RGB}{219,253,166}'
|
|
- '\definecolor{GreenLine}{RGB}{73,89,56}'
|
|
- '\definecolor{OliveL}{RGB}{230,227,191}'
|
|
- '\definecolor{OliveLine}{RGB}{173,166,10}'
|
|
- '\definecolor{OrangeL}{RGB}{250,212,175}'
|
|
- '\definecolor{OrangeLine}{RGB}{255,127,76}'
|
|
- '\definecolor{RedL}{RGB}{253,226,240}'
|
|
- '\definecolor{RedLine}{RGB}{201,20,110}'
|
|
- '\definecolor{Sepia}{rgb}{0.44, 0.26, 0.08}'
|
|
- '\definecolor{TextColor}{RGB}{224,224,224}'
|
|
- '\definecolor{VioletL}{RGB}{247,180,247}'
|
|
- '\definecolor{VioletL2}{RGB}{243,243,255}'
|
|
- '\definecolor{VioletLine}{RGB}{128,0,128}'
|
|
- '\definecolor{VioletLine2}{RGB}{169,136,229}'
|
|
|
|
editor:
|
|
render-on-save: true
|
|
|
|
format:
|
|
html:
|
|
lightbox: true
|
|
mermaid:
|
|
theme: default
|
|
theme:
|
|
light:
|
|
- Litera
|
|
- style.scss
|
|
- style-light.scss
|
|
dark:
|
|
- darkly
|
|
- style.scss
|
|
- style-dark.scss
|
|
|
|
code-block-bg: true
|
|
#code-block-border-left: "#A51C30"
|
|
|
|
table:
|
|
classes: [table-striped, table-hover]
|
|
|
|
language:
|
|
title-block-author-single: "Author, Editor & Curator"
|
|
title-block-published: "Last Updated"
|
|
|
|
reference-location: margin
|
|
citation-location: margin
|
|
sidenote: true #Enable sidenotes for Tufte style
|
|
linkcolor: "#A51C30"
|
|
urlcolor: "#A51C30"
|
|
highlight-style: github
|
|
code-link: true
|
|
link-external-icon: false
|
|
link-external-newwindow: true
|
|
anchor-sections: true
|
|
smooth-scroll: false
|
|
citations-hover: false
|
|
footnotes-hover: false
|
|
fig-width: 7
|
|
fig-height: 5
|
|
number-depth: 3
|
|
toc: true
|
|
toc-depth: 4
|
|
include-in-header:
|
|
text: |
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
|
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M21L0CBCVN"></script>
|
|
<script type="module" src="/scripts/ai_menu/dist/bundle.js" defer></script>
|
|
<script type="module" src="/scripts/ai_menu/dist/sqlite3-opfs-async-proxy-B_ImRJXp.js"></script>
|
|
<script type="module" src="/scripts/ai_menu/dist/sqlite3-worker1-bundler-friendly-CbDNa4by.js"></script>
|
|
<script type="module" src="/scripts/ai_menu/dist/worker-voUF5YDa.js"></script>
|
|
|
|
citeproc: true
|
|
|
|
epub:
|
|
toc: true
|
|
number-sections: true
|
|
epub-cover-image: cover-image-transparent.png
|
|
footnotes-placement: end-of-chapter
|
|
|
|
titlepage-pdf:
|
|
pdf-engine: lualatex
|
|
use-rsvg-convert: true
|
|
|
|
documentclass: scrbook
|
|
classoption: [abstract,titlepage]
|
|
|
|
coverpage: true
|
|
coverpage-title: "Machine Learning Systems"
|
|
coverpage-bg-image: "cover-image-transparent.png"
|
|
coverpage-author: ["Vijay", "Janapa Reddi"]
|
|
coverpage-footer: "Introduction to"
|
|
coverpage-theme:
|
|
page-text-align: "center"
|
|
|
|
bg-image-left: "0.225\\paperwidth"
|
|
bg-image-bottom: 7
|
|
bg-image-rotate: 0
|
|
bg-image-opacity: 1.0
|
|
|
|
author-style: "plain"
|
|
author-sep: "newline"
|
|
author-fontsize: 20
|
|
author-align: "right"
|
|
author-bottom: "0.132\\paperwidth" #0.15
|
|
author-left: 7in
|
|
author-width: 6in
|
|
|
|
header-style: "none"
|
|
date-style: "none"
|
|
|
|
title-fontsize: 57
|
|
title-left: "0.075\\paperwidth"
|
|
title-bottom: "0.31\\paperwidth" #0.35
|
|
title-width: "0.9\\paperwidth"
|
|
|
|
footer-fontsize: 25
|
|
footer-left: "0.075\\paperwidth"
|
|
footer-bottom: "0.38\\paperwidth" #0.42
|
|
footer-width: "0.9\\paperwidth"
|
|
footer-align: "left"
|
|
|
|
titlepage: true
|
|
titlepage-theme:
|
|
elements: [ "\\titleblock",
|
|
"Prof. Vijay Janapa Reddi",
|
|
"School of Engineering and Applied Sciences",
|
|
"Harvard University",
|
|
"\\vspace{80mm}",
|
|
"With heartfelt gratitude to the community for their invaluable contributions and steadfast support.",
|
|
"\\vfill",
|
|
"{{< meta date >}}",
|
|
"\\vfill"]
|
|
date: "today"
|
|
date-format: long
|
|
|
|
page-align: "left"
|
|
title-style: "plain"
|
|
title-fontstyle: ["huge", "bfseries"]
|
|
title-space-after: "4\\baselineskip"
|
|
title-subtitle-space-between: "0.05\\textheight"
|
|
subtitle-fontstyle: ["large", "textit"]
|
|
author-style: "superscript-with-and"
|
|
author-fontstyle: "large"
|
|
affiliation-style: "numbered-list-with-correspondence"
|
|
affiliation-fontstyle: "large"
|
|
affiliation-space-after: "0pt"
|
|
footer-style: "plain"
|
|
footer-fontstyle: "large"
|
|
logo-size: "0.15\\textheight"
|
|
logo-space-after: "1\\baselineskip"
|
|
vrule-width: "2pt"
|
|
vrule-align: "left"
|
|
vrule-color: "black"
|
|
|
|
toc: true
|
|
lof: false
|
|
lot: false
|
|
top-level-division: chapter
|
|
number-sections: true
|
|
toc-depth: 4
|
|
number-depth: 3
|
|
keep-tex: true
|
|
citation-package: natbib
|
|
link-citations: true
|
|
biblio-title: "References"
|
|
cite-method: citeproc
|
|
title-block-style: none
|
|
indent: 0px
|
|
fontsize: 9pt
|
|
colorlinks: true
|
|
|
|
reference-location: document
|
|
citation-location: block
|
|
|
|
fig-caption: true
|
|
#cap-location: margin
|
|
fig-cap-location: margin
|
|
tbl-cap-location: margin
|
|
tbl-colwidths: auto
|
|
hyperrefoptions:
|
|
- linktoc=all
|
|
- pdfwindowui
|
|
- pdfpagemode=FullScreen
|
|
- pdfpagelayout=TwoPageRight
|
|
include-in-header:
|
|
- file: "tex/header-includes.tex"
|
|
|
|
custom-numbered-blocks:
|
|
groups:
|
|
quiz-question:
|
|
colors: ["E1F3F8", "119EC7"]
|
|
collapse: false
|
|
quiz-answer:
|
|
colors: ["FAEAF1", "980e5a"]
|
|
collapse: true
|
|
resource-slides:
|
|
colors: ["E9F3E3", "55984D"]
|
|
collapse: false
|
|
numbered: false
|
|
resource-videos:
|
|
colors: ["f9f5f0", "8b5e3c"]
|
|
collapse: false
|
|
numbered: false
|
|
resource-exercises:
|
|
colors: ["f7f0fa", "815AA4"]
|
|
collapse: false
|
|
numbered: false
|
|
chapter-connection:
|
|
colors: ["FDF2F7", "ED3237"]
|
|
boxstyle: foldbox.simple
|
|
collapse: false
|
|
numbered: false
|
|
|
|
classes:
|
|
callout-quiz-question:
|
|
label: "Self-Check: Question"
|
|
group: quiz-question
|
|
callout-quiz-answer:
|
|
label: "Self-Check: Answer"
|
|
group: quiz-answer
|
|
callout-resource-slides:
|
|
label: "Slides"
|
|
group: resource-slides
|
|
callout-resource-videos:
|
|
label: "Videos"
|
|
group: resource-videos
|
|
callout-resource-exercises:
|
|
label: "Exercises"
|
|
group: resource-exercises
|
|
callout-chapter-connection:
|
|
label: "Chapter connection"
|
|
group: chapter-connection
|
|
resources:
|
|
- CNAME |