@zhuoyuezs/ml-platform 0.2.7 → 0.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -15,6 +15,11 @@ FeatureSet order and evaluation runtime before the first Job. See
15
15
  do not try similar names or re-register trainers to bypass approval.
16
16
  - ARIMA supports the v1 single-target adapter for single-channel CPU
17
17
  forecasting; it does not support covariates or the v2 adapter.
18
+ - Clustering (`task.kind=clustering`) is unsupervised, CPU-only and tabular.
19
+ It uses TrainingRun v4 with `labels: []` and no temporal binding, optional
20
+ splits, and a strict parameter schema that includes train-fitted
21
+ `preprocessing`. Read the clustering section of
22
+ [training-contracts.md](training-contracts.md) before authoring the Run.
18
23
  - Chronos-2 supports the legacy v1 single-target adapter and the v2
19
24
  covariate-aware adapter. v2 jointly forecasts ordered target channels and
20
25
  accepts numeric `past_only` and `known_future` covariates. Do not silently
@@ -87,6 +92,27 @@ ml-platform --profile server cancel-training-job <job-id>
87
92
 
88
93
  Retry and cancellation require exact-Job authorization. Never change a run contract while retrying; create a new immutable run when semantic inputs change.
89
94
 
95
+ ## Clustering training sequence
96
+
97
+ Every step below is a separate gate. Registration and submission still need
98
+ explicit authorization.
99
+
100
+ ```bash
101
+ ml-platform --profile server get-system-model kmeans_clusterer v1 --project default
102
+ ml-platform --profile server validate-training-run cluster-run.json
103
+ ml-platform --profile server register-training-run cluster-run.json
104
+ ml-platform --profile server validate-training-job cluster-job-request.json
105
+ ml-platform --profile server submit-training-job cluster-job-request.json
106
+ ml-platform --profile server get-training-job <job-id>
107
+ ml-platform --profile server validate-model-artifact <artifact-id>
108
+ ```
109
+
110
+ The Job request uses `"device": "cpu"`; clustering SystemModels advertise no
111
+ other device. Before submission, confirm that `effective_trainer_parameters`
112
+ equals the submitted `trainer.parameters`. After success, validate the exact
113
+ `status.artifact_id`; the artifact must carry clustering `output_bindings`
114
+ instead of `target_bindings`.
115
+
90
116
  ## Chronos-2 fine-tuning parameters
91
117
 
92
118
  Configure Chronos-2 algorithm parameters only under
@@ -22,9 +22,12 @@ ml-platform --profile server get-prediction-report-run RUN_ID
22
22
  ```
23
23
 
24
24
  Check the deployment with `get-deployment DEPLOYMENT_ID` before creating a
25
- schedule. The deployment must support `feature_lookup` and have a usable
26
- inference horizon, supplied by either the schedule request or deployment
27
- policy. A report run may be `SKIPPED` when the selected revision is not READY.
25
+ schedule. The deployment must support `feature_lookup`. A forecasting
26
+ deployment also needs a usable inference horizon, supplied by either the
27
+ schedule request or deployment policy. A clustering deployment (its model
28
+ artifact has `output_bindings`) has no horizon: omit `horizon` and
29
+ `output_window`, which are rejected. A report run may be `SKIPPED` when the
30
+ selected revision is not READY.
28
31
 
29
32
  ## Configure a destination
30
33
 
@@ -51,8 +54,11 @@ and a non-empty `body` object. This maps each normalized prediction point:
51
54
  }
52
55
  ```
53
56
 
54
- A point always has `series_index` and `value`; `target_time` is present only
55
- when Serving returns it.
57
+ A forecast point always has `series_index` and `value`; `target_time` is
58
+ present only when Serving returns it. A clustering row has no `value`; it has
59
+ `series_index`, `kind: "clustering"`, integer `cluster_id`, the model's score
60
+ (`distance_to_center` or `cluster_probability`), and `model_artifact_id`, so
61
+ map those fields instead. A cluster ID is meaningful only for that artifact.
56
62
 
57
63
  ```bash
58
64
  ml-platform --profile server validate-destination-profile PROFILE_JSON
@@ -78,7 +84,17 @@ nested objects, `items` for array conversion, `constant` for fixed values,
78
84
  `template` for string composition, and `format`, `timezone`, `scale`, `offset`,
79
85
  and `type` for bounded transformations and validation. `timezone` is an IANA
80
86
  timezone and must be used together with `format`; it converts an aware ISO-8601
81
- timestamp before formatting. For example, use
87
+ timestamp before formatting. For a business endpoint that represents local
88
+ midnight as the end of the previous business day, set `midnight_as_24: true`
89
+ on both the business date field (`format: "%Y-%m-%d"`) and time field
90
+ (`format: "%H:%M"`), with `timezone: "Asia/Shanghai"` on each. At exact local
91
+ midnight, formatted dates move back one day and `%H` emits `24`; other times
92
+ are unchanged. For example, `2026-10-31T00:00:00+08:00` maps to date
93
+ `2026-10-30` and time `24:00`. Keep the timestamp mapped directly from
94
+ `target_time` and the MW field directly from `value`, without format or
95
+ numeric transforms. This leaves their original values unchanged. Keep
96
+ `midnight_as_24` unset on `origin_date` when it means the local cutoff date.
97
+ For example, use
82
98
  `{"source":"cutoff_time","format":"%Y-%m-%d","timezone":"Asia/Shanghai"}`
83
99
  to map `2026-09-10T16:00:00Z` to `2026-09-11`. Arbitrary code and expressions
84
100
  are not supported. A missing field or type failure produces
@@ -97,6 +113,14 @@ pause, or resume. Use `enabled: false` for a staged schedule that should not
97
113
  run yet. `SCHEDULE_JSON` contains `deployment_id`, five-field `cron`, IANA
98
114
  `timezone`, `request.entity`, and `destination: {"name":"...","version":"v1"}`.
99
115
  Do not assume that an existing destination profile is bound to any schedule.
116
+ For clustering schedules only, `request.include_inputs: true` asks Serving to
117
+ echo the model input row it used; each row then carries `inputs` (column name
118
+ to value, before the model's own transform), e.g. `{"source": "inputs.seg6"}`.
119
+ Rollout order: deploy the Serving runtime that supports the echo and repackage
120
+ (then redeploy) the model with it *before* creating or updating a schedule to
121
+ `include_inputs: true`. An older runtime silently ignores the field, so every
122
+ run fails with `prediction_contract_mismatch` and nothing is sent; if that
123
+ happens, set `include_inputs` back to `false` or finish the repackage first.
100
124
 
101
125
  ```bash
102
126
  ml-platform --profile server create-prediction-report-schedule SCHEDULE_JSON
@@ -112,6 +136,18 @@ revision, destination name/version, next run time, latest run status, and
112
136
  redacted error code. Do not claim delivery succeeded based only on validation
113
137
  or schedule creation.
114
138
 
139
+ ## Watch runs
140
+
141
+ The platform does not send notifications today. A `FAILED` or `SKIPPED` run
142
+ is visible only in the run list. When the API was down over several scheduled
143
+ times, only the latest overdue time gets a run; the earlier ones leave no run
144
+ at all, so look for gaps in `scheduled_at`. No CLI command reruns an earlier
145
+ cutoff. Before enabling a schedule, tell the user this and ask them to name a
146
+ person who will check `list-prediction-report-runs SCHEDULE_ID` after each
147
+ scheduled time, and to agree with the destination owner what happens for a
148
+ cutoff that was not delivered. Record that owner in your report. Do not describe the schedule as
149
+ monitored, and do not promise that failures will be reported automatically.
150
+
115
151
  At completion, offer a next step only when it fits the observed state: after a
116
152
  profile is created, optionally bind it to a schedule for a suitable deployment;
117
153
  after a disabled schedule is verified, optionally resume it with explicit