Från prototyp till produkt
Kunna ta en notebook till en tjänst med tester, loggning och evals.
Intuition
Notebooken fungerar. Nu ska den köras 10 000 gånger om dagen av folk som inte är du. Skillnaden:
| Prototyp | Produkt |
|---|---|
| celler i ordning | moduler: data.py, model.py, service.py med funktioner utan sidoeffekter |
| hårdkodade sökvägar och nycklar | konfiguration via miljö/fil, hemligheter utanför koden |
| «det funkade när jag körde» | tester + eval-harness som körs i CI vid varje ändring |
| strukturerad loggning med request-id, utan personuppgifter | |
| ett anrop | API med validering, timeout, felkoder, kvoter |
| bästa fallet | degraderade lägen när modellen/leverantören är nere |
| «modellen» | versionerad artefakt med data-hash och eval-resultat |
Gör det i den ordningen. Tester och evals först — de betalar sig vid första ändringen.
Kod
projekt/
├── src/svc/
│ ├── config.py # pydantic-settings: MODEL_PATH, LLM_URL, LOG_LEVEL …
│ ├── data.py # load/clean — rena funktioner
│ ├── model.py # predict(text) -> Out ; laddas en gång
│ ├── service.py # FastAPI: /healthz, /v1/predict, felhantering
│ └── log.py # json-loggning med request_id
├── tests/ # pytest: data, model, API (httpx.AsyncClient(app=app))
├── evals/cases.jsonl # harness; tröskel i CI
├── Dockerfile
├── requirements.txt # låsta versioner
└── .github/workflows/ci.yml # lint → test → eval → build
# config.py
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
model_path: str = "artifacts/model-v3.pkl"
llm_url: str
llm_timeout_s: float = 20
daily_budget_sek: float = 100
settings = Settings() # läser miljövariabler; saknas llm_url → tydligt fel vid start, inte vid första anropet
Behärskning innebär
- Bryter ut en notebook till moduler med tester
- Lägger till loggning, konfiguration och evals i CI
- Identifierar vad som skiljer en demo från något som kan drivas
Förkunskaper
- EBygg en eval-harnesskrävs
- EBygga ett API med FastAPIkrävs
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Google — Rules of Machine Learning — CC BY 4.0
- The Twelve-Factor App — fri läsning