Skip to content

kronos

Kronos and WindFM.

extra CPU tag GPU tag families models example
kronos :kronos :kronos-gpu Kronos, WindFM 5 kronos

Builds on base, not hub: no Chronos Bolt, Chronos T5, TTM, or TimesFM here. To mix, use full.

Start a server

docker run --rm -p 8000:8000 sktime/tserve:kronos kronos
uv pip install "tserve[server,kronos]"
uv run tserve kronos
pip install "tserve[server,kronos]"
tserve kronos

Check what loaded:

curl -s http://127.0.0.1:8000/models

Predict

Python needs the client extra on the caller.

curl -s http://127.0.0.1:8000/predict -H "Content-Type: application/json" -d '{
  "past": {
    "timestamp": ["2024-01-01", "2024-01-02", "2024-01-03", "2024-01-04", "2024-01-05"],
    "sales": [120, 135, 128, 142, 138]
  },
  "time": "timestamp",
  "target": ["sales"],
  "fh": 3,
  "model": "kronos"
}'
curl.exe -s http://127.0.0.1:8000/predict -H "Content-Type: application/json" -d '{"past":{"timestamp":["2024-01-01","2024-01-02","2024-01-03","2024-01-04","2024-01-05"],"sales":[120,135,128,142,138]},"time":"timestamp","target":["sales"],"fh":3,"model":"kronos"}'
from tserve.client import Client

past = {
    "timestamp": ["2024-01-01", "2024-01-02", "2024-01-03", "2024-01-04", "2024-01-05"],
    "sales": [120, 135, 128, 142, 138],
}

with Client("http://127.0.0.1:8000") as client:
    result = client.predict(
        past=past,
        time="timestamp",
        target=["sales"],
        fh=3,
        model="kronos",
    )
print(result.predictions)

Models

Kronos

KronosForecaster extra kronos 3 models

The tokenizer ships with the model, not as a separate model.

model checkpoint
kronos NeoQuasar/Kronos-small
kronos_mini NeoQuasar/Kronos-mini
kronos_base NeoQuasar/Kronos-base

WindFM

WindFMForecaster extra kronos 2 models
model checkpoint
windfm NeoQuasar/WindFM
windfm_robust NeoQuasar/WindFM-robust

Also loadable here

Next steps