11 — Tools Setup

“Day 1 setup that doesn’t waste Day 1.”

The tools section exists because most ML engineers lose 30-40 hours in the first three months to environment hell: CUDA version mismatches, broken conda environments, Jupyter kernels that don’t match the package installation, and Python path disasters. This folder documents the setup that works, as of 2025-2026, so you can spend those hours on actual learning.

This is not a beginner’s guide to installing Python. It assumes you’re a working software engineer. It’s a guide to the right setup for ML workloads specifically — which is different from the right setup for web development, data engineering, or general Python development.


What’s in this folder

File

What it solves

01_python_environment_setup.md

Python version, environment manager choice (uv vs conda vs venv), exact commands for a clean ML environment from scratch

02_gpu_and_compute_strategy.md

Where to run GPU workloads without a dedicated GPU. Cost comparison with INR prices. Phase-by-phase recommendation.

03_development_environment.md

VS Code setup, Jupyter vs JupyterLab, notebook hygiene, code quality tools, the notebook→.py workflow

04_version_control_for_ml.md

Git .gitignore for ML, DVC for data/model versioning, ML repo structure, what most engineers do wrong

05_hardware_and_local_setup.md

What you actually need locally, Apple Silicon MPS, RAM/storage, eGPU reality check


Setup Philosophy

Minimal viable environment first. The correct order:

  1. Get Python + PyTorch running and verify with a 3-line tensor test.

  2. Get one notebook working.

  3. Get one training run completing on CPU (not GPU) locally.

  4. Then worry about GPU access.

  5. Then worry about experiment tracking.

  6. Then worry about code quality tooling.

Reverse this order and you’ll spend 8 hours configuring tools before writing a single line of ML code.

Principle of least configuration. Every tool you add to your environment is a future failure point. Start with: Python + PyTorch + Jupyter + VS Code. Add tools when you actually need them, not because a blog post said to.

Reproducibility from Day 1. Every project gets: a virtual environment, a requirements.txt or pyproject.toml, and a .gitignore. Non-negotiable. Your future self will thank you when you need to reproduce a result 6 months later.


Quick Setup Verification

After following 01_python_environment_setup.md, verify your environment with this minimal check:

# verify_env.py — run this after setup
import sys
import torch
import numpy as np
import sklearn

print(f"Python: {sys.version}")
print(f"PyTorch: {torch.__version__}")
print(f"NumPy: {np.__version__}")
print(f"scikit-learn: {sklearn.__version__}")
print(f"CUDA available: {torch.cuda.is_available()}")
print(f"MPS available: {torch.backends.mps.is_available()}")  # Apple Silicon

# Minimal tensor test
x = torch.randn(3, 3)
print(f"Tensor test: {x.shape} — OK")

Expected output on a Mac with Apple Silicon (no NVIDIA GPU):

Python: 3.11.x
PyTorch: 2.4.x
CUDA available: False
MPS available: True
Tensor test: torch.Size([3, 3]) — OK

If MPS available: False on an M1/M2/M3 Mac, your PyTorch installation is wrong. See 01_python_environment_setup.md.


Environment Decisions Cheat Sheet

Question

Answer

Which Python version?

3.11 (as of 2025 — best PyTorch compatibility)

Which env manager?

uv for most projects; conda if CUDA + complex binary deps

VS Code or JupyterLab?

VS Code with Jupyter extension (best of both worlds)

Conda or Miniconda?

Miniconda (smaller, install what you need)

Do I need CUDA locally?

No — use cloud for GPU (see 02_gpu_and_compute_strategy.md)

Track experiments from Day 1?

W&B free tier. Yes, from the first training run.


Return to 13_MONTH_ROADMAP README · Start with: 01_python_environment_setup.md