Made With ML: A Hands-On Production ML Course
Made With ML teaches the unglamorous half of machine learning: turning a notebook experiment into something that trains, serves, and redeploys without falling over. It walks one task through with Ray for distributed compute and MLflow for tracking, so the workflow stays concrete. Worth it once you know basic ML and want the production wiring done correctly. Skip it if you're still learning what a train/test split is.
What is Made With ML?
Made With ML is a free course by Goku Mohandas that teaches machine learning through one running example: classifying machine learning papers into categories like natural-language-processing, computer-vision, or mlops. The lessons live on madewithml.com; this GitHub repo holds the code โ a Jupyter notebook plus a refactored madewithml/ Python package with separate scripts for training, tuning, evaluation, and serving.
What the course covers
- โOne running example โ classifying ML papers by title and description into categories like natural-language-processing or computer-vision โ carried from notebook experiment through to a served API, forming an end-to-end ML pipeline.
- โDistributed training and tuning through Ray, with train.py and tune.py scripts that take --num-workers, --cpu-per-worker, and --gpu-per-worker flags so the same code runs on a laptop or an Anyscale cluster.
- โExperiment tracking via MLflow, including a local Tracking UI at localhost:8080; the README points to Weights & Biases or Comet as alternatives for team use.
- โA model-serving layer built on Ray Serve (serve.py) that exposes a /predict endpoint, plus a separate predict.py CLI for one-off inference.
- โCI/CD for ML through GitHub Actions: a workloads workflow that trains and posts results on a pull request, and a serve workflow that rolls the model out once the PR merges to main.
- โA pytest suite split into tests/code, tests/data, and tests/model, with coverage reporting run through the same commands used for the ML workloads.
What you will build
- โขA software or infra engineer who wants to see how a model gets wrapped in the same testing, CI/CD, and deployment discipline as an ordinary service.
- โขA data scientist with a working notebook model who needs a template for turning it into scripts, a tracked experiment, and a served endpoint.
- โขA recent CS or data science graduate closing the gap between coursework and what a production ML team maintains day to day โ this is the README's own framing of its audience.
- โขBy the end, you will have run the same paper-classification workload as a notebook, as refactored Python scripts, as a tracked MLflow experiment, and as a Ray-served endpoint queried over HTTP.
Strengths
- โOne running example carried through the whole pipeline โ notebook, refactored scripts, tracked experiment, CI/CD, and served endpoint โ instead of disconnected topic-by-topic snippets.
- โProduction concerns get real treatment: pytest suites for code, data, and model, plus a GitHub Actions workflow that posts training results directly on a pull request.
- โWorks on a local laptop or on Anyscale, so you can follow along without committing to a cloud account first.
- โMIT-licensed, so the code itself is free to reuse outside the course.
Limitations
- โณThe deeper production path โ Anyscale Jobs, Anyscale Services, and the GPU compute config the README references (g5.4xlarge) โ assumes an Anyscale account; the local path is explicitly framed as the slower, secondary option.
- โณIt teaches one problem end to end (text classification) rather than covering computer vision, recommender systems, or other ML domains.
- โณIt is a single-track course, not a reference to dip in and out of โ the CI/CD and serving lessons build directly on the training and tuning steps before them.
- โณFollowing along still means reading the repo's own setup instructions (venv, Python 3.10, pre-commit) directly, since this review does not restate installation steps.
Alternative ML production courses
Frequently asked questions
Made With ML is written primarily in Python, packaged as Jupyter notebooks for the lessons and as a standalone madewithml/ Python package (config.py, data.py, train.py, tune.py, evaluate.py, predict.py, serve.py) for the production scripts. GitHub also lists Jupyter Notebook as the repository's primary language.
Made With ML does not strictly require a GPU. The README says the training and tuning scripts run on a local laptop CPU too, just slower than on a cluster. The Anyscale setup path defaults to a GPU compute configuration for larger runs, but that path is optional, not mandatory.
Made With ML can be used without Anyscale. The README documents a local-laptop setup path that treats your own machine as a single-node Ray cluster, alongside the Anyscale option. The trade-off is speed: local runs work through the same lessons and scripts, just more slowly than on a managed cluster.
Made With ML teaches Ray for distributed training, tuning, and model serving, MLflow for experiment tracking, pytest for testing code, data, and models, and GitHub Actions for CI/CD. The README also notes Weights & Biases or Comet as alternatives to running a self-hosted MLflow server.
Made With ML is not aimed at absolute beginners. It assumes you already understand core ML concepts and focuses on the engineering layer: testing, serving, CI/CD, and iteration. The README pitches it at developers, data scientists, and recent graduates who want production skills, not a first exposure to ML.
Made With ML is released under the MIT license, per the repository's GitHub metadata. That permits reuse, modification, and redistribution of the code with attribution and no warranty, covering both the lesson notebook and the madewithml/ Python package.
Who should try it โ and who should skip
Try Made With ML if you can already train a basic model and want to see the deployment half โ tracking, testing, CI/CD, serving โ done as one coherent worked example instead of scattered blog posts. Software and infra engineers who inherit ML systems without an ML background get the most out of it, since production practices are the point, not the model itself. As an ML course for developers rather than a math-first introduction, it fits that audience specifically. Skip it if you want a from-scratch introduction to ML theory or coverage beyond the single text-classification task the course is built around.
Related repositories
Want a second opinion on Made-With-ML?
Ask an AI that can read this page โ one click and you get its take on Made-With-ML.
