Some models are too large to fit in a single GPU’s memory, and some training jobs would take months on one GPU. Distributed training splits the work across many GPUs. This tutorial explores the three main ways to split work and the overhead each one introduces. You should complete the Hello World and LLM Serving tutorials before this one.
Scaling a training job from 1 GPU to 1024 GPUs incurs overhead at every step. Communication, pipeline stalls, and coordination each chip away at theoretical speedup. Understanding where that efficiency goes, and how to recover it, is what separates a well-tuned distributed training job from an expensive waste of cluster time.
By the end of this tutorial you will understand:
How Data Parallelism , Tensor Parallelism , and Pipeline Parallelism decompose work across GPUs
Why synchronization (ring all-reduce) overhead depends on model size and network bandwidth
Why pipeline bubbles reduce effective GPU utilization
How to calculate scaling efficiency for a real cluster
Modern distributed training uses three orthogonal strategies simultaneously:
Data Parallelism (DP)
Batch across GPUs
All-reduce gradients after backward pass
Tensor Parallelism (TP)
Individual matrix ops within a layer
All-gather within each forward/backward
Pipeline Parallelism (PP)
Layer groups across nodes
Pipeline bubble at start/end of batch
The product \(\text{DP} \times \text{TP} \times \text{PP} = \text{total GPUs}\) .
1. Setup
import mlsysim
from mlsysim import DistributedModel
from mlsysim import DistributedModel
# Llama-3.1-70B: the model requires distributed training — too large for a single GPU
model = mlsysim.Models.Llama3_70B
# A research-scale cluster: 32 DGX H100 nodes × 8 GPUs = 256 H100s
# (DGX is NVIDIA's pre-built server containing 8 H100 GPUs connected via NVLink)
cluster = mlsysim.Systems.Clusters.Research_256
print (f"Model: { model. name} ( { model. parameters. to('Gparam' ):.0f} params)" )
print (f"Cluster: { cluster. name} " )
print (f" Nodes: { cluster. count} × { cluster. node. accelerators_per_node} GPUs/node" )
print (f" Total: { cluster. total_accelerators} accelerators" )
print (f" Fabric: { cluster. fabric. name} @ { cluster. fabric. bandwidth. to('GB/s' ):.0f} GB/s/link" )
Model: Llama-3.1-70B (71 gigaparam params)
Cluster: Research Cluster (256 GPUs)
Nodes: 32 × 8 GPUs/node
Total: 256 accelerators
Fabric: 100GbE @ 12 GB / second GB/s/link
2. Visualizing 3D Parallelism
Before working through the numbers, consider how 3D parallelism decomposes a training job across a cluster. Each dimension splits work differently and introduces a different type of overhead:
Data Parallelism (DP=4) — each GPU holds a full model copy and processes 1/4 of the batch. After the backward pass, gradients are synchronized via All-Reduce.
flowchart LR
R1["Replica 1<br/>Batch 1/4"] <-.->|"All-Reduce"| R2["Replica 2<br/>Batch 2/4"]
R2 <-.->|"All-Reduce"| R3["Replica 3<br/>Batch 3/4"]
R3 <-.->|"All-Reduce"| R4["Replica 4<br/>Batch 4/4"]
Data Parallelism: replicate the model, split the batch, synchronize gradients.
Tensor Parallelism (TP=2) — each layer is split across GPUs. Requires fast interconnect (NVLink).
flowchart LR
G1["GPU 0<br/>Left half of each layer"] <-->|"All-Gather<br/>(NVLink)"| G2["GPU 1<br/>Right half of each layer"]
Tensor Parallelism: split each layer across GPUs, communicate via NVLink.
Pipeline Parallelism (PP=4) — model layers are partitioned across stages. Activations flow forward; gradients flow backward.
flowchart LR
S1["Stage 1<br/>Layers 1–20"] --> S2["Stage 2<br/>Layers 21–40"]
S2 --> S3["Stage 3<br/>Layers 41–60"]
S3 --> S4["Stage 4<br/>Layers 61–80"]
Pipeline Parallelism: partition layers across stages, activations flow forward.
The key insight: **DP** uses inter-node bandwidth (network fabric), **TP** uses intra-node bandwidth (NVLink), and **PP** introduces idle time (pipeline bubbles). The optimal configuration balances all three overheads.
---
## 3. Baseline: Pure Data Parallelism
Start with the simplest configuration — no model splitting, just replicate the full model
on every GPU and split the batch. The per-GPU compute time is determined by the same
roofline model you used in the Hello World tutorial. The new element here is **communication
overhead**: after each training step, all GPUs must synchronize their gradients via the
network before the next step can begin.
::: {#e03eb5ad .cell execution_count=3}
``` {.python .cell-code}
solver = DistributedModel()
result_dp = solver.solve(
model=model,
fleet=cluster,
batch_size=256,
precision="fp16",
tp_size=1, # no tensor parallelism
pp_size=1, # no pipeline parallelism
)
node_perf = result_dp.node_profile
print(f"Single-GPU compute time: {node_perf.latency.to('ms'):~.1f}/step")
print(f"DP all-reduce overhead: {result_dp.dp_communication_latency.to('ms'):~.2f}")
print(f"Pipeline bubble: {result_dp.pipeline_bubble_latency.to('ms'):~.2f}")
print(f"")
print(f"Total step latency: {result_dp.step_latency_total.to('ms'):~.1f}")
print(f"Scaling efficiency: {result_dp.scaling_efficiency:.1%}")
print(f"Effective throughput: {result_dp.effective_throughput.magnitude:.0f} samples/s")
print(f"Parallelism: DP={result_dp.parallelism['dp']} TP={result_dp.parallelism['tp']} PP={result_dp.parallelism['pp']}")
Single-GPU compute time: 2429.3 ms/step
DP all-reduce overhead: 3287.98 ms
Pipeline bubble: 0.00 ms
Total step latency: 5717.3 ms
Scaling efficiency: 42.5%
Effective throughput: 45 samples/s
Parallelism: DP=256 TP=1 PP=1
:::
If scaling efficiency is 80%, then your 256-GPU cluster is delivering the equivalent of about 205 fully-utilized GPUs. The other ~51 GPUs worth of compute is being spent on communication overhead. This is the communication tax of distributed training.
The tax is paid in ring all-reduce : after the backward pass, every GPU must synchronize gradients with every other GPU. The time to do this grows with model size and shrinks with network bandwidth.
4. Ring All-Reduce: The Network Tax
The DP all-reduce overhead comes from the ring all-reduce algorithm , which is the standard method for gradient synchronization.
The following sweep shows how fabric bandwidth affects overhead:
from mlsysim import Fleet, NetworkFabric, Systems
fabrics = [
("100GbE" , Systems.Fabrics.Ethernet_100G),
("IB HDR" , Systems.Fabrics.InfiniBand_HDR),
("IB NDR" , Systems.Fabrics.InfiniBand_NDR),
]
print (f" { 'Fabric' :>10} { 'BW (GB/s)' :>10} { 'Comm overhead' :>14} { 'Efficiency' :>11} " )
print ("-" * 52 )
for fab_name, fabric in fabrics:
custom_cluster = Fleet(
name= "Custom" ,
node= Systems.Nodes.DGX_H100,
count= 32 ,
fabric= fabric
)
r = solver.solve(
model= model,
fleet= custom_cluster,
batch_size= 256 ,
precision= "fp16"
)
print (
f" { fab_name:>10} "
f" { fabric. bandwidth. to('GB/s' ): > 10.0 f ~ } "
f" { r. dp_communication_latency. to('ms' ): > 14.2 f ~ } "
f" { r. scaling_efficiency:>11.1%} "
)
Fabric BW (GB/s) Comm overhead Efficiency
----------------------------------------------------
100GbE 12 GB / s 3287.98 ms 42.5%
IB HDR 25 GB / s 1917.43 ms 55.9%
IB NDR 50 GB / s 1233.37 ms 66.3%
Upgrading from 100GbE to InfiniBand NDR roughly doubles the effective inter-node bandwidth. On a model the size of Llama-70B (140 GB of gradients per step in fp16), that difference is significant. For smaller models, it matters less — compute time dominates.
5. Pipeline Parallelism and the Bubble
Pipeline Parallelism splits the model’s layers across multiple nodes. Node 1 runs layers 1–20, node 2 runs layers 21–40, etc. This allows a much larger model to be trained than fits on a single node.
The downside: a pipeline bubble . The first microbatch must flow through all stages before the last stage can start processing the second microbatch. During that startup phase, most GPUs are idle.
print (f" { 'PP stages' :>10} { 'Microbatches' :>13} { 'Bubble %' :>9} { 'Comm (ms)' :>10} { 'Efficiency' :>11} " )
print ("-" * 60 )
for pp_size in [1 , 2 , 4 , 8 ]:
for m in [1 , 4 , 16 ]:
# Only show interesting combinations
if pp_size == 1 and m > 1 :
continue
tp = min (8 , cluster.total_accelerators // (pp_size * 4 ))
r = solver.solve(
model= model,
fleet= cluster,
batch_size= 256 ,
precision= "fp16" ,
tp_size= 1 ,
pp_size= pp_size,
microbatch_count= m
)
bubble_pct = r.bubble_fraction * 100
print (
f" { pp_size:>10} "
f" { m:>13} "
f" { bubble_pct:>9.1f} % "
f" { r. pipeline_bubble_latency. to('ms' ): > 10.1 f ~ } "
f" { r. scaling_efficiency:>11.1%} "
)
PP stages Microbatches Bubble % Comm (ms) Efficiency
------------------------------------------------------------
1 1 0.0% 0.0 ms 42.5%
2 1 50.0% 1325.0 ms 36.9%
2 4 20.0% 530.0 ms 41.5%
2 16 5.9% 155.9 ms 44.1%
4 1 75.0% 2318.4 ms 36.7%
4 4 42.9% 1324.8 ms 41.6%
4 16 15.8% 488.1 ms 46.8%
8 1 87.5% 3477.0 ms 39.3%
8 4 63.6% 2528.7 ms 43.3%
8 16 30.4% 1209.4 ms 50.6%
Increasing the number of microbatches (\(M\) ) reduces the bubble fraction. With \(M = 16\) and \(P = 8\) , the bubble is only \(7/(7+16) ≈ 30\%\) of the pipeline, down from \(88\%\) with \(M = 1\) .
In practice, frameworks like Megatron-LM use interleaved pipeline schedules that further reduce the bubble. But even with the standard 1F1B schedule, choosing \(M \gg P\) is essential.
6. Finding the Optimal Configuration
Now combine all three parallelism strategies and find the configuration that maximizes scaling efficiency for the Research_256 cluster. In practice, 70-80% scaling efficiency on hundreds of GPUs is considered excellent. Below 50% typically signals a suboptimal parallelism configuration or insufficient network bandwidth.
configs = [
# (description, tp, pp, m)
("DP only" , 1 , 1 , 1 ),
("DP + TP=2" , 2 , 1 , 1 ),
("DP + PP=4, M=16" , 1 , 4 , 16 ),
("DP + TP=2 + PP=4, M=16" , 2 , 4 , 16 ),
("DP + TP=8 + PP=4, M=16" , 8 , 4 , 16 ),
]
print (f" { 'Config' :<26} { 'DP' :>4} { 'TP' :>4} { 'PP' :>4} { 'Efficiency' :>11} { 'Throughput' :>14} " )
print ("-" * 72 )
for desc, tp, pp, m in configs:
try :
r = solver.solve(
model= model,
fleet= cluster,
batch_size= 256 ,
precision= "fp16" ,
tp_size= tp,
pp_size= pp,
microbatch_count= m
)
print (
f" { desc:<26} "
f" { r. parallelism['dp' ]:>4} "
f" { r. parallelism['tp' ]:>4} "
f" { r. parallelism['pp' ]:>4} "
f" { r. scaling_efficiency:>11.1%} "
f" { r. effective_throughput. magnitude:>14.1f} "
)
except ValueError as e:
print (f" { desc:<26} { 'INFEASIBLE' :>44} ( { e} )" )
Config DP TP PP Efficiency Throughput
------------------------------------------------------------------------
DP only 256 1 1 42.5% 44.8
DP + TP=2 128 2 1 62.2% 120.1
DP + PP=4, M=16 64 1 4 46.8% 155.2
DP + TP=2 + PP=4, M=16 32 2 4 66.4% 342.3
DP + TP=8 + PP=4, M=16 8 8 4 83.5% 737.9
Your Turn
Exercise 1: Predict before you observe. For a 256-GPU cluster training Llama-3.1-70B, predict: will DP=256, TP=1, PP=1 have higher or lower scaling efficiency than DP=32, TP=4, PP=2? Write your prediction and reasoning, then run both configurations. Were you right?
Exercise 2: Find the optimal configuration. Sweep all valid 3D parallelism configurations for 256 GPUs (where DP x TP x PP = 256). Which configuration maximizes scaling efficiency? Is it the same for Ethernet 100G vs. InfiniBand NDR? (Hint: valid TP values are divisors of 8, the GPUs per node: 1, 2, 4, 8. For each TP, valid PP values are divisors of 256/TP.)
Exercise 3: The microbatch lever. With PP=8, sweep microbatch count M from 1 to 64. Plot the pipeline bubble fraction vs. M. At what value of M does the bubble fraction drop below 10%? (Use the formula from Section 5: bubble = (P-1)/(P-1+M). Predict the answer analytically before running the sweep.)
Self-check: Why must tensor parallelism (TP) stay within a single node on most clusters? What would happen to communication overhead if TP crossed node boundaries?
What You Learned
3D Parallelism decomposes the training problem across \(\text{DP} \times \text{TP} \times \text{PP}\) GPUs, each with distinct communication costs.
Ring all-reduce is the network tax of data parallelism. It grows with model size and shrinks with fabric bandwidth. Switching from 100GbE to InfiniBand can recover 10-30% efficiency on large models.
Pipeline bubbles waste GPU cycles proportional to \(\frac{P-1}{P-1+M}\) . Use large microbatch counts (\(M \gg P\) ) to minimize waste.
Scaling efficiency below 100% is normal and unavoidable. A well-tuned job at 70-80% efficiency on hundreds of GPUs is excellent. Below 50% signals a configuration problem.
Advanced: Network Topologies
The can model different collective communication algorithms. Use the parameter to compare bandwidth-optimal vs. latency-optimal strategies:
(Default): Bandwidth-optimal. Latency scales linearly with $.
. ├── binder │ ├── postBuild │ └── requirements.txt ├── book │ ├── init .py │ ├── pycache │ │ └── init .cpython-313.pyc │ ├── binder │ ├── cli │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ └── main.cpython-313.pyc │ │ ├── BINDER_NATIVE_AUDIT.md │ │ ├── commands │ │ │ ├── init .py │ │ │ ├── pycache │ │ │ │ ├── init .cpython-313.pyc │ │ │ │ ├── bib.cpython-313.pyc │ │ │ │ ├── build.cpython-313.pyc │ │ │ │ ├── clean.cpython-313.pyc │ │ │ │ ├── debug.cpython-313.pyc │ │ │ │ ├── doctor.cpython-313.pyc │ │ │ │ ├── formatting.cpython-313.pyc │ │ │ │ ├── info.cpython-313.pyc │ │ │ │ ├── maintenance.cpython-313.pyc │ │ │ │ ├── newsletter.cpython-313.pyc │ │ │ │ ├── preview.cpython-313.pyc │ │ │ │ ├── reference_check.cpython-313.pyc │ │ │ │ ├── render.cpython-313.pyc │ │ │ │ └── validate.cpython-313.pyc │ │ │ ├── bib.py │ │ │ ├── build.py │ │ │ ├── clean.py │ │ │ ├── debug.py │ │ │ ├── doctor.py │ │ │ ├── formatting.py │ │ │ ├── info.py │ │ │ ├── maintenance.py │ │ │ ├── newsletter.py │ │ │ ├── preview.py │ │ │ ├── reference_check.py │ │ │ ├── render.py │ │ │ └── validate.py │ │ ├── core │ │ │ ├── init .py │ │ │ ├── pycache │ │ │ │ ├── init .cpython-313.pyc │ │ │ │ ├── config.cpython-313.pyc │ │ │ │ └── discovery.cpython-313.pyc │ │ │ ├── config.py │ │ │ └── discovery.py │ │ ├── formats │ │ │ └── init .py │ │ ├── main.py │ │ ├── README.md │ │ └── utils │ │ └── init .py │ ├── config │ │ ├── dev │ │ ├── linting │ │ └── quarto │ │ └── _publish.yml │ ├── docker │ │ ├── linux │ │ │ ├── Dockerfile │ │ │ ├── README.md │ │ │ └── verify_r_packages.R │ │ └── windows │ │ ├── Dockerfile │ │ ├── install_texlive.ps1 │ │ ├── README.md │ │ └── verify_r_packages.R │ ├── docs │ │ ├── BINDER.md │ │ ├── BUILD.md │ │ ├── CODE_OF_CONDUCT.md │ │ ├── CONTAINER_BUILDS.md │ │ ├── CONTRIBUTING.md │ │ ├── DEVELOPMENT.md │ │ ├── PART_KEY_VALIDATION.md │ │ └── VOLUME_STRUCTURE.md │ ├── quarto │ │ ├── _extensions │ │ │ ├── CUSTOM_EXTENSIONS.md │ │ │ ├── mlsysbook-ext │ │ │ │ ├── custom-numbered-blocks │ │ │ │ │ ├── _extension.yml │ │ │ │ │ ├── custom-numbered-blocks.lua │ │ │ │ │ └── style │ │ │ │ │ ├── foldbox.css │ │ │ │ │ ├── foldbox.lua │ │ │ │ │ └── foldbox.tex │ │ │ │ ├── margin-video │ │ │ │ │ ├── _extension.yml │ │ │ │ │ ├── CHANGELOG.md │ │ │ │ │ ├── margin-video.lua │ │ │ │ │ └── README.md │ │ │ │ └── titlepage │ │ │ │ ├── _author-affiliation-themes.tex │ │ │ │ ├── _coverpage.tex │ │ │ │ ├── _extension.yml │ │ │ │ ├── _header-footer-date-themes.tex │ │ │ │ ├── _title-themes.tex │ │ │ │ ├── _titlepage.tex │ │ │ │ ├── before-body.tex │ │ │ │ ├── coverpage-theme.lua │ │ │ │ ├── fonts │ │ │ │ │ └── qualitype │ │ │ │ │ ├── COPYING-QUALITYPE │ │ │ │ │ ├── doc │ │ │ │ │ │ ├── qualitype-doc.pdf │ │ │ │ │ │ └── qualitype-doc.tex │ │ │ │ │ ├── opentype │ │ │ │ │ │ ├── QTAbbie.otf │ │ │ │ │ │ ├── QTAgateType-Bold.otf │ │ │ │ │ │ ├── QTAgateType-Italic.otf │ │ │ │ │ │ ├── QTAgateType.otf │ │ │ │ │ │ ├── QTAncientOlive-Bold.otf │ │ │ │ │ │ ├── QTAncientOlive.otf │ │ │ │ │ │ ├── QTAntiquePost.otf │ │ │ │ │ │ ├── QTArabian.otf │ │ │ │ │ │ ├── QTArnieB.otf │ │ │ │ │ │ ├── QTArtiston.otf │ │ │ │ │ │ ├── QTAtchen.otf │ │ │ │ │ │ ├── QTAvanti-Italic.otf │ │ │ │ │ │ ├── QTAvanti.otf │ │ │ │ │ │ ├── QTBasker-Bold.otf │ │ │ │ │ │ ├── QTBasker-Italic.otf │ │ │ │ │ │ ├── QTBasker.otf │ │ │ │ │ │ ├── QTBeckman.otf │ │ │ │ │ │ ├── QTBengal-Bold.otf │ │ │ │ │ │ ├── QTBengal.otf │ │ │ │ │ │ ├── QTBlackForest.otf │ │ │ │ │ │ ├── QTBlimpo.otf │ │ │ │ │ │ ├── QTBodini-Bold.otf │ │ │ │ │ │ ├── QTBodini-Italic.otf │ │ │ │ │ │ ├── QTBodini.otf │ │ │ │ │ │ ├── QTBodiniPoster-Italic.otf │ │ │ │ │ │ ├── QTBodiniPoster.otf │ │ │ │ │ │ ├── QTBookmann-Bold.otf │ │ │ │ │ │ ├── QTBookmann-BoldItalic.otf │ │ │ │ │ │ ├── QTBookmann-Italic.otf │ │ │ │ │ │ ├── QTBookmann.otf │ │ │ │ │ │ ├── QTBoulevard.otf │ │ │ │ │ │ ├── QTBrushStroke.otf │ │ │ │ │ │ ├── QTCaligulatype.otf │ │ │ │ │ │ ├── QTCanaithtype.otf │ │ │ │ │ │ ├── QTCascadetype.otf │ │ │ │ │ │ ├── QTCaslan-Bold.otf │ │ │ │ │ │ ├── QTCaslan-BoldItalic.otf │ │ │ │ │ │ ├── QTCaslan-Italic.otf │ │ │ │ │ │ ├── QTCaslan.otf │ │ │ │ │ │ ├── QTCaslanOpen.otf │ │ │ │ │ │ ├── QTCasual.otf │ │ │ │ │ │ ├── QTChanceryType-Bold.otf │ │ │ │ │ │ ├── QTChanceryType-Italic.otf │ │ │ │ │ │ ├── QTChanceryType.otf │ │ │ │ │ │ ├── QTChicagoland.otf │ │ │ │ │ │ ├── QTClaytablet.otf │ │ │ │ │ │ ├── QTCloisteredMonk.otf │ │ │ │ │ │ ├── QTCoronation.otf │ │ │ │ │ │ ├── QTDeuce.otf │ │ │ │ │ │ ├── QTDingBits.otf │ │ │ │ │ │ ├── QTDoghaus.otf │ │ │ │ │ │ ├── QTDoghausHeavy.otf │ │ │ │ │ │ ├── QTDoghausLight.otf │ │ │ │ │ │ ├── QTDublinIrish.otf │ │ │ │ │ │ ├── QTEraType-Bold.otf │ │ │ │ │ │ ├── QTEraType.otf │ │ │ │ │ │ ├── QTEurotype-Bold.otf │ │ │ │ │ │ ├── QTEurotype.otf │ │ │ │ │ │ ├── QTFloraline-Bold.otf │ │ │ │ │ │ ├── QTFloraline.otf │ │ │ │ │ │ ├── QTFlorencia.otf │ │ │ │ │ │ ├── QTFraktur.otf │ │ │ │ │ │ ├── QTFrank.otf │ │ │ │ │ │ ├── QTFrankHeavy.otf │ │ │ │ │ │ ├── QTFrizQuad-Bold.otf │ │ │ │ │ │ ├── QTFrizQuad.otf │ │ │ │ │ │ ├── QTFuture-Italic.otf │ │ │ │ │ │ ├── QTFuture.otf │ │ │ │ │ │ ├── QTFuturePoster.otf │ │ │ │ │ │ ├── QTGaromand-Bold.otf │ │ │ │ │ │ ├── QTGaromand-BoldItalic.otf │ │ │ │ │ │ ├── QTGaromand-Italic.otf │ │ │ │ │ │ ├── QTGaromand.otf │ │ │ │ │ │ ├── QTGhoulFace.otf │ │ │ │ │ │ ├── QTGraphLite.otf │ │ │ │ │ │ ├── QTGraveure-Bold.otf │ │ │ │ │ │ ├── QTGraveure.otf │ │ │ │ │ │ ├── QTGreece.otf │ │ │ │ │ │ ├── QTHandwriting.otf │ │ │ │ │ │ ├── QTHeidelbergType.otf │ │ │ │ │ │ ├── QTHelvet-Black.otf │ │ │ │ │ │ ├── QTHelvet-BoldOutline.otf │ │ │ │ │ │ ├── QTHelvetCnd-Black.otf │ │ │ │ │ │ ├── QTHelvetCnd-Light.otf │ │ │ │ │ │ ├── QTHelvetCnd.otf │ │ │ │ │ │ ├── QTHoboken.otf │ │ │ │ │ │ ├── QTHowardType.otf │ │ │ │ │ │ ├── QTHowardTypeFat.otf │ │ │ │ │ │ ├── QTImpromptu.otf │ │ │ │ │ │ ├── QTJupiter.otf │ │ │ │ │ │ ├── QTKooper-Italic.otf │ │ │ │ │ │ ├── QTKooper.otf │ │ │ │ │ │ ├── QTKorrin-Italic.otf │ │ │ │ │ │ ├── QTKorrin.otf │ │ │ │ │ │ ├── QTKung-Fu.otf │ │ │ │ │ │ ├── QTLautrecType.otf │ │ │ │ │ │ ├── QTLetterGoth-Bold.otf │ │ │ │ │ │ ├── QTLetterGoth-BoldItalic.otf │ │ │ │ │ │ ├── QTLetterGoth-Italic.otf │ │ │ │ │ │ ├── QTLetterGoth.otf │ │ │ │ │ │ ├── QTLinoscroll.otf │ │ │ │ │ │ ├── QTLinostroke.otf │ │ │ │ │ │ ├── QTLondonScroll.otf │ │ │ │ │ │ ├── QTMagicMarker.otf │ │ │ │ │ │ ├── QTMerryScript.otf │ │ │ │ │ │ ├── QTMilitary.otf │ │ │ │ │ │ ├── QTOKCorral-Cnd.otf │ │ │ │ │ │ ├── QTOKCorral-Ext.otf │ │ │ │ │ │ ├── QTOKCorral.otf │ │ │ │ │ │ ├── QTOldGoudy-Bold.otf │ │ │ │ │ │ ├── QTOldGoudy-Italic.otf │ │ │ │ │ │ ├── QTOldGoudy.otf │ │ │ │ │ │ ├── QTOptimum-Bold.otf │ │ │ │ │ │ ├── QTOptimum-BoldItalic.otf │ │ │ │ │ │ ├── QTOptimum-Italic.otf │ │ │ │ │ │ ├── QTOptimum.otf │ │ │ │ │ │ ├── QTPalatine-Bold.otf │ │ │ │ │ │ ├── QTPalatine-Italic.otf │ │ │ │ │ │ ├── QTPalatine.otf │ │ │ │ │ │ ├── QTPandora.otf │ │ │ │ │ │ ├── QTParisFrance.otf │ │ │ │ │ │ ├── QTPeignoir-Lite.otf │ │ │ │ │ │ ├── QTPeignoir.otf │ │ │ │ │ │ ├── QTPiltdown.otf │ │ │ │ │ │ ├── QTPristine-Bold.otf │ │ │ │ │ │ ├── QTPristine-BoldItalic.otf │ │ │ │ │ │ ├── QTPristine-Italic.otf │ │ │ │ │ │ ├── QTPristine.otf │ │ │ │ │ │ ├── QTRobotic2000.otf │ │ │ │ │ │ ├── QTSanDiego.otf │ │ │ │ │ │ ├── QTSchoolCentury-Bold.otf │ │ │ │ │ │ ├── QTSchoolCentury-BoldItalic.otf │ │ │ │ │ │ ├── QTSchoolCentury-Italic.otf │ │ │ │ │ │ ├── QTSchoolCentury.otf │ │ │ │ │ │ ├── QTSlogantype.otf │ │ │ │ │ │ ├── QTSnowCaps.otf │ │ │ │ │ │ ├── QTStoryTimeCaps.otf │ │ │ │ │ │ ├── QTTechtone-Bold.otf │ │ │ │ │ │ ├── QTTechtone-BoldItalic.otf │ │ │ │ │ │ ├── QTTechtone-Italic.otf │ │ │ │ │ │ ├── QTTechtone.otf │ │ │ │ │ │ ├── QTTheatre.otf │ │ │ │ │ │ ├── QTTimeOutline.otf │ │ │ │ │ │ ├── QTTumbleweed.otf │ │ │ │ │ │ ├── QTUSA-Uncial.otf │ │ │ │ │ │ ├── QTVagaRound-Bold.otf │ │ │ │ │ │ ├── QTVagaRound.otf │ │ │ │ │ │ ├── QTWeise-Bold.otf │ │ │ │ │ │ ├── QTWeise-Italic.otf │ │ │ │ │ │ ├── QTWeise.otf │ │ │ │ │ │ └── QTWestEnd.otf │ │ │ │ │ └── README │ │ │ │ ├── images │ │ │ │ │ ├── corner_bg.png │ │ │ │ │ ├── corner-bg.png │ │ │ │ │ ├── logo.png │ │ │ │ │ ├── nmfs_opensci_logo.png │ │ │ │ │ ├── nmfs-opensci-logo.png │ │ │ │ │ ├── otter_bar.jpeg │ │ │ │ │ ├── otter-bar.jpeg │ │ │ │ │ ├── ringed_seal.png │ │ │ │ │ ├── ringed-seal.png │ │ │ │ │ ├── the_great_waveoff_kanagawa.jpeg │ │ │ │ │ └── thegreatwaveoffkanagawa.jpeg │ │ │ │ ├── mathjax.html │ │ │ │ ├── pandoc.tex │ │ │ │ └── titlepage-theme.lua │ │ │ ├── pandoc-ext │ │ │ │ └── diagram │ │ │ │ ├── _extension.yaml │ │ │ │ └── diagram.lua │ │ │ ├── quarto-ext │ │ │ │ └── lightbox │ │ │ │ ├── _extension.yml │ │ │ │ ├── lightbox.css │ │ │ │ ├── lightbox.lua │ │ │ │ └── resources │ │ │ │ ├── css │ │ │ │ │ └── glightbox.min.css │ │ │ │ └── js │ │ │ │ └── glightbox.min.js │ │ │ └── README.md │ │ ├── _quarto.yml -> config/_quarto-html-vol2.yml │ │ ├── _variables.yml │ │ ├── 404.qmd │ │ ├── assets │ │ │ ├── images │ │ │ │ ├── covers │ │ │ │ │ ├── cover_hardcover_book.png │ │ │ │ │ ├── cover_image_title-vol1.png │ │ │ │ │ ├── cover_image_title-vol2.png │ │ │ │ │ ├── cover_image_title.png │ │ │ │ │ ├── cover_image_transparent.png │ │ │ │ │ ├── cover_image_white.png │ │ │ │ │ ├── cover-hardcover-book-vol1.png │ │ │ │ │ ├── cover-hardcover-book-vol2.png │ │ │ │ │ ├── cover-hardcover-book.png │ │ │ │ │ ├── cover-image-transparent-vol1.png │ │ │ │ │ ├── cover-image-transparent-vol2.png │ │ │ │ │ ├── cover-image-transparent.png │ │ │ │ │ ├── cover-image-vol1.png │ │ │ │ │ ├── cover-image-vol2.png │ │ │ │ │ ├── cover-image-white-vol1.png │ │ │ │ │ ├── cover-image-white-vol2.png │ │ │ │ │ ├── cover-image-white.png │ │ │ │ │ └── cover-image.png │ │ │ │ ├── generated │ │ │ │ │ ├── broadcasting_python.png │ │ │ │ │ └── technology_s_curve.png │ │ │ │ └── icons │ │ │ │ ├── callouts │ │ │ │ │ ├── icon_callout_chapter_connection.pdf │ │ │ │ │ ├── icon_callout_chapter_connection.png │ │ │ │ │ ├── icon_callout_chapter_connection.svg │ │ │ │ │ ├── icon_callout_chapter_forward.pdf │ │ │ │ │ ├── icon_callout_chapter_forward.png │ │ │ │ │ ├── icon_callout_chapter_forward.svg │ │ │ │ │ ├── icon_callout_chapter_recall.pdf │ │ │ │ │ ├── icon_callout_chapter_recall.png │ │ │ │ │ ├── icon_callout_chapter_recall.svg │ │ │ │ │ ├── icon_callout_checkpoint.pdf │ │ │ │ │ ├── icon_callout_checkpoint.png │ │ │ │ │ ├── icon_callout_checkpoint.svg │ │ │ │ │ ├── icon_callout_code.pdf │ │ │ │ │ ├── icon_callout_code.png │ │ │ │ │ ├── icon_callout_code.svg │ │ │ │ │ ├── icon_callout_colab.pdf │ │ │ │ │ ├── icon_callout_colab.png │ │ │ │ │ ├── icon_callout_colab.svg │ │ │ │ │ ├── icon_callout_definition.pdf │ │ │ │ │ ├── icon_callout_definition.png │ │ │ │ │ ├── icon_callout_definition.svg │ │ │ │ │ ├── icon_callout_example.pdf │ │ │ │ │ ├── icon_callout_example.png │ │ │ │ │ ├── icon_callout_example.svg │ │ │ │ │ ├── icon_callout_fallacy.pdf │ │ │ │ │ ├── icon_callout_fallacy.png │ │ │ │ │ ├── icon_callout_fallacy.svg │ │ │ │ │ ├── icon_callout_lighthouse.pdf │ │ │ │ │ ├── icon_callout_lighthouse.png │ │ │ │ │ ├── icon_callout_lighthouse.svg │ │ │ │ │ ├── icon_callout_notebook.pdf │ │ │ │ │ ├── icon_callout_notebook.png │ │ │ │ │ ├── icon_callout_notebook.svg │ │ │ │ │ ├── icon_callout_perspective.pdf │ │ │ │ │ ├── icon_callout_perspective.png │ │ │ │ │ ├── icon_callout_perspective.svg │ │ │ │ │ ├── icon_callout_pitfall.pdf │ │ │ │ │ ├── icon_callout_pitfall.png │ │ │ │ │ ├── icon_callout_pitfall.svg │ │ │ │ │ ├── icon_callout_principle.pdf │ │ │ │ │ ├── icon_callout_principle.png │ │ │ │ │ ├── icon_callout_principle.svg │ │ │ │ │ ├── icon_callout_quiz_answer.pdf │ │ │ │ │ ├── icon_callout_quiz_answer.png │ │ │ │ │ ├── icon_callout_quiz_answer.svg │ │ │ │ │ ├── icon_callout_quiz_question.pdf │ │ │ │ │ ├── icon_callout_quiz_question.png │ │ │ │ │ ├── icon_callout_quiz_question.svg │ │ │ │ │ ├── icon_callout_resource_exercises.pdf │ │ │ │ │ ├── icon_callout_resource_exercises.png │ │ │ │ │ ├── icon_callout_resource_exercises.svg │ │ │ │ │ ├── icon_callout_resource_slides.pdf │ │ │ │ │ ├── icon_callout_resource_slides.png │ │ │ │ │ ├── icon_callout_resource_slides.svg │ │ │ │ │ ├── icon_callout_resource_videos.pdf │ │ │ │ │ ├── icon_callout_resource_videos.png │ │ │ │ │ ├── icon_callout_resource_videos.svg │ │ │ │ │ ├── icon_callout_takeaways.pdf │ │ │ │ │ ├── icon_callout_takeaways.png │ │ │ │ │ ├── icon_callout_takeaways.svg │ │ │ │ │ ├── icon_callout_theorem.pdf │ │ │ │ │ ├── icon_callout_theorem.png │ │ │ │ │ ├── icon_callout_theorem.svg │ │ │ │ │ ├── icon_callout_war_story.pdf │ │ │ │ │ ├── icon_callout_war_story.png │ │ │ │ │ └── icon_callout_war_story.svg │ │ │ │ └── favicon.png │ │ │ ├── media │ │ │ │ └── notebooklm_podcast_mlsysbookai.mp3 │ │ │ ├── preview_plots │ │ │ │ ├── compilation_continuum_fixed.png │ │ │ │ ├── compilation_continuum.png │ │ │ │ └── training_roofline_fixed.png │ │ │ ├── scripts │ │ │ │ ├── sidebar-auto-collapse.js │ │ │ │ ├── subscribe-modal.js │ │ │ │ └── version-link.js │ │ │ └── styles │ │ │ ├── _base-styles.scss │ │ │ ├── _dark-mode-base.scss │ │ │ ├── custom-code.theme │ │ │ ├── dark-mode-vol1.scss │ │ │ ├── dark-mode-vol2.scss │ │ │ ├── dark-mode.scss │ │ │ ├── epub-vol1.css │ │ │ ├── epub-vol2.css │ │ │ ├── epub.css │ │ │ ├── README.md │ │ │ ├── style-vol1.scss │ │ │ ├── style-vol2.scss │ │ │ ├── style.scss │ │ │ ├── themes │ │ │ │ ├── _theme-eth.scss │ │ │ │ └── _theme-harvard.scss │ │ │ └── video-enhanced.css │ │ ├── calc │ │ │ └── viz.py │ │ ├── config │ │ │ ├── _quarto-epub-vol1.yml │ │ │ ├── _quarto-epub-vol2.yml │ │ │ ├── _quarto-html-vol1.yml │ │ │ ├── _quarto-html-vol2.yml │ │ │ ├── _quarto-pdf-vol1-copyedit.yml │ │ │ ├── _quarto-pdf-vol1.yml │ │ │ ├── _quarto-pdf-vol2-copyedit.yml │ │ │ ├── _quarto-pdf-vol2.yml │ │ │ └── shared │ │ │ ├── base │ │ │ │ ├── crossref-video.yml │ │ │ │ ├── custom-numbered-blocks.yml │ │ │ │ ├── diagram.yml │ │ │ │ └── execute-env.yml │ │ │ ├── epub │ │ │ │ ├── filter-metadata.yml │ │ │ │ └── filters.yml │ │ │ ├── html │ │ │ │ ├── announcement.yml │ │ │ │ ├── filter-metadata.yml │ │ │ │ ├── filters.yml │ │ │ │ └── footer-common.yml │ │ │ ├── pdf │ │ │ │ ├── build-copyedit-common.yml │ │ │ │ ├── build-production-common.yml │ │ │ │ ├── copyedit-watermark.yml │ │ │ │ ├── custom-numbered-blocks-overrides.yml │ │ │ │ ├── filter-metadata.yml │ │ │ │ ├── filters.yml │ │ │ │ ├── titlepage-pdf-common.yml │ │ │ │ ├── titlepage-pdf-copyedit-common.yml │ │ │ │ └── titlepage-theme-common.yml │ │ │ ├── README.md │ │ │ ├── vol1 │ │ │ │ └── filter-metadata-paths.yml │ │ │ └── vol2 │ │ │ └── filter-metadata-paths.yml │ │ ├── contents │ │ │ ├── backmatter │ │ │ │ ├── glossary │ │ │ │ │ └── README.md │ │ │ │ ├── references.html │ │ │ │ ├── references.qmd │ │ │ │ └── resources │ │ │ │ ├── phd_survival_guide.html │ │ │ │ └── phd_survival_guide.qmd │ │ │ ├── core │ │ │ │ ├── dl_primer │ │ │ │ │ └── images │ │ │ │ └── frameworks │ │ │ │ └── images │ │ │ ├── frontmatter │ │ │ │ ├── about │ │ │ │ │ ├── about.qmd │ │ │ │ │ └── images │ │ │ │ │ └── png │ │ │ │ │ └── bloom_revised_taxonomy.png │ │ │ │ ├── acknowledgements │ │ │ │ │ ├── acknowledgements.qmd │ │ │ │ │ └── images │ │ │ │ │ ├── jpg │ │ │ │ │ │ └── seeedstudio.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── arduino.png │ │ │ │ │ ├── edge-impulse.png │ │ │ │ │ ├── edgeai.png │ │ │ │ │ ├── google.png │ │ │ │ │ ├── harvard_xtension_school.png │ │ │ │ │ ├── harvard-xtension-school.png │ │ │ │ │ ├── hdsi.png │ │ │ │ │ ├── ictp.png │ │ │ │ │ ├── netlify.png │ │ │ │ │ └── nsf.png │ │ │ │ ├── index.qmd │ │ │ │ └── socratiq │ │ │ │ ├── audio │ │ │ │ │ └── socratiq_ai_podcast.mp3 │ │ │ │ ├── images │ │ │ │ │ ├── gif │ │ │ │ │ │ ├── adjust_message_difficulty.gif │ │ │ │ │ │ └── reference.gif │ │ │ │ │ └── png │ │ │ │ │ ├── 1234.png │ │ │ │ │ ├── adjust_message_difficulty.png │ │ │ │ │ ├── badges.png │ │ │ │ │ ├── buttons.png │ │ │ │ │ ├── chat_ask.png │ │ │ │ │ ├── chat_context.png │ │ │ │ │ ├── chat_explanation.png │ │ │ │ │ ├── chat_related.png │ │ │ │ │ ├── dart.png │ │ │ │ │ ├── dashboard.png │ │ │ │ │ ├── download_report.png │ │ │ │ │ ├── interface.png │ │ │ │ │ ├── medal.png │ │ │ │ │ ├── prev_conversations.png │ │ │ │ │ ├── quiz_answers.png │ │ │ │ │ ├── quiz_button.png │ │ │ │ │ ├── quiz_button2.png │ │ │ │ │ ├── quiz_questions.png │ │ │ │ │ ├── reference.png │ │ │ │ │ ├── settings.png │ │ │ │ │ ├── shortcut.png │ │ │ │ │ ├── top_menu.png │ │ │ │ │ └── trophy.png │ │ │ │ └── socratiq.qmd │ │ │ ├── README.md │ │ │ ├── vol1 │ │ │ │ ├── backmatter │ │ │ │ │ ├── appendix_algorithm_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ └── 77813ed05083d0d126ae94b66f96810cbdce3c96.svg │ │ │ │ │ ├── appendix_algorithm.qmd │ │ │ │ │ ├── appendix_assumptions_files │ │ │ │ │ │ └── figure-pdf │ │ │ │ │ ├── appendix_assumptions.qmd │ │ │ │ │ ├── appendix_dam_files │ │ │ │ │ │ └── figure-pdf │ │ │ │ │ ├── appendix_dam.qmd │ │ │ │ │ ├── appendix_data_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── libs │ │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ │ ├── bootstrap-138a6193a3bd40baf1e627da441a4734.min.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ │ ├── quarto-syntax-highlighting-adfb2833bc15652ec5881dc6381ea988.css │ │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ └── d79e1f99c2b6dbc6540b2a1bab22871301ec09b9.svg │ │ │ │ │ ├── appendix_data.qmd │ │ │ │ │ ├── appendix_machine_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── bd24d547947af659f26c903ebbd034ebef46a211.svg │ │ │ │ │ │ ├── f8ccf3af55d3b9fb105ea8f13a86aa8c0f7b570b.svg │ │ │ │ │ │ └── f902463c01ec36a6dbf9bf08c376c1600ec122af.svg │ │ │ │ │ ├── appendix_machine.qmd │ │ │ │ │ ├── glossary │ │ │ │ │ │ ├── glossary.qmd │ │ │ │ │ │ └── vol1_glossary.json │ │ │ │ │ ├── images │ │ │ │ │ │ ├── dam_venn.svg │ │ │ │ │ │ ├── png │ │ │ │ │ │ │ ├── _activities.png │ │ │ │ │ │ │ ├── _dam_venn.png │ │ │ │ │ │ │ └── _hog.png │ │ │ │ │ │ └── svg │ │ │ │ │ │ └── broadcasting_rules.svg │ │ │ │ │ ├── references.bib │ │ │ │ │ └── references.qmd │ │ │ │ ├── benchmarking │ │ │ │ │ ├── benchmarking_concepts.yml │ │ │ │ │ ├── benchmarking_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-16-output-1.pdf │ │ │ │ │ │ │ └── cell-19-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 0e9940eea8fef86e764b93d7fdb3583ee1565cab.svg │ │ │ │ │ │ ├── 1290d981db776567f565cbffb293d3a337effb74.svg │ │ │ │ │ │ ├── 2f27a3d63756a0dd6171e785d4a263e07cf63b4b.svg │ │ │ │ │ │ ├── 5f83d3d48c1ffd616633e3df25a7337bed81aecd.svg │ │ │ │ │ │ ├── 8000f8b9988a956ceb96d6a74a7c9b10cb0b30b9.svg │ │ │ │ │ │ ├── 9be26d8b8f745b832243d8cc55112c4a9ad640e8.svg │ │ │ │ │ │ ├── 9c0e88d715d94ae98fde712a6c06514c913a0afb.svg │ │ │ │ │ │ ├── ad7fcd6fe0debfbbe6f5a6b483a074f4c8a7bc90.svg │ │ │ │ │ │ ├── bd1fa88de3878b7645967da526cba64eb8100a82.svg │ │ │ │ │ │ ├── e55d31a2ba51d5d490a3bbeebd7fdb4c7979b3e5.svg │ │ │ │ │ │ └── f799c6e9a415e12af084450129dfe12a5a7a7461.svg │ │ │ │ │ ├── benchmarking_glossary.json │ │ │ │ │ ├── benchmarking_quizzes.json │ │ │ │ │ ├── benchmarking.qmd │ │ │ │ │ ├── footnote_context_quizzes.json │ │ │ │ │ └── images │ │ │ │ │ └── png │ │ │ │ │ ├── _benchmarking_components.png │ │ │ │ │ ├── _benchmarking_trifecta.png │ │ │ │ │ ├── _coco.png │ │ │ │ │ ├── _datavsmodelai.png │ │ │ │ │ ├── _dynabench.png │ │ │ │ │ ├── _end2end.png │ │ │ │ │ ├── _hardware_lottery.png │ │ │ │ │ ├── _mlperf_perf_trend.png │ │ │ │ │ ├── _mlperf_tiny.png │ │ │ │ │ ├── _mlperf_training_06_12_2024.png │ │ │ │ │ ├── _mlperf_training_06-12-2024.png │ │ │ │ │ ├── _mlperf_training_progress.png │ │ │ │ │ ├── _mlsystems_scale.png │ │ │ │ │ ├── _mnist.png │ │ │ │ │ ├── _model_flops_vs_top_1.png │ │ │ │ │ ├── _power_component_diagram.png │ │ │ │ │ ├── _power_trends.png │ │ │ │ │ ├── _sciml_graph.png │ │ │ │ │ ├── _trainingvsinference.png │ │ │ │ │ ├── _trifecta.png │ │ │ │ │ └── cover_ai_benchmarking.png │ │ │ │ ├── conclusion │ │ │ │ │ ├── conclusion_concepts.yml │ │ │ │ │ ├── conclusion_glossary.json │ │ │ │ │ ├── conclusion_quizzes.json │ │ │ │ │ ├── conclusion.qmd │ │ │ │ │ ├── footnote_context_quizzes.json │ │ │ │ │ └── images │ │ │ │ │ └── png │ │ │ │ │ └── cover_conclusion.png │ │ │ │ ├── data_engineering │ │ │ │ │ ├── data_engineering_concepts.yml │ │ │ │ │ ├── data_engineering_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ └── cell-9-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 41d6b150f8796e24875509f62fcd0d7d35dd2c74.svg │ │ │ │ │ │ ├── 65e1305ec09c9a56d080076e30dcc76b33daa978.svg │ │ │ │ │ │ ├── 6a8fa64035ab8e44313bdb6a0e9c077db6968348.svg │ │ │ │ │ │ ├── 6e9ff77b168ac248c79a530d191e6b8fa31714cd.svg │ │ │ │ │ │ ├── a852e1ab1dbcf10ebcb8356be79059e249241ec7.svg │ │ │ │ │ │ ├── ad8a5c67f9666ef0da036793c2a6ebf28f83cf4a.svg │ │ │ │ │ │ ├── e99fd7087460ee41f866e2c1885708446322fe98.svg │ │ │ │ │ │ └── ecff59fc5f0797ded4b8d4637d9036cc3e85ac9f.svg │ │ │ │ │ ├── data_engineering_glossary.json │ │ │ │ │ ├── data_engineering_quizzes.json │ │ │ │ │ ├── data_engineering.qmd │ │ │ │ │ └── images │ │ │ │ │ ├── jpg │ │ │ │ │ │ ├── _data_engineering_features.jpg │ │ │ │ │ │ ├── _data_governance.jpg │ │ │ │ │ │ ├── _synthetic_data.jpg │ │ │ │ │ │ └── 1914_traffic.jpeg │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _cs249r_labels.png │ │ │ │ │ │ ├── _data_card.png │ │ │ │ │ │ ├── _data_engineering_cascades.png │ │ │ │ │ │ ├── _data_pipeline.png │ │ │ │ │ │ ├── _data_version_ctrl.png │ │ │ │ │ │ ├── _data_versioning.png │ │ │ │ │ │ ├── _datacollection.png │ │ │ │ │ │ ├── _dataset_myopia.png │ │ │ │ │ │ ├── _ds_timespent.png │ │ │ │ │ │ ├── _label_errors_examples_new.png │ │ │ │ │ │ ├── _label_errors_examples.png │ │ │ │ │ │ ├── _label-errors-examples.png │ │ │ │ │ │ ├── cover_data_engineering.png │ │ │ │ │ │ ├── cs249r_labels_new.png │ │ │ │ │ │ ├── data_engineering_kws.png │ │ │ │ │ │ ├── data_engineering_kws2.png │ │ │ │ │ │ ├── kws_spectrogram.png │ │ │ │ │ │ └── label-errors-examples_new.png │ │ │ │ │ └── svg │ │ │ │ │ ├── _kws_multilingual.svg │ │ │ │ │ └── _kws_pipeline.svg │ │ │ │ ├── data_selection │ │ │ │ │ ├── data_selection_concepts.yml │ │ │ │ │ ├── data_selection_files │ │ │ │ │ │ ├── figure-html │ │ │ │ │ │ │ ├── cell-10-output-1.png │ │ │ │ │ │ │ ├── cell-14-output-1.png │ │ │ │ │ │ │ ├── cell-17-output-1.png │ │ │ │ │ │ │ ├── cell-23-output-1.png │ │ │ │ │ │ │ └── cell-24-output-1.png │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-10-output-1.pdf │ │ │ │ │ │ │ ├── cell-12-output-1.pdf │ │ │ │ │ │ │ ├── cell-14-output-1.pdf │ │ │ │ │ │ │ ├── cell-16-output-1.pdf │ │ │ │ │ │ │ ├── cell-17-output-1.pdf │ │ │ │ │ │ │ ├── cell-19-output-1.pdf │ │ │ │ │ │ │ ├── cell-23-output-1.pdf │ │ │ │ │ │ │ ├── cell-24-output-1.pdf │ │ │ │ │ │ │ ├── cell-25-output-1.pdf │ │ │ │ │ │ │ ├── cell-26-output-1.pdf │ │ │ │ │ │ │ ├── cell-27-output-1.pdf │ │ │ │ │ │ │ └── cell-6-output-1.pdf │ │ │ │ │ │ ├── libs │ │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ │ ├── bootstrap-138a6193a3bd40baf1e627da441a4734.min.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ │ ├── quarto-syntax-highlighting-adfb2833bc15652ec5881dc6381ea988.css │ │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 17fe53d78c9e94340e52596b7b87fac69becfbc0.svg │ │ │ │ │ │ ├── a28866c65bfcc4e579e354b24c289688b7e2dcd1.svg │ │ │ │ │ │ └── d0c786e497d6fc9a86731e2db8fbb86bfd7bac7f.svg │ │ │ │ │ ├── data_selection_glossary.json │ │ │ │ │ ├── data_selection_quizzes.json │ │ │ │ │ ├── data_selection_xrefs.json │ │ │ │ │ ├── data_selection.qmd │ │ │ │ │ └── images │ │ │ │ │ └── png │ │ │ │ │ ├── cover_data_efficiency.png │ │ │ │ │ └── running_out_of_data.png │ │ │ │ ├── frameworks │ │ │ │ │ ├── footnote_context_quizzes.json │ │ │ │ │ ├── frameworks_concepts.yml │ │ │ │ │ ├── frameworks_files │ │ │ │ │ │ ├── figure-html │ │ │ │ │ │ │ ├── cell-6-output-1.png │ │ │ │ │ │ │ └── cell-7-output-1.png │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-7-output-1.pdf │ │ │ │ │ │ │ └── cell-8-output-1.pdf │ │ │ │ │ │ ├── libs │ │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ │ ├── bootstrap-138a6193a3bd40baf1e627da441a4734.min.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ │ ├── quarto-syntax-highlighting-adfb2833bc15652ec5881dc6381ea988.css │ │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 192c0bf590065201a107df4f3e5a3745ad474686.svg │ │ │ │ │ │ ├── 46fe18bc2ee17e488a893322e17c73ead8e55057.svg │ │ │ │ │ │ ├── 543ea72d06a67139a40264047afb6bb53699f1c8.svg │ │ │ │ │ │ ├── 5a14326be5b802a50e34197aefbddc65a5cafdec.svg │ │ │ │ │ │ ├── 6605d35fd240e26b95d0109bb0d08dba87ef3b2b.svg │ │ │ │ │ │ ├── 71f08ec6327bbc84d8278bb7009b0a0cc61263e2.svg │ │ │ │ │ │ ├── 880269502cb0736c22e35ade5a0555d018c4dc2b.svg │ │ │ │ │ │ ├── b4a4f5e0e161b773847d17044d7faebdafea420d.svg │ │ │ │ │ │ ├── b5983c66d0c7c1367bdf2bcda65242663e7e960f.svg │ │ │ │ │ │ ├── d5819b7739c1250393e12b3f2304c32c9c03158e.svg │ │ │ │ │ │ └── e5a852fff359702992e7623c7024193cd29116c7.svg │ │ │ │ │ ├── frameworks_glossary.json │ │ │ │ │ ├── frameworks_quizzes.json │ │ │ │ │ ├── frameworks.html │ │ │ │ │ ├── frameworks.qmd │ │ │ │ │ ├── frontiers_quizzes.json │ │ │ │ │ └── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ └── onnx_new.jpg │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _ai_training.png │ │ │ │ │ │ ├── _color_channels_of_image.png │ │ │ │ │ │ ├── _comp_graph_xyz.png │ │ │ │ │ │ ├── _comp_graph.png │ │ │ │ │ │ ├── _core_ops.png │ │ │ │ │ │ ├── _dynamic_graph.png │ │ │ │ │ │ ├── _federated_learning.png │ │ │ │ │ │ ├── _fm_building_blocks.png │ │ │ │ │ │ ├── _hardware_accelerator.png │ │ │ │ │ │ ├── _hw_cmp.png │ │ │ │ │ │ ├── _image6.png │ │ │ │ │ │ ├── _image7.png │ │ │ │ │ │ ├── _image8.png │ │ │ │ │ │ ├── _mlfm_timeline.png │ │ │ │ │ │ ├── _onnx.jpg │ │ │ │ │ │ ├── _overfittingunderfitting.png │ │ │ │ │ │ ├── _precisionrecall.png │ │ │ │ │ │ ├── _static_graph.png │ │ │ │ │ │ ├── _staticvsdynamic.png │ │ │ │ │ │ ├── _sw_cmp.png │ │ │ │ │ │ ├── _tensor_flow_lite_logo.png │ │ │ │ │ │ ├── _tensor_flow_lite_micro_logo.png │ │ │ │ │ │ ├── _tensor_flow_logo.png │ │ │ │ │ │ ├── _tensorflow.png │ │ │ │ │ │ ├── _tensorflowlitelogo.png │ │ │ │ │ │ ├── _tensorflowlitemicrologo.png │ │ │ │ │ │ ├── _tensorflowlogo.png │ │ │ │ │ │ ├── _tensorflowpytorch.png │ │ │ │ │ │ ├── _tensors.png │ │ │ │ │ │ ├── _tf_cmp.png │ │ │ │ │ │ ├── _transferlearning.png │ │ │ │ │ │ ├── ai_training.png.resized │ │ │ │ │ │ ├── cover_ml_frameworks.png │ │ │ │ │ │ └── hardware_accelerator.ai │ │ │ │ │ └── svg │ │ │ │ │ └── _onnx_interop.svg │ │ │ │ ├── frontmatter │ │ │ │ │ ├── about.qmd │ │ │ │ │ ├── acknowledgements.qmd │ │ │ │ │ ├── dedication.qmd │ │ │ │ │ ├── foreword.qmd │ │ │ │ │ └── notation.qmd │ │ │ │ ├── hw_acceleration │ │ │ │ │ ├── hw_acceleration_concepts.yml │ │ │ │ │ ├── hw_acceleration_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-14-output-1.pdf │ │ │ │ │ │ │ ├── cell-15-output-1.pdf │ │ │ │ │ │ │ ├── cell-16-output-1.pdf │ │ │ │ │ │ │ ├── cell-18-output-1.pdf │ │ │ │ │ │ │ ├── cell-3-output-1.pdf │ │ │ │ │ │ │ ├── cell-5-output-1.pdf │ │ │ │ │ │ │ └── cell-6-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 214d036a00daccf8a0d7c89353c972a3834f3bd3.svg │ │ │ │ │ │ ├── 7f79c28f69af30cb3906d6270020d39475e2af72.svg │ │ │ │ │ │ ├── 9190a5db83853b5e6fb237e9dfb5f4a19307608c.svg │ │ │ │ │ │ ├── 9799deaf7fac0109fdea2aca26a43be1ff1c7bf2.svg │ │ │ │ │ │ ├── 9a7102c7e05582e253c5ca9ce4f6d689a598c4b8.svg │ │ │ │ │ │ └── fb4c7d87ac1830857fc1afbcb358889d8f14edcf.svg │ │ │ │ │ ├── hw_acceleration_glossary.json │ │ │ │ │ ├── hw_acceleration_quizzes.json │ │ │ │ │ ├── hw_acceleration.qmd │ │ │ │ │ └── images │ │ │ │ │ ├── _technology_s_curve.png │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _cerebras3specs.png │ │ │ │ │ │ ├── _chiplets.png │ │ │ │ │ │ ├── _int8_tops_nvidia.png │ │ │ │ │ │ ├── _tflite_edge_tpu_perf.png │ │ │ │ │ │ ├── _tpu_pod_perf.png │ │ │ │ │ │ ├── _tpu-pod-perf.png │ │ │ │ │ │ └── cover_ai_hardware.png │ │ │ │ │ └── svg │ │ │ │ │ └── int8_tops.svg │ │ │ │ ├── index_prune_candidates.yml │ │ │ │ ├── index.qmd │ │ │ │ ├── introduction │ │ │ │ │ ├── images │ │ │ │ │ │ ├── gif │ │ │ │ │ │ │ └── _alphafold.gif │ │ │ │ │ │ ├── png │ │ │ │ │ │ │ ├── _21st_computer.png │ │ │ │ │ │ │ ├── _alexnet_arch.png │ │ │ │ │ │ │ ├── _algo_efficiency.png │ │ │ │ │ │ │ ├── _alphafold.png │ │ │ │ │ │ │ ├── _compute_efficiency.png │ │ │ │ │ │ │ ├── _farmbeats.png │ │ │ │ │ │ │ ├── _hidden_debt.png │ │ │ │ │ │ │ ├── _image.png │ │ │ │ │ │ │ ├── _ml_lifecycle_overview.png │ │ │ │ │ │ │ ├── _mlapplications.png │ │ │ │ │ │ │ ├── _mlprojectlifecycle.png │ │ │ │ │ │ │ ├── _running_out_of_data.png │ │ │ │ │ │ │ ├── _triangle.png │ │ │ │ │ │ │ ├── book_pillars.png │ │ │ │ │ │ │ ├── cover_introduction.png │ │ │ │ │ │ │ └── farmbeats.png.resized │ │ │ │ │ │ └── svg │ │ │ │ │ │ └── _system-map.svg │ │ │ │ │ ├── introduction_concepts.yml │ │ │ │ │ ├── introduction_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-12-output-1.pdf │ │ │ │ │ │ │ └── cell-13-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 1a2b1bcf22673243422531a2d66c6f5d48352a16.svg │ │ │ │ │ │ ├── 1c872f01c8419d794ab0d421b4242738661a8d5f.svg │ │ │ │ │ │ ├── 688d13cbbe0bed4c153ba4409e9b5459a9fd5f72.svg │ │ │ │ │ │ ├── 8092379fa37792118da038349b1399b75db51740.svg │ │ │ │ │ │ ├── a7377c068ee7a4544c9d3a4afd635fbac9447811.svg │ │ │ │ │ │ └── f510bf01db0a5ac1029c7afaa34b9a7ddb7935fb.svg │ │ │ │ │ ├── introduction_glossary.json │ │ │ │ │ ├── introduction_quizzes.json │ │ │ │ │ └── introduction.qmd │ │ │ │ ├── ml_ops │ │ │ │ │ ├── images │ │ │ │ │ │ ├── jpg │ │ │ │ │ │ │ └── _mlml_ops_overview_layers.jpeg │ │ │ │ │ │ └── png │ │ │ │ │ │ ├── _cicd_pipelines.png │ │ │ │ │ │ ├── _clinaiml_ops_loml_ops.png │ │ │ │ │ │ ├── _clinaiml_ops.png │ │ │ │ │ │ ├── _data_cascades.png │ │ │ │ │ │ ├── _edge_impulse_dashboard.png │ │ │ │ │ │ ├── _hidden_debt.png │ │ │ │ │ │ ├── _impulse.png │ │ │ │ │ │ ├── _mlml_ops_flow.png │ │ │ │ │ │ ├── _transfer_learning.png │ │ │ │ │ │ └── cover_ml_ops.png │ │ │ │ │ ├── ml_ops_concepts.yml │ │ │ │ │ ├── ml_ops_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-10-output-1.pdf │ │ │ │ │ │ │ └── cell-13-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 152459d2567c0229fa3bd608f063eb3b8c21562b.svg │ │ │ │ │ │ ├── 2b72f3197e39cf865a675e27089671a8913ffd2e.svg │ │ │ │ │ │ ├── 350af8f691a79b7f9de3da51d85d2638edc42b5c.svg │ │ │ │ │ │ ├── 556dfbf5aa6b2e59e704e3c3a8dac7a82571a045.svg │ │ │ │ │ │ ├── 74891bc04692ed256b893e444d40d73c83e9232d.svg │ │ │ │ │ │ ├── 94b758120cd009006b91dd9e843fefa040e5033d.svg │ │ │ │ │ │ ├── 96f950280edc5e92c5b1413892a81535f20eada1.svg │ │ │ │ │ │ ├── 9db7c8e7810e5d1080dec551cdee1ff0e7d4dffe.svg │ │ │ │ │ │ ├── a145741ee75aa73e44a03986ade1f7a93d23b65a.svg │ │ │ │ │ │ └── ec1c6cf365173de408e641414e317ad82da23992.svg │ │ │ │ │ ├── ml_ops_glossary.json │ │ │ │ │ ├── ml_ops_quizzes.json │ │ │ │ │ └── ml_ops.qmd │ │ │ │ ├── ml_systems │ │ │ │ │ ├── footnote_context_quizzes.json │ │ │ │ │ ├── frontiers_quizzes.json │ │ │ │ │ ├── images │ │ │ │ │ │ ├── jpg │ │ │ │ │ │ │ ├── _cloud_mobile_tiny_sizes.jpg │ │ │ │ │ │ │ ├── _edge_ml_iot.jpg │ │ │ │ │ │ │ ├── _microprocessor_vs_microcontroller.jpg │ │ │ │ │ │ │ └── cloud_ml_tpu.jpeg │ │ │ │ │ │ ├── png │ │ │ │ │ │ │ ├── _cloud_edge_tiny.png │ │ │ │ │ │ │ ├── _cloud_ml_tpu.png │ │ │ │ │ │ │ ├── _cloud-edge-tiny.png │ │ │ │ │ │ │ ├── _cloudml.png │ │ │ │ │ │ │ ├── _convergence.png │ │ │ │ │ │ │ ├── _cover_ml_systems_ai.png │ │ │ │ │ │ │ ├── _edgeml.png │ │ │ │ │ │ │ ├── _hybrid.png │ │ │ │ │ │ │ ├── _mlsys_playbook.png │ │ │ │ │ │ │ ├── _op_char.png │ │ │ │ │ │ │ ├── _op_perf_char.png │ │ │ │ │ │ │ ├── _perf_char.png │ │ │ │ │ │ │ ├── _tinyml.png │ │ │ │ │ │ │ ├── _venndiagram.png │ │ │ │ │ │ │ ├── cloud_ml_tpu.png.resized │ │ │ │ │ │ │ ├── cover_ml_systems.png │ │ │ │ │ │ │ └── tiny_ml.png │ │ │ │ │ │ └── svg │ │ │ │ │ │ └── _edge_ml_iot.svg │ │ │ │ │ ├── ml_systems_concepts.yml │ │ │ │ │ ├── ml_systems_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ └── cell-21-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 3b6dd945c9eb4a4a6176cd737664ac30dc0ce12a.svg │ │ │ │ │ │ ├── 5e7b6e5851a635fcbe0705cc3ab021db74107937.svg │ │ │ │ │ │ ├── 61bb4a5427c141be718064430ee89378532aa45a.svg │ │ │ │ │ │ ├── 67a25d7869df66c9878ba4d877c315b44df6825d.svg │ │ │ │ │ │ ├── 7364585493d164e4389d562c803805c96296ded3.svg │ │ │ │ │ │ ├── 80accc40848652700772a8a355e7a4c86e598884.svg │ │ │ │ │ │ ├── 9691786bbf3138df6fa19c2034d763015b21a704.svg │ │ │ │ │ │ ├── c491ee41569a92f002bf915150731598e0d64e26.svg │ │ │ │ │ │ └── ec67dd6b39e48d83fcfdea54980b39868a9dc8c0.svg │ │ │ │ │ ├── ml_systems_glossary.json │ │ │ │ │ ├── ml_systems_quizzes.json │ │ │ │ │ └── ml_systems.qmd │ │ │ │ ├── ml_workflow │ │ │ │ │ ├── images │ │ │ │ │ │ ├── jpg │ │ │ │ │ │ │ └── _ml_life_cycle.jpeg │ │ │ │ │ │ └── png │ │ │ │ │ │ ├── _comparingdlandml.png │ │ │ │ │ │ ├── _eye_dr.png │ │ │ │ │ │ ├── _feedback_loops.png │ │ │ │ │ │ ├── _ml_life_cycle_overview.png │ │ │ │ │ │ ├── cover_ai_ml_workflow.png │ │ │ │ │ │ └── eye-dr.png │ │ │ │ │ ├── ml_workflow_concepts.yml │ │ │ │ │ ├── ml_workflow_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ └── cell-9-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 377bd08d4252fd877976dbb812d1ea9216774cfc.svg │ │ │ │ │ │ ├── 3b022a3ffa6f028fe2c2c3165c292a16a3a9e0ff.svg │ │ │ │ │ │ ├── 72f5a8cfb8da9bdb276bb0f52d88b2e57e64bfe1.svg │ │ │ │ │ │ └── 91158404897ad0071f5a6225dc72babd5022b927.svg │ │ │ │ │ ├── ml_workflow_glossary.json │ │ │ │ │ ├── ml_workflow_quizzes.json │ │ │ │ │ └── ml_workflow.qmd │ │ │ │ ├── model_serving │ │ │ │ │ ├── images │ │ │ │ │ │ └── png │ │ │ │ │ │ ├── _cover_model_serving.png │ │ │ │ │ │ ├── cover_model_serving.png.compressed │ │ │ │ │ │ └── cover_model_serving.png.resized │ │ │ │ │ ├── model_serving_concepts.yml │ │ │ │ │ ├── model_serving_files │ │ │ │ │ │ ├── figure-html │ │ │ │ │ │ │ ├── cell-2-output-1.png │ │ │ │ │ │ │ ├── cell-24-output-1.png │ │ │ │ │ │ │ ├── cell-36-output-1.png │ │ │ │ │ │ │ └── cell-4-output-1.png │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-25-output-1.pdf │ │ │ │ │ │ │ ├── cell-3-output-1.pdf │ │ │ │ │ │ │ ├── cell-37-output-1.pdf │ │ │ │ │ │ │ └── cell-5-output-1.pdf │ │ │ │ │ │ ├── libs │ │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ │ ├── bootstrap-138a6193a3bd40baf1e627da441a4734.min.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ │ ├── quarto-syntax-highlighting-adfb2833bc15652ec5881dc6381ea988.css │ │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 3605741110bbdbdc65c774ef33f3e51361fb8f6f.svg │ │ │ │ │ │ ├── 61a58ad9ff63689d2b400edf3ec33ca9cd53e170.svg │ │ │ │ │ │ └── accf6d9905693d67a8fa72d4f7b649adcd47932b.svg │ │ │ │ │ ├── model_serving_glossary.json │ │ │ │ │ ├── model_serving_quizzes.json │ │ │ │ │ ├── model_serving.qmd │ │ │ │ │ └── serving_concepts.yml │ │ │ │ ├── nn_architectures │ │ │ │ │ ├── images │ │ │ │ │ │ ├── gif │ │ │ │ │ │ │ ├── _attention_kqv_calc.gif │ │ │ │ │ │ │ ├── _attention_kqv_calc.png │ │ │ │ │ │ │ └── _cnn.gif │ │ │ │ │ │ ├── jpg │ │ │ │ │ │ │ ├── _activation_functions3.jpg │ │ │ │ │ │ │ ├── _activation-functions3.jpg │ │ │ │ │ │ │ └── _rnn_unrolled.jpg │ │ │ │ │ │ └── png │ │ │ │ │ │ ├── _allgather.png │ │ │ │ │ │ ├── _attention_kqv_calc.png │ │ │ │ │ │ ├── _attention_viz_mm.png │ │ │ │ │ │ ├── _attention.png │ │ │ │ │ │ ├── _cnn.png │ │ │ │ │ │ ├── _collective_comms.png │ │ │ │ │ │ ├── _mlp_mm.png │ │ │ │ │ │ ├── _rnn.png │ │ │ │ │ │ ├── _transformer.png │ │ │ │ │ │ ├── comm_primitives.png │ │ │ │ │ │ └── cover_dl_arch.png │ │ │ │ │ ├── includes │ │ │ │ │ │ └── zebra_pic.tex │ │ │ │ │ ├── nn_architectures_concepts.yml │ │ │ │ │ ├── nn_architectures_files │ │ │ │ │ │ ├── figure-html │ │ │ │ │ │ │ ├── cell-15-output-1.png │ │ │ │ │ │ │ └── cell-2-output-1.png │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-15-output-1.pdf │ │ │ │ │ │ │ ├── cell-16-output-1.pdf │ │ │ │ │ │ │ ├── cell-2-output-1.pdf │ │ │ │ │ │ │ └── cell-3-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 00d28078c95f0324945a05b54b6eed89ff2acb28.svg │ │ │ │ │ │ ├── 0ac6a22c6278235896e8ca59ca4a0d5274e79296.svg │ │ │ │ │ │ ├── 0f88d09d466d8e0373bbe53f1318aa4872ac0a9f.svg │ │ │ │ │ │ ├── 22d27ff1e2345a8bfa51f2654bc5c0df1460b7fd.svg │ │ │ │ │ │ ├── 34f1ff4eb2e4f04cbfc72069d106a4d9bd7e066d.svg │ │ │ │ │ │ ├── 75a997ac78cdf3af3ce156f5a0a4658ed4340fcd.svg │ │ │ │ │ │ ├── aa3aa170a3acdaf91ddfd26c9ea74821e1dd5a86.svg │ │ │ │ │ │ ├── abca8e73824a54e928a936b6f68c1b4e8f5c8154.svg │ │ │ │ │ │ ├── e0bc7677d6a086da68a8fc6fc213656a2c5783f9.svg │ │ │ │ │ │ ├── e9e7e1c09e6a8880dfe19f7ca56990c0b1b26338.svg │ │ │ │ │ │ ├── f37912dab5a261c6e8c13f31309802396450e3bc.svg │ │ │ │ │ │ └── fb21d280651fd62c2acd81904051608acdd825ef.svg │ │ │ │ │ ├── nn_architectures_glossary.json │ │ │ │ │ ├── nn_architectures_quizzes.json │ │ │ │ │ └── nn_architectures.qmd │ │ │ │ ├── nn_computation │ │ │ │ │ ├── images │ │ │ │ │ │ ├── jpg │ │ │ │ │ │ │ ├── _activation_functions3.jpg │ │ │ │ │ │ │ ├── _activation-functions3.jpg │ │ │ │ │ │ │ ├── _mlp_connection_weights.jpg │ │ │ │ │ │ │ ├── _rnn_unrolled.jpg │ │ │ │ │ │ │ ├── _usps_examples.jpg │ │ │ │ │ │ │ └── usps_examples_new.jpg │ │ │ │ │ │ ├── png │ │ │ │ │ │ │ ├── _ai_dl_progress_nvidia.png │ │ │ │ │ │ │ ├── _attention.png │ │ │ │ │ │ │ ├── _basic_perceptron.png │ │ │ │ │ │ │ ├── _bio_nn2ai_nn.png │ │ │ │ │ │ │ ├── _breakout.png │ │ │ │ │ │ │ ├── _cnn.png │ │ │ │ │ │ │ ├── _cover_nn_primer.png │ │ │ │ │ │ │ ├── _deeplearning.png │ │ │ │ │ │ │ ├── _encoder_decoder.png │ │ │ │ │ │ │ ├── _forward_backward_propagation.png │ │ │ │ │ │ │ ├── _forwardpropagation.png │ │ │ │ │ │ │ ├── _handwritten_digits.png │ │ │ │ │ │ │ ├── _inference_pipeline.png │ │ │ │ │ │ │ ├── _ml_rules.png │ │ │ │ │ │ │ ├── _mlvsdl.png │ │ │ │ │ │ │ ├── _nnlayers.png │ │ │ │ │ │ │ ├── _nonlinear_patterns.png │ │ │ │ │ │ │ ├── _post_processing_flow.png │ │ │ │ │ │ │ ├── _post-processing-flow.png │ │ │ │ │ │ │ ├── _rosenblattperceptron.png │ │ │ │ │ │ │ ├── _topology_28x28.png │ │ │ │ │ │ │ ├── _topology_flatten.png │ │ │ │ │ │ │ ├── _traditional.png │ │ │ │ │ │ │ ├── _training_detailed.png │ │ │ │ │ │ │ ├── _training_overview.png │ │ │ │ │ │ │ ├── _training-detailed.png │ │ │ │ │ │ │ ├── _training-overview.png │ │ │ │ │ │ │ ├── _trends_65d82031.png │ │ │ │ │ │ │ ├── _virtuous_cycle.png │ │ │ │ │ │ │ ├── _virtuous-cycle.png │ │ │ │ │ │ │ ├── activities.png │ │ │ │ │ │ │ ├── cover_nn_computation.png │ │ │ │ │ │ │ ├── cover_nn_computation.png.resized │ │ │ │ │ │ │ └── hog.png │ │ │ │ │ │ └── svg │ │ │ │ │ │ ├── _activity_classification.svg │ │ │ │ │ │ ├── _bio_nn2ai_nn.svg │ │ │ │ │ │ ├── ai_dl_progress.svg │ │ │ │ │ │ └── bio_nn2ai_nn1.svg │ │ │ │ │ ├── nn_computation_concepts.yml │ │ │ │ │ ├── nn_computation_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-4-output-1.pdf │ │ │ │ │ │ │ └── cell-5-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 1196fd0ee3247d29e9fa02bd4363631374330d28.svg │ │ │ │ │ │ ├── 1e782d7a9b0bb9da69e787203623b4a9b19dfbe2.svg │ │ │ │ │ │ ├── 405adc1b803cb0df2d23ec08e869f0a9da1b8a7b.svg │ │ │ │ │ │ ├── 4e0967819143989c29f3c767af7da4db2e7ad402.svg │ │ │ │ │ │ ├── 585ee357c0051ccd3a49fd68e817b3b41b82baf5.svg │ │ │ │ │ │ ├── 5eca2d305973c3f7d7cb8625ebd32d0fb1f04462.svg │ │ │ │ │ │ ├── 61a58ad9ff63689d2b400edf3ec33ca9cd53e170.svg │ │ │ │ │ │ ├── 6bf88beb39bfcc59500dad064f509f4e97f09089.svg │ │ │ │ │ │ ├── 9004e0d7d1da937493720fa09c4076edbf24343b.svg │ │ │ │ │ │ ├── c49938a186f3a0c8f8c46ffad1941121568c024b.svg │ │ │ │ │ │ ├── ce02e74b57fcca71684f81dfcff90b3a29a64707.svg │ │ │ │ │ │ ├── d61e997272cd48b85c2f7e89f6ff4e9f33882d60.svg │ │ │ │ │ │ ├── d6b141623a86e7e4d033950caea8e1143b3bf8de.svg │ │ │ │ │ │ └── d6f43bb442d2e58075980a0f4624905bde33cf6c.svg │ │ │ │ │ ├── nn_computation_glossary.json │ │ │ │ │ ├── nn_computation_quizzes.json │ │ │ │ │ └── nn_computation.qmd │ │ │ │ ├── optimizations │ │ │ │ │ ├── images │ │ │ │ │ │ ├── jpeg │ │ │ │ │ │ │ ├── _color_mapping_9f68f817.jpeg │ │ │ │ │ │ │ └── _color-mapping_9f68f817.jpeg │ │ │ │ │ │ ├── jpg │ │ │ │ │ │ │ ├── _modeloptimization_3float_types.jpeg │ │ │ │ │ │ │ ├── _modeloptimization_channel_layer_pruning.jpeg │ │ │ │ │ │ │ ├── _modeloptimization_color_mappings.jpeg │ │ │ │ │ │ │ ├── _modeloptimization_iterative_pruning.jpeg │ │ │ │ │ │ │ ├── _modeloptimization_oneshot_pruning.jpeg │ │ │ │ │ │ │ ├── _modeloptimization_sprase_matrix.jpeg │ │ │ │ │ │ │ ├── _modeloptimization_winning_ticket.jpeg │ │ │ │ │ │ │ ├── _pruning.jpeg │ │ │ │ │ │ │ └── _quantization.jpeg │ │ │ │ │ │ ├── pdf │ │ │ │ │ │ │ └── _shows-an-example-of-how-a-graph-could-be-optimized-by-the-mapping-toolchain-In-the.pdf │ │ │ │ │ │ ├── png │ │ │ │ │ │ │ ├── _2_4_sparsity_gemm.png │ │ │ │ │ │ │ ├── _block_sparse_gemm.png │ │ │ │ │ │ │ ├── _block-sparse-gemm.png │ │ │ │ │ │ │ ├── _early_exit_architecture.png │ │ │ │ │ │ │ ├── _early-exit-architecture.png │ │ │ │ │ │ │ ├── _efficientnumerics_100x.png │ │ │ │ │ │ │ ├── _efficientnumerics_alexnet.png │ │ │ │ │ │ │ ├── _efficientnumerics_calibrationcopy.png │ │ │ │ │ │ │ ├── _efficientnumerics_edgequant.png │ │ │ │ │ │ │ ├── _efficientnumerics_granularity.png │ │ │ │ │ │ │ ├── _efficientnumerics_horowitz.png │ │ │ │ │ │ │ ├── _efficientnumerics_int8vsfloat.png │ │ │ │ │ │ │ ├── _efficientnumerics_lecturenote.png │ │ │ │ │ │ │ ├── _efficientnumerics_modelsizes.png │ │ │ │ │ │ │ ├── _efficientnumerics_p_t_q_q_a_tsummary.png │ │ │ │ │ │ │ ├── _efficientnumerics_ptq.png │ │ │ │ │ │ │ ├── _efficientnumerics_ptqqa_tsummary.png │ │ │ │ │ │ │ ├── _efficientnumerics_ptqqat.png │ │ │ │ │ │ │ ├── _efficientnumerics_ptqqatsummary.png │ │ │ │ │ │ │ ├── _efficientnumerics_qat.png │ │ │ │ │ │ │ ├── _efficientnumerics_qp1.png │ │ │ │ │ │ │ ├── _efficientnumerics_qp2.png │ │ │ │ │ │ │ ├── _efficientnumerics_reducedmodelsize.png │ │ │ │ │ │ │ ├── _efficientnumerics_symmetry.png │ │ │ │ │ │ │ ├── _efficientnumerics_uniformnonuniform.png │ │ │ │ │ │ │ ├── _efficientnumerics_weightsactivations.png │ │ │ │ │ │ │ ├── _knowledgedistillation.png │ │ │ │ │ │ │ ├── _model_optimization_h_w_n_a_s.png │ │ │ │ │ │ │ ├── _model_optimization_hw_nas.png │ │ │ │ │ │ │ ├── _model_optimization_hw-nas.png │ │ │ │ │ │ │ ├── _modeloptimization_depthwise_separable_convolution.png │ │ │ │ │ │ │ ├── _modeloptimization_graph_optimization.png │ │ │ │ │ │ │ ├── _modeloptimization_h_w_n_a_s.png │ │ │ │ │ │ │ ├── _modeloptimization_hw_nas.png │ │ │ │ │ │ │ ├── _modeloptimization_hw-nas.png │ │ │ │ │ │ │ ├── _modeloptimization_knowledge_distillation.png │ │ │ │ │ │ │ ├── _modeloptimization_lottery_ticket_hypothesis.png │ │ │ │ │ │ │ ├── _modeloptimization_low_rank_matrix_factorization.png │ │ │ │ │ │ │ ├── _modeloptimization_preprocessor.png │ │ │ │ │ │ │ ├── _modeloptimization_pruning_comparison.png │ │ │ │ │ │ │ ├── _modeloptimization_quant_hist.png │ │ │ │ │ │ │ ├── _modeloptimization_sparsity.png │ │ │ │ │ │ │ ├── _modeloptimization_split_nets.png │ │ │ │ │ │ │ ├── _modeloptimization_splitnets.png │ │ │ │ │ │ │ ├── _modeloptimization_structure.png │ │ │ │ │ │ │ ├── _modeloptimization_tensor_decomposition.png │ │ │ │ │ │ │ ├── _modeloptimization_tiny_n_a_s.png │ │ │ │ │ │ │ ├── _modeloptimization_tiny_nas.png │ │ │ │ │ │ │ ├── _modeloptimization_tinynas.png │ │ │ │ │ │ │ ├── _shows_an_example_of_how_a_graph_could_be_optimized_by_the_mapping_toolchain_in_the.png │ │ │ │ │ │ │ ├── _shows-an-example-of-how-a-graph-could-be-optimized-by-the-mapping-toolchain-in-the.png │ │ │ │ │ │ │ ├── _source_opt.png │ │ │ │ │ │ │ ├── _sprase_heat_map_a50fe5a9.png │ │ │ │ │ │ │ ├── _sprase-heat-map_a50fe5a9.png │ │ │ │ │ │ │ ├── _switch_transformer.png │ │ │ │ │ │ │ ├── _switch-transformer.png │ │ │ │ │ │ │ ├── _three_float_types.png │ │ │ │ │ │ │ ├── cover_model_optimizations.png │ │ │ │ │ │ │ └── cover_model_optimizations.png.resized │ │ │ │ │ │ └── svg │ │ │ │ │ │ ├── _activation_histogram.svg │ │ │ │ │ │ ├── _quantization_error.svg │ │ │ │ │ │ ├── kernel_weights.svg │ │ │ │ │ │ └── sparsity_heatmap.svg │ │ │ │ │ ├── model_compression_concepts.yml │ │ │ │ │ ├── model_compression_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ ├── cell-3-output-1.pdf │ │ │ │ │ │ │ └── cell-4-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 097a5642543829709d44bb684ce7285c7e81ba00.svg │ │ │ │ │ │ ├── 12594567a4c43f0c53a0ffe99e4200dac1e0d39f.svg │ │ │ │ │ │ ├── 2416571d856636694172c7d9f7c9d379248dd142.svg │ │ │ │ │ │ ├── 2dd2690a535bf9ea0ac867384d7ff1e0109e1e70.svg │ │ │ │ │ │ ├── 33b82c2c55bd8fc4d55f16cf0056d2bd8be77a60.svg │ │ │ │ │ │ ├── 4000264baf2311c2b61ca0ddd3fcedaa9d047ed3.svg │ │ │ │ │ │ ├── 440404943fb338974476281485ca94ebfbbf34ef.svg │ │ │ │ │ │ ├── 506d2dbc71edabaa6d02638fa04fd2bdc5f69a0d.svg │ │ │ │ │ │ ├── 5f6c92a93cf19eb9bd1a4dfe0ac1cda2fe6b1987.svg │ │ │ │ │ │ ├── 749bc54f08be774e9d2f5d193b273ca464298ed0.svg │ │ │ │ │ │ ├── 78d4d76a0ca24a0a9119ce715de9e66a77944329.svg │ │ │ │ │ │ ├── 83e4d197fa0f39ba6075d773e79cc495461efd0f.svg │ │ │ │ │ │ ├── 858c127d1aaa40c7c9e0f296cd2f26c678954d24.svg │ │ │ │ │ │ ├── 8625c8bbbc3f8607201702689d777cb9b973ab6c.svg │ │ │ │ │ │ ├── 89c118316887869d2f20cd64cacf2bdef56d41d8.svg │ │ │ │ │ │ ├── 8ac206f360f289b450ef2f7d051d197eedcfc31b.svg │ │ │ │ │ │ ├── 8b5682dff49bc4715df9b14d4a3e6ed9c70c325a.svg │ │ │ │ │ │ ├── 8d2e73ba08475c3a5ea5bb7794c1ddbad6cc09d7.svg │ │ │ │ │ │ ├── 8d8ca5f84b74881f635a2f9142ea8774f3c82e7e.svg │ │ │ │ │ │ ├── 9b84cdfe1e94a46cc0ec620879383ff34b7a042e.svg │ │ │ │ │ │ ├── 9c91776f7f998dfe8b8505b64e4d8571b4ffccf4.svg │ │ │ │ │ │ ├── 9d88b3fba2d37f86e43d15acbd18bf16989de696.svg │ │ │ │ │ │ ├── b0dbb236da6776d80afb34df980dd489991d0bb2.svg │ │ │ │ │ │ ├── b90a96a6d4772b4b8898ad11c262e3e7ea987b3d.svg │ │ │ │ │ │ ├── d480986cd8d9c88123802c66b3ff8b2d3d74fa4b.svg │ │ │ │ │ │ ├── dcbd6535b09a28528559354f928838baaae7644b.svg │ │ │ │ │ │ ├── e8679bf680a97bbd7a222b4ec5470ad0a84a7bf4.svg │ │ │ │ │ │ ├── f5e4cae15a1541fefc98d613c31adbf0c104e331.svg │ │ │ │ │ │ └── fc4813524b57d9439c3a0b9101f2c1f2a79382c3.svg │ │ │ │ │ ├── model_compression_glossary.json │ │ │ │ │ ├── model_compression_quizzes.json │ │ │ │ │ └── model_compression.qmd │ │ │ │ ├── parts │ │ │ │ │ ├── build_principles.qmd │ │ │ │ │ ├── deploy_principles.qmd │ │ │ │ │ ├── foundations_principles.qmd │ │ │ │ │ ├── optimize_principles.qmd │ │ │ │ │ └── summaries.yml │ │ │ │ ├── README.md │ │ │ │ ├── responsible_engr │ │ │ │ │ ├── images │ │ │ │ │ │ ├── png │ │ │ │ │ │ │ ├── _fairness_cartoon.png │ │ │ │ │ │ │ ├── _human_centered_ai.png │ │ │ │ │ │ │ ├── _interpretability_model_spectrum.png │ │ │ │ │ │ │ └── cover_responsible_systems.png │ │ │ │ │ │ └── svg │ │ │ │ │ │ ├── _fairness_threshold.svg │ │ │ │ │ │ ├── governance_layers.svg │ │ │ │ │ │ └── interpretability_spectrum.svg │ │ │ │ │ ├── responsible_engr_concepts.yml │ │ │ │ │ ├── responsible_engr_files │ │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ │ └── cell-3-output-1.pdf │ │ │ │ │ │ └── mediabag │ │ │ │ │ │ ├── 1dff84d697503d296604bdf2b6e4377e735c76f7.svg │ │ │ │ │ │ ├── 439ae551f4d955b988cae5c3b5ba56c989b15bfc.svg │ │ │ │ │ │ └── 87f05059f5e3217e075f46d2dc48fa692d9d6403.svg │ │ │ │ │ ├── responsible_engr_glossary.json │ │ │ │ │ ├── responsible_engr_quizzes.json │ │ │ │ │ └── responsible_engr.qmd │ │ │ │ ├── REVIEW_NOTES.md │ │ │ │ ├── STATUS.md │ │ │ │ └── training │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── _activation_functions3.jpg │ │ │ │ │ │ ├── _activation-functions3.jpg │ │ │ │ │ │ └── _galore_memory_breakdown.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── _acc_fpgas.png │ │ │ │ │ ├── _acc_gpus.png │ │ │ │ │ ├── _acc_tpus.png │ │ │ │ │ ├── _acc_wse.png │ │ │ │ │ ├── _act_funcs.png │ │ │ │ │ ├── _act_perf.png │ │ │ │ │ ├── _aitrainingfit.png │ │ │ │ │ ├── _aitrainingnn.png │ │ │ │ │ ├── _aitrainingpara.png │ │ │ │ │ ├── _aitrainingroof.png │ │ │ │ │ ├── _aitrainingsgd.png │ │ │ │ │ ├── _fits.png │ │ │ │ │ ├── _graph.png │ │ │ │ │ ├── _training_parallelism_choices.png │ │ │ │ │ ├── cover_ai_training.png │ │ │ │ │ ├── cover_ai_training.png.resized │ │ │ │ │ └── tf_profiler.png │ │ │ │ ├── training_concepts.yml │ │ │ │ ├── training_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-16-output-1.pdf │ │ │ │ │ │ ├── cell-25-output-1.pdf │ │ │ │ │ │ └── cell-39-output-1.pdf │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 17354575512ebaa4f32e31356f222c598a6fcde5.svg │ │ │ │ │ ├── 2d1c223067bc2f00a776ae8466c5ef29b902237c.svg │ │ │ │ │ ├── 33764a6172ec2ebb5c4fd10ddca356a37e5b3301.svg │ │ │ │ │ ├── 35563a37b9afa45acd068bd925d967953cfbf705.svg │ │ │ │ │ ├── 362b8e6a5c75075458bf810511f467a2826671be.svg │ │ │ │ │ ├── 4228a27c27dc6e0238c792ec7e50c417a9c7edc0.svg │ │ │ │ │ ├── 7bc7f4d5f7032ece58081cba2e3d3fe1c2447b61.svg │ │ │ │ │ ├── 7ff1be757f33eb61c4949b876938e2f6ef622956.svg │ │ │ │ │ ├── a21d1ba31db6e4e720705679c61f74009263419b.svg │ │ │ │ │ ├── af7459537398291f2c822d5f375cec32b8fdff68.svg │ │ │ │ │ ├── c7546960c07305a6f97e9b7938d75e1973fdc654.svg │ │ │ │ │ ├── cb96ea638c70f14bd1177c3087e2505e859b2573.svg │ │ │ │ │ ├── e9ce4261d99dabb777aa59e683d7552b97728d4c.svg │ │ │ │ │ ├── eb693d157f8e55bdf97a0fa6e21f110473c33838.svg │ │ │ │ │ └── ed42a145fdcbe1a69d922ed859aae79e34c3ee36.svg │ │ │ │ ├── training_glossary.json │ │ │ │ ├── training_quizzes.json │ │ │ │ └── training.qmd │ │ │ └── vol2 │ │ │ ├── backmatter │ │ │ │ ├── appendix_assumptions.html │ │ │ │ ├── appendix_assumptions.qmd │ │ │ │ ├── appendix_assumptions.quarto_ipynb │ │ │ │ ├── appendix_c3.html │ │ │ │ ├── appendix_c3.qmd │ │ │ │ ├── appendix_c3.quarto_ipynb │ │ │ │ ├── appendix_communication.qmd │ │ │ │ ├── appendix_communication.quarto_ipynb │ │ │ │ ├── appendix_dam.qmd │ │ │ │ ├── appendix_dam.quarto_ipynb │ │ │ │ ├── appendix_fleet.qmd │ │ │ │ ├── appendix_fleet.quarto_ipynb │ │ │ │ ├── appendix_reliability.qmd │ │ │ │ ├── appendix_reliability.quarto_ipynb │ │ │ │ ├── appendix_systems_files │ │ │ │ │ └── mediabag │ │ │ │ │ └── 8073409de2043f88fc13833f33565e0df9b90707.svg │ │ │ │ ├── appendix_systems.qmd │ │ │ │ ├── glossary │ │ │ │ │ ├── glossary.qmd │ │ │ │ │ └── vol2_glossary.json │ │ │ │ ├── images │ │ │ │ │ └── svg │ │ │ │ │ └── _system-map.svg │ │ │ │ ├── references.bib │ │ │ │ └── references.qmd │ │ │ ├── collective_communication │ │ │ │ ├── collective_communication_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-10-output-1.pdf │ │ │ │ │ │ └── cell-3-output-1.pdf │ │ │ │ │ └── mediabag │ │ │ │ │ └── b49a6239f65fdc7e0fbfa0652cfb628d22250d29.svg │ │ │ │ ├── collective_communication.qmd │ │ │ │ ├── collective_communication.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── png │ │ │ │ │ └── cover_communication_ops.png │ │ │ │ └── svg │ │ │ │ ├── collective-primitives-overview.svg │ │ │ │ ├── comm-compute-overlap.svg │ │ │ │ ├── data-movement-hierarchy.svg │ │ │ │ ├── hierarchical-allreduce.svg │ │ │ │ ├── ring-allreduce.svg │ │ │ │ ├── sharp-innetwork.svg │ │ │ │ └── torus-reduction.svg │ │ │ ├── compute_infrastructure │ │ │ │ ├── compute_infrastructure_expanded.qmd │ │ │ │ ├── compute_infrastructure_files │ │ │ │ │ └── figure-pdf │ │ │ │ │ ├── cell-5-output-1.pdf │ │ │ │ │ ├── cell-7-output-1.pdf │ │ │ │ │ └── cell-8-output-1.pdf │ │ │ │ ├── compute_infrastructure.qmd │ │ │ │ ├── compute_infrastructure.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── png │ │ │ │ │ ├── _cover_networking.png │ │ │ │ │ ├── cover_infrastructure.png │ │ │ │ │ ├── cover_infrastructure.png.resized │ │ │ │ │ └── cover_networking.png.resized │ │ │ │ └── svg │ │ │ │ ├── accelerator-spectrum.svg │ │ │ │ ├── bandwidth-hierarchy.svg │ │ │ │ ├── cooling-comparison.svg │ │ │ │ ├── hbm-architecture.svg │ │ │ │ ├── infra-walls.svg │ │ │ │ ├── node-topology-comparison.svg │ │ │ │ ├── pod-network-topology.svg │ │ │ │ ├── power-path.svg │ │ │ │ ├── tco-build-vs-buy.svg │ │ │ │ ├── tensor-core-tiling.svg │ │ │ │ └── wse-architecture.svg │ │ │ ├── conclusion │ │ │ │ ├── conclusion.qmd │ │ │ │ ├── conclusion.quarto_ipynb │ │ │ │ └── images │ │ │ │ └── png │ │ │ │ └── cover_conclusion.png │ │ │ ├── context_notes.html │ │ │ ├── context_notes.md │ │ │ ├── data_storage │ │ │ │ ├── data_storage_files │ │ │ │ │ └── figure-pdf │ │ │ │ │ ├── cell-12-output-1.pdf │ │ │ │ │ └── cell-5-output-1.pdf │ │ │ │ ├── data_storage.qmd │ │ │ │ ├── data_storage.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── png │ │ │ │ │ ├── cover_storage.png │ │ │ │ │ └── cover_storage.png.resized │ │ │ │ └── svg │ │ │ │ ├── bandwidth-cliffs.svg │ │ │ │ ├── checkpoint-staging.svg │ │ │ │ ├── complete-data-path.svg │ │ │ │ ├── data-pipelining.svg │ │ │ │ ├── gds-path.svg │ │ │ │ ├── pfs-architecture.svg │ │ │ │ ├── storage-bandwidth-gap.svg │ │ │ │ ├── storage-hierarchy.svg │ │ │ │ └── storage-throughput.svg │ │ │ ├── distributed_training │ │ │ │ ├── distributed_training_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-14-output-2.pdf │ │ │ │ │ │ └── cell-8-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 214ab479278a9df550e2754cb232d98863ad8f03.svg │ │ │ │ │ ├── 4a138d212330e15adbf93354a70e612313e800a6.svg │ │ │ │ │ ├── 859897edd929d1bd2c25efab16bf6780156c770f.svg │ │ │ │ │ ├── 9a473bbdf745e57794119f268e18006a59f23ef9.svg │ │ │ │ │ ├── a3bfd735ca0696b697f5670e15c1bea7724b2e96.svg │ │ │ │ │ ├── d1ca0a4cea2225dafc1389b1bdf5448ad5970939.svg │ │ │ │ │ ├── d2dcdaba25dad3b1589c3e63d79b33779462d696.svg │ │ │ │ │ └── db59d84c1f73b55ad57beedfa36daac31130329a.svg │ │ │ │ ├── distributed_training.qmd │ │ │ │ ├── distributed_training.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── png │ │ │ │ │ ├── cover_distributed.png │ │ │ │ │ └── cover_distributed.png.resized │ │ │ │ └── svg │ │ │ │ ├── _comm-convergence-tradeoff.svg │ │ │ │ ├── _critical-batch-size.svg │ │ │ │ ├── _data-parallel-pipeline.svg │ │ │ │ ├── _model-parallel-flow.svg │ │ │ │ ├── _parallelism-flowchart.svg │ │ │ │ ├── _pipeline-parallelism.svg │ │ │ │ ├── _zero-partitioning.svg │ │ │ │ ├── 3d-parallelism-cube.svg │ │ │ │ ├── 3d-parallelism.svg │ │ │ │ ├── collective-comm-primitives.svg │ │ │ │ ├── data-parallel-flow.svg │ │ │ │ ├── gradient-sync-topologies.svg │ │ │ │ ├── hybrid-parallelism-topology.svg │ │ │ │ ├── layer-wise-partitioning.svg │ │ │ │ ├── moe-all-to-all-routing.svg │ │ │ │ ├── parallelism-decision-tree.svg │ │ │ │ ├── rlhf-ppo-coordination.svg │ │ │ │ ├── step-time-decomposition.svg │ │ │ │ ├── sync-model-timeline.svg │ │ │ │ ├── tensor-parallel-split.svg │ │ │ │ └── zero-memory-partitioning.svg │ │ │ ├── edge_intelligence │ │ │ │ ├── edge_intelligence_concepts.yml │ │ │ │ ├── edge_intelligence_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-4-output-1.pdf │ │ │ │ │ │ ├── cell-5-output-1.pdf │ │ │ │ │ │ └── cell-9-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 04b45c0f0aca3872645cc4459b9da586f1111923.svg │ │ │ │ │ ├── 09bda5cb9f5d883c5c2a9dea4f2903b89b1186cb.svg │ │ │ │ │ ├── 687c1f1ef5ceb49e0b08c852090de14beef65694.svg │ │ │ │ │ ├── 6b121fb2d607fb7d705fa3d46389a2bc16e16eec.svg │ │ │ │ │ ├── ab8028d72c864da935ea577df9ca50533cf05354.svg │ │ │ │ │ ├── ae05cbb9f11122e54f98a093b4e931b05d4033c9.svg │ │ │ │ │ ├── ae350214362aec716d5b8aaab3bbb9c1c277a424.svg │ │ │ │ │ └── dd09997f717cd80246a06c24b2bbfed980693784.svg │ │ │ │ ├── edge_intelligence_glossary.json │ │ │ │ ├── edge_intelligence_quizzes.json │ │ │ │ ├── edge_intelligence.qmd │ │ │ │ ├── edge_intelligence.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── jpg │ │ │ │ │ └── _pruning.jpeg │ │ │ │ ├── png │ │ │ │ │ ├── _federatedvsoil.png │ │ │ │ │ ├── _ondevice_fed_averaging.png │ │ │ │ │ ├── _ondevice_gboard_approach.png │ │ │ │ │ ├── _ondevice_intro.png │ │ │ │ │ ├── _ondevice_medperf.png │ │ │ │ │ ├── _ondevice_pretraining.png │ │ │ │ │ ├── _ondevice_quantization_matrix.png │ │ │ │ │ ├── _ondevice_split_model.png │ │ │ │ │ ├── _ondevice_training_flow.png │ │ │ │ │ ├── _ondevice_transfer_tinytl.png │ │ │ │ │ ├── _transfer_learning.png │ │ │ │ │ ├── cover_ondevice_learning.png │ │ │ │ │ ├── cover_ondevice_learning.png.resized │ │ │ │ │ ├── ondevice_gboard_example.png │ │ │ │ │ └── ondevice_transfer_learning_apps.png │ │ │ │ └── svg │ │ │ │ ├── _edge-paradigms.svg │ │ │ │ ├── _federated-averaging-cycle.svg │ │ │ │ ├── _learning-paradigms.svg │ │ │ │ ├── _ondevice-pretraining.svg │ │ │ │ ├── _tinytl-architecture.svg │ │ │ │ ├── _tinytl-memory.svg │ │ │ │ ├── adapter-lora-arch.svg │ │ │ │ ├── centralized-vs-decentralized.svg │ │ │ │ ├── edge-mlops-pipeline.svg │ │ │ │ ├── federated-averaging-cycle.svg │ │ │ │ ├── odl-design-flow.svg │ │ │ │ ├── personalization-arch.svg │ │ │ │ └── secure-agg.svg │ │ │ ├── fault_tolerance │ │ │ │ ├── fault_tolerance_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-4-output-1.pdf │ │ │ │ │ │ ├── cell-5-output-1.pdf │ │ │ │ │ │ ├── cell-7-output-1.pdf │ │ │ │ │ │ └── cell-8-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 1540a9fc8a8176bedfc1f1421304ffcfb3408374.svg │ │ │ │ │ ├── 7d9ffc71617f73b213dc3ef9803b129b10014936.svg │ │ │ │ │ ├── 8bb4a561e8f1a63719b4daca5c2eff03d2742799.svg │ │ │ │ │ ├── a553f3b9ef8bcbce1c006b3564d536503738cb21.svg │ │ │ │ │ ├── d333b935bc6bd2e430db02684d55f033d947d0c0.svg │ │ │ │ │ ├── da436042c94abf8e5710acf600473dab8d009ae2.svg │ │ │ │ │ └── f6af1dacc879c79406592827af495633f2db137d.svg │ │ │ │ ├── fault_tolerance.qmd │ │ │ │ ├── fault_tolerance.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── jpg │ │ │ │ │ ├── google_sdc_jeff_dean_anomaly.jpg │ │ │ │ │ └── sdc-google-jeff-dean.jpeg │ │ │ │ ├── png │ │ │ │ │ ├── _cover_inference_at_scale.png │ │ │ │ │ ├── cover_fault_tolerance.png │ │ │ │ │ ├── cover_fault_tolerance.png.resized │ │ │ │ │ ├── cover_inference_at_scale.png.resized │ │ │ │ │ ├── intermittent_fault_dram.png │ │ │ │ │ ├── intermittent_fault.png │ │ │ │ │ ├── permanent_fault.png │ │ │ │ │ ├── tesla_dmr.png │ │ │ │ │ └── transient_fault.png │ │ │ │ └── svg │ │ │ │ ├── _bit-flip.svg │ │ │ │ ├── _checkpoint-tax.svg │ │ │ │ ├── _cicd-pipeline.svg │ │ │ │ ├── _error-masking.svg │ │ │ │ ├── _failure-spectrum.svg │ │ │ │ ├── _hot-spare.svg │ │ │ │ ├── _intermittent-fault.svg │ │ │ │ ├── _parity.svg │ │ │ │ ├── _sdc-controller.svg │ │ │ │ ├── _sdc-propagation.svg │ │ │ │ ├── _stuck-fault.svg │ │ │ │ ├── _tesla-dmr.svg │ │ │ │ ├── _transient-fault.svg │ │ │ │ ├── _young-daly-optimization.svg │ │ │ │ ├── bathtub-curve.svg │ │ │ │ ├── checkpoint-recovery-timeline.svg │ │ │ │ ├── cicd-pipeline.svg │ │ │ │ ├── circuit-breaker.svg │ │ │ │ ├── distributed-checkpoint-architecture.svg │ │ │ │ ├── elastic-flow.svg │ │ │ │ ├── error-masking.svg │ │ │ │ ├── failure-domains.svg │ │ │ │ ├── failure-spectrum.svg │ │ │ │ ├── failure-types.svg │ │ │ │ ├── observability-three-pillars.svg │ │ │ │ ├── recovery-time-decomposition.svg │ │ │ │ ├── serving-redundancy.svg │ │ │ │ ├── tesla-dmr.svg │ │ │ │ └── training-failure-signatures.svg │ │ │ ├── fleet_orchestration │ │ │ │ ├── fleet_orchestration_files │ │ │ │ │ └── figure-pdf │ │ │ │ │ ├── cell-11-output-1.pdf │ │ │ │ │ ├── cell-15-output-1.pdf │ │ │ │ │ ├── cell-7-output-2.pdf │ │ │ │ │ └── cell-9-output-1.pdf │ │ │ │ ├── fleet_orchestration.qmd │ │ │ │ ├── fleet_orchestration.quarto_ipynb │ │ │ │ └── images │ │ │ │ ├── png │ │ │ │ │ ├── cover_orchestration.png │ │ │ │ │ └── cover_orchestration.png.resized │ │ │ │ └── svg │ │ │ │ ├── capacity-reservation.svg │ │ │ │ ├── elastic-training-state-machine.svg │ │ │ │ ├── gang-deadlock.svg │ │ │ │ ├── hierarchical-placement.svg │ │ │ │ ├── inference-autoscaling-loop.svg │ │ │ │ ├── scaling-efficiency-curve.svg │ │ │ │ ├── scheduling-objectives-conflict.svg │ │ │ │ ├── slurm-vs-kubernetes.svg │ │ │ │ ├── topology-hierarchy.svg │ │ │ │ ├── topology-placement.svg │ │ │ │ └── training-serving-diurnal.svg │ │ │ ├── frontmatter │ │ │ │ ├── about.qmd │ │ │ │ ├── acknowledgements.qmd │ │ │ │ ├── dedication.qmd │ │ │ │ ├── foreword.qmd │ │ │ │ └── notation.qmd │ │ │ ├── index.qmd │ │ │ ├── inference │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ ├── cover_inference_at_scale.png │ │ │ │ │ │ └── cover_inference_at_scale.png.resized │ │ │ │ │ └── svg │ │ │ │ │ ├── batch-size-tradeoffs.svg │ │ │ │ │ ├── batching-strategies.svg │ │ │ │ │ ├── continuous-batching.svg │ │ │ │ │ ├── disaggregated-serving.svg │ │ │ │ │ ├── edge-cache-routing.svg │ │ │ │ │ ├── expert-parallel-routing.svg │ │ │ │ │ ├── feature-parallel-pipeline.svg │ │ │ │ │ ├── global-inference-multiregion.svg │ │ │ │ │ ├── kv-cache-fragmentation.svg │ │ │ │ │ ├── pipeline-parallel-routing.svg │ │ │ │ │ ├── queuing-hockey-stick.svg │ │ │ │ │ ├── serving-hierarchy.svg │ │ │ │ │ ├── serving-pipeline.svg │ │ │ │ │ ├── shard-group-scaling.svg │ │ │ │ │ ├── spot-aware-routing.svg │ │ │ │ │ └── tensor-parallel-routing.svg │ │ │ │ ├── inference_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-14-output-1.pdf │ │ │ │ │ │ ├── cell-6-output-1.pdf │ │ │ │ │ │ └── cell-7-output-1.pdf │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 0722c073763d4d3096aa59839be8bfa1d51640e6.svg │ │ │ │ │ ├── 24a8efdd1fc34b32c2a9985d879cfe38821afc7c.svg │ │ │ │ │ ├── 28818bba75e20c68ed724efe6f4dfb92657d2514.svg │ │ │ │ │ ├── 30baa59a18ec3ab751f8e7382ad67bc5b774a1d1.svg │ │ │ │ │ ├── 65c93e87fd502b9c1f681a873a697be571381131.svg │ │ │ │ │ ├── 66a6858d932cc2f1cd0e54821d4d8ee9e4830580.svg │ │ │ │ │ ├── 69d7db826159a6264f26fd61c2634134faee0c32.svg │ │ │ │ │ ├── 6f9aec4bb4b4adbac9b1f0292891bc31df013ddc.svg │ │ │ │ │ ├── 705c8661f6ab2e9dc2bc15cb7bc9907b3c606420.svg │ │ │ │ │ ├── 71cb9174a64991e3e20f1e2d98bae52121595511.svg │ │ │ │ │ ├── 76dabb22f655145874b7ef72e386f716c3bae674.svg │ │ │ │ │ └── b38a09941e6d57d1671b7326bacc4bd942e47ee4.svg │ │ │ │ ├── inference.qmd │ │ │ │ └── inference.quarto_ipynb │ │ │ ├── introduction │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _data_model_loss.png │ │ │ │ │ │ ├── _efficient_data_scaling_regimes.png │ │ │ │ │ │ ├── _moores_law.png │ │ │ │ │ │ ├── _moores-law.png │ │ │ │ │ │ ├── _placeholder.png │ │ │ │ │ │ ├── _three_scaling_laws.png │ │ │ │ │ │ ├── _three-scaling-laws.png │ │ │ │ │ │ ├── compute_optimal.png │ │ │ │ │ │ ├── compute-trends.png │ │ │ │ │ │ ├── cover_introduction.png │ │ │ │ │ │ └── kaplan_scaling_data_compute.png │ │ │ │ │ └── svg │ │ │ │ │ ├── _ai-triad.svg │ │ │ │ │ ├── _c3-taxonomy.svg │ │ │ │ │ ├── _fleet-stack.svg │ │ │ │ │ ├── _roadmap.svg │ │ │ │ │ ├── reliability-gap-collapse.svg │ │ │ │ │ ├── scale-moment-discontinuity.svg │ │ │ │ │ └── traditional-vs-ml-fleet.svg │ │ │ │ ├── introduction_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ └── cell-5-output-1.pdf │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 07bca9b1b2decd74739632d6bbafb69b4a5def74.svg │ │ │ │ │ ├── 0d91c042c56d0a91e66a2672c46fcd2c5b712663.svg │ │ │ │ │ ├── 203ce368e2634b6c13d6b2c94d491be1d836dbe3.svg │ │ │ │ │ ├── 6c7947b514e56281b1378c3c67edd31e805f7d02.svg │ │ │ │ │ ├── a1d511451ff7bc4f49aa522552c8696fce4f3b02.svg │ │ │ │ │ ├── a2743a50d4b4c21c89055de7b2279b50113aa900.svg │ │ │ │ │ ├── d7aff4c11d7e08eef3383a633df4d7c0ed84c458.svg │ │ │ │ │ └── f1703cfdc180416dc2cba0a32be36914b79b8fd1.svg │ │ │ │ ├── introduction.qmd │ │ │ │ └── introduction.quarto_ipynb │ │ │ ├── network_fabrics │ │ │ │ ├── diagram-7ec9ff0b968fcec610fbb58b9d55b3711e7b26f8.pdf │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ └── cover_network_fabrics.png │ │ │ │ │ └── svg │ │ │ │ │ ├── fat-tree-detail.svg │ │ │ │ │ ├── five-level-model.svg │ │ │ │ │ ├── gpudirect-data-path.svg │ │ │ │ │ ├── incast-flow.svg │ │ │ │ │ ├── networking-stacks.svg │ │ │ │ │ ├── pam4-vs-nrz.svg │ │ │ │ │ ├── rail-optimized.svg │ │ │ │ │ └── topology-bandwidth.svg │ │ │ │ ├── network_fabrics_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-4-output-1.pdf │ │ │ │ │ │ └── cell-6-output-1.pdf │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 3d8079cf489f83b7ecdf83f9e5dd4bb1c1cbe652.svg │ │ │ │ │ └── 41abd679bbbf213cf506748464e0801167568536.svg │ │ │ │ ├── network_fabrics.qmd │ │ │ │ └── network_fabrics.quarto_ipynb │ │ │ ├── ops_scale │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ ├── cover_ops_scale.png │ │ │ │ │ │ └── cover_ops_scale.png.resized │ │ │ │ │ └── svg │ │ │ │ │ ├── _ml-cicd.svg │ │ │ │ │ ├── _mlops-maturity.svg │ │ │ │ │ ├── _model-dependency-graph.svg │ │ │ │ │ ├── _shadow-deployment.svg │ │ │ │ │ ├── ecommerce-dependency-graph.svg │ │ │ │ │ ├── ensemble-deployment-pipeline.svg │ │ │ │ │ ├── feature-store-architecture.svg │ │ │ │ │ ├── ml-cicd.svg │ │ │ │ │ ├── mlops-maturity.svg │ │ │ │ │ ├── model-registry.svg │ │ │ │ │ ├── monitoring-pyramid.svg │ │ │ │ │ ├── shadow-deployment.svg │ │ │ │ │ └── time-travel.svg │ │ │ │ ├── ops_scale_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-14-output-1.pdf │ │ │ │ │ │ ├── cell-4-output-1.pdf │ │ │ │ │ │ └── cell-7-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 2ffd1b37601018e9926651271774bd45d3c036a9.svg │ │ │ │ │ ├── 5491e7df04d3fdcf19f984b1146d659a07b2bb8b.svg │ │ │ │ │ ├── 5ec9525e3777e1cdb5d9afd8f1e7c4bed7f4f23e.svg │ │ │ │ │ ├── 86257f4c76d4c9b148ac826611de9e0687d47f26.svg │ │ │ │ │ ├── b3c17dc5ab40b4484959fd2612cec6888aba3998.svg │ │ │ │ │ └── ea6fac37639fb730a5d923a4e1dbe2852604630e.svg │ │ │ │ ├── ops_scale.qmd │ │ │ │ └── ops_scale.quarto_ipynb │ │ │ ├── parts │ │ │ │ ├── deployment_principles.qmd │ │ │ │ ├── distributed_ml_principles.qmd │ │ │ │ ├── fleet_principles.qmd │ │ │ │ ├── responsible_fleet_principles.qmd │ │ │ │ └── summaries.yml │ │ │ ├── performance_engineering │ │ │ │ ├── _shelved_automl_section.qmd │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ ├── cover_optimization.png │ │ │ │ │ │ └── cover_optimization.png.resized │ │ │ │ │ └── svg │ │ │ │ │ ├── _roofline-model.svg │ │ │ │ │ ├── block-quantization.svg │ │ │ │ │ ├── compilation-pipeline.svg │ │ │ │ │ ├── diagnostic-flow.svg │ │ │ │ │ ├── flashattention-tiling.svg │ │ │ │ │ ├── gpu-memory-hierarchy.svg │ │ │ │ │ ├── operator-fusion.svg │ │ │ │ │ ├── optimization-decision-tree.svg │ │ │ │ │ ├── prefill-vs-decode-roofline.svg │ │ │ │ │ └── profiling-hierarchy.svg │ │ │ │ ├── performance_engineering_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-14-output-1.pdf │ │ │ │ │ │ ├── cell-5-output-1.pdf │ │ │ │ │ │ └── cell-9-output-1.pdf │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 8bfa7ea89dccc8c3cf45045e8eec8e0d3b28f076.svg │ │ │ │ │ └── b587aadb531be4dcb62feb03745a8fddd98729ea.svg │ │ │ │ ├── performance_engineering.qmd │ │ │ │ └── performance_engineering.quarto_ipynb │ │ │ ├── README.md │ │ │ ├── responsible_ai │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _adversarial_robustness.png │ │ │ │ │ │ ├── _diffusion_memorization.png │ │ │ │ │ │ ├── _fairness_cartoon.png │ │ │ │ │ │ ├── _human_centered_ai.png │ │ │ │ │ │ ├── _human_compatible_ai.png │ │ │ │ │ │ ├── _interpretability_model_spectrum.png │ │ │ │ │ │ ├── _machine_unlearning.png │ │ │ │ │ │ ├── adversarial_robustness_new.png │ │ │ │ │ │ ├── cover_responsible_ai.png │ │ │ │ │ │ ├── cover_responsible_ai.png.resized │ │ │ │ │ │ ├── diffusion_memorization_new.png │ │ │ │ │ │ ├── diffusion_memorization_new.png.resized │ │ │ │ │ │ └── human_centered_ai.ai │ │ │ │ │ └── svg │ │ │ │ │ ├── _fairness-impossibility.svg │ │ │ │ │ ├── _human-centered-ai.svg │ │ │ │ │ ├── _privacy-flow.svg │ │ │ │ │ ├── _responsible-architecture.svg │ │ │ │ │ ├── _reward-hacking-loop.svg │ │ │ │ │ ├── _unlearning-strategies.svg │ │ │ │ │ ├── bias-loop.svg │ │ │ │ │ ├── fairness-impossibility.svg │ │ │ │ │ ├── monitoring-pipeline.svg │ │ │ │ │ ├── responsible-architecture.svg │ │ │ │ │ └── rlhf-pipeline.svg │ │ │ │ ├── responsible_ai_concepts.yml │ │ │ │ ├── responsible_ai_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ └── cell-4-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 0d0954a59d20e0edd4c2535333a1893c035b9194.svg │ │ │ │ │ ├── 2251b12c1873e9290e7e2b92a536cf22fda13902.svg │ │ │ │ │ ├── 5d70d01f1324a80fa17f906439e1ace7d5593d3a.svg │ │ │ │ │ ├── 7e4491e267fc6d4d2c9f626e32d8d046d40c4336.svg │ │ │ │ │ ├── 8155d26adae1b35567e97a857d8207a6dfd4622f.svg │ │ │ │ │ ├── 8a695db6824170446a62de7a64dbc14d1ad3ede1.svg │ │ │ │ │ ├── b89884cb35172d2ec8854c30df266f6c07ea5726.svg │ │ │ │ │ ├── d0b6bb4802140fa50fb6ec502e028f83e9abf1ee.svg │ │ │ │ │ └── fd9c85eb9627fd727b4cd48fe5e905a4e33cbd5f.svg │ │ │ │ ├── responsible_ai_glossary.json │ │ │ │ ├── responsible_ai_quizzes.json │ │ │ │ ├── responsible_ai.qmd │ │ │ │ └── responsible_ai.quarto_ipynb │ │ │ ├── robust_ai │ │ │ │ ├── footnote_context_quizzes.json │ │ │ │ ├── images │ │ │ │ │ ├── jpg │ │ │ │ │ │ ├── _google_sdc_jeff_dean_anomaly.jpg │ │ │ │ │ │ ├── _mavfi.jpg │ │ │ │ │ │ ├── _sdc_controller_google.jpg │ │ │ │ │ │ ├── _sdc_google_jeff_dean.jpeg │ │ │ │ │ │ ├── sdc-google-jeff-dean.jpeg │ │ │ │ │ │ └── tesla_example.jpg │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _ad.png │ │ │ │ │ │ ├── _adversarial_attack_injection.png │ │ │ │ │ │ ├── _autoencoder.png │ │ │ │ │ │ ├── _ci_cd_procedure.png │ │ │ │ │ │ ├── _distribution_shift_example.png │ │ │ │ │ │ ├── _distribution_shift.png │ │ │ │ │ │ ├── _drift_over_time.png │ │ │ │ │ │ ├── _error_masking.png │ │ │ │ │ │ ├── _google_hot_spares.png │ │ │ │ │ │ ├── _gpu_out_of_memory.png │ │ │ │ │ │ ├── _hardware_errors_bolchini.png │ │ │ │ │ │ ├── _hardware_errors.png │ │ │ │ │ │ ├── _heartbeat.png │ │ │ │ │ │ ├── _image14.png │ │ │ │ │ │ ├── _image15.png │ │ │ │ │ │ ├── _image22.png │ │ │ │ │ │ ├── _image34.png │ │ │ │ │ │ ├── _intermittent_fault_dram.png │ │ │ │ │ │ ├── _intermittent_fault.png │ │ │ │ │ │ ├── _parity.png │ │ │ │ │ │ ├── _permanent_fault.png │ │ │ │ │ │ ├── _phantom_objects.png │ │ │ │ │ │ ├── _poisoning_attack_example.png │ │ │ │ │ │ ├── _reed_solomon.png │ │ │ │ │ │ ├── _reed-solomon.png │ │ │ │ │ │ ├── _sdc_example.png │ │ │ │ │ │ ├── _stuck_fault.png │ │ │ │ │ │ ├── _svm_anomaly.png │ │ │ │ │ │ ├── _temporal_evoltion.png │ │ │ │ │ │ ├── _tesla_dmr.png │ │ │ │ │ │ ├── _transfer_learning.png │ │ │ │ │ │ ├── _transient_fault.png │ │ │ │ │ │ ├── _watchdog.png │ │ │ │ │ │ ├── adversarial_attack_detection.png │ │ │ │ │ │ ├── adversarial_googlenet.png │ │ │ │ │ │ ├── cover_robust_ai.png │ │ │ │ │ │ ├── cover_robust_ai.png.resized │ │ │ │ │ │ ├── data_augmentation.png │ │ │ │ │ │ ├── dirty_label_example.png │ │ │ │ │ │ ├── dirty_label_example.png.compressed │ │ │ │ │ │ ├── gradient_attack.png │ │ │ │ │ │ ├── graffiti.png │ │ │ │ │ │ ├── nasa_example.png │ │ │ │ │ │ ├── poisoning_example.png │ │ │ │ │ │ └── regression_testing.png │ │ │ │ │ └── svg │ │ │ │ │ ├── _adversarial-matrix.svg │ │ │ │ │ ├── _autoencoder.svg │ │ │ │ │ ├── _boundary-shift.svg │ │ │ │ │ ├── _data-augmentation.svg │ │ │ │ │ ├── _gradient-attack.svg │ │ │ │ │ ├── _poisoning-attack.svg │ │ │ │ │ ├── _poisoning-impact.svg │ │ │ │ │ ├── _robustness-pillars.svg │ │ │ │ │ ├── _shift-types.svg │ │ │ │ │ ├── _weight-corruption.svg │ │ │ │ │ ├── accuracy-robustness-tradeoff.svg │ │ │ │ │ ├── autoencoder.svg │ │ │ │ │ ├── boundary-shift.svg │ │ │ │ │ ├── defense-in-depth-pipeline.svg │ │ │ │ │ ├── gradient-attack.svg │ │ │ │ │ ├── robustness-taxonomy.svg │ │ │ │ │ └── shift-types.svg │ │ │ │ ├── robust_ai_concepts.yml │ │ │ │ ├── robust_ai_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ ├── cell-4-output-1.pdf │ │ │ │ │ │ └── cell-8-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 0d8106a3c7ca65302fa306b4b86e5170bc79e78f.svg │ │ │ │ │ ├── 2106df9e0de5e907ea8ab741d33097ba20258cdf.svg │ │ │ │ │ ├── 28a47d4ee9683724ab5a92957c9a5b0ea8c9f644.svg │ │ │ │ │ ├── 51d55b8365e636b470b299db56648588c88cf740.svg │ │ │ │ │ ├── 528e7a9e90bb2b8bc7c4d0ec823eaef132f015d2.svg │ │ │ │ │ ├── 8846a27ee11ac09c4db6e5e539073e14982c6dac.svg │ │ │ │ │ ├── 8b2f5307f822fc453183dc046ff357dbc4b8fa16.svg │ │ │ │ │ ├── ae0e9a0bc2afdbdf7078107b049076dac19aab32.svg │ │ │ │ │ └── bf8b438eb51f12418fd50db6ce058ec48788bbbc.svg │ │ │ │ ├── robust_ai_glossary.json │ │ │ │ ├── robust_ai_quizzes.json │ │ │ │ ├── robust_ai.qmd │ │ │ │ └── robust_ai.quarto_ipynb │ │ │ ├── security_privacy │ │ │ │ ├── images │ │ │ │ │ ├── png │ │ │ │ │ │ ├── _data_poisoning.png │ │ │ │ │ │ ├── _fault_injection_demonstrated_with_assembly_code.png │ │ │ │ │ │ ├── _federated_learning_lifecycle.png │ │ │ │ │ │ ├── _flowchart_of_g_a_ns.png │ │ │ │ │ │ ├── _flowchart_of_ga_ns.png │ │ │ │ │ │ ├── _flowchart_of_gans.png │ │ │ │ │ │ ├── _grandma_role_play_to_bypass_safety_restrictions.png │ │ │ │ │ │ ├── _image11.png │ │ │ │ │ │ ├── _image12.png │ │ │ │ │ │ ├── _llama_unlearning_harry_potter.png │ │ │ │ │ │ ├── _machineunlearning.png │ │ │ │ │ │ ├── _placeholder.png │ │ │ │ │ │ ├── _privacy_accuracy_tradeoff.png │ │ │ │ │ │ ├── _privacy-accuracy_tradeoff.png │ │ │ │ │ │ ├── _reverse_psychology_to_bypass_safety_restrictions.png │ │ │ │ │ │ ├── _secure_boot_flow.png │ │ │ │ │ │ ├── _side_effects_binary.png │ │ │ │ │ │ ├── _side-effects-binary.png │ │ │ │ │ │ ├── _stuxnet.png │ │ │ │ │ │ ├── _system_on_chip_secure_enclave.png │ │ │ │ │ │ ├── _system-on-chip_secure_enclave.png │ │ │ │ │ │ ├── adversarial_nibbler_example.png │ │ │ │ │ │ ├── cover_security_privacy.png │ │ │ │ │ │ ├── cover_security_privacy.png.resized │ │ │ │ │ │ ├── fault-injection_demonstrated_with_assembly_code.png │ │ │ │ │ │ ├── laser_bitflip.png │ │ │ │ │ │ ├── power_analysis_of_an_encryption_device_with_a_correct_password.png │ │ │ │ │ │ ├── power_analysis_of_an_encryption_device_with_a_partially_wrong_password.png │ │ │ │ │ │ ├── power_analysis_of_an_encryption_device_with_a_wrong_password.png │ │ │ │ │ │ ├── puf_basics.png │ │ │ │ │ │ ├── stm32f_board.png │ │ │ │ │ │ └── stop_signs.png │ │ │ │ │ └── svg │ │ │ │ │ ├── _enclave.svg │ │ │ │ │ ├── _laser-bitflip.svg │ │ │ │ │ ├── _membership-inference.svg │ │ │ │ │ ├── _ml-lifecycle-threats.svg │ │ │ │ │ ├── _model-inversion.svg │ │ │ │ │ ├── _model-theft-types.svg │ │ │ │ │ ├── _puf.svg │ │ │ │ │ ├── _secure-aggregation.svg │ │ │ │ │ ├── _secure-boot.svg │ │ │ │ │ ├── _stuxnet.svg │ │ │ │ │ ├── _threat-mitigation-flow.svg │ │ │ │ │ ├── _threat-model.svg │ │ │ │ │ ├── attack-surface-taxonomy.svg │ │ │ │ │ ├── defense-stack.svg │ │ │ │ │ ├── enclave.svg │ │ │ │ │ ├── hw-supply-chain.svg │ │ │ │ │ ├── secure-aggregation.svg │ │ │ │ │ ├── secure-boot.svg │ │ │ │ │ ├── stuxnet.svg │ │ │ │ │ └── threat-prioritization-matrix.svg │ │ │ │ ├── security_privacy_concepts.yml │ │ │ │ ├── security_privacy_files │ │ │ │ │ ├── figure-pdf │ │ │ │ │ │ └── cell-7-output-1.pdf │ │ │ │ │ ├── libs │ │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ │ ├── clipboard │ │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ │ └── quarto-html │ │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ │ ├── axe │ │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ │ ├── popper.min.js │ │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ │ ├── quarto.js │ │ │ │ │ │ ├── tabsets │ │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ │ ├── tippy.css │ │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ │ └── mediabag │ │ │ │ │ ├── 03faacadeb5d474a17c1019a8e25f47bce1ec37f.svg │ │ │ │ │ ├── 0a9c8303cc77be124cbb23bfeb3c99f55c4dfe4d.svg │ │ │ │ │ ├── 4e9ed1e720619e0756ff97f2a2b8b77a1a39fa2f.svg │ │ │ │ │ ├── 5e418ea4f594513fb18a4c145481e7ed8b157458.svg │ │ │ │ │ ├── 7335146b460da57a456d5fc4ce999b3045bb1cdc.svg │ │ │ │ │ ├── 7a4c795ad13e9c3f10003bf6d794ad78cd410187.svg │ │ │ │ │ ├── 8c3a1f42da2d8e3a82ca4e87aafe4a2b62861673.svg │ │ │ │ │ ├── b0f94775a677dd959e5c92a17ca2c003295a738c.svg │ │ │ │ │ ├── b81307eb787db9be4dea552043f7ecb304dd8ae8.svg │ │ │ │ │ ├── c66e22d5b14e75373716c8cb0eb306c92ca83bf3.svg │ │ │ │ │ ├── cddb6ef1ea1739ce492484c5ae0956af60f27da9.svg │ │ │ │ │ ├── cff0246c6cb52a203ed9b41b0b5442d86d6318a5.svg │ │ │ │ │ └── e0e3b30d33e78d0091c251a0bbc4baf4ead487e1.svg │ │ │ │ ├── security_privacy_glossary.json │ │ │ │ ├── security_privacy_quizzes.json │ │ │ │ ├── security_privacy.qmd │ │ │ │ └── security_privacy.quarto_ipynb │ │ │ └── sustainable_ai │ │ │ ├── images │ │ │ │ ├── png │ │ │ │ │ ├── _ai_lca.png │ │ │ │ │ ├── _azure_dashboard.png │ │ │ │ │ ├── _carbon_benchmarks.png │ │ │ │ │ ├── _energy_datacenter.png │ │ │ │ │ ├── _ethicalai.png │ │ │ │ │ ├── _jevons_paradox.png │ │ │ │ │ ├── _mckinsey_analysis.png │ │ │ │ │ ├── _model_carbonfootprint.png │ │ │ │ │ ├── _st_water_cycle.png │ │ │ │ │ ├── _statista_chip_growth.png │ │ │ │ │ ├── _water_footprint.png │ │ │ │ │ ├── cover_sustainable_ai.png │ │ │ │ │ ├── europe_energy_grid.png │ │ │ │ │ ├── ghg_protocol.png │ │ │ │ │ └── model_scaling.png │ │ │ │ └── svg │ │ │ │ ├── _ai-lca.svg │ │ │ │ ├── _carbon-benchmarks.svg │ │ │ │ ├── _dc-projections.svg │ │ │ │ ├── _energy-roofline.svg │ │ │ │ ├── _ethical-concerns.svg │ │ │ │ ├── _ghg-protocol.svg │ │ │ │ ├── _regional-carbon.svg │ │ │ │ ├── ai-lca.svg │ │ │ │ ├── carbon-lifecycle.svg │ │ │ │ ├── carbon-tco.svg │ │ │ │ ├── energy-roofline.svg │ │ │ │ ├── energy-wall.svg │ │ │ │ ├── ghg-protocol.svg │ │ │ │ ├── grid-transient-load.svg │ │ │ │ ├── intervention-cascade.svg │ │ │ │ ├── prefill-decode-energy.svg │ │ │ │ ├── regional-carbon.svg │ │ │ │ └── water-cycle.svg │ │ │ ├── sustainable_ai_concepts.yml │ │ │ ├── sustainable_ai_files │ │ │ │ ├── figure-pdf │ │ │ │ │ ├── cell-14-output-1.pdf │ │ │ │ │ ├── cell-15-output-1.pdf │ │ │ │ │ ├── cell-17-output-2.pdf │ │ │ │ │ └── cell-6-output-1.pdf │ │ │ │ ├── libs │ │ │ │ │ ├── bootstrap │ │ │ │ │ │ ├── bootstrap-d6a003b94517c951b2d65075d42fb01b.min.css │ │ │ │ │ │ ├── bootstrap-icons.css │ │ │ │ │ │ ├── bootstrap-icons.woff │ │ │ │ │ │ └── bootstrap.min.js │ │ │ │ │ ├── clipboard │ │ │ │ │ │ └── clipboard.min.js │ │ │ │ │ └── quarto-html │ │ │ │ │ ├── anchor.min.js │ │ │ │ │ ├── axe │ │ │ │ │ │ └── axe-check.js │ │ │ │ │ ├── popper.min.js │ │ │ │ │ ├── quarto-syntax-highlighting-ed96de9b727972fe78a7b5d16c58bf87.css │ │ │ │ │ ├── quarto.js │ │ │ │ │ ├── tabsets │ │ │ │ │ │ └── tabsets.js │ │ │ │ │ ├── tippy.css │ │ │ │ │ └── tippy.umd.min.js │ │ │ │ └── mediabag │ │ │ │ ├── 04d6400e8df884da51fc709023a8ca29f714e857.svg │ │ │ │ ├── 2002d6e8302249943444265583c93901d9139264.svg │ │ │ │ ├── 4d9e2c92d8826a40602ff18f1c9edc7d1c3957a7.svg │ │ │ │ ├── 4e57277a4971120aafac53e5edd8901d8dc8db6e.svg │ │ │ │ ├── 558cbe1a38b862ba2f77203fad5e01285f825a2a.svg │ │ │ │ ├── 6c8f1ad993e34f0678a98781f551d16b290e32e4.svg │ │ │ │ ├── 7a6e65ff489b5ea07fde10bb1ea300a10ed264b8.svg │ │ │ │ ├── a10b8603a55750ad3892ed05d972d23254d1b9a7.svg │ │ │ │ ├── bb7800cf6d94b2ece8d316281bbed934d70d3ba6.svg │ │ │ │ └── eec8bb017dd14eb661c59a133ab7850cb03751b7.svg │ │ │ ├── sustainable_ai_glossary.json │ │ │ ├── sustainable_ai_quizzes.json │ │ │ ├── sustainable_ai.qmd │ │ │ └── sustainable_ai.quarto_ipynb │ │ ├── filters │ │ │ ├── auto-glossary-advanced.lua │ │ │ ├── auto-glossary.lua │ │ │ ├── dropcap.lua │ │ │ ├── inject_glossary.lua │ │ │ ├── inject_parts.lua │ │ │ ├── inject_quizzes.lua │ │ │ ├── margin-connections.lua │ │ │ ├── sidenote.lua │ │ │ └── table-cell-linebreaks.lua │ │ ├── index.html │ │ ├── index.qmd -> contents/vol2/index.qmd │ │ ├── landing_site │ │ │ ├── _quarto.yml │ │ │ ├── assets │ │ │ │ ├── nicla-vision-front.jpeg │ │ │ │ ├── nicla-vision.jpeg │ │ │ │ └── tinytorch-logo.png │ │ │ ├── covers │ │ │ │ ├── cover-hardcover-book-vol1.png │ │ │ │ └── cover-hardcover-book-vol2.png │ │ │ ├── index.qmd │ │ │ ├── landing.css │ │ │ ├── neural-bg-dark.js │ │ │ └── neural-bg.js │ │ ├── Machine-Learning-Systems.pdf.tex │ │ ├── mlsys │ │ │ └── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── constants.cpython-313.pyc │ │ │ ├── formatting.cpython-313.pyc │ │ │ ├── formulas.cpython-313.pyc │ │ │ └── hardware.cpython-313.pyc │ │ ├── publish │ │ │ ├── compress_epub.py │ │ │ └── compress_pdf.py │ │ ├── scripts │ │ │ ├── pycache │ │ │ │ └── fix_cross_references.cpython-313.pyc │ │ │ ├── check_references.py │ │ │ ├── clean_svgs.py │ │ │ ├── epub_postprocess.py │ │ │ ├── fix_cross_references.py │ │ │ ├── fix_times_math.py │ │ │ ├── mit_press │ │ │ │ ├── FIGURE_LIST_VOL1_COMPLETE.csv │ │ │ │ ├── FIGURE_LIST_VOL1.csv │ │ │ │ ├── generate_figure_list.py │ │ │ │ └── README.md │ │ │ ├── README.md │ │ │ └── revert_times_multipliers.py │ │ ├── tex │ │ │ ├── after-body-includes.tex │ │ │ ├── before-body-includes-vol2.tex │ │ │ ├── before-body-includes.tex │ │ │ ├── copyright-vol2.tex │ │ │ ├── copyright.tex │ │ │ ├── cover_page.tex │ │ │ ├── header-includes.tex │ │ │ ├── mlsys-stack-prototype.tex │ │ │ ├── theme-colors-vol1.tex │ │ │ └── theme-colors-vol2.tex │ │ └── tools │ │ └── scripts │ │ └── socratiQ │ │ └── bundle.js │ ├── README.md │ ├── setup.py │ ├── socratiQ │ │ └── README.md │ ├── tests │ │ ├── pycache │ │ │ ├── test_narrative_invariants.cpython-313-pytest-9.0.1.pyc │ │ │ ├── test_registry.cpython-313-pytest-9.0.1.pyc │ │ │ └── test_units.cpython-313-pytest-9.0.1.pyc │ │ ├── sim │ │ │ └── init .py │ │ ├── test_narrative_invariants.py │ │ ├── test_registry.py │ │ └── test_units.py │ ├── tools │ │ ├── init .py │ │ ├── agent_personas.md │ │ ├── baseline_state.json │ │ ├── dependencies │ │ │ ├── install_packages.R │ │ │ ├── README.md │ │ │ ├── requirements.txt │ │ │ └── tl_packages │ │ ├── git-hooks │ │ │ ├── pre-commit │ │ │ ├── README.md │ │ │ └── setup.sh │ │ ├── review_prompts.md │ │ ├── scripts │ │ │ ├── init .py │ │ │ ├── content │ │ │ │ ├── check_figure_div_syntax.py │ │ │ │ ├── check_prose_spelling.py │ │ │ │ ├── check_tikz_spelling.py │ │ │ │ ├── format_div_spacing.py │ │ │ │ ├── format_python_in_qmd.py │ │ │ │ ├── format_tables.py │ │ │ │ ├── manage_captions.py │ │ │ │ ├── README_CITATION_VALIDATION.md │ │ │ │ ├── README_INDEX_PLACEMENT.md │ │ │ │ ├── README.md │ │ │ │ ├── relocate_figures.py │ │ │ │ ├── section_splitter.py │ │ │ │ └── validate_tables.py │ │ │ ├── convert_icons.py │ │ │ ├── docs │ │ │ │ ├── FIGURE_CAPTIONS.md │ │ │ │ ├── FORMATTING_PRESERVATION.md │ │ │ │ ├── README.md │ │ │ │ ├── SECTION_ID_SYSTEM.md │ │ │ │ └── WORKFLOW_CLEANUP.md │ │ │ ├── figure_narrative_audit.md │ │ │ ├── gen_bio_nn_svg.py │ │ │ ├── genai │ │ │ │ ├── footnote_assistant.py │ │ │ │ ├── generate_comm_primitives_diagram.py │ │ │ │ ├── generate_comm_primitives.py │ │ │ │ ├── knowledge_map.json │ │ │ │ ├── quizzes.py │ │ │ │ ├── replace_tikz.py │ │ │ │ └── requirements.txt │ │ │ ├── glossary │ │ │ │ ├── build_global_glossary.py │ │ │ │ ├── generate_glossary.py │ │ │ │ ├── ORGANIZATION.md │ │ │ │ └── README.md │ │ │ ├── images │ │ │ │ ├── init .py │ │ │ │ ├── analyze_image_sizes.py │ │ │ │ ├── compress_images.py │ │ │ │ ├── convert_svg_to_png.py │ │ │ │ ├── manage_external_images.py │ │ │ │ ├── manage_images.py │ │ │ │ ├── README.md │ │ │ │ └── remove_bg.py │ │ │ ├── infrastructure │ │ │ │ ├── init .py │ │ │ │ ├── cleanup_containers.py │ │ │ │ ├── cleanup_workflow_runs_gh.py │ │ │ │ ├── list_containers.py │ │ │ │ └── README.md │ │ │ ├── learning_objectives_bolding_parallel.sh │ │ │ ├── maintenance │ │ │ │ ├── cleanup_build_artifacts.py │ │ │ │ ├── repo_health_check.py │ │ │ │ ├── run_maintenance.sh │ │ │ │ ├── update_texlive_packages.py │ │ │ │ ├── validate_inline_refs.py │ │ │ │ └── validate_pint_usage.py │ │ │ ├── migrate_bridges.py │ │ │ ├── publish │ │ │ │ ├── init .py │ │ │ │ ├── extract_figures.py │ │ │ │ ├── mit-press-release.sh │ │ │ │ ├── modify_dev_announcement.py │ │ │ │ ├── publish.sh │ │ │ │ ├── render_compress_publish.py │ │ │ │ └── requirements.txt │ │ │ ├── README.md │ │ │ ├── reference_check_report.txt │ │ │ ├── socratiQ │ │ │ │ └── bundle.js │ │ │ ├── tbl_lst_narrative_audit.md │ │ │ ├── testing │ │ │ │ ├── debug_section_builds.py │ │ │ │ ├── test_format_tables.py │ │ │ │ └── tikz_style_linter.py │ │ │ ├── transform_pico_cells.py │ │ │ └── utilities │ │ │ ├── analyze_footnotes.sh │ │ │ ├── check_list_formatting.py │ │ │ ├── convert_grid_to_pipe_tables.py │ │ │ ├── count_footnotes.sh │ │ │ ├── manage_sources.py │ │ │ ├── prettify_pipe_tables.py │ │ │ ├── README_LIST_FORMATTING.md │ │ │ ├── README.md │ │ │ └── validate_epub.py │ │ └── setup │ │ ├── clean.sh │ │ ├── setup_lua_env.sh │ │ └── setup.sh │ └── vscode-ext │ ├── package-lock.json │ ├── package.json │ ├── README.md │ ├── resources │ │ ├── icon.png │ │ └── icon.svg │ ├── scripts │ │ ├── smoke_extension_ux.py │ │ └── verify-highlight-palette.js │ ├── snippets │ │ └── qmd.code-snippets │ ├── src │ │ ├── commands │ │ │ ├── buildCommands.ts │ │ │ ├── contextMenuCommands.ts │ │ │ ├── debugCommands.ts │ │ │ ├── precommitCommands.ts │ │ │ └── publishCommands.ts │ │ ├── constants.ts │ │ ├── extension.ts │ │ ├── models │ │ │ └── treeItems.ts │ │ ├── providers │ │ │ ├── buildTreeProvider.ts │ │ │ ├── chapterNavigatorProvider.ts │ │ │ ├── configTreeProvider.ts │ │ │ ├── debugTreeProvider.ts │ │ │ ├── infoTreeProvider.ts │ │ │ ├── maintenanceTreeProvider.ts │ │ │ ├── precommitTreeProvider.ts │ │ │ ├── publishTreeProvider.ts │ │ │ ├── qmdAutoFoldManager.ts │ │ │ ├── qmdChunkHighlighter.ts │ │ │ ├── qmdFoldingProvider.ts │ │ │ ├── qmdHighlightPalette.ts │ │ │ ├── qmdInlinePythonProviders.ts │ │ │ ├── qmdPythonValueResolver.ts │ │ │ └── runHistoryProvider.ts │ │ ├── types.ts │ │ ├── utils │ │ │ ├── buildManifest.ts │ │ │ ├── chapters.ts │ │ │ ├── labelRename.ts │ │ │ ├── parallelDebug.ts │ │ │ ├── quartoConfigReset.ts │ │ │ ├── terminal.ts │ │ │ └── workspace.ts │ │ └── validation │ │ ├── healthManager.ts │ │ ├── precommitStatusManager.ts │ │ └── qmdChecks.ts │ └── tsconfig.json ├── CITATION.bib ├── CLAUDE.md -> .claude/CLAUDE.md ├── CNAME ├── kits │ ├── _extensions │ │ └── mlsysbook-ext │ │ └── titlepage │ │ ├── _author-affiliation-themes.tex │ │ ├── _coverpage.tex │ │ ├── _extension.yml │ │ ├── _header-footer-date-themes.tex │ │ ├── _title-themes.tex │ │ ├── _titlepage.tex │ │ ├── before-body.tex │ │ ├── coverpage-theme.lua │ │ ├── fonts │ │ │ └── qualitype │ │ │ ├── COPYING-QUALITYPE │ │ │ ├── doc │ │ │ │ └── qualitype-doc.tex │ │ │ ├── opentype │ │ │ │ ├── QTAbbie.otf │ │ │ │ ├── QTAgateType-Bold.otf │ │ │ │ ├── QTAgateType-Italic.otf │ │ │ │ ├── QTAgateType.otf │ │ │ │ ├── QTAncientOlive-Bold.otf │ │ │ │ ├── QTAncientOlive.otf │ │ │ │ ├── QTAntiquePost.otf │ │ │ │ ├── QTArabian.otf │ │ │ │ ├── QTArnieB.otf │ │ │ │ ├── QTArtiston.otf │ │ │ │ ├── QTAtchen.otf │ │ │ │ ├── QTAvanti-Italic.otf │ │ │ │ ├── QTAvanti.otf │ │ │ │ ├── QTBasker-Bold.otf │ │ │ │ ├── QTBasker-Italic.otf │ │ │ │ ├── QTBasker.otf │ │ │ │ ├── QTBeckman.otf │ │ │ │ ├── QTBengal-Bold.otf │ │ │ │ ├── QTBengal.otf │ │ │ │ ├── QTBlackForest.otf │ │ │ │ ├── QTBlimpo.otf │ │ │ │ ├── QTBodini-Bold.otf │ │ │ │ ├── QTBodini-Italic.otf │ │ │ │ ├── QTBodini.otf │ │ │ │ ├── QTBodiniPoster-Italic.otf │ │ │ │ ├── QTBodiniPoster.otf │ │ │ │ ├── QTBookmann-Bold.otf │ │ │ │ ├── QTBookmann-BoldItalic.otf │ │ │ │ ├── QTBookmann-Italic.otf │ │ │ │ ├── QTBookmann.otf │ │ │ │ ├── QTBoulevard.otf │ │ │ │ ├── QTBrushStroke.otf │ │ │ │ ├── QTCaligulatype.otf │ │ │ │ ├── QTCanaithtype.otf │ │ │ │ ├── QTCascadetype.otf │ │ │ │ ├── QTCaslan-Bold.otf │ │ │ │ ├── QTCaslan-BoldItalic.otf │ │ │ │ ├── QTCaslan-Italic.otf │ │ │ │ ├── QTCaslan.otf │ │ │ │ ├── QTCaslanOpen.otf │ │ │ │ ├── QTCasual.otf │ │ │ │ ├── QTChanceryType-Bold.otf │ │ │ │ ├── QTChanceryType-Italic.otf │ │ │ │ ├── QTChanceryType.otf │ │ │ │ ├── QTChicagoland.otf │ │ │ │ ├── QTClaytablet.otf │ │ │ │ ├── QTCloisteredMonk.otf │ │ │ │ ├── QTCoronation.otf │ │ │ │ ├── QTDeuce.otf │ │ │ │ ├── QTDingBits.otf │ │ │ │ ├── QTDoghaus.otf │ │ │ │ ├── QTDoghausHeavy.otf │ │ │ │ ├── QTDoghausLight.otf │ │ │ │ ├── QTDublinIrish.otf │ │ │ │ ├── QTEraType-Bold.otf │ │ │ │ ├── QTEraType.otf │ │ │ │ ├── QTEurotype-Bold.otf │ │ │ │ ├── QTEurotype.otf │ │ │ │ ├── QTFloraline-Bold.otf │ │ │ │ ├── QTFloraline.otf │ │ │ │ ├── QTFlorencia.otf │ │ │ │ ├── QTFraktur.otf │ │ │ │ ├── QTFrank.otf │ │ │ │ ├── QTFrankHeavy.otf │ │ │ │ ├── QTFrizQuad-Bold.otf │ │ │ │ ├── QTFrizQuad.otf │ │ │ │ ├── QTFuture-Italic.otf │ │ │ │ ├── QTFuture.otf │ │ │ │ ├── QTFuturePoster.otf │ │ │ │ ├── QTGaromand-Bold.otf │ │ │ │ ├── QTGaromand-BoldItalic.otf │ │ │ │ ├── QTGaromand-Italic.otf │ │ │ │ ├── QTGaromand.otf │ │ │ │ ├── QTGhoulFace.otf │ │ │ │ ├── QTGraphLite.otf │ │ │ │ ├── QTGraveure-Bold.otf │ │ │ │ ├── QTGraveure.otf │ │ │ │ ├── QTGreece.otf │ │ │ │ ├── QTHandwriting.otf │ │ │ │ ├── QTHeidelbergType.otf │ │ │ │ ├── QTHelvet-Black.otf │ │ │ │ ├── QTHelvet-BoldOutline.otf │ │ │ │ ├── QTHelvetCnd-Black.otf │ │ │ │ ├── QTHelvetCnd-Light.otf │ │ │ │ ├── QTHelvetCnd.otf │ │ │ │ ├── QTHoboken.otf │ │ │ │ ├── QTHowardType.otf │ │ │ │ ├── QTHowardTypeFat.otf │ │ │ │ ├── QTImpromptu.otf │ │ │ │ ├── QTJupiter.otf │ │ │ │ ├── QTKooper-Italic.otf │ │ │ │ ├── QTKooper.otf │ │ │ │ ├── QTKorrin-Italic.otf │ │ │ │ ├── QTKorrin.otf │ │ │ │ ├── QTKung-Fu.otf │ │ │ │ ├── QTLautrecType.otf │ │ │ │ ├── QTLetterGoth-Bold.otf │ │ │ │ ├── QTLetterGoth-BoldItalic.otf │ │ │ │ ├── QTLetterGoth-Italic.otf │ │ │ │ ├── QTLetterGoth.otf │ │ │ │ ├── QTLinoscroll.otf │ │ │ │ ├── QTLinostroke.otf │ │ │ │ ├── QTLondonScroll.otf │ │ │ │ ├── QTMagicMarker.otf │ │ │ │ ├── QTMerryScript.otf │ │ │ │ ├── QTMilitary.otf │ │ │ │ ├── QTOKCorral-Cnd.otf │ │ │ │ ├── QTOKCorral-Ext.otf │ │ │ │ ├── QTOKCorral.otf │ │ │ │ ├── QTOldGoudy-Bold.otf │ │ │ │ ├── QTOldGoudy-Italic.otf │ │ │ │ ├── QTOldGoudy.otf │ │ │ │ ├── QTOptimum-Bold.otf │ │ │ │ ├── QTOptimum-BoldItalic.otf │ │ │ │ ├── QTOptimum-Italic.otf │ │ │ │ ├── QTOptimum.otf │ │ │ │ ├── QTPalatine-Bold.otf │ │ │ │ ├── QTPalatine-Italic.otf │ │ │ │ ├── QTPalatine.otf │ │ │ │ ├── QTPandora.otf │ │ │ │ ├── QTParisFrance.otf │ │ │ │ ├── QTPeignoir-Lite.otf │ │ │ │ ├── QTPeignoir.otf │ │ │ │ ├── QTPiltdown.otf │ │ │ │ ├── QTPristine-Bold.otf │ │ │ │ ├── QTPristine-BoldItalic.otf │ │ │ │ ├── QTPristine-Italic.otf │ │ │ │ ├── QTPristine.otf │ │ │ │ ├── QTRobotic2000.otf │ │ │ │ ├── QTSanDiego.otf │ │ │ │ ├── QTSchoolCentury-Bold.otf │ │ │ │ ├── QTSchoolCentury-BoldItalic.otf │ │ │ │ ├── QTSchoolCentury-Italic.otf │ │ │ │ ├── QTSchoolCentury.otf │ │ │ │ ├── QTSlogantype.otf │ │ │ │ ├── QTSnowCaps.otf │ │ │ │ ├── QTStoryTimeCaps.otf │ │ │ │ ├── QTTechtone-Bold.otf │ │ │ │ ├── QTTechtone-BoldItalic.otf │ │ │ │ ├── QTTechtone-Italic.otf │ │ │ │ ├── QTTechtone.otf │ │ │ │ ├── QTTheatre.otf │ │ │ │ ├── QTTimeOutline.otf │ │ │ │ ├── QTTumbleweed.otf │ │ │ │ ├── QTUSA-Uncial.otf │ │ │ │ ├── QTVagaRound-Bold.otf │ │ │ │ ├── QTVagaRound.otf │ │ │ │ ├── QTWeise-Bold.otf │ │ │ │ ├── QTWeise-Italic.otf │ │ │ │ ├── QTWeise.otf │ │ │ │ └── QTWestEnd.otf │ │ │ └── README │ │ ├── images │ │ │ ├── corner_bg.png │ │ │ ├── corner-bg.png │ │ │ ├── logo.png │ │ │ ├── nmfs_opensci_logo.png │ │ │ ├── nmfs-opensci-logo.png │ │ │ ├── otter_bar.jpeg │ │ │ ├── otter-bar.jpeg │ │ │ ├── ringed_seal.png │ │ │ ├── ringed-seal.png │ │ │ ├── the_great_waveoff_kanagawa.jpeg │ │ │ └── thegreatwaveoffkanagawa.jpeg │ │ ├── mathjax.html │ │ ├── pandoc.tex │ │ └── titlepage-theme.lua │ ├── _quarto.yml -> config/_quarto-html.yml │ ├── 404.qmd │ ├── assets │ │ ├── images │ │ │ ├── covers │ │ │ │ ├── cover-hardcover-book.png │ │ │ │ └── cover-image-transparent.png │ │ │ └── favicon.png │ │ ├── scripts │ │ │ └── subscribe-modal.js │ │ └── styles │ │ ├── dark-mode.scss │ │ └── style.scss │ ├── config │ │ ├── _quarto-html.yml │ │ ├── _quarto-pdf.yml │ │ └── announcement.yml │ ├── contents │ │ ├── arduino │ │ │ └── nicla_vision │ │ │ ├── image_classification │ │ │ │ ├── image_classification.bib │ │ │ │ ├── image_classification.qmd │ │ │ │ └── images │ │ │ │ ├── jpg │ │ │ │ │ ├── image1.jpg │ │ │ │ │ ├── image10.jpg │ │ │ │ │ ├── image13.jpg │ │ │ │ │ ├── image15.jpg │ │ │ │ │ ├── image18.jpg │ │ │ │ │ ├── image19.jpg │ │ │ │ │ ├── image2.jpg │ │ │ │ │ ├── image21.jpg │ │ │ │ │ ├── image23.jpg │ │ │ │ │ ├── image25.jpg │ │ │ │ │ ├── image27.jpg │ │ │ │ │ ├── image28.jpg │ │ │ │ │ ├── image31.jpg │ │ │ │ │ ├── image32.jpg │ │ │ │ │ ├── image35.jpg │ │ │ │ │ ├── image36.jpg │ │ │ │ │ ├── image38.jpg │ │ │ │ │ ├── image4.jpg │ │ │ │ │ ├── image41.jpg │ │ │ │ │ ├── image47.jpg │ │ │ │ │ ├── image6.jpg │ │ │ │ │ ├── image7.jpg │ │ │ │ │ ├── image9.jpg │ │ │ │ │ └── img_class_ini.jpg │ │ │ │ └── png │ │ │ │ ├── 0_pop_up.png │ │ │ │ ├── 0-pop-up.png │ │ │ │ ├── 1_dashboard.png │ │ │ │ ├── 1-dashboard.png │ │ │ │ ├── image_20250409121811495.png │ │ │ │ ├── image_20250409122002828.png │ │ │ │ ├── image_20250409122216711.png │ │ │ │ ├── image_20250409122301276.png │ │ │ │ ├── image_20250409122405978.png │ │ │ │ ├── image_20250409122447616.png │ │ │ │ ├── image_20250409122559093.png │ │ │ │ ├── image_20250409122805537.png │ │ │ │ ├── image_20250409122922001.png │ │ │ │ ├── image_20250409123041443.png │ │ │ │ ├── image_20250409123154360.png │ │ │ │ ├── image_20250409123335307.png │ │ │ │ ├── image_20250409123434197.png │ │ │ │ ├── image_20250409123521431.png │ │ │ │ ├── image_20250409123633926.png │ │ │ │ ├── image_20250409125313368.png │ │ │ │ ├── image_20250409125425304.png │ │ │ │ ├── image_20250409125541513.png │ │ │ │ ├── image_20250409125717615.png │ │ │ │ ├── image_20250409125828409.png │ │ │ │ ├── image_20250409125939397.png │ │ │ │ ├── image_20250409130041244.png │ │ │ │ ├── image_20250409130259236.png │ │ │ │ ├── image_20250409130420420.png │ │ │ │ ├── image_20250409130612620.png │ │ │ │ ├── image_20250409130722082.png │ │ │ │ ├── image_20250409130759751.png │ │ │ │ ├── image_20250409130946645.png │ │ │ │ ├── image_20250409131243149.png │ │ │ │ ├── image_20250409131317593.png │ │ │ │ ├── image_20250409131807950.png │ │ │ │ ├── image_20250409132002392.png │ │ │ │ ├── image_20250409132315298.png │ │ │ │ ├── image_20250409132406597.png │ │ │ │ ├── image_20250409132528227.png │ │ │ │ ├── image_20250409142412723.png │ │ │ │ ├── image_20250409142641398.png │ │ │ │ ├── image_20250409142923020.png │ │ │ │ ├── image_20250409143012013.png │ │ │ │ ├── image_20250409143734057.png │ │ │ │ ├── image_20250409150056803.png │ │ │ │ ├── image_20250409150136393.png │ │ │ │ ├── image_20250409150704876.png │ │ │ │ ├── image_20250409153710812.png │ │ │ │ ├── image-20250409121811495.png │ │ │ │ ├── image-20250409122002828.png │ │ │ │ ├── image-20250409122216711.png │ │ │ │ ├── image-20250409122301276.png │ │ │ │ ├── image-20250409122405978.png │ │ │ │ ├── image-20250409122447616.png │ │ │ │ ├── image-20250409122559093.png │ │ │ │ ├── image-20250409122805537.png │ │ │ │ ├── image-20250409122922001.png │ │ │ │ ├── image-20250409123041443.png │ │ │ │ ├── image-20250409123154360.png │ │ │ │ ├── image-20250409123335307.png │ │ │ │ ├── image-20250409123434197.png │ │ │ │ ├── image-20250409123521431.png │ │ │ │ ├── image-20250409123633926.png │ │ │ │ ├── image-20250409125313368.png │ │ │ │ ├── image-20250409125425304.png │ │ │ │ ├── image-20250409125541513.png │ │ │ │ ├── image-20250409125717615.png │ │ │ │ ├── image-20250409125828409.png │ │ │ │ ├── image-20250409125939397.png │ │ │ │ ├── image-20250409130041244.png │ │ │ │ ├── image-20250409130259236.png │ │ │ │ ├── image-20250409130420420.png │ │ │ │ ├── image-20250409130612620.png │ │ │ │ ├── image-20250409130722082.png │ │ │ │ ├── image-20250409130759751.png │ │ │ │ ├── image-20250409130946645.png │ │ │ │ ├── image-20250409131243149.png │ │ │ │ ├── image-20250409131317593.png │ │ │ │ ├── image-20250409131807950.png │ │ │ │ ├── image-20250409132002392.png │ │ │ │ ├── image-20250409132315298.png │ │ │ │ ├── image-20250409132406597.png │ │ │ │ ├── image-20250409132528227.png │ │ │ │ ├── image-20250409142412723.png │ │ │ │ ├── image-20250409142641398.png │ │ │ │ ├── image-20250409142923020.png │ │ │ │ ├── image-20250409143012013.png │ │ │ │ ├── image-20250409143734057.png │ │ │ │ ├── image-20250409150056803.png │ │ │ │ ├── image-20250409150136393.png │ │ │ │ ├── image-20250409150704876.png │ │ │ │ ├── image-20250409153710812.png │ │ │ │ └── image46.png │ │ │ ├── images │ │ │ │ └── jpg │ │ │ │ ├── nicla_vision_quarter.jpeg │ │ │ │ └── nicla_vision.jpeg │ │ │ ├── kws │ │ │ │ ├── images │ │ │ │ │ ├── jpg │ │ │ │ │ │ ├── audio_capt.jpg │ │ │ │ │ │ ├── code_ide.jpg │ │ │ │ │ │ ├── dataset.jpg │ │ │ │ │ │ ├── deploy.jpg │ │ │ │ │ │ ├── ei_data_collection.jpg │ │ │ │ │ │ ├── ei_mfcc.jpg │ │ │ │ │ │ ├── feat_expl.jpg │ │ │ │ │ │ ├── files.jpg │ │ │ │ │ │ ├── impulse.jpg │ │ │ │ │ │ ├── install_zip.jpg │ │ │ │ │ │ ├── kws_proj_inf_blk.jpg │ │ │ │ │ │ ├── kws_proj_train_blk.jpg │ │ │ │ │ │ ├── mfcc.jpg │ │ │ │ │ │ ├── model.jpg │ │ │ │ │ │ ├── models_1d_2d.jpg │ │ │ │ │ │ ├── models_1d-2d.jpg │ │ │ │ │ │ ├── nicla_kws.jpg │ │ │ │ │ │ ├── nicla-kws.jpg │ │ │ │ │ │ ├── pa_block.jpg │ │ │ │ │ │ ├── pers_ass.jpg │ │ │ │ │ │ ├── phone.jpg │ │ │ │ │ │ ├── split.jpg │ │ │ │ │ │ ├── test.jpg │ │ │ │ │ │ ├── train_errors.jpg │ │ │ │ │ │ ├── train_graphs.jpg │ │ │ │ │ │ ├── train_result.jpg │ │ │ │ │ │ ├── upload.jpg │ │ │ │ │ │ ├── yes_no.jpg │ │ │ │ │ │ └── yes.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── hey_google.png │ │ │ │ │ └── image17.png │ │ │ │ ├── kws.bib │ │ │ │ └── kws.qmd │ │ │ ├── motion_classification │ │ │ │ ├── images │ │ │ │ │ └── jpg │ │ │ │ │ ├── anom_det_train.jpg │ │ │ │ │ ├── anomaly_boat.jpg │ │ │ │ │ ├── anomaly_detect.jpg │ │ │ │ │ ├── anomaly-boat.jpg │ │ │ │ │ ├── case.jpg │ │ │ │ │ ├── classes_mov_def.jpg │ │ │ │ │ ├── classes.jpg │ │ │ │ │ ├── collect_data.jpg │ │ │ │ │ ├── data_explorer.jpg │ │ │ │ │ ├── data_forw.jpg │ │ │ │ │ ├── data-forw.jpg │ │ │ │ │ ├── dataset.jpg │ │ │ │ │ ├── deploy.jpg │ │ │ │ │ ├── device.jpg │ │ │ │ │ ├── feature_generation.jpg │ │ │ │ │ ├── idle_result.jpg │ │ │ │ │ ├── impulse_block.jpg │ │ │ │ │ ├── impulse-block.jpg │ │ │ │ │ ├── impulse.jpg │ │ │ │ │ ├── imu_ide.jpg │ │ │ │ │ ├── imu_test.jpg │ │ │ │ │ ├── inference_1.jpg │ │ │ │ │ ├── inference_2.jpg │ │ │ │ │ ├── inference.jpg │ │ │ │ │ ├── lift_result.jpg │ │ │ │ │ ├── maritime_result.jpg │ │ │ │ │ ├── model_testing.jpg │ │ │ │ │ ├── model.jpg │ │ │ │ │ ├── movement_anomaly_ini.jpg │ │ │ │ │ ├── parameters_definition.jpg │ │ │ │ │ ├── pre_process.jpg │ │ │ │ │ ├── pre-process.jpg │ │ │ │ │ ├── sampling.jpg │ │ │ │ │ ├── term.jpg │ │ │ │ │ ├── terrestrial_result.jpg │ │ │ │ │ └── train.jpg │ │ │ │ ├── motion_classification.bib │ │ │ │ └── motion_classification.qmd │ │ │ ├── nicla_vision.qmd │ │ │ ├── object_detection │ │ │ │ ├── images │ │ │ │ │ ├── jpg │ │ │ │ │ │ ├── cv_obj_detect.jpg │ │ │ │ │ │ ├── data_folder.jpg │ │ │ │ │ │ ├── img_11.jpg │ │ │ │ │ │ ├── img_13.jpg │ │ │ │ │ │ ├── img_27.jpg │ │ │ │ │ │ ├── img_28.jpg │ │ │ │ │ │ ├── img_5.jpg │ │ │ │ │ │ ├── obj_det_ini.jpg │ │ │ │ │ │ ├── proj_goal.jpg │ │ │ │ │ │ └── samples.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── 0_setup.png │ │ │ │ │ ├── 0-setup.png │ │ │ │ │ ├── 1_data.png │ │ │ │ │ ├── 1-data.png │ │ │ │ │ ├── 10_live.png │ │ │ │ │ ├── 10-live.png │ │ │ │ │ ├── 11_od.png │ │ │ │ │ ├── 11-od.png │ │ │ │ │ ├── 12_deploy.png │ │ │ │ │ ├── 12-deploy.png │ │ │ │ │ ├── 13_inf.png │ │ │ │ │ ├── 13-inf.png │ │ │ │ │ ├── 2_data.png │ │ │ │ │ ├── 2-data.png │ │ │ │ │ ├── 3_labeling_data.png │ │ │ │ │ ├── 3-labeling-data.png │ │ │ │ │ ├── 4_labeling_data.png │ │ │ │ │ ├── 4-labeling-data.png │ │ │ │ │ ├── 5_impulse.png │ │ │ │ │ ├── 5-impulse.png │ │ │ │ │ ├── 6_pp.png │ │ │ │ │ ├── 6-pp.png │ │ │ │ │ ├── 7_fomo.png │ │ │ │ │ ├── 7-fomo.png │ │ │ │ │ ├── 8_train.png │ │ │ │ │ ├── 8-train.png │ │ │ │ │ ├── 9_live.png │ │ │ │ │ ├── 9-live.png │ │ │ │ │ ├── image_20250410121259815.png │ │ │ │ │ ├── image_20250410123417108.png │ │ │ │ │ ├── image-20250410121259815.png │ │ │ │ │ ├── image-20250410123417108.png │ │ │ │ │ ├── image17.png │ │ │ │ │ ├── img_1.png │ │ │ │ │ ├── img_10.png │ │ │ │ │ ├── img_12.png │ │ │ │ │ ├── img_14.png │ │ │ │ │ ├── img_15.png │ │ │ │ │ ├── img_16.png │ │ │ │ │ ├── img_17.png │ │ │ │ │ ├── img_18.png │ │ │ │ │ ├── img_19.png │ │ │ │ │ ├── img_2.png │ │ │ │ │ ├── img_20.png │ │ │ │ │ ├── img_21.png │ │ │ │ │ ├── img_22.png │ │ │ │ │ ├── img_23.png │ │ │ │ │ ├── img_24.png │ │ │ │ │ ├── img_25.png │ │ │ │ │ ├── img_26.png │ │ │ │ │ ├── img_3.png │ │ │ │ │ ├── img_4.png │ │ │ │ │ ├── img_6.png │ │ │ │ │ ├── img_7.png │ │ │ │ │ ├── img_8.png │ │ │ │ │ └── img_9.png │ │ │ │ ├── object_detection.bib │ │ │ │ └── object_detection.qmd │ │ │ └── setup │ │ │ ├── images │ │ │ │ ├── jpg │ │ │ │ │ ├── image11.jpg │ │ │ │ │ ├── image13.jpg │ │ │ │ │ ├── image14.jpg │ │ │ │ │ ├── image15.jpg │ │ │ │ │ ├── image18.jpg │ │ │ │ │ ├── image19.jpg │ │ │ │ │ ├── image2.jpg │ │ │ │ │ ├── image20.jpg │ │ │ │ │ ├── image22.jpg │ │ │ │ │ ├── image23.jpg │ │ │ │ │ ├── image24.jpg │ │ │ │ │ ├── image26.jpg │ │ │ │ │ ├── image29.jpg │ │ │ │ │ └── nicla_sys_ini.jpg │ │ │ │ └── png │ │ │ │ ├── image_20250409101745233.png │ │ │ │ ├── image_20250409102015282.png │ │ │ │ ├── image_20250409102257291.png │ │ │ │ ├── image_20250409102416745.png │ │ │ │ ├── image_20250409102531451.png │ │ │ │ ├── image_20250409102641908.png │ │ │ │ ├── image_20250409102838852.png │ │ │ │ ├── image_20250409102943336.png │ │ │ │ ├── image_20250409103159216.png │ │ │ │ ├── image_20250409103401388.png │ │ │ │ ├── image_20250409103828014.png │ │ │ │ ├── image_20250409103900709.png │ │ │ │ ├── image_20250409104030018.png │ │ │ │ ├── image_20250409104108038.png │ │ │ │ ├── image_20250409104755106.png │ │ │ │ ├── image_20250409105305899.png │ │ │ │ ├── image_20250409105410404.png │ │ │ │ ├── image_20250409105512940.png │ │ │ │ ├── image_20250409105557518.png │ │ │ │ ├── image_20250409105630839.png │ │ │ │ ├── image_20250409111811623.png │ │ │ │ ├── image-20250409101745233.png │ │ │ │ ├── image-20250409102015282.png │ │ │ │ ├── image-20250409102257291.png │ │ │ │ ├── image-20250409102416745.png │ │ │ │ ├── image-20250409102531451.png │ │ │ │ ├── image-20250409102641908.png │ │ │ │ ├── image-20250409102838852.png │ │ │ │ ├── image-20250409102943336.png │ │ │ │ ├── image-20250409103159216.png │ │ │ │ ├── image-20250409103401388.png │ │ │ │ ├── image-20250409103828014.png │ │ │ │ ├── image-20250409103900709.png │ │ │ │ ├── image-20250409104030018.png │ │ │ │ ├── image-20250409104108038.png │ │ │ │ ├── image-20250409104755106.png │ │ │ │ ├── image-20250409105305899.png │ │ │ │ ├── image-20250409105410404.png │ │ │ │ ├── image-20250409105512940.png │ │ │ │ ├── image-20250409105557518.png │ │ │ │ ├── image-20250409105630839.png │ │ │ │ ├── image-20250409111811623.png │ │ │ │ ├── image1.png │ │ │ │ ├── image10.png │ │ │ │ ├── image12.png │ │ │ │ ├── image16.png │ │ │ │ ├── image17.png │ │ │ │ ├── image21.png │ │ │ │ ├── image25.png │ │ │ │ ├── image27.png │ │ │ │ ├── image28.png │ │ │ │ ├── image3.png │ │ │ │ ├── image4.png │ │ │ │ ├── image5.png │ │ │ │ ├── image6.png │ │ │ │ ├── image7.png │ │ │ │ ├── image8.png │ │ │ │ ├── image9.png │ │ │ │ ├── nicla_1.png │ │ │ │ └── nicla-1.png │ │ │ ├── setup.bib │ │ │ └── setup.qmd │ │ ├── getting-started.qmd │ │ ├── ide-setup.qmd │ │ ├── platforms.qmd │ │ ├── raspi │ │ │ ├── image_classification │ │ │ │ ├── image_classification.qmd │ │ │ │ └── images │ │ │ │ ├── jpeg │ │ │ │ │ ├── img_class_cover.jpg │ │ │ │ │ ├── img_class_func.jpg │ │ │ │ │ ├── model_1.jpg │ │ │ │ │ ├── model_2.jpg │ │ │ │ │ └── project_goal.jpg │ │ │ │ └── png │ │ │ │ ├── app_inference.png │ │ │ │ ├── app-inference.png │ │ │ │ ├── cam_installed.png │ │ │ │ ├── capture_test.png │ │ │ │ ├── capture.png │ │ │ │ ├── cat_original.png │ │ │ │ ├── cifar10_model.png │ │ │ │ ├── data_aquisition.png │ │ │ │ ├── data_esplorer.png │ │ │ │ ├── data-aquisition.png │ │ │ │ ├── data-esplorer.png │ │ │ │ ├── enter_label.png │ │ │ │ ├── image_20240823145059675.png │ │ │ │ ├── image_20240823152700396.png │ │ │ │ ├── image-20240823145059675.png │ │ │ │ ├── image-20240823152700396.png │ │ │ │ ├── img_test_result.png │ │ │ │ ├── impulse.png │ │ │ │ ├── infer_cifar10.png │ │ │ │ ├── infer_int8_160.png │ │ │ │ ├── infer_int8_96.png │ │ │ │ ├── infer_result.png │ │ │ │ ├── infer_robot.png │ │ │ │ ├── infer-cifar10.png │ │ │ │ ├── infer-int8-160.png │ │ │ │ ├── infer-int8-96.png │ │ │ │ ├── infer-result.png │ │ │ │ ├── input_details.png │ │ │ │ ├── mobilinet_v2.png │ │ │ │ ├── mobilinet_zero.png │ │ │ │ ├── mobilinetv2.png │ │ │ │ ├── model.png │ │ │ │ ├── models_dir.png │ │ │ │ ├── nano.png │ │ │ │ ├── new_proj_ei.png │ │ │ │ ├── new-proj-ei.png │ │ │ │ ├── notebook_test.png │ │ │ │ ├── notebook_token.png │ │ │ │ ├── output_details.png │ │ │ │ ├── preproc.png │ │ │ │ ├── process_img.png │ │ │ │ ├── result_train.png │ │ │ │ ├── result-train.png │ │ │ │ ├── stop.png │ │ │ │ └── test_result.png │ │ │ ├── images │ │ │ │ └── jpeg │ │ │ │ ├── raspberry_pi_5_official_camera_cable_200mm_details_5.jpg │ │ │ │ ├── raspberry-pi-5-official-camera-cable-200mm-details-5.jpg │ │ │ │ └── raspis.jpg │ │ │ ├── llm │ │ │ │ ├── images │ │ │ │ │ ├── 2304.13712 │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── cover.jpg │ │ │ │ │ │ ├── halo.jpg │ │ │ │ │ │ ├── image _test_2.jpg │ │ │ │ │ │ ├── image_test_1.jpg │ │ │ │ │ │ ├── image_test_2.jpg │ │ │ │ │ │ ├── image_test_3.jpg │ │ │ │ │ │ ├── llama3_2.jpg │ │ │ │ │ │ ├── paris.jpg │ │ │ │ │ │ ├── slm_example.jpg │ │ │ │ │ │ └── slm-example.jpg │ │ │ │ │ ├── ollama.png │ │ │ │ │ └── png │ │ │ │ │ ├── app_machu_picchu.png │ │ │ │ │ ├── app-machu-picchu.png │ │ │ │ │ ├── bench.png │ │ │ │ │ ├── block_2.png │ │ │ │ │ ├── block_fc_proj.png │ │ │ │ │ ├── block-2.png │ │ │ │ │ ├── block-fc-proj.png │ │ │ │ │ ├── calc_real.png │ │ │ │ │ ├── cooler.png │ │ │ │ │ ├── embed_models.png │ │ │ │ │ ├── gemma_2.png │ │ │ │ │ ├── gemma.png │ │ │ │ │ ├── htop.png │ │ │ │ │ ├── image_test_path.png │ │ │ │ │ ├── image_test-path.png │ │ │ │ │ ├── install_ollama_rpi5.png │ │ │ │ │ ├── install_ollama.png │ │ │ │ │ ├── install-ollama-rpi5.png │ │ │ │ │ ├── install-ollama.png │ │ │ │ │ ├── jupyter.png │ │ │ │ │ ├── llama3_2_1b_performance.png │ │ │ │ │ ├── llama3_2_3b_performance.png │ │ │ │ │ ├── llms_slm.png │ │ │ │ │ ├── llms-slm.png │ │ │ │ │ ├── menu.png │ │ │ │ │ ├── ollama.png │ │ │ │ │ ├── paris_2.png │ │ │ │ │ ├── paris_app.png │ │ │ │ │ ├── paris_infer_1.png │ │ │ │ │ ├── paris_lat_lon.png │ │ │ │ │ ├── paris-2.png │ │ │ │ │ ├── paris-app.png │ │ │ │ │ ├── paris-infer-1.png │ │ │ │ │ ├── paris-lat-lon.png │ │ │ │ │ ├── rag_1.png │ │ │ │ │ ├── rag_2_2.png │ │ │ │ │ ├── rag-1.png │ │ │ │ │ ├── rag-2-2.png │ │ │ │ │ ├── resourses_temp.png │ │ │ │ │ ├── resourses-temp.png │ │ │ │ │ ├── run_gemma.png │ │ │ │ │ ├── run-gemma.png │ │ │ │ │ ├── script_fc.png │ │ │ │ │ ├── script-fc.png │ │ │ │ │ ├── small_and_multimodal.png │ │ │ │ │ ├── temp_comp.png │ │ │ │ │ └── verbose.png │ │ │ │ └── llm.qmd │ │ │ ├── object_detection │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── cover.jpg │ │ │ │ │ │ ├── obj_app.jpg │ │ │ │ │ │ ├── objxclas.jpg │ │ │ │ │ │ ├── proj_goal.jpg │ │ │ │ │ │ └── versions.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── annotation.png │ │ │ │ │ ├── app_running.png │ │ │ │ │ ├── app-running.png │ │ │ │ │ ├── app.png │ │ │ │ │ ├── auto-1af10b28_1af10b28.png │ │ │ │ │ ├── block.png │ │ │ │ │ ├── boulding_boxes.png │ │ │ │ │ ├── boulding-boxes.png │ │ │ │ │ ├── cap_img.png │ │ │ │ │ ├── cap-img.png │ │ │ │ │ ├── cat_dog.png │ │ │ │ │ ├── cat-dog.png │ │ │ │ │ ├── create_project_rf.png │ │ │ │ │ ├── create-project-rf.png │ │ │ │ │ ├── data_bus.png │ │ │ │ │ ├── data-bus.png │ │ │ │ │ ├── dataset_code.png │ │ │ │ │ ├── dataset_rf.png │ │ │ │ │ ├── dataset_struct.png │ │ │ │ │ ├── dataset-struct.png │ │ │ │ │ ├── dataset.png │ │ │ │ │ ├── deploy_linux.png │ │ │ │ │ ├── deploy-linux.png │ │ │ │ │ ├── download_dataset.png │ │ │ │ │ ├── download-dataset.png │ │ │ │ │ ├── ei_dataset.png │ │ │ │ │ ├── ei_deploy_int8.png │ │ │ │ │ ├── ei_features.png │ │ │ │ │ ├── ei_image_pre.png │ │ │ │ │ ├── ei_train_result.png │ │ │ │ │ ├── ei-dataset.png │ │ │ │ │ ├── ei-deploy-int8.png │ │ │ │ │ ├── ei-features.png │ │ │ │ │ ├── ei-image-pre.png │ │ │ │ │ ├── ei-train-result.png │ │ │ │ │ ├── final_dataset.png │ │ │ │ │ ├── final-dataset.png │ │ │ │ │ ├── fomo_1.png │ │ │ │ │ ├── fomo_test.png │ │ │ │ │ ├── fomo_train_result.png │ │ │ │ │ ├── fomo_works.png │ │ │ │ │ ├── fomo-1.png │ │ │ │ │ ├── fomo-test.png │ │ │ │ │ ├── fomo-train-result.png │ │ │ │ │ ├── fomo-works.png │ │ │ │ │ ├── img_cap_1.png │ │ │ │ │ ├── img_cap-1.png │ │ │ │ │ ├── impulse_2.png │ │ │ │ │ ├── impulse_design.png │ │ │ │ │ ├── impulse-2.png │ │ │ │ │ ├── impulse-design.png │ │ │ │ │ ├── infer_fomo_result.png │ │ │ │ │ ├── infer_iou.png │ │ │ │ │ ├── infer_mobv1.png │ │ │ │ │ ├── infer_mult.png │ │ │ │ │ ├── infer_text.png │ │ │ │ │ ├── infer_visual.png │ │ │ │ │ ├── infer_yolo.png │ │ │ │ │ ├── infer-fomo-result.png │ │ │ │ │ ├── infer-iou.png │ │ │ │ │ ├── infer-mobv1.png │ │ │ │ │ ├── infer-mult.png │ │ │ │ │ ├── infer-text.png │ │ │ │ │ ├── infer-visual.png │ │ │ │ │ ├── infer-yolo.png │ │ │ │ │ ├── inference result.png │ │ │ │ │ ├── inference_result.png │ │ │ │ │ ├── matrix.png │ │ │ │ │ ├── model_choice.png │ │ │ │ │ ├── model_deploy.png │ │ │ │ │ ├── model-choice.png │ │ │ │ │ ├── model-deploy.png │ │ │ │ │ ├── orig_fomo_img.png │ │ │ │ │ ├── orig_img.png │ │ │ │ │ ├── orig-fomo-img.png │ │ │ │ │ ├── orig-img.png │ │ │ │ │ ├── pre_proc.png │ │ │ │ │ ├── pre-proc.png │ │ │ │ │ ├── python_infer_bus.png │ │ │ │ │ ├── python-infer-bus.png │ │ │ │ │ ├── result_bus.png │ │ │ │ │ ├── result-bus.png │ │ │ │ │ ├── target_device.png │ │ │ │ │ ├── target-device.png │ │ │ │ │ ├── test_infer_yolo.png │ │ │ │ │ ├── test-infer-yolo.png │ │ │ │ │ ├── train_result.png │ │ │ │ │ ├── train-result.png │ │ │ │ │ ├── upload_data.png │ │ │ │ │ ├── upload-data.png │ │ │ │ │ ├── visual_inf.png │ │ │ │ │ ├── yolo_bus.png │ │ │ │ │ ├── yolo_dataset_upload.png │ │ │ │ │ ├── yolo_infer_bus.png │ │ │ │ │ ├── yolo_infer_raspi.png │ │ │ │ │ ├── yolo_py_script.png │ │ │ │ │ ├── yolo_train_lib.png │ │ │ │ │ ├── yolo-bus.png │ │ │ │ │ ├── yolo-dataset-upload.png │ │ │ │ │ ├── yolo-infer-bus.png │ │ │ │ │ ├── yolo-infer-raspi.png │ │ │ │ │ ├── yolo-py-script.png │ │ │ │ │ └── yolo-train-lib.png │ │ │ │ └── object_detection.qmd │ │ │ ├── raspi.qmd │ │ │ ├── setup │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── list_cams_raspi_zero.jpg │ │ │ │ │ │ ├── list_cams_raspi-zero.jpg │ │ │ │ │ │ ├── r5_hardware.jpg │ │ │ │ │ │ ├── r5-hardware.jpg │ │ │ │ │ │ ├── rasp_setup_portada.jpg │ │ │ │ │ │ ├── rasp_zero_with_cam.jpg │ │ │ │ │ │ ├── rasp-zero-with-cam.jpg │ │ │ │ │ │ ├── raspberry_pi_5_pi_camera_module_v2_connected_cable.jpg │ │ │ │ │ │ ├── raspberry-pi-5-pi-camera-module-v2-connected-cable.jpg │ │ │ │ │ │ ├── setup.jpg │ │ │ │ │ │ ├── usb_cam_2.jpg │ │ │ │ │ │ ├── usb_camera.jpg │ │ │ │ │ │ ├── usb-cam-2.jpg │ │ │ │ │ │ ├── zero_hardware.jpg │ │ │ │ │ │ └── zero-hardware.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── cam_2_test.png │ │ │ │ │ ├── cam-2_test.png │ │ │ │ │ ├── filezila.png │ │ │ │ │ ├── htop.png │ │ │ │ │ ├── image_test_vga.png │ │ │ │ │ ├── image_test.png │ │ │ │ │ ├── image-test_vga.png │ │ │ │ │ ├── image-test.png │ │ │ │ │ ├── list_archives.png │ │ │ │ │ ├── list_cam_raspi_5.png │ │ │ │ │ ├── list_cam_raspi-5.png │ │ │ │ │ ├── list_cams_raspi_5.png │ │ │ │ │ ├── list_cams_raspi-5.png │ │ │ │ │ ├── pasted_graphic_11_i_lcmy_o_y_u7_x.png │ │ │ │ │ ├── pasted_graphic_11_i_lcmy_oyu7_x.png │ │ │ │ │ ├── pasted_graphic_11_ilcmyoyu7x.png │ │ │ │ │ ├── r5_burn.png │ │ │ │ │ ├── r5-burn.png │ │ │ │ │ ├── raspi_5_cam.png │ │ │ │ │ ├── raspi-5-cam.png │ │ │ │ │ ├── ssh.png │ │ │ │ │ ├── stream.png │ │ │ │ │ ├── test_camera_raspi_5.png │ │ │ │ │ ├── test_camera_raspi-5.png │ │ │ │ │ ├── test_txt.png │ │ │ │ │ ├── test_view.png │ │ │ │ │ ├── test-view.png │ │ │ │ │ ├── tranfer_text_mac.png │ │ │ │ │ ├── tranfer-text-mac.png │ │ │ │ │ ├── transfer_file.png │ │ │ │ │ ├── transfer_from_rspi_comp.png │ │ │ │ │ ├── transfer-from-rspi-comp.png │ │ │ │ │ ├── u_s_b_c_a_m_2.png │ │ │ │ │ ├── usb_cam_2.png │ │ │ │ │ ├── usb_cam_test_2.png │ │ │ │ │ ├── usb_cam_test.png │ │ │ │ │ ├── usb-cam-2.png │ │ │ │ │ ├── usb-cam-test-2.png │ │ │ │ │ ├── usb-cam-test.png │ │ │ │ │ ├── vnc_1.png │ │ │ │ │ ├── vnc_2.png │ │ │ │ │ ├── vnc_3.png │ │ │ │ │ ├── vnc_4.png │ │ │ │ │ ├── vnc_5.png │ │ │ │ │ ├── vnc_6.png │ │ │ │ │ ├── vnc_7.png │ │ │ │ │ ├── vnc_8.png │ │ │ │ │ ├── vnc_9.png │ │ │ │ │ ├── vnc-1.png │ │ │ │ │ ├── vnc-2.png │ │ │ │ │ ├── vnc-3.png │ │ │ │ │ ├── vnc-4.png │ │ │ │ │ ├── vnc-5.png │ │ │ │ │ ├── vnc-6.png │ │ │ │ │ ├── vnc-7.png │ │ │ │ │ ├── vnc-8.png │ │ │ │ │ ├── vnc-9.png │ │ │ │ │ ├── zero_burn.png │ │ │ │ │ └── zero-burn.png │ │ │ │ └── setup.qmd │ │ │ └── vlm │ │ │ ├── images │ │ │ │ ├── jpeg │ │ │ │ │ ├── cover.jpg │ │ │ │ │ ├── florence_diagr.jpg │ │ │ │ │ ├── florence-diagr.jpg │ │ │ │ │ ├── htop.jpg │ │ │ │ │ ├── raspi5_active_cooler.jpg │ │ │ │ │ └── raspi5-active-cooler.jpg │ │ │ │ └── png │ │ │ │ ├── arch.png │ │ │ │ ├── caption_boxes.png │ │ │ │ ├── caption_ground.png │ │ │ │ ├── caption-boxes.png │ │ │ │ ├── cascade.png │ │ │ │ ├── dataset_f_l_d_5_b.png │ │ │ │ ├── dataset_fld_5_b.png │ │ │ │ ├── dataset_fld-5b.png │ │ │ │ ├── dog_bottle_seg.png │ │ │ │ ├── fine_tuning.png │ │ │ │ ├── fine-tuning.png │ │ │ │ ├── flyer.png │ │ │ │ ├── fusca.png │ │ │ │ ├── htop.png │ │ │ │ ├── img_test.png │ │ │ │ ├── jupyter.png │ │ │ │ ├── od_caption_cat_dog_table.png │ │ │ │ ├── od_cat_dogs.png │ │ │ │ ├── od_table.png │ │ │ │ ├── open_vacab_exemples.png │ │ │ │ ├── orange_seg.png │ │ │ │ ├── output_ocr.png │ │ │ │ ├── result_test.png │ │ │ │ ├── ssh.png │ │ │ │ ├── test_pytorch.png │ │ │ │ ├── test-pytorch.png │ │ │ │ └── wine_glass.png │ │ │ └── vlm.qmd │ │ ├── seeed │ │ │ ├── grove_vision_ai_v2 │ │ │ │ ├── grove_vision_ai_v2.qmd │ │ │ │ ├── image_classification │ │ │ │ │ ├── image_classification.qmd │ │ │ │ │ └── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── cover_vision_a_i.jpg │ │ │ │ │ │ ├── cover_vision_ai.jpg │ │ │ │ │ │ ├── cover-visionai.jpg │ │ │ │ │ │ ├── xiao_grove_m_s_ufq_e5t_wq.jpg │ │ │ │ │ │ └── xiao-grove_msufqe5twq.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── benchmark.png │ │ │ │ │ ├── block_diagram.png │ │ │ │ │ ├── block_iect_infer.png │ │ │ │ │ ├── block-diagram.png │ │ │ │ │ ├── block-iect-infer.png │ │ │ │ │ ├── classes.png │ │ │ │ │ ├── collect_class.png │ │ │ │ │ ├── collect-class.png │ │ │ │ │ ├── connect_deploy.png │ │ │ │ │ ├── connect-deploy.png │ │ │ │ │ ├── connection.png │ │ │ │ │ ├── data_collection.png │ │ │ │ │ ├── data-collection.png │ │ │ │ │ ├── ei_proj.png │ │ │ │ │ ├── ei-proj.png │ │ │ │ │ ├── eigen.png │ │ │ │ │ ├── enter_classes.png │ │ │ │ │ ├── enter-classes.png │ │ │ │ │ ├── erase_img.png │ │ │ │ │ ├── erase-img.png │ │ │ │ │ ├── ext_les_inf.png │ │ │ │ │ ├── ext-les-inf.png │ │ │ │ │ ├── img_class_goal_3r_vvn_ux29m.png │ │ │ │ │ ├── img_class_goal_3rvvnux29m.png │ │ │ │ │ ├── img_class_project.png │ │ │ │ │ ├── img-class-project.png │ │ │ │ │ ├── impulse.png │ │ │ │ │ ├── infer_results.png │ │ │ │ │ ├── infer-results.png │ │ │ │ │ ├── inference_periquito.png │ │ │ │ │ ├── inference-periquito.png │ │ │ │ │ ├── inference.png │ │ │ │ │ ├── jsonlib.png │ │ │ │ │ ├── led_off.png │ │ │ │ │ ├── led_on.png │ │ │ │ │ ├── led-off.png │ │ │ │ │ ├── led-on.png │ │ │ │ │ ├── library.png │ │ │ │ │ ├── mem.png │ │ │ │ │ ├── model_2.jpg │ │ │ │ │ ├── montage.png │ │ │ │ │ ├── person_detection_infer.png │ │ │ │ │ ├── person-detection-infer.png │ │ │ │ │ ├── saving_data.png │ │ │ │ │ ├── train_result.png │ │ │ │ │ ├── train-result.png │ │ │ │ │ ├── video_app.png │ │ │ │ │ ├── video_stream_cap.png │ │ │ │ │ ├── video-app.png │ │ │ │ │ ├── video-stream-cap.png │ │ │ │ │ ├── webpage.png │ │ │ │ │ ├── xiao_connection.png │ │ │ │ │ ├── xiao_setup.png │ │ │ │ │ ├── xiao-connection.png │ │ │ │ │ ├── xiao-setup.png │ │ │ │ │ └── zip.png │ │ │ │ ├── images │ │ │ │ │ └── jpeg │ │ │ │ │ └── grove_vision_ai_v2.jpeg │ │ │ │ ├── object_detection │ │ │ │ │ └── object_detection.qmd │ │ │ │ └── setup_and_no_code_apps │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── cable_connection_csgwmp_m_y5i.jpg │ │ │ │ │ │ ├── cable_connection_csgwmp_my5i.jpg │ │ │ │ │ │ ├── cable_connection_csgwmpmy5i.jpg │ │ │ │ │ │ ├── cover_part1.jpg │ │ │ │ │ │ ├── cover-part1.jpg │ │ │ │ │ │ ├── device.jpeg │ │ │ │ │ │ ├── grove.jpeg │ │ │ │ │ │ ├── grove.jpg │ │ │ │ │ │ ├── himax_wise_eye2.jpg │ │ │ │ │ │ └── himax-wiseeye2.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── apps.png │ │ │ │ │ ├── beatles.png │ │ │ │ │ ├── bench_1.png │ │ │ │ │ ├── bench-1.png │ │ │ │ │ ├── classes_img_class.png │ │ │ │ │ ├── classes.png │ │ │ │ │ ├── clean_dataset.png │ │ │ │ │ ├── collect_imaages.png │ │ │ │ │ ├── collect-imaages.png │ │ │ │ │ ├── connect_sense_craft_train.png │ │ │ │ │ ├── connect-sensecraft-train.png │ │ │ │ │ ├── deploy_2.png │ │ │ │ │ ├── deploy-2.png │ │ │ │ │ ├── himax_toolkit.png │ │ │ │ │ ├── himax-toolkit.png │ │ │ │ │ ├── img_clas_result.png │ │ │ │ │ ├── img_class_infer.png │ │ │ │ │ ├── img_class_model_deploy.png │ │ │ │ │ ├── img_class_project.png │ │ │ │ │ ├── img_class_studio.png │ │ │ │ │ ├── img_class_yolo_result.png │ │ │ │ │ ├── img_class_yolo.png │ │ │ │ │ ├── img_class-model-deploy.png │ │ │ │ │ ├── img-clas-result.png │ │ │ │ │ ├── img-class-infer.png │ │ │ │ │ ├── img-class-project.png │ │ │ │ │ ├── img-class-studio.png │ │ │ │ │ ├── img-class-yolo-result.png │ │ │ │ │ ├── img-class-yolo.png │ │ │ │ │ ├── inf_result_deploy.png │ │ │ │ │ ├── inf_xiao.png │ │ │ │ │ ├── inf-result-deploy.png │ │ │ │ │ ├── inf-xiao.png │ │ │ │ │ ├── montage.png │ │ │ │ │ ├── new_webpage.png │ │ │ │ │ ├── new-webpage.png │ │ │ │ │ ├── obj_det.png │ │ │ │ │ ├── obj-det.png │ │ │ │ │ ├── people_dancing.png │ │ │ │ │ ├── people-dancing.png │ │ │ │ │ ├── person_class.png │ │ │ │ │ ├── person-class.png │ │ │ │ │ ├── person.png │ │ │ │ │ ├── pose_girl.png │ │ │ │ │ ├── pose-girl.png │ │ │ │ │ ├── pose.png │ │ │ │ │ ├── project_block_diagram.png │ │ │ │ │ ├── project-block-diagram.png │ │ │ │ │ ├── saving_model.png │ │ │ │ │ ├── saving-model.png │ │ │ │ │ ├── sense_craft1.png │ │ │ │ │ ├── sense_craft2.png │ │ │ │ │ ├── sensecraft1.png │ │ │ │ │ ├── sensecraft2.png │ │ │ │ │ ├── settings.png │ │ │ │ │ ├── studio.png │ │ │ │ │ ├── system.png │ │ │ │ │ ├── train_img_class.png │ │ │ │ │ ├── train-img-class.png │ │ │ │ │ ├── x_i_a_o_vision_a_i_cam_2.png │ │ │ │ │ ├── xiao_vision_ai_cam_2.png │ │ │ │ │ └── xiao-vision-ai-cam-2.png │ │ │ │ └── setup_and_no_code_apps.qmd │ │ │ └── xiao_esp32s3 │ │ │ ├── image_classification │ │ │ │ ├── image_classification.bib │ │ │ │ ├── image_classification.qmd │ │ │ │ └── images │ │ │ │ ├── jpeg │ │ │ │ │ ├── sense_craft_4.jpg │ │ │ │ │ ├── sense_craft_log.jpg │ │ │ │ │ ├── sensecraft-4.jpg │ │ │ │ │ └── sensecraft-log.jpg │ │ │ │ └── png │ │ │ │ ├── action.png │ │ │ │ ├── ard_deploy.png │ │ │ │ ├── ard_ide.png │ │ │ │ ├── ard_inf.png │ │ │ │ ├── ard_inher_gen_oled.png │ │ │ │ ├── ard_install_lib.png │ │ │ │ ├── ard-deploy.png │ │ │ │ ├── ard-ide.png │ │ │ │ ├── ard-inf.png │ │ │ │ ├── ard-inher-gen-oled.png │ │ │ │ ├── ard-install_lib.png │ │ │ │ ├── classes_img_class.png │ │ │ │ ├── classes.png │ │ │ │ ├── clean_dataset.png │ │ │ │ ├── collect_imaages.png │ │ │ │ ├── collect-imaages.png │ │ │ │ ├── connection.png │ │ │ │ ├── dataset_pc.png │ │ │ │ ├── dataset-pc.png │ │ │ │ ├── dataset.png │ │ │ │ ├── depl.png │ │ │ │ ├── deploy_1.png │ │ │ │ ├── deploy_2.png │ │ │ │ ├── deploy-1.png │ │ │ │ ├── distr_line.png │ │ │ │ ├── distr-line.png │ │ │ │ ├── export_dataset.png │ │ │ │ ├── export-dataset.png │ │ │ │ ├── get_dataset.png │ │ │ │ ├── get-dataset.png │ │ │ │ ├── iic.png │ │ │ │ ├── img_class_infer.png │ │ │ │ ├── img_class_project.png │ │ │ │ ├── img-class-infer.png │ │ │ │ ├── img-class-project.png │ │ │ │ ├── impulse.png │ │ │ │ ├── infer.png │ │ │ │ ├── ini_d_a_l_l_e.png │ │ │ │ ├── ini_dalle.png │ │ │ │ ├── ini-dalle.png │ │ │ │ ├── led_wheel.png │ │ │ │ ├── led-wheel.png │ │ │ │ ├── model_saved.png │ │ │ │ ├── model_selection.png │ │ │ │ ├── model_tflite_infer.png │ │ │ │ ├── model-saved.png │ │ │ │ ├── model-tflite-infer.png │ │ │ │ ├── netron.png │ │ │ │ ├── person_class.png │ │ │ │ ├── person_detect_inference.png │ │ │ │ ├── person_trigger.png │ │ │ │ ├── person-class.png │ │ │ │ ├── person-detect-inference.png │ │ │ │ ├── person-trigger.png │ │ │ │ ├── pipeline_sensecraft.png │ │ │ │ ├── pipeline-sensecraft.png │ │ │ │ ├── pipeline.png │ │ │ │ ├── save_model.png │ │ │ │ ├── save-model.png │ │ │ │ ├── select_folder.png │ │ │ │ ├── select_to_deploy.png │ │ │ │ ├── select-folder.png │ │ │ │ ├── select-to-deploy.png │ │ │ │ ├── tfmodel_infer.png │ │ │ │ ├── tfmodel-infer.png │ │ │ │ ├── tl.png │ │ │ │ ├── train_2.png │ │ │ │ ├── train_img_class.png │ │ │ │ ├── train_result.png │ │ │ │ ├── train_setup.png │ │ │ │ ├── train-img-class.png │ │ │ │ ├── train-result.png │ │ │ │ ├── train-setup.png │ │ │ │ ├── trigger.png │ │ │ │ ├── up_data_2.png │ │ │ │ ├── up_data.png │ │ │ │ ├── up-data-2.png │ │ │ │ ├── up-data.png │ │ │ │ ├── upload_model.png │ │ │ │ └── upload-model.png │ │ │ ├── images │ │ │ │ ├── jpeg │ │ │ │ │ ├── imags-setup │ │ │ │ │ │ ├── img_cap.jpg │ │ │ │ │ │ ├── serial_monitor.png │ │ │ │ │ │ ├── web_cap1.jpg │ │ │ │ │ │ ├── webcap1.jpg │ │ │ │ │ │ └── xiao_setup.jpg │ │ │ │ │ ├── imgs_classif │ │ │ │ │ │ ├── inference.jpg │ │ │ │ │ │ ├── sense_craft_1.jpg │ │ │ │ │ │ ├── sense_craft_2.jpg │ │ │ │ │ │ ├── sense_craft_2.png │ │ │ │ │ │ ├── sense_craft_3.jpg │ │ │ │ │ │ ├── sense_craft_4.jpg │ │ │ │ │ │ ├── sense_craft_apple_2.jpg │ │ │ │ │ │ ├── sense_craft_apple.jpg │ │ │ │ │ │ ├── sense_craft_log.jpg │ │ │ │ │ │ ├── sensecraft-1.jpg │ │ │ │ │ │ ├── sensecraft-2.jpg │ │ │ │ │ │ ├── sensecraft-2.png │ │ │ │ │ │ ├── sensecraft-3.jpg │ │ │ │ │ │ ├── sensecraft-4.jpg │ │ │ │ │ │ ├── sensecraft-apple-2.jpg │ │ │ │ │ │ ├── sensecraft-apple.jpg │ │ │ │ │ │ └── sensecraft-log.jpg │ │ │ │ │ ├── imgs-detect │ │ │ │ │ │ ├── monitor.png │ │ │ │ │ │ ├── sense_craft_1.jpg │ │ │ │ │ │ ├── sense_craft_2.jpg │ │ │ │ │ │ ├── sense_craft_3.jpg │ │ │ │ │ │ ├── sense_craft_4.jpg │ │ │ │ │ │ ├── sense-craft-1.jpg │ │ │ │ │ │ ├── sense-craft-2.jpg │ │ │ │ │ │ ├── sense-craft-3.jpg │ │ │ │ │ │ └── sense-craft-4.jpg │ │ │ │ │ ├── motion_class_ad │ │ │ │ │ │ └── ini.jpg │ │ │ │ │ └── xiao_esp32s3_decked.jpeg │ │ │ │ └── png │ │ │ │ ├── xiaoml_kit_complete.png │ │ │ │ └── xiaoml_kit.png │ │ │ ├── kws │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── kws_ini.jpeg │ │ │ │ │ │ └── kws_ini.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── 1_3n44ykL.png │ │ │ │ │ ├── image_10.png │ │ │ │ │ ├── image_11.png │ │ │ │ │ ├── image_12.png │ │ │ │ │ ├── image_13.png │ │ │ │ │ ├── image_14.png │ │ │ │ │ ├── image_15.png │ │ │ │ │ ├── image_16.png │ │ │ │ │ ├── image_17.png │ │ │ │ │ ├── image_18.png │ │ │ │ │ ├── image_19.png │ │ │ │ │ ├── image_2.png │ │ │ │ │ ├── image_20.png │ │ │ │ │ ├── image_21.png │ │ │ │ │ ├── image_22.png │ │ │ │ │ ├── image_23.png │ │ │ │ │ ├── image_24.png │ │ │ │ │ ├── image_25.png │ │ │ │ │ ├── image_3.png │ │ │ │ │ ├── image_4.png │ │ │ │ │ ├── image_5.png │ │ │ │ │ ├── image_6.png │ │ │ │ │ ├── image_7.png │ │ │ │ │ ├── image_8.png │ │ │ │ │ ├── image_9.png │ │ │ │ │ ├── image.png │ │ │ │ │ ├── kit_infer.png │ │ │ │ │ ├── kit-infer.png │ │ │ │ │ ├── kws_ini_kit.png │ │ │ │ │ ├── kws_ini.png │ │ │ │ │ ├── pasted_graphic_2.png │ │ │ │ │ ├── pasted_graphic_4.png │ │ │ │ │ ├── pasted_graphic_44.png │ │ │ │ │ ├── pasted_graphic_46.png │ │ │ │ │ ├── pasted_graphic_48.png │ │ │ │ │ ├── pasted_graphic_49.png │ │ │ │ │ ├── pasted_graphic_51.png │ │ │ │ │ ├── pasted_graphic_54.png │ │ │ │ │ ├── pasted_graphic_58.png │ │ │ │ │ ├── pasted_graphic_59.png │ │ │ │ │ ├── pasted_graphic_62.png │ │ │ │ │ ├── pasted_graphic.png │ │ │ │ │ ├── plotter.png │ │ │ │ │ └── sound-audio.png │ │ │ │ ├── kws.bib │ │ │ │ └── kws.qmd │ │ │ ├── motion_classification │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── anomaly.jpg │ │ │ │ │ │ ├── classes_mov_def.jpg │ │ │ │ │ │ ├── classes.jpg │ │ │ │ │ │ ├── data_forw.jpg │ │ │ │ │ │ ├── data-forw.jpg │ │ │ │ │ │ └── ini.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── anomaly_train.png │ │ │ │ │ ├── anomaly-train.png │ │ │ │ │ ├── boat.png │ │ │ │ │ ├── datasets.png │ │ │ │ │ ├── deploy.png │ │ │ │ │ ├── e_i_studio_ini.png │ │ │ │ │ ├── ei_device.png │ │ │ │ │ ├── ei_studio_ini.png │ │ │ │ │ ├── ei-device.png │ │ │ │ │ ├── eistudio-ini.png │ │ │ │ │ ├── feat_ger.png │ │ │ │ │ ├── feat-ger.png │ │ │ │ │ ├── features_2.png │ │ │ │ │ ├── features-2.png │ │ │ │ │ ├── features.png │ │ │ │ │ ├── freq_dom.png │ │ │ │ │ ├── freq-dom.png │ │ │ │ │ ├── impulse.png │ │ │ │ │ ├── imu_directions.png │ │ │ │ │ ├── imu-directions.png │ │ │ │ │ ├── inf_ano.png │ │ │ │ │ ├── inf_idle.png │ │ │ │ │ ├── inf_lift.png │ │ │ │ │ ├── inf_mar.png │ │ │ │ │ ├── inf_oled.png │ │ │ │ │ ├── inf_ter.png │ │ │ │ │ ├── inf-ano.png │ │ │ │ │ ├── inf-idle.png │ │ │ │ │ ├── inf-lift.png │ │ │ │ │ ├── inf-mar.png │ │ │ │ │ ├── inf-oled.png │ │ │ │ │ ├── inf-ter.png │ │ │ │ │ ├── lib.png │ │ │ │ │ ├── live_test.png │ │ │ │ │ ├── live-test.png │ │ │ │ │ ├── model_2.png │ │ │ │ │ ├── model-2.png │ │ │ │ │ ├── model.png │ │ │ │ │ ├── models.png │ │ │ │ │ ├── serial_monitor.png │ │ │ │ │ ├── terminal_cli.png │ │ │ │ │ ├── terminal-cli.png │ │ │ │ │ ├── terrestrial_raw_data.png │ │ │ │ │ ├── terrestrial-raw_data.png │ │ │ │ │ ├── test.png │ │ │ │ │ ├── time_dom.png │ │ │ │ │ ├── time-dom.png │ │ │ │ │ └── train.png │ │ │ │ ├── motion_classification.bib │ │ │ │ └── motion_classification.qmd │ │ │ ├── object_detection │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── sense_craft_1.jpg │ │ │ │ │ │ ├── sense_craft_2.jpg │ │ │ │ │ │ ├── sense_craft_3.jpg │ │ │ │ │ │ ├── sense_craft_4.jpg │ │ │ │ │ │ ├── sense-craft-1.jpg │ │ │ │ │ │ ├── sense-craft-2.jpg │ │ │ │ │ │ ├── sense-craft-3.jpg │ │ │ │ │ │ ├── sense-craft-4.jpg │ │ │ │ │ │ ├── sensecraft-1.jpg │ │ │ │ │ │ └── sensecraft-2.jpg │ │ │ │ │ ├── jpg │ │ │ │ │ │ ├── ide.jpg │ │ │ │ │ │ ├── img_11.jpg │ │ │ │ │ │ ├── img_13.jpg │ │ │ │ │ │ ├── img_class.jpg │ │ │ │ │ │ ├── objects.jpg │ │ │ │ │ │ └── setup-img-collection.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── bugs-inference.png │ │ │ │ │ ├── fruits-inference.png │ │ │ │ │ ├── img_10.png │ │ │ │ │ ├── img_12.png │ │ │ │ │ ├── img_14.png │ │ │ │ │ ├── img_15.png │ │ │ │ │ ├── img_16.png │ │ │ │ │ ├── img_17.png │ │ │ │ │ ├── img_18.png │ │ │ │ │ ├── img_19.png │ │ │ │ │ ├── img_20.png │ │ │ │ │ ├── img_21.png │ │ │ │ │ ├── img_22.png │ │ │ │ │ ├── img_23.png │ │ │ │ │ ├── img_24.png │ │ │ │ │ ├── img_25.png │ │ │ │ │ ├── img_3.png │ │ │ │ │ ├── img_4.png │ │ │ │ │ ├── img_6.png │ │ │ │ │ ├── img_7.png │ │ │ │ │ ├── img_8.png │ │ │ │ │ ├── img_9.png │ │ │ │ │ ├── inference-back.png │ │ │ │ │ ├── monitor.png │ │ │ │ │ ├── move_to_test.png │ │ │ │ │ ├── obj_detec_ini.png │ │ │ │ │ ├── oranges-frogs.png │ │ │ │ │ └── serial_monitor.png │ │ │ │ └── object_detection.qmd │ │ │ ├── setup │ │ │ │ ├── images │ │ │ │ │ ├── jpeg │ │ │ │ │ │ ├── antenna.jpg │ │ │ │ │ │ ├── heat_sink.jpg │ │ │ │ │ │ ├── heat-sink.jpg │ │ │ │ │ │ ├── hello_world.jpg │ │ │ │ │ │ ├── sink1.jpg │ │ │ │ │ │ └── xiao_setup.jpg │ │ │ │ │ └── png │ │ │ │ │ ├── app.png │ │ │ │ │ ├── app2.png │ │ │ │ │ ├── blink.png │ │ │ │ │ ├── exp_board_views.png │ │ │ │ │ ├── extras.png │ │ │ │ │ ├── heat_sink_assembly.png │ │ │ │ │ ├── heat-sink-assembly.png │ │ │ │ │ ├── ide_1.png │ │ │ │ │ ├── img_cap.png │ │ │ │ │ ├── imu_directions.png │ │ │ │ │ ├── imu_mark.png │ │ │ │ │ ├── imu-directions.png │ │ │ │ │ ├── imu-mark.png │ │ │ │ │ ├── imu.png │ │ │ │ │ ├── kit_2.png │ │ │ │ │ ├── kit_assembled.png │ │ │ │ │ ├── kit-2.png │ │ │ │ │ ├── mounted.png │ │ │ │ │ ├── oled.png │ │ │ │ │ ├── plotter.png │ │ │ │ │ ├── psram.png │ │ │ │ │ ├── rec.png │ │ │ │ │ ├── sdcard.png │ │ │ │ │ ├── sel_board_port.png │ │ │ │ │ ├── sense_craft1.png │ │ │ │ │ ├── sense_craft2.png │ │ │ │ │ ├── sense_craft3.png │ │ │ │ │ ├── sense_craft4.png │ │ │ │ │ ├── sense_craft5.png │ │ │ │ │ ├── sense_craft6.png │ │ │ │ │ ├── sensecraft1.png │ │ │ │ │ ├── sensecraft2.png │ │ │ │ │ ├── sensecraft3.png │ │ │ │ │ ├── sensecraft4.png │ │ │ │ │ ├── sensecraft5.png │ │ │ │ │ ├── sensecraft6.png │ │ │ │ │ ├── sound_test.png │ │ │ │ │ ├── tools_board.png │ │ │ │ │ ├── usb_conn.png │ │ │ │ │ ├── usb-conn.png │ │ │ │ │ ├── web_cap_1.png │ │ │ │ │ ├── webcap-1.png │ │ │ │ │ ├── wifi_2.png │ │ │ │ │ ├── wifi-2.png │ │ │ │ │ ├── wifi.png │ │ │ │ │ ├── xiao_esp32c3_sense_pin_out.png │ │ │ │ │ ├── xiao_esp32c3_sense_pin-out.png │ │ │ │ │ ├── xiao_pins.png │ │ │ │ │ ├── xiao.png │ │ │ │ │ └── xiaoml_kit.png │ │ │ │ └── setup.qmd │ │ │ └── xiao_esp32s3.qmd │ │ └── shared │ │ ├── dsp_spectral_features_block │ │ │ ├── dsp_spectral_features_block.bib │ │ │ ├── dsp_spectral_features_block.qmd │ │ │ └── images │ │ │ ├── jpg │ │ │ │ ├── dsp_ini.jpg │ │ │ │ └── spectral_block.jpeg │ │ │ └── png │ │ │ ├── case_study.png │ │ │ ├── data_sample.png │ │ │ ├── features.png │ │ │ ├── fft_result.png │ │ │ ├── fft.png │ │ │ ├── impulse.png │ │ │ ├── kurto.png │ │ │ ├── process_features.png │ │ │ ├── rms.png │ │ │ ├── sample_no_mean.png │ │ │ ├── sample.png │ │ │ ├── skew_2.png │ │ │ ├── skew.png │ │ │ ├── v1_features.png │ │ │ ├── v1.png │ │ │ ├── wav_processed.png │ │ │ ├── wav_result.png │ │ │ ├── wav.png │ │ │ └── wavelet_input.png │ │ ├── kws_feature_eng │ │ │ ├── images │ │ │ │ └── jpg │ │ │ │ ├── cover.jpg │ │ │ │ ├── frame_to_fft.jpg │ │ │ │ ├── frame_wind.jpg │ │ │ │ ├── kws_diagram.jpg │ │ │ │ ├── kws_under_the_hood_ini.jpg │ │ │ │ ├── melbank_1_00.hires.jpg │ │ │ │ ├── melbank-1_00.hires.jpg │ │ │ │ ├── mfcc_final.jpg │ │ │ │ ├── time_vs_freq.jpg │ │ │ │ └── yes_no_mfcc.jpg │ │ │ ├── kws_feature_eng.bib │ │ │ └── kws_feature_eng.qmd │ │ └── shared.qmd │ ├── filters │ │ └── inject_parts.lua │ ├── index.qmd │ ├── Makefile │ ├── README.md │ ├── site.webmanifest │ └── tex │ ├── after-body-includes.tex │ ├── before-body-includes.tex │ ├── copyright.tex │ ├── cover_page.tex │ ├── header-includes.tex │ └── titlepage-bg.tex ├── labs │ ├── _quarto.yml -> config/_quarto-html.yml │ ├── 404.qmd │ ├── assets │ │ ├── images │ │ │ ├── covers │ │ │ │ └── cover-hardcover-book.png │ │ │ └── favicon.png │ │ ├── scripts │ │ │ └── subscribe-modal.js │ │ └── styles │ │ ├── dark-mode.scss │ │ └── style.scss │ ├── config │ │ ├── _quarto-html.yml │ │ └── announcement.yml │ ├── core │ │ ├── components.py │ │ ├── state.py │ │ └── style.py │ ├── index.qmd │ ├── LABS_SPEC.md │ ├── plans │ │ ├── vol1 │ │ │ ├── 01_ml_intro.md │ │ │ ├── 02_ml_systems.md │ │ │ ├── 03_ml_workflow.md │ │ │ ├── 04_data_engr.md │ │ │ ├── 05_nn_compute.md │ │ │ ├── lab_01_ml_intro.md │ │ │ ├── lab_02_ml_systems.md │ │ │ ├── lab_03_ml_workflow.md │ │ │ ├── lab_04_data_engr.md │ │ │ ├── lab_05_nn_compute.md │ │ │ ├── lab_07_ml_frameworks.md │ │ │ ├── lab_08_model_train.md │ │ │ ├── lab_09_data_selection.md │ │ │ ├── lab_10_model_compress.md │ │ │ ├── lab_11_hw_accel.md │ │ │ ├── lab_12_perf_bench.md │ │ │ ├── lab_13_model_serving.md │ │ │ ├── lab_14_ml_ops.md │ │ │ ├── lab_15_responsible_engr.md │ │ │ └── lab_16_ml_conclusion.md │ │ └── vol2 │ │ ├── lab_01_ml_intro.md │ │ ├── lab_02_compute_infra.md │ │ ├── lab_03_network_fabrics.md │ │ ├── lab_04_data_storage.md │ │ ├── lab_05_dist_train.md │ │ ├── lab_06_collect_comms.md │ │ ├── lab_07_fault_tolerance.md │ │ ├── lab_08_fleet_orch.md │ │ ├── lab_09_perf_engr.md │ │ ├── lab_10_dist_inference.md │ │ ├── lab_11_edge_intel.md │ │ ├── lab_12_ops_scale.md │ │ ├── lab_13_sec_privacy.md │ │ ├── lab_14_robust_ai.md │ │ ├── lab_15_sustainable_ai.md │ │ ├── lab_16_responsible_ai.md │ │ └── lab_17_ml_conclusion.md │ ├── PROTOCOL.md │ ├── README.md │ ├── site.webmanifest │ ├── vol1 │ │ ├── marimo │ │ │ └── session │ │ │ └── lab_00_introduction.py.json │ │ ├── final_render.html │ │ ├── lab_00_introduction.py │ │ ├── lab_00_render.html │ │ ├── lab_00_test.html │ │ ├── lab_00_the_map.py │ │ ├── lab_01_ml_intro.py │ │ ├── lab_02_ml_systems.py │ │ ├── lab_03_ml_workflow.py │ │ ├── lab_04_data_engr.py │ │ ├── lab_05_nn_compute.py │ │ ├── lab_06_nn_arch.py │ │ ├── lab_07_ml_frameworks.py │ │ ├── lab_08_model_train.py │ │ ├── lab_09_data_selection.py │ │ ├── lab_10_model_compress.py │ │ ├── lab_11_hw_accel.py │ │ ├── lab_12_perf_bench.py │ │ ├── lab_13_model_serving.py │ │ ├── lab_14_ml_ops.py │ │ ├── lab_15_responsible_engr.py │ │ ├── lab_16_ml_conclusion.py │ │ └── test_render.html │ └── vol2 │ ├── marimo │ │ └── session │ │ └── lab_15_sustainability.py.json │ ├── lab_01_introduction.py │ ├── lab_02_compute_infra.py │ ├── lab_03_network_fabrics.py │ ├── lab_04_data_storage.py │ ├── lab_05_dist_train.py │ ├── lab_06_collective_comms.py │ ├── lab_07_fault_tolerance.py │ ├── lab_08_fleet_orch.py │ ├── lab_09_perf_engr.py │ ├── lab_10_dist_inference.py │ ├── lab_11_edge_intelligence.py │ ├── lab_12_ops_scale.py │ ├── lab_13_security_privacy.py │ ├── lab_14_robust_ai.py │ ├── lab_15_sustainability.py │ ├── lab_15_sustainable_ai.py │ ├── lab_16_responsible_ai.py │ └── lab_17_ml_conclusion.py ├── landing │ ├── index.html │ └── logo.png ├── LICENSE.md ├── mlsys.egg-info │ ├── dependency_links.txt │ ├── PKG-INFO │ ├── requires.txt │ ├── SOURCES.txt │ └── top_level.txt ├── mlsysim │ ├── init .py │ ├── pycache │ │ ├── init .cpython-313.pyc │ │ └── fmt.cpython-313.pyc │ ├── ARCHITECTURE_PLAN.md │ ├── BEST_PRACTICES.md │ ├── core │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── clusters.cpython-313.pyc │ │ │ ├── config.cpython-313.pyc │ │ │ ├── constants.cpython-313.pyc │ │ │ ├── datacenters.cpython-313.pyc │ │ │ ├── deployment.cpython-313.pyc │ │ │ ├── engine.cpython-313.pyc │ │ │ ├── evaluation.cpython-313.pyc │ │ │ ├── exceptions.cpython-313.pyc │ │ │ ├── formulas.cpython-313.pyc │ │ │ ├── hardware.cpython-313.pyc │ │ │ ├── models.cpython-313.pyc │ │ │ ├── registry.cpython-313.pyc │ │ │ ├── scenarios.cpython-313.pyc │ │ │ ├── solver.cpython-313.pyc │ │ │ ├── systems.cpython-313.pyc │ │ │ └── types.cpython-313.pyc │ │ ├── clusters.py │ │ ├── config.py │ │ ├── constants.py │ │ ├── datacenters.py │ │ ├── deployment.py │ │ ├── engine.py │ │ ├── evaluation.py │ │ ├── exceptions.py │ │ ├── formulas.py │ │ ├── hardware.py │ │ ├── models.py │ │ ├── registry.py │ │ ├── scenarios.py │ │ ├── solver.py │ │ ├── systems.py │ │ └── types.py │ ├── docs │ │ ├── _quarto.yml -> config/_quarto-html.yml │ │ ├── 404.qmd │ │ ├── accuracy.qmd │ │ ├── api │ │ │ ├── core.config.qmd │ │ │ ├── core.config.SimulationConfig.qmd │ │ │ ├── core.engine.Engine.qmd │ │ │ ├── core.engine.qmd │ │ │ ├── core.evaluation.EvaluationLevel.qmd │ │ │ ├── core.evaluation.qmd │ │ │ ├── core.evaluation.SystemEvaluation.qmd │ │ │ ├── core.qmd │ │ │ ├── core.scenarios.Applications.qmd │ │ │ ├── core.scenarios.qmd │ │ │ ├── core.scenarios.Scenario.qmd │ │ │ ├── core.scenarios.Scenarios.qmd │ │ │ ├── core.solver.DistributedModel.qmd │ │ │ ├── core.solver.EconomicsModel.qmd │ │ │ ├── core.solver.qmd │ │ │ ├── core.solver.ReliabilityModel.qmd │ │ │ ├── core.solver.ServingModel.qmd │ │ │ ├── core.solver.SingleNodeModel.qmd │ │ │ ├── core.solver.SustainabilityModel.qmd │ │ │ ├── hardware.Hardware.qmd │ │ │ ├── hardware.HardwareNode.qmd │ │ │ ├── hardware.qmd │ │ │ ├── hardware.registry.Hardware.qmd │ │ │ ├── hardware.registry.qmd │ │ │ ├── hardware.types.HardwareNode.qmd │ │ │ ├── hardware.types.qmd │ │ │ ├── index.qmd │ │ │ ├── infra.Infra.qmd │ │ │ ├── infra.qmd │ │ │ ├── infra.registry.Infra.qmd │ │ │ ├── infra.registry.qmd │ │ │ ├── infra.types.qmd │ │ │ ├── models.CNNWorkload.qmd │ │ │ ├── models.Models.qmd │ │ │ ├── models.qmd │ │ │ ├── models.registry.Models.qmd │ │ │ ├── models.registry.qmd │ │ │ ├── models.TransformerWorkload.qmd │ │ │ ├── models.types.CNNWorkload.qmd │ │ │ ├── models.types.qmd │ │ │ ├── models.types.TransformerWorkload.qmd │ │ │ ├── models.types.Workload.qmd │ │ │ ├── models.Workload.qmd │ │ │ ├── systems.Fleet.qmd │ │ │ ├── systems.Node.qmd │ │ │ ├── systems.qmd │ │ │ ├── systems.registry.qmd │ │ │ ├── systems.registry.Systems.qmd │ │ │ ├── systems.Systems.qmd │ │ │ ├── systems.types.Fleet.qmd │ │ │ ├── systems.types.Node.qmd │ │ │ └── systems.types.qmd │ │ ├── architecture.qmd │ │ ├── config │ │ │ └── _quarto-html.yml │ │ ├── contributing.qmd │ │ ├── for-engineers.qmd │ │ ├── for-instructors.qmd │ │ ├── for-students.qmd │ │ ├── getting-started.qmd │ │ ├── glossary.qmd │ │ ├── index.qmd │ │ ├── logo.svg │ │ ├── math.qmd │ │ ├── references.bib │ │ ├── solver-guide.qmd │ │ ├── styles │ │ │ ├── dark-mode.scss │ │ │ ├── landing.css │ │ │ └── style.scss │ │ ├── tutorials │ │ │ ├── distributed.qmd │ │ │ ├── hello_world.qmd │ │ │ ├── images │ │ │ │ └── roofline_hello_world.png │ │ │ ├── index.qmd │ │ │ ├── llm_serving.qmd │ │ │ └── sustainability.qmd │ │ ├── whitepaper.qmd │ │ └── zoo │ │ ├── composition.svg │ │ ├── fleets.qmd │ │ ├── hardware.qmd │ │ ├── index.qmd │ │ ├── infra.qmd │ │ └── models.qmd │ ├── examples │ │ ├── custom_design.py │ │ ├── hardware_comparison.py │ │ ├── hello_world.py │ │ ├── manual_sweep.py │ │ └── sustainability_lab.py │ ├── fmt.py │ ├── generate_appendix.py │ ├── hardware │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── registry.cpython-313.pyc │ │ │ └── types.cpython-313.pyc │ │ ├── registry.py │ │ └── types.py │ ├── infra │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── registry.cpython-313.pyc │ │ │ └── types.cpython-313.pyc │ │ ├── registry.py │ │ └── types.py │ ├── models │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── registry.cpython-313.pyc │ │ │ └── types.cpython-313.pyc │ │ ├── registry.py │ │ └── types.py │ ├── README.md │ ├── sim │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── ledger.cpython-313.pyc │ │ │ ├── personas.cpython-313.pyc │ │ │ └── simulations.cpython-313.pyc │ │ ├── ledger.py │ │ ├── personas.py │ │ └── simulations.py │ ├── systems │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── registry.cpython-313.pyc │ │ │ └── types.cpython-313.pyc │ │ ├── registry.py │ │ └── types.py │ ├── tests │ │ ├── init .py │ │ ├── pycache │ │ │ ├── init .cpython-313.pyc │ │ │ ├── test_moe.cpython-313-pytest-9.0.1.pyc │ │ │ ├── test_sweep.cpython-313-pytest-9.0.1.pyc │ │ │ ├── test_topology.cpython-313-pytest-9.0.1.pyc │ │ │ └── test_training.cpython-313-pytest-9.0.1.pyc │ │ ├── test_empirical.py │ │ ├── test_engine.py │ │ ├── test_hardware.py │ │ ├── test_moe.py │ │ ├── test_solvers.py │ │ ├── test_sweep.py │ │ ├── test_topology.py │ │ └── test_training.py │ ├── V2_PLAN.md │ └── viz │ ├── init .py │ ├── pycache │ │ ├── init .cpython-313.pyc │ │ └── plots.cpython-313.pyc │ ├── dashboard.py │ └── plots.py ├── newsletter │ ├── _quarto.yml │ ├── CONTENT_PLAN.md │ ├── drafts │ │ └── _template.md │ ├── index.qmd │ ├── newsletter.css │ └── posts ├── pyproject.toml ├── README │ ├── README_ja.md │ ├── README_ko.md │ └── README_zh.md ├── README.md ├── requirements.txt ├── tinytorch │ ├── bin │ │ └── tito │ ├── binder │ │ ├── postBuild │ │ ├── README.md │ │ ├── REQUIRED_FILES.md │ │ └── requirements.txt │ ├── CONTRIBUTING.md │ ├── datasets │ │ ├── README.md │ │ ├── tinydigits │ │ │ ├── create_tinydigits.py │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── test.pkl │ │ │ └── train.pkl │ │ └── tinytalks │ │ ├── CHANGELOG.md │ │ ├── DATASHEET.md │ │ ├── examples │ │ │ └── demo_usage.py │ │ ├── LICENSE │ │ ├── README.md │ │ ├── scripts │ │ │ ├── generate_tinytalks.py │ │ │ ├── stats.py │ │ │ └── validate_dataset.py │ │ ├── splits │ │ │ ├── test.txt │ │ │ ├── train.txt │ │ │ └── val.txt │ │ ├── SUMMARY.md │ │ └── tinytalks_v1.txt │ ├── etc │ │ └── jupyter │ │ ├── jupyter_notebook_config.d │ │ │ └── jupytext.json │ │ └── jupyter_server_config.d │ │ └── jupytext.json │ ├── INSTRUCTOR.md │ ├── LICENSE │ ├── Makefile │ ├── MANIFEST.in │ ├── milestones │ │ ├── 01_1958_perceptron │ │ │ ├── 01_rosenblatt_forward.py │ │ │ ├── ABOUT.md │ │ │ └── README.md │ │ ├── 02_1969_xor │ │ │ ├── 01_xor_crisis.py │ │ │ ├── 02_xor_solved.py │ │ │ ├── ABOUT.md │ │ │ └── README.md │ │ ├── 03_1986_mlp │ │ │ ├── 01_rumelhart_tinydigits.py │ │ │ ├── ABOUT.md │ │ │ └── README.md │ │ ├── 04_1998_cnn │ │ │ ├── 01_lecun_tinydigits.py │ │ │ ├── 02_lecun_cifar10.py │ │ │ ├── ABOUT.md │ │ │ └── README.md │ │ ├── 05_2017_transformer │ │ │ ├── 01_vaswani_attention.py │ │ │ ├── ABOUT.md │ │ │ └── README.md │ │ ├── 06_2018_mlperf │ │ │ ├── 01_optimization_olympics.py │ │ │ ├── 02_generation_speedup.py │ │ │ ├── ABOUT.md │ │ │ ├── networks.py │ │ │ └── README.md │ │ ├── ABOUT.md │ │ ├── data_manager.py │ │ ├── datasets │ │ │ └── cifar-10 │ │ ├── extras │ │ │ ├── 01_baseline_profile.py │ │ │ ├── 01_tinytalks.py │ │ │ ├── 01_vaswani_generation.py │ │ │ ├── 01_xor_crisis.py │ │ │ ├── 02_compression.py │ │ │ ├── 02_lecun_cifar10.py │ │ │ ├── 02_rosenblatt_trained.py │ │ │ ├── 02_rumelhart_mnist.py │ │ │ ├── 02_vaswani_dialogue.py │ │ │ ├── 03_generation_opts.py │ │ │ ├── 03_quickdemo.py │ │ │ └── README.md │ │ └── README.md │ ├── modules │ │ └── README.md │ ├── paper │ │ ├── benchmark_quick.py │ │ ├── compile_paper.sh │ │ ├── fire_emoji.png │ │ ├── Makefile │ │ ├── module_flow_horizontal.tex │ │ ├── organizational_insights.md │ │ ├── paper.tex │ │ ├── README.md │ │ └── references.bib │ ├── paper.zip │ ├── pyproject.toml │ ├── README.md │ ├── requirements.txt │ ├── scripts │ │ ├── build-book.sh │ │ ├── build-docs.sh │ │ ├── cleanup_repo_history.sh │ │ ├── release.sh │ │ ├── test-fresh-install.sh │ │ └── tito │ ├── settings.ini │ ├── settings.json │ ├── site │ │ ├── _build │ │ │ └── html │ │ │ ├── _static │ │ │ │ ├── announcement-bar.js │ │ │ │ ├── announcement.json │ │ │ │ ├── downloads │ │ │ │ └── version-badge.js │ │ │ └── community │ │ │ ├── modules │ │ │ │ ├── candle.js │ │ │ │ ├── guard.js │ │ │ │ ├── noise.js │ │ │ │ └── terrain.js │ │ │ └── profile_setup.html │ │ ├── _config_pdf.yml │ │ ├── _config.yml │ │ ├── _ext │ │ │ └── icon_link_resolver.py │ │ ├── _static │ │ │ ├── announcement-bar.js │ │ │ ├── announcement.json │ │ │ ├── custom.css │ │ │ ├── demos │ │ │ │ ├── scripts │ │ │ │ │ ├── demo.sh │ │ │ │ │ ├── tito-demo.sh │ │ │ │ │ ├── validate_demos.sh │ │ │ │ │ └── vhs-to-terminalizer.sh │ │ │ │ └── tapes │ │ │ │ ├── 00-welcome.tape │ │ │ │ ├── 01-zero-to-ready.tape │ │ │ │ ├── 02-build-test-ship.tape │ │ │ │ ├── 03-milestone-unlocked.tape │ │ │ │ ├── 04-share-journey.tape │ │ │ │ ├── 05-benchmark.tape │ │ │ │ └── 05-logo.tape │ │ │ ├── downloads │ │ │ │ └── 00_tinytorch.pdf │ │ │ ├── favicon.ico │ │ │ ├── favicon.svg │ │ │ ├── hero-carousel.js │ │ │ ├── images │ │ │ │ ├── CleanShot 2025-12-13 at 15.00.15@2x.png │ │ │ │ ├── diagram_tiny-commununity.png │ │ │ │ ├── tinytorch-community.png │ │ │ │ ├── tito_olympics.png │ │ │ │ └── tito.png │ │ │ ├── logos │ │ │ │ ├── fire-emoji.png │ │ │ │ ├── logo-mlsysbook.png │ │ │ │ ├── logo-tinytorch-grey.png │ │ │ │ ├── logo-tinytorch-simple.png │ │ │ │ ├── logo-tinytorch-transparent.png │ │ │ │ ├── logo-tinytorch-white.png │ │ │ │ ├── logo-tinytorch.png │ │ │ │ └── tensortorch.png │ │ │ ├── marimo-badges.js │ │ │ ├── ml-timeline.js │ │ │ ├── sidebar-link.js │ │ │ ├── subscribe-modal.js │ │ │ ├── version-badge.js │ │ │ └── wip-banner.js │ │ ├── _toc_pdf.yml │ │ ├── _toc.yml │ │ ├── 404.md │ │ ├── big-picture.md │ │ ├── build_site.sh │ │ ├── community.md │ │ ├── conclusion.md │ │ ├── conf.py │ │ ├── credits.md │ │ ├── datasets.md │ │ ├── extra │ │ │ ├── community │ │ │ │ ├── about.html │ │ │ │ ├── app.js │ │ │ │ ├── arena.html │ │ │ │ ├── arxiv_service.js │ │ │ │ ├── assets │ │ │ │ │ ├── flame.ico │ │ │ │ │ └── flame.svg │ │ │ │ ├── auth_callback.html │ │ │ │ ├── community.html │ │ │ │ ├── contact.html │ │ │ │ ├── dashboard.html │ │ │ │ ├── events.html │ │ │ │ ├── index.html │ │ │ │ ├── inspirations │ │ │ │ │ └── dotism.html │ │ │ │ ├── modules │ │ │ │ │ ├── auth.js │ │ │ │ │ ├── camera.js │ │ │ │ │ ├── candle.js │ │ │ │ │ ├── cloud.js │ │ │ │ │ ├── config.js │ │ │ │ │ ├── dotism.js │ │ │ │ │ ├── guard.js │ │ │ │ │ ├── noise.js │ │ │ │ │ ├── profile.js │ │ │ │ │ ├── state.js │ │ │ │ │ ├── styles.js │ │ │ │ │ ├── terrain.js │ │ │ │ │ ├── ui.js │ │ │ │ │ └── utils.js │ │ │ │ ├── package-lock.json │ │ │ │ ├── package.json │ │ │ │ ├── playwright.config.js │ │ │ │ ├── profile_setup.html │ │ │ │ └── tests │ │ │ │ ├── e2e │ │ │ │ │ ├── auth.spec.js │ │ │ │ │ ├── credentials.example.json │ │ │ │ │ └── lifecycle.spec.js │ │ │ │ └── index.html │ │ │ └── install.sh │ │ ├── getting-started.md │ │ ├── instructor │ │ │ └── tools │ │ │ ├── analysis_notebook_structure.py │ │ │ └── tinytorch_module_analyzer.py │ │ ├── intro.md │ │ ├── Makefile │ │ ├── milestones │ │ │ ├── 01_perceptron_ABOUT.md -> ../../milestones/01_1958_perceptron/ABOUT.md │ │ │ ├── 02_xor_ABOUT.md -> ../../milestones/02_1969_xor/ABOUT.md │ │ │ ├── 03_mlp_ABOUT.md -> ../../milestones/03_1986_mlp/ABOUT.md │ │ │ ├── 04_cnn_ABOUT.md -> ../../milestones/04_1998_cnn/ABOUT.md │ │ │ ├── 05_transformer_ABOUT.md -> ../../milestones/05_2017_transformer/ABOUT.md │ │ │ ├── 06_mlperf_ABOUT.md -> ../../milestones/06_2018_mlperf/ABOUT.md │ │ │ └── milestones_ABOUT.md -> ../../milestones/ABOUT.md │ │ ├── modules │ │ │ ├── 01_tensor_ABOUT.md -> ../../src/01_tensor/ABOUT.md │ │ │ ├── 02_activations_ABOUT.md -> ../../src/02_activations/ABOUT.md │ │ │ ├── 03_layers_ABOUT.md -> ../../src/03_layers/ABOUT.md │ │ │ ├── 04_losses_ABOUT.md -> ../../src/04_losses/ABOUT.md │ │ │ ├── 05_dataloader_ABOUT.md -> ../../src/05_dataloader/ABOUT.md │ │ │ ├── 06_autograd_ABOUT.md -> ../../src/06_autograd/ABOUT.md │ │ │ ├── 07_optimizers_ABOUT.md -> ../../src/07_optimizers/ABOUT.md │ │ │ ├── 08_training_ABOUT.md -> ../../src/08_training/ABOUT.md │ │ │ ├── 09_convolutions_ABOUT.md -> ../../src/09_convolutions/ABOUT.md │ │ │ ├── 10_tokenization_ABOUT.md -> ../../src/10_tokenization/ABOUT.md │ │ │ ├── 11_embeddings_ABOUT.md -> ../../src/11_embeddings/ABOUT.md │ │ │ ├── 12_attention_ABOUT.md -> ../../src/12_attention/ABOUT.md │ │ │ ├── 13_transformers_ABOUT.md -> ../../src/13_transformers/ABOUT.md │ │ │ ├── 14_profiling_ABOUT.md -> ../../src/14_profiling/ABOUT.md │ │ │ ├── 15_quantization_ABOUT.md -> ../../src/15_quantization/ABOUT.md │ │ │ ├── 16_compression_ABOUT.md -> ../../src/16_compression/ABOUT.md │ │ │ ├── 17_acceleration_ABOUT.md -> ../../src/17_acceleration/ABOUT.md │ │ │ ├── 18_memoization_ABOUT.md -> ../../src/18_memoization/ABOUT.md │ │ │ ├── 19_benchmarking_ABOUT.md -> ../../src/19_benchmarking/ABOUT.md │ │ │ └── 20_capstone_ABOUT.md -> ../../src/20_capstone/ABOUT.md │ │ ├── myst.yml │ │ ├── pdf_intro.md │ │ ├── preface.md │ │ ├── prepare_notebooks.sh │ │ ├── README.md │ │ ├── references.bib │ │ ├── requirements.txt │ │ ├── resources.md │ │ ├── scripts │ │ │ ├── generate_contributors.py │ │ │ ├── generate_team.py │ │ │ └── latex_postprocessor.py │ │ ├── team.md │ │ ├── tiers │ │ │ ├── architecture.md │ │ │ ├── foundation.md │ │ │ ├── olympics.md │ │ │ └── optimization.md │ │ └── tito │ │ ├── data.md │ │ ├── milestones.md │ │ ├── modules.md │ │ ├── overview.md │ │ ├── testing.md │ │ └── troubleshooting.md │ ├── src │ │ ├── 01_tensor │ │ │ ├── 01_tensor.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 02_activations │ │ │ ├── 02_activations.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 03_layers │ │ │ ├── 03_layers.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 04_losses │ │ │ ├── 04_losses.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 05_dataloader │ │ │ ├── 05_dataloader.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 06_autograd │ │ │ ├── 06_autograd.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 07_optimizers │ │ │ ├── 07_optimizers.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 08_training │ │ │ ├── 08_training.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 09_convolutions │ │ │ ├── 09_convolutions.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 10_tokenization │ │ │ ├── 10_tokenization.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 11_embeddings │ │ │ ├── 11_embeddings.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 12_attention │ │ │ ├── 12_attention.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 13_transformers │ │ │ ├── 13_transformers.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 14_profiling │ │ │ ├── 14_profiling.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 15_quantization │ │ │ ├── 15_quantization.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 16_compression │ │ │ ├── 16_compression.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 17_acceleration │ │ │ ├── 17_acceleration.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 18_memoization │ │ │ ├── 18_memoization.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ ├── 19_benchmarking │ │ │ ├── 19_benchmarking.py │ │ │ ├── ABOUT.md │ │ │ └── module.yaml │ │ └── 20_capstone │ │ ├── 20_capstone.py │ │ ├── ABOUT.md │ │ └── module.yaml │ ├── tests │ │ ├── 01_tensor │ │ │ ├── test_01_tensor_progressive.py │ │ │ ├── test_tensor_core.py │ │ │ └── test_tensor_integration.py │ │ ├── 02_activations │ │ │ ├── test_02_activations_progressive.py │ │ │ ├── test_activations_core.py │ │ │ ├── test_activations_integration.py │ │ │ └── test_tensor_activations_integration.py │ │ ├── 03_layers │ │ │ ├── test_03_layers_progressive.py │ │ │ ├── test_dense_integration.py │ │ │ ├── test_dense_layer.py │ │ │ ├── test_layers_core.py │ │ │ ├── test_layers_integration.py │ │ │ └── test_layers_networks_integration.py │ │ ├── 04_losses │ │ │ ├── test_04_losses_progressive.py │ │ │ └── test_losses_core.py │ │ ├── 05_dataloader │ │ │ ├── test_05_dataloader_progressive.py │ │ │ └── test_dataloader_core.py │ │ ├── 06_autograd │ │ │ ├── init .py │ │ │ ├── test_06_autograd_progressive.py │ │ │ ├── test_autograd_core.py │ │ │ ├── test_autograd_gradient_flow.py │ │ │ └── test_batched_matmul_backward.py │ │ ├── 07_optimizers │ │ │ ├── test_07_optimizers_progressive.py │ │ │ └── test_optimizer_core.py │ │ ├── 08_training │ │ │ ├── test_08_training_progressive.py │ │ │ ├── test_autograd_integration.py │ │ │ └── test_training_core.py │ │ ├── 09_convolutions │ │ │ ├── test_09_convolutions_progressive.py │ │ │ ├── test_convolutions_core.py │ │ │ └── test_convolutions_gradient_flow.py │ │ ├── 10_tokenization │ │ │ ├── test_10_tokenization_progressive.py │ │ │ └── test_tokenization_core.py │ │ ├── 11_embeddings │ │ │ ├── test_11_embeddings_progressive.py │ │ │ ├── test_embedding_gradient_flow.py │ │ │ ├── test_embeddings_core.py │ │ │ └── test_training_integration.py │ │ ├── 12_attention │ │ │ ├── test_12_attention_progressive.py │ │ │ └── test_attention_core.py │ │ ├── 13_transformers │ │ │ ├── test_13_transformers_progressive.py │ │ │ ├── test_training_simple.py │ │ │ ├── test_transformer_gradient_flow.py │ │ │ └── test_transformers_core.py │ │ ├── 14_profiling │ │ │ ├── test_14_profiling_progressive.py │ │ │ └── test_profiler_core.py │ │ ├── 15_quantization │ │ │ ├── test_quantization_integration.py │ │ │ └── test_quantizer_core.py │ │ ├── 16_compression │ │ │ ├── test_compression_integration.py │ │ │ └── test_compressor_core.py │ │ ├── 17_acceleration │ │ │ ├── test_acceleration_core.py │ │ │ └── test_acceleration_integration.py │ │ ├── 18_memoization │ │ │ ├── test_18_memoization_progressive.py │ │ │ ├── test_kv_cache_core.py │ │ │ ├── test_kv_cache_integration.py │ │ │ └── test_tinygpt_integration.py │ │ ├── 19_benchmarking │ │ │ ├── test_benchmark_core.py │ │ │ └── test_benchmarking_integration.py │ │ ├── 20_capstone │ │ │ ├── README.md │ │ │ ├── test_capstone_core.py │ │ │ └── test_capstone_integration.py │ │ ├── cli │ │ │ ├── init .py │ │ │ ├── README.md │ │ │ ├── test_cli_execution.py │ │ │ ├── test_cli_help_consistency.py │ │ │ └── test_cli_registry.py │ │ ├── conftest.py │ │ ├── e2e │ │ │ ├── init .py │ │ │ ├── conftest.py │ │ │ ├── README.md │ │ │ └── test_user_journey.py │ │ ├── environment │ │ │ ├── README.md │ │ │ ├── test_all_requirements.py │ │ │ └── test_setup_validation.py │ │ ├── integration │ │ │ ├── init .py │ │ │ ├── README.md │ │ │ ├── test_api_simplification_integration.py │ │ │ ├── test_cnn_integration.py │ │ │ ├── test_dataloader_integration.py │ │ │ ├── test_forward_passes.py │ │ │ ├── test_gradients.py │ │ │ ├── test_integration_gradient_flow.py │ │ │ ├── test_layers_integration.py │ │ │ ├── test_loss_gradients.py │ │ │ ├── test_module_05_dense.py │ │ │ ├── test_module_dependencies.py │ │ │ ├── test_module_integration.py │ │ │ ├── test_network_capability.py │ │ │ ├── test_nlp_pipeline_flow.py │ │ │ ├── test_optimizers_integration.py │ │ │ ├── test_shapes.py │ │ │ ├── test_training_capabilities.py │ │ │ ├── test_training_flow.py │ │ │ └── test_xor_thorough.py │ │ ├── milestones │ │ │ ├── API.md │ │ │ ├── milestone_tracker.py │ │ │ ├── PROGRESSION.md │ │ │ ├── QUICKSTART.md │ │ │ ├── README.md │ │ │ └── test_milestones_run.py │ │ ├── README.md │ │ ├── regression │ │ │ ├── README.md │ │ │ ├── run_sandbox_tests.py │ │ │ ├── test_conv_linear_dimensions.py │ │ │ ├── test_gradient_flow_fixes.py │ │ │ ├── test_nlp_components_gradient_flow.py │ │ │ └── test_transformer_reshaping.py │ │ ├── test_utils.py │ │ └── validate_nbgrader_config.py │ ├── tinytorch │ │ ├── init .py │ │ ├── core │ │ │ ├── init .py │ │ │ └── transformers.py │ │ └── perf │ │ └── init .py │ ├── tito │ │ ├── init .py │ │ ├── commands │ │ │ ├── init .py │ │ │ ├── base.py │ │ │ ├── benchmark.py │ │ │ ├── community.py │ │ │ ├── dev │ │ │ │ ├── init .py │ │ │ │ ├── build.py │ │ │ │ ├── clean.py │ │ │ │ ├── dev.py │ │ │ │ ├── export.py │ │ │ │ ├── preflight.py │ │ │ │ └── test.py │ │ │ ├── export_utils.py │ │ │ ├── login.py │ │ │ ├── milestone.py │ │ │ ├── module │ │ │ │ ├── init .py │ │ │ │ ├── reset.py │ │ │ │ ├── test.py │ │ │ │ └── workflow.py │ │ │ ├── nbgrader.py │ │ │ ├── olympics.py │ │ │ ├── package │ │ │ │ ├── init .py │ │ │ │ ├── nbdev.py │ │ │ │ ├── package.py │ │ │ │ └── reset.py │ │ │ ├── setup.py │ │ │ └── system │ │ │ ├── init .py │ │ │ ├── health.py │ │ │ ├── info.py │ │ │ ├── jupyter.py │ │ │ ├── logo.py │ │ │ ├── reset.py │ │ │ ├── system.py │ │ │ └── update.py │ │ ├── core │ │ │ ├── init .py │ │ │ ├── auth.py │ │ │ ├── browser.py │ │ │ ├── config.py │ │ │ ├── console.py │ │ │ ├── exceptions.py │ │ │ ├── modules.py │ │ │ ├── status_analyzer.py │ │ │ ├── submission.py │ │ │ ├── theme.py │ │ │ └── virtual_env_manager.py │ │ ├── main.py │ │ └── tools │ │ ├── init .py │ │ └── testing.py │ ├── tito-cli.log │ ├── tools │ │ ├── dev │ │ │ ├── collapse_blank_lines.py │ │ │ ├── fix_about_titles.py │ │ │ ├── fix_ascii_boxes.py │ │ │ ├── fix_mermaid_diagrams.py │ │ │ ├── README.md │ │ │ ├── setup.sh │ │ │ └── validate_cli_docs.py │ │ ├── maintenance │ │ │ ├── cleanup_history.sh │ │ │ ├── merge-site-to-docs.sh │ │ │ ├── README.md │ │ │ ├── restructure-project.sh │ │ │ └── verify-restructure.sh │ │ └── README.md │ └── vscode-ext │ ├── node_modules │ │ ├── types? │ │ │ ├── node │ │ │ │ ├── assert │ │ │ │ │ └── strict.d.ts │ │ │ │ ├── assert.d.ts │ │ │ │ ├── async_hooks.d.ts │ │ │ │ ├── buffer.buffer.d.ts │ │ │ │ ├── buffer.d.ts │ │ │ │ ├── child_process.d.ts │ │ │ │ ├── cluster.d.ts │ │ │ │ ├── compatibility │ │ │ │ │ ├── disposable.d.ts │ │ │ │ │ ├── index.d.ts │ │ │ │ │ ├── indexable.d.ts │ │ │ │ │ └── iterators.d.ts │ │ │ │ ├── console.d.ts │ │ │ │ ├── constants.d.ts │ │ │ │ ├── crypto.d.ts │ │ │ │ ├── dgram.d.ts │ │ │ │ ├── diagnostics_channel.d.ts │ │ │ │ ├── dns │ │ │ │ │ └── promises.d.ts │ │ │ │ ├── dns.d.ts │ │ │ │ ├── domain.d.ts │ │ │ │ ├── events.d.ts │ │ │ │ ├── fs │ │ │ │ │ └── promises.d.ts │ │ │ │ ├── fs.d.ts │ │ │ │ ├── globals.d.ts │ │ │ │ ├── globals.typedarray.d.ts │ │ │ │ ├── http.d.ts │ │ │ │ ├── http2.d.ts │ │ │ │ ├── https.d.ts │ │ │ │ ├── index.d.ts │ │ │ │ ├── inspector.generated.d.ts │ │ │ │ ├── LICENSE │ │ │ │ ├── module.d.ts │ │ │ │ ├── net.d.ts │ │ │ │ ├── os.d.ts │ │ │ │ ├── package.json │ │ │ │ ├── path.d.ts │ │ │ │ ├── perf_hooks.d.ts │ │ │ │ ├── process.d.ts │ │ │ │ ├── punycode.d.ts │ │ │ │ ├── querystring.d.ts │ │ │ │ ├── readline │ │ │ │ │ └── promises.d.ts │ │ │ │ ├── readline.d.ts │ │ │ │ ├── README.md │ │ │ │ ├── repl.d.ts │ │ │ │ ├── sea.d.ts │ │ │ │ ├── stream │ │ │ │ │ ├── consumers.d.ts │ │ │ │ │ ├── promises.d.ts │ │ │ │ │ └── web.d.ts │ │ │ │ ├── stream.d.ts │ │ │ │ ├── string_decoder.d.ts │ │ │ │ ├── test.d.ts │ │ │ │ ├── timers │ │ │ │ │ └── promises.d.ts │ │ │ │ ├── timers.d.ts │ │ │ │ ├── tls.d.ts │ │ │ │ ├── trace_events.d.ts │ │ │ │ ├── ts5.6 │ │ │ │ │ ├── buffer.buffer.d.ts │ │ │ │ │ ├── globals.typedarray.d.ts │ │ │ │ │ └── index.d.ts │ │ │ │ ├── tty.d.ts │ │ │ │ ├── url.d.ts │ │ │ │ ├── util.d.ts │ │ │ │ ├── v8.d.ts │ │ │ │ ├── vm.d.ts │ │ │ │ ├── wasi.d.ts │ │ │ │ ├── web-globals │ │ │ │ │ ├── abortcontroller.d.ts │ │ │ │ │ ├── domexception.d.ts │ │ │ │ │ ├── events.d.ts │ │ │ │ │ └── fetch.d.ts │ │ │ │ ├── worker_threads.d.ts │ │ │ │ └── zlib.d.ts │ │ │ └── vscode │ │ │ ├── index.d.ts │ │ │ ├── LICENSE │ │ │ ├── package.json │ │ │ └── README.md │ │ ├── typescript │ │ │ ├── bin │ │ │ │ ├── tsc │ │ │ │ └── tsserver │ │ │ ├── lib │ │ │ │ ├── _tsc.js │ │ │ │ ├── _tsserver.js │ │ │ │ ├── _typingsInstaller.js │ │ │ │ ├── cs │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── de │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── es │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── fr │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── it │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── ja │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── ko │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── lib.d.ts │ │ │ │ ├── lib.decorators.d.ts │ │ │ │ ├── lib.decorators.legacy.d.ts │ │ │ │ ├── lib.dom.asynciterable.d.ts │ │ │ │ ├── lib.dom.d.ts │ │ │ │ ├── lib.dom.iterable.d.ts │ │ │ │ ├── lib.es2015.collection.d.ts │ │ │ │ ├── lib.es2015.core.d.ts │ │ │ │ ├── lib.es2015.d.ts │ │ │ │ ├── lib.es2015.generator.d.ts │ │ │ │ ├── lib.es2015.iterable.d.ts │ │ │ │ ├── lib.es2015.promise.d.ts │ │ │ │ ├── lib.es2015.proxy.d.ts │ │ │ │ ├── lib.es2015.reflect.d.ts │ │ │ │ ├── lib.es2015.symbol.d.ts │ │ │ │ ├── lib.es2015.symbol.wellknown.d.ts │ │ │ │ ├── lib.es2016.array.include.d.ts │ │ │ │ ├── lib.es2016.d.ts │ │ │ │ ├── lib.es2016.full.d.ts │ │ │ │ ├── lib.es2016.intl.d.ts │ │ │ │ ├── lib.es2017.arraybuffer.d.ts │ │ │ │ ├── lib.es2017.d.ts │ │ │ │ ├── lib.es2017.date.d.ts │ │ │ │ ├── lib.es2017.full.d.ts │ │ │ │ ├── lib.es2017.intl.d.ts │ │ │ │ ├── lib.es2017.object.d.ts │ │ │ │ ├── lib.es2017.sharedmemory.d.ts │ │ │ │ ├── lib.es2017.string.d.ts │ │ │ │ ├── lib.es2017.typedarrays.d.ts │ │ │ │ ├── lib.es2018.asyncgenerator.d.ts │ │ │ │ ├── lib.es2018.asynciterable.d.ts │ │ │ │ ├── lib.es2018.d.ts │ │ │ │ ├── lib.es2018.full.d.ts │ │ │ │ ├── lib.es2018.intl.d.ts │ │ │ │ ├── lib.es2018.promise.d.ts │ │ │ │ ├── lib.es2018.regexp.d.ts │ │ │ │ ├── lib.es2019.array.d.ts │ │ │ │ ├── lib.es2019.d.ts │ │ │ │ ├── lib.es2019.full.d.ts │ │ │ │ ├── lib.es2019.intl.d.ts │ │ │ │ ├── lib.es2019.object.d.ts │ │ │ │ ├── lib.es2019.string.d.ts │ │ │ │ ├── lib.es2019.symbol.d.ts │ │ │ │ ├── lib.es2020.bigint.d.ts │ │ │ │ ├── lib.es2020.d.ts │ │ │ │ ├── lib.es2020.date.d.ts │ │ │ │ ├── lib.es2020.full.d.ts │ │ │ │ ├── lib.es2020.intl.d.ts │ │ │ │ ├── lib.es2020.number.d.ts │ │ │ │ ├── lib.es2020.promise.d.ts │ │ │ │ ├── lib.es2020.sharedmemory.d.ts │ │ │ │ ├── lib.es2020.string.d.ts │ │ │ │ ├── lib.es2020.symbol.wellknown.d.ts │ │ │ │ ├── lib.es2021.d.ts │ │ │ │ ├── lib.es2021.full.d.ts │ │ │ │ ├── lib.es2021.intl.d.ts │ │ │ │ ├── lib.es2021.promise.d.ts │ │ │ │ ├── lib.es2021.string.d.ts │ │ │ │ ├── lib.es2021.weakref.d.ts │ │ │ │ ├── lib.es2022.array.d.ts │ │ │ │ ├── lib.es2022.d.ts │ │ │ │ ├── lib.es2022.error.d.ts │ │ │ │ ├── lib.es2022.full.d.ts │ │ │ │ ├── lib.es2022.intl.d.ts │ │ │ │ ├── lib.es2022.object.d.ts │ │ │ │ ├── lib.es2022.regexp.d.ts │ │ │ │ ├── lib.es2022.string.d.ts │ │ │ │ ├── lib.es2023.array.d.ts │ │ │ │ ├── lib.es2023.collection.d.ts │ │ │ │ ├── lib.es2023.d.ts │ │ │ │ ├── lib.es2023.full.d.ts │ │ │ │ ├── lib.es2023.intl.d.ts │ │ │ │ ├── lib.es2024.arraybuffer.d.ts │ │ │ │ ├── lib.es2024.collection.d.ts │ │ │ │ ├── lib.es2024.d.ts │ │ │ │ ├── lib.es2024.full.d.ts │ │ │ │ ├── lib.es2024.object.d.ts │ │ │ │ ├── lib.es2024.promise.d.ts │ │ │ │ ├── lib.es2024.regexp.d.ts │ │ │ │ ├── lib.es2024.sharedmemory.d.ts │ │ │ │ ├── lib.es2024.string.d.ts │ │ │ │ ├── lib.es5.d.ts │ │ │ │ ├── lib.es6.d.ts │ │ │ │ ├── lib.esnext.array.d.ts │ │ │ │ ├── lib.esnext.collection.d.ts │ │ │ │ ├── lib.esnext.d.ts │ │ │ │ ├── lib.esnext.decorators.d.ts │ │ │ │ ├── lib.esnext.disposable.d.ts │ │ │ │ ├── lib.esnext.error.d.ts │ │ │ │ ├── lib.esnext.float16.d.ts │ │ │ │ ├── lib.esnext.full.d.ts │ │ │ │ ├── lib.esnext.intl.d.ts │ │ │ │ ├── lib.esnext.iterator.d.ts │ │ │ │ ├── lib.esnext.promise.d.ts │ │ │ │ ├── lib.esnext.sharedmemory.d.ts │ │ │ │ ├── lib.scripthost.d.ts │ │ │ │ ├── lib.webworker.asynciterable.d.ts │ │ │ │ ├── lib.webworker.d.ts │ │ │ │ ├── lib.webworker.importscripts.d.ts │ │ │ │ ├── lib.webworker.iterable.d.ts │ │ │ │ ├── pl │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── pt-br │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── ru │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── tr │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ ├── tsc.js │ │ │ │ ├── tsserver.js │ │ │ │ ├── tsserverlibrary.d.ts │ │ │ │ ├── tsserverlibrary.js │ │ │ │ ├── typescript.d.ts │ │ │ │ ├── typescript.js │ │ │ │ ├── typesMap.json │ │ │ │ ├── typingsInstaller.js │ │ │ │ ├── watchGuard.js │ │ │ │ ├── zh-cn │ │ │ │ │ └── diagnosticMessages.generated.json │ │ │ │ └── zh-tw │ │ │ │ └── diagnosticMessages.generated.json │ │ │ ├── LICENSE.txt │ │ │ ├── package.json │ │ │ ├── README.md │ │ │ ├── SECURITY.md │ │ │ └── ThirdPartyNoticeText.txt │ │ └── undici-types │ │ ├── agent.d.ts │ │ ├── api.d.ts │ │ ├── balanced-pool.d.ts │ │ ├── cache.d.ts │ │ ├── client.d.ts │ │ ├── connector.d.ts │ │ ├── content-type.d.ts │ │ ├── cookies.d.ts │ │ ├── diagnostics-channel.d.ts │ │ ├── dispatcher.d.ts │ │ ├── env-http-proxy-agent.d.ts │ │ ├── errors.d.ts │ │ ├── eventsource.d.ts │ │ ├── fetch.d.ts │ │ ├── file.d.ts │ │ ├── filereader.d.ts │ │ ├── formdata.d.ts │ │ ├── global-dispatcher.d.ts │ │ ├── global-origin.d.ts │ │ ├── handlers.d.ts │ │ ├── header.d.ts │ │ ├── index.d.ts │ │ ├── interceptors.d.ts │ │ ├── LICENSE │ │ ├── mock-agent.d.ts │ │ ├── mock-client.d.ts │ │ ├── mock-errors.d.ts │ │ ├── mock-interceptor.d.ts │ │ ├── mock-pool.d.ts │ │ ├── package.json │ │ ├── patch.d.ts │ │ ├── pool-stats.d.ts │ │ ├── pool.d.ts │ │ ├── proxy-agent.d.ts │ │ ├── readable.d.ts │ │ ├── README.md │ │ ├── retry-agent.d.ts │ │ ├── retry-handler.d.ts │ │ ├── util.d.ts │ │ ├── webidl.d.ts │ │ └── websocket.d.ts │ ├── out │ │ ├── commands │ │ │ ├── buildCommands.js │ │ │ ├── buildCommands.js.map │ │ │ ├── moduleCommands.js │ │ │ ├── moduleCommands.js.map │ │ │ ├── testCommands.js │ │ │ └── testCommands.js.map │ │ ├── extension.js │ │ ├── extension.js.map │ │ ├── models │ │ │ ├── treeItems.js │ │ │ └── treeItems.js.map │ │ ├── providers │ │ │ ├── buildTreeProvider.js │ │ │ ├── buildTreeProvider.js.map │ │ │ ├── infoTreeProvider.js │ │ │ ├── infoTreeProvider.js.map │ │ │ ├── moduleTreeProvider.js │ │ │ ├── moduleTreeProvider.js.map │ │ │ ├── runHistoryProvider.js │ │ │ ├── runHistoryProvider.js.map │ │ │ ├── testTreeProvider.js │ │ │ └── testTreeProvider.js.map │ │ ├── types.js │ │ ├── types.js.map │ │ └── utils │ │ ├── modules.js │ │ ├── modules.js.map │ │ ├── terminal.js │ │ ├── terminal.js.map │ │ ├── workspace.js │ │ └── workspace.js.map │ ├── package-lock.json │ ├── package.json │ ├── resources │ │ ├── icon.png │ │ └── icon.svg │ ├── src │ │ ├── commands │ │ │ ├── buildCommands.ts │ │ │ ├── moduleCommands.ts │ │ │ └── testCommands.ts │ │ ├── extension.ts │ │ ├── models │ │ │ └── treeItems.ts │ │ ├── providers │ │ │ ├── buildTreeProvider.ts │ │ │ ├── infoTreeProvider.ts │ │ │ ├── moduleTreeProvider.ts │ │ │ ├── runHistoryProvider.ts │ │ │ └── testTreeProvider.ts │ │ ├── types.ts │ │ └── utils │ │ ├── modules.ts │ │ ├── terminal.ts │ │ ├── tito.ts │ │ └── workspace.ts │ └── tsconfig.json ├── tito-cli.log └── tools -> book/tools
780 directories, 4479 files: Latency-optimal. Latency scales logarithmically with \(\log_2(N)\) .
Next Steps
LLM Serving Lab : After training, learn how to model the serving cost of the same model
Math Foundations : Full derivations for ring all-reduce, pipeline bubble, and MFU
Fleet Zoo : Browse the available cluster configurations and their network specs
Back to top