---
name: llm-lora-writing-style lesson 03
description: >-
  Agent recipe for lesson 03: choose a small catalog instruct LLM and record
  context, tokenizer, platform, and export support.
---
# Pick a base LLM

**Lesson id:** `03`  
**One-line goal:** Select `qwen3-0.6b` or a `smollm2` instruct preset and confirm the Core AI recipe for the target platform.

## On-device job

Only adapt a model you can bake and that fits the phone. Platform presets differ. The device never downloads your writing.

## Prerequisites

Lesson 02 writing collection. Installed `coreai.llm.export`.

## Inputs

Target platform, memory budget, review prompts.

## Outputs and artifacts

A base contract with short-name, HF id, revision, tokenizer, platform, context, and a base sample.

## Executable steps

1. Recreate the `uv` project if needed.
2. Run `uv run coreai.llm.export --list-models` and a `--dry-run` for the chosen short-name and `--platform`.
3. Record chat template, tokenizer, and context.
4. Generate a base sample on MPS or CPU for a review prompt.

## Constraints

Examples only. Confirm current apple/coreai-models recipes. No CUDA, quizzes, Mermaid, or em dashes.

## Failure modes

No registry preset, ignored platform, mismatched chat template, promised context the device cannot hold.

## Key concepts

- Choose a catalog instruct preset that has a Core AI export recipe.
- macOS and iOS presets differ in compression and context.
- Confirm with `coreai.llm.export --list-models` and `--dry-run`.
- Pin base revision, tokenizer, chat template, platform, and context budget.

## Takeaways

- Run base samples before training. A LoRA will not fix a model that cannot follow rewrites.
- The training chat template must match export and the app.
- A smaller model that fits beats a larger model that swaps to disk.

## Done when

Dry-run resolves the short-name. Base sample exists. Contract forbids runtime swap.

**Human lesson:** [Pick a base LLM](03-pick-base-llm.html)
