18 Commits
Author SHA1 Message Date
Vijay Janapa Reddi 972f5ea84b Merge local dev into feat/slides-refresh
dev's Classic Expository Style pass over the websites is the base;
re-applied from this branch only where a fact was missing or wrong: real
volume titles and status, no stale counts or timing claims, the four-volume
teaching guide and slide pages. Lecture lists regenerated by
tools/lectures.py; the PPTX note appears on all four volume pages.
2026-10-20 00:07:32 +02:00
Vijay Janapa Reddi 58ed2e8b2c Classic Expository Style pass over the websites
Plain words and formal posture across the landing site, labs, slides, TinyTorch
guide, MLS-im docs and Hardware Kits: removed hype and intensifiers, contractions
and em-dashes in expository prose, announcers and wordy verbs. Wording only; no
code, links, numbers or claims changed.
2026-10-19 23:43:40 +02:00
Vijay Janapa Reddi 143d8e7c27 Ecosystem sites: book titles, no stale counts, Classic Expository Style
Landing, navigation, and front pages across the main site, books,
instructors, labs, kits, TinyTorch guide and book, MLSysIM docs, and
MLPerf EDU, plus the shared navbar and ecosystem cards. Volumes use
their book titles and statuses; hard-coded counts (contributors,
universities, decks, slides, domains) are removed; em dashes, emoji,
slogans, and ad copy are rewritten. Lab ranges and kit chapter pairings
are checked against the repo. The You-are-here script recognizes the
Volume III and IV pages.
2026-10-18 15:07:23 +02:00
Vijay Janapa Reddi abff1562fa TinyTorch 0.2.0: From Tensors to Transformers
Release-hardening and transformer-era release of TinyTorch, audited as one
tree. This commit brings tinytorch/ and the TinyTorch CI workflows to the
state of the audit/tinytorch-release branch, where the individual changes
are recorded commit by commit.

- Milestones: transformer-era parts (TinyGPT, sequence routing, TinyCopilot,
  conversational Q&A), Milestone 06 "MLPerf to Generative Serving (2018)",
  Milestone 07 kernels; per-part recording; NumPy-referenced losses and
  causality, attention-content and position probes; try-it prompts after a
  pass.
- Framework: dropout eval mode, target gradients, float32 stays float32,
  layer validation, LoRA adapters.
- tito: loopback login callback with a state nonce, consented progress sync,
  TLS-verified update check, Ctrl-C after a pass keeps the pass.
- Grading: graded tests compare values against NumPy references; tests that
  could not fail now check something.
- CI: the publish preflight runs its tests and ships the commit it tested;
  workflow inputs pass through env; third-party actions pinned.
- Guide and book: read line by line against the code; every demo is a real
  recording.

See tinytorch/CHANGELOG.md, section 0.2.0.
2026-09-29 21:53:23 -06:00
Vijay Janapa Reddi 7e249d837b feat(milestones): integrate Milestone 07 TinyGPT and ChatGPT foundation across CLI, book, and docs 2026-09-21 15:15:56 +02:00
Vijay Janapa Reddi 1eb877cf1b docs(tinytorch): introduce Two Pillars companion textbook pairing in quick start 2026-09-21 07:32:57 +02:00
Vijay Janapa Reddi 96340981c1 docs(release): update changelog, contributing, instructor guides, and prose linting 2026-09-20 19:43:45 +02:00
Vijay Janapa Reddi 28ef9051e7 guide: split workflow and commands, add pedagogical SVGs, polish terminal figures, and suppress anchor collision 2026-09-20 09:51:26 +02:00
Vijay Janapa Reddi 462dfcef45 Label Milestone 01's all-wrong runs honestly; stop EOF from cancelling downloads silently
On Milestone 01's separable points a random line usually lands near 0% or
100%. A 0% run was labeled 'Random Guessing!' and the header promised
~50%; 0% now reads 'Boundary points the wrong way!' with a diagnosis that
explains the swapped sides, and the header expectations say 0% to 100%.
The Quick Start capture is re-taken from a real run with the new label.

The dataset prompt treated a missing terminal as 'cancel' with no hint;
it now says why nothing downloaded, and TINYTORCH_AUTO_DOWNLOAD=1 answers
yes for scripted runs.
2026-09-18 12:09:08 +02:00
Vijay Janapa Reddi dfd202bf25 tinytorch site: fixes from the navigation-page UX review
- Code blocks go back to wrapping: with scroll, trailing `# comments`
  were cut off at the right edge with no cue, worst on phones. The
  module command blocks already put comments on their own lines.
- Home page on phones: comparison cards stack instead of widening the
  page to 531px, and the timeline is one left-aligned column.
- Dark mode: the home lead paragraph was hard-coded dark gray; the
  shared navbar stays light, so its title is kept dark; the sidebar logo
  gets a light plate so "TORCH" stays visible.
- Tables use smaller type on phones; definition-list entries
  (Troubleshooting) get space between them.
- Credits printed a Markdown link as raw text inside an HTML block;
  "1998." and "2018." paragraphs on Milestones 04 and 06 rendered as
  ordered lists; "** Foundation Tier**" showed literal asterisks; the
  Optimization page's nested bullets were flattened and it named its
  cycle three ways; Datasets field lines ran together.
- Names: Quick Start is titled Quick Start; "TinyTorch Olympics" is
  "Torch Olympics"; Community's educators section points to For
  Instructors; milestone pages carry their title in front matter so
  their contents list is not nested under it; the Glossary's A-Z
  headings appear in its contents list.
- tools/diagrams/STYLE.md, an internal style guide, is no longer
  published into the site and its search index.
- Module 01 links Module 02 from What's next.
2026-09-18 11:28:49 +02:00
Vijay Janapa Reddi a62127e3b6 tinytorch site: a glossary a beginner can use; plainer Module 01 lead; figure captions
- Glossary: opens with a "Tools and course terms" section (terminal,
  virtual environment, activate, tito, Jupyter Lab, notebook, cell, the
  two meanings of kernel, module, export, unit and integration tests,
  milestone, Binder), adds weight, bias, and parameter, gives
  broadcasting a two-line example, drops the Lab Guide wording, moves
  into Getting Started in the sidebar, and is linked from Quick Start.
  The newcomer reviewer found none of the tool words it stumbled on.
- Module 01's lead ("saturate the ALUs or stall on cache misses") told
  the first page a beginner reads that they were underqualified; it now
  says what a tensor is and what they will write.
- Figures on 02, 05, 06, 07, 08 carried a one-line caption inside the
  image above the real caption (two of them overclaiming: "correctly
  accumulating", "guarantees mathematical equivalence"); removed, canvas
  trimmed, renders checked. 05's "drop_last drops remainder" labeled an
  option TinyTorch's DataLoader does not have.
2026-09-18 11:19:50 +02:00
Vijay Janapa Reddi fda6527e2d tinytorch site: Quick Start and claims, after three learner reviews
Three reviewers playing an undergraduate, a self-taught engineer, and
a newcomer from electrical engineering read the site as students. The
fixes their reports agreed on:

- Quick Start: "Your First Module (15 Minutes)" becomes about 4 to 6
  hours; the separate `jupyter lab` step is gone (`tito module start`
  opens it); it says what a virtual environment is, that each new
  terminal must activate it, what `complete` checks, and that you write
  three functions; milestones are listed by the module that unlocks
  them; a weeks-at-3/5/10-hours table; the instructor section moves to
  For Instructors.
- Lists glued to the preceding line rendered as run-on text on Quick
  Start, the three tier pages, datasets, community, and testing.
- Tier pages quoted one "per module" range that the module pages
  contradict; they now give the real spread.
- Claims the site's own pages contradict: the perceptron as "the first
  trainable neural network" (the milestone is forward-only), "a
  complete GPT model generating text" by Module 13, a "competition-
  ready" capstone, the unmeasured 65-75% CIFAR-10 figure (four pages),
  "RNNs choke" on six-letter reversal, the duplicated "irreversible
  understanding" slogan, and the "your first TinyOS" aside.
2026-09-18 11:17:32 +02:00
Vijay Janapa Reddi 757bffad31 tinytorch site: replace the Quick Start terminal image with a real capture
The Milestone 01 figure did not match what `tito milestone run
perceptron` prints (a six-point "Synthetic Data & Decision Boundary"
step that no longer exists), and nothing in the repo could regenerate
it. guide/tools/capture-terminal.py runs a command with color forced
on and renders its exact output with Rich's SVG exporter, headed by the
command; --lines keeps unedited ranges and marks what was left out.

The new figure is an excerpt of a real run in a scratch checkout where
Modules 01-03 were completed with `tito module complete`. The run is
unseeded; the caption says so and that a run occasionally guesses right
by luck. The PNG is replaced by the SVG.
2026-09-18 11:04:12 +02:00
Vijay Janapa Reddi fda7444cc1 fix(tinytorch): stale workflow, an orphaned glossary, and direct milestone runs
Phase 1 of the site restructure: known bugs that needed no decision.

- tiers/foundation.qmd "Next Steps" still taught a workflow that no
  longer exists: "Read the ABOUT guide", "Implement in *_dev.py",
  "Export to *_sol.py". None of those files exist. It is the first page a
  student sees after the Quick Start. Replaced with the real two
  commands and a link to the Quick Start.
- glossary.qmd was reachable from nowhere. It was a chapter of the Lab
  Guide PDF, and nothing on the website linked to it once that was
  retired. Added to the Reference section of the sidebar.
- milestones/index.qmd showed `cd milestones/... && python script.py`
  beside `tito milestone run 01`. A direct run skips the prerequisite
  check and records nothing, so a student who did that would finish the
  milestone and still see it as not done.
- getting-started: "benchmark against MLPerf, the industry standard" ->
  "using MLPerf's measurement discipline". Milestone 06's README calls
  these classroom experiments, not MLPerf submissions.
- Tier pages used `tito module start 09_convolutions` while every other
  page uses `09`. Both work; standardised on the number.

Left alone on purpose: getting-started's `tito milestone run perceptron`.
It sits beside a real terminal capture of that exact command, so
changing the text to `run 01` would make the prose and the screenshot
disagree. Both are valid aliases.
2026-09-18 09:29:01 +02:00
Vijay Janapa Reddi 7d37b0801d style(tinytorch): move eight diagram footers into their Quarto captions
Three of the 109 current-generation diagrams carry a caption baked into
the image; fourteen of the twenty-five older ones do. Quarto already
prints a caption underneath, so the reader got the same voice twice in
two typefaces, and the canvas carried dead space to hold it.

Eight of those footers were safe to identify: a single #D1D5DB rule in
the trailing stretch of the file, with only text after it. Their text is
appended to the page's fig-cap before removal, so nothing is lost --
several carried qualifications the caption did not have, such as the
stride/padding/bias of the convolution example and that the
cross-entropy decimals are rounded.

The other six are not touched. In those, #D1D5DB is an internal grid
line rather than a footer rule: in 16_neuron-removal it appears on line
5 of 102. Treating it as a separator would have deleted the diagram's
own labels. They are also book-only files with no guide page to hold a
caption.

Canvases are re-sized to the content. The first attempt measured rect y
without adding rect height and clipped the bottom row of
01_tensor-diag-1; caught by rendering, which is why every one of the
eight was re-rendered and inspected after the fix.
2026-09-17 13:51:36 +02:00
Vijay Janapa Reddi 14c3219d38 fix(tinytorch): milestone 06 needs modules 11-13 too, and the tables omitted them
Milestone 06 declares no default_part, so `tito milestone run mlperf`
runs both of its scripts and the prerequisite check uses the union at
milestone.py:143, [1-8, 11, 12, 13, 14-19]. Part 2, "Generation
Speedup", needs the GPT modules: milestone.py:140 lists 11, 12, 13.

Three pages published the requirement as 01-08 + 14-19. A student who
followed them would complete the optimization tier and then be refused
by the prerequisite gate with no idea which modules were missing.

Also aligns two milestone display names with the CLI's own strings
("Transformer Era", "MLPerf Benchmarks").
2026-09-17 13:37:06 +02:00
Vijay Janapa Reddi 55e9630e26 fix(tinytorch): refuse --tier challenge, and correct claims the repo contradicts
Three separate overclaims, each checked against the code that would have
to produce the number.

1. --tier challenge emits the full reference solution.

solutions.py::solution_role_action strips a region under the challenge
tier only when it carries role="challenge". src/ contains zero such
annotations (236 regions: 189 scaffold, 6 core, 41 unannotated), so the
tier is a no-op. apply_release_tier output for challenge is byte-identical
to instructor, verified directly.

The code matches its design in NBGRADER_RELEASE_TIERS.md and the
assertions in tests/cli/test_release_tiers.py, so this is unfinished
annotation work, not a code defect, and the tier semantics are left
alone. But an instructor running the command we document gets a fully
solved "challenge" assignment, so `tito nbgrader generate --tier
challenge` now refuses when no region in the requested modules is marked
role="challenge", and says what to annotate.

Note for the author: INSTRUCTOR.md described challenge as "All 236 Blocks
(full implementation from scratch)", which is a different design from
NBGRADER_RELEASE_TIERS.md's "keep for student baseline, strip for
challenge". Those two need reconciling before the tier is annotated.

2. The student tier strips 47 regions, not 41.

Unannotated regions default to core (solutions.py::solution_role), so the
student tier strips 41 unannotated plus 6 explicit role="core" = 47, and
leaves the 189 role="scaffold" regions solved. The documented 41/195 split
is 236 minus 41, which silently reclassifies those 6 core regions as
scaffold. Corrected in getting-started.qmd, tito/overview.qmd, and
INSTRUCTOR.md.

3. The home page advertised optimization gains the milestone disclaims.

index.qmd promised "8-16x smaller, 12-40x faster". milestones/06_2018_mlperf
says compression and speedup "are outcomes to measure, not benefits the
script assumes", that it "does not certify a deployment target or
guarantee a fixed compression/speed" ratio, and that a small workload "may
become slower". The repo's own quantization ceiling is 4x. Reworded, along
with the same claims in ml-timeline.js, whose module range 14-18 was also
wrong (14-19).

Also: the CIFAR-10 milestone target was published as "75%+" in seven
places. milestones/04_1998_cnn states 65-75%, its README expects 70%+, and
02_lecun_cifar10.py passes at >= 65. Corrected to the stated range.

And `tito system jupyter` is documented as starting JupyterLab; it starts
the classic notebook unless given --lab.
2026-09-17 13:36:28 +02:00
Vijay Janapa Reddi 53b8f58224 refactor(tinytorch): rename quarto directory to guide and update all ecosystem references 2026-09-16 22:13:23 +02:00