Dependencies and the Python version are declared in pyproject.toml, with exact
versions pinned in uv.lock. Library code lives in src/ai_learning/ (importable
as ai_learning); notebooks live in notebooks/. Requires Python 3.12+.
We recommend uv, but it's not required — any standard
venv + pip works too, since everything is in pyproject.toml.
uv reads the lockfile, so you get the exact same versions as everyone else.
uv sync # create .venv and install everything (incl. dev tools)
uv run jupyter lab # run a notebook
uv run pytest # run tests
uv run python -m ai_learning # run package codeNo need to activate the venv — uv run handles it (this also avoids the
Windows-vs-Unix activate-script difference).
You can also open a notebook in VSCode if you have the extension, just make sure you pick the Python kernel from the venv.
Skip uv entirely if you prefer. You won't get the locked versions, but
pyproject.toml still defines compatible ones.
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e . # editable install (runtime deps)
pip install --group dev # optional: dev tools (needs pip >= 25.1)Then run things directly (jupyter lab, pytest, etc.) with the venv active.
Main is for abstract interfaces (ex. Tokenizer, Data Samplers)
Personal repositories will be playgrounds/sandboxes
This is a repository which aims to collect resources on learning about AI, how to use it effectively, the ethics of using it, and the capabilities of free and open source models.
This section is for resources pertaining to how AI works.
3blue1brown has a series on Deep Learning that's really good, the chapters below on LLMs/transformer don't rely too much on the preceding sections.
- Transformers, the tech behind LLMs | Deep Learning Chapter 5
- Attention in transformers, step-by-step | Deep Learning Chapter 6
The Allium CLI validates specs and catches structural issues such as missing transition witnesses and unreachable triggers. It also generates tests from specs.
Pi is a minimal terminal coding harness. Adapt pi to your workflows, not the other way around, without having to fork and modify pi internals.