@zhuoyuezs/ml-platform 0.2.2-alpha.1 → 0.2.2-alpha.3
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.
- package/checksums.json +14 -14
- package/package.json +1 -1
- package/release.json +11 -11
- package/runtime/business-client/README.md +3 -0
- package/runtime/business-client/package-lock.json +2 -2
- package/runtime/business-client/package.json +1 -1
- package/runtime/business-client/src/cli.js +1 -12
- package/skills/model-lifecycle-management/SKILL.md +7 -5
- package/skills/model-lifecycle-management/references/discovery.md +20 -11
- package/skills/model-lifecycle-management/references/training-contracts.md +54 -1
- package/skills/model-lifecycle-management/references/training.md +78 -14
package/checksums.json
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
"files": [
|
|
3
3
|
{
|
|
4
4
|
"path": "runtime/business-client/README.md",
|
|
5
|
-
"sha256": "sha256:
|
|
6
|
-
"size_bytes":
|
|
5
|
+
"sha256": "sha256:30d921fabf5bc0339eda60169a1865f6007807b1d9a8d3e646b42f68cd563240",
|
|
6
|
+
"size_bytes": 8125
|
|
7
7
|
},
|
|
8
8
|
{
|
|
9
9
|
"path": "runtime/business-client/package-lock.json",
|
|
10
|
-
"sha256": "sha256:
|
|
10
|
+
"sha256": "sha256:1e364f51be2b6df7ab5f27b72aa04cb499d9d191a321ab669bba011555e659e7",
|
|
11
11
|
"size_bytes": 1628
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "runtime/business-client/package.json",
|
|
15
|
-
"sha256": "sha256:
|
|
15
|
+
"sha256": "sha256:45545a61753cc889a1d578266634f0720423895e0693fa4911e0fdd3c0957f69",
|
|
16
16
|
"size_bytes": 671
|
|
17
17
|
},
|
|
18
18
|
{
|
|
@@ -22,8 +22,8 @@
|
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"path": "runtime/business-client/src/cli.js",
|
|
25
|
-
"sha256": "sha256:
|
|
26
|
-
"size_bytes":
|
|
25
|
+
"sha256": "sha256:7ddd434c1e8ee64d8a6de9005e4f6b440197eafab021071b9e4a8af340d4e23a",
|
|
26
|
+
"size_bytes": 57877
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "runtime/business-client/src/config.js",
|
|
@@ -142,8 +142,8 @@
|
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
144
|
"path": "skills/model-lifecycle-management/SKILL.md",
|
|
145
|
-
"sha256": "sha256:
|
|
146
|
-
"size_bytes":
|
|
145
|
+
"sha256": "sha256:4ea40815d73b3a470b2572874dcad63640cbdd53d3c10293d7a5ce8621a13b96",
|
|
146
|
+
"size_bytes": 4272
|
|
147
147
|
},
|
|
148
148
|
{
|
|
149
149
|
"path": "skills/model-lifecycle-management/agents/openai.yaml",
|
|
@@ -152,8 +152,8 @@
|
|
|
152
152
|
},
|
|
153
153
|
{
|
|
154
154
|
"path": "skills/model-lifecycle-management/references/discovery.md",
|
|
155
|
-
"sha256": "sha256:
|
|
156
|
-
"size_bytes":
|
|
155
|
+
"sha256": "sha256:184472a79fb217dd8c74dffab20e75285b0c8f69207dc593ae3099b8a2b6d6d5",
|
|
156
|
+
"size_bytes": 5381
|
|
157
157
|
},
|
|
158
158
|
{
|
|
159
159
|
"path": "skills/model-lifecycle-management/references/evaluation.md",
|
|
@@ -167,13 +167,13 @@
|
|
|
167
167
|
},
|
|
168
168
|
{
|
|
169
169
|
"path": "skills/model-lifecycle-management/references/training-contracts.md",
|
|
170
|
-
"sha256": "sha256:
|
|
171
|
-
"size_bytes":
|
|
170
|
+
"sha256": "sha256:4cecf5f90464640d063ca721fded1c27b46bb79daa0f67c78a8fb6b0e3e60b3b",
|
|
171
|
+
"size_bytes": 14747
|
|
172
172
|
},
|
|
173
173
|
{
|
|
174
174
|
"path": "skills/model-lifecycle-management/references/training.md",
|
|
175
|
-
"sha256": "sha256:
|
|
176
|
-
"size_bytes":
|
|
175
|
+
"sha256": "sha256:97de7894da24a07b4146d6de5e00a0cf17166654fb219a145f35adff5e8a7f99",
|
|
176
|
+
"size_bytes": 7980
|
|
177
177
|
}
|
|
178
178
|
],
|
|
179
179
|
"schema_version": "data_platform.ml_platform_checksums/v1"
|
package/package.json
CHANGED
package/release.json
CHANGED
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
"entrypoint": "src/cli.js",
|
|
14
14
|
"name": "ml-platform",
|
|
15
15
|
"path": "runtime/business-client",
|
|
16
|
-
"sha256": "sha256:
|
|
17
|
-
"version": "0.8.
|
|
16
|
+
"sha256": "sha256:ceb3fdabf57044a5bf8d54baf04ab10327cb896e4eaff3897c18e08e96e5336a",
|
|
17
|
+
"version": "0.8.2"
|
|
18
18
|
},
|
|
19
19
|
"policy_sha256": "sha256:02fbde0134696b78c0c365d6e0b76c9814227208da5b2b3d4e5dbd82dc4a3606",
|
|
20
20
|
"public_schema_versions": [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"ml_data_platform.feature_set/v1",
|
|
26
26
|
"ml_data_platform.dataset_manifest/v1"
|
|
27
27
|
],
|
|
28
|
-
"release_version": "0.2.2-alpha.
|
|
28
|
+
"release_version": "0.2.2-alpha.3",
|
|
29
29
|
"runtime_requirements": {
|
|
30
30
|
"node": ">=18",
|
|
31
31
|
"os": [
|
|
@@ -37,22 +37,22 @@
|
|
|
37
37
|
"skills": {
|
|
38
38
|
"feature-management": {
|
|
39
39
|
"path": "skills/feature-management",
|
|
40
|
-
"requires_cli": ">=0.8.
|
|
41
|
-
"revision": "0.2.2-alpha.
|
|
40
|
+
"requires_cli": ">=0.8.2 <0.9.0",
|
|
41
|
+
"revision": "0.2.2-alpha.3",
|
|
42
42
|
"sha256": "sha256:d32f0306f129d7bf76eb037fe239c84dd3c29c64b61600799d6e40320784bb10"
|
|
43
43
|
},
|
|
44
44
|
"model-deployment-management": {
|
|
45
45
|
"path": "skills/model-deployment-management",
|
|
46
|
-
"requires_cli": ">=0.8.
|
|
47
|
-
"revision": "0.2.2-alpha.
|
|
46
|
+
"requires_cli": ">=0.8.2 <0.9.0",
|
|
47
|
+
"revision": "0.2.2-alpha.3",
|
|
48
48
|
"sha256": "sha256:e7d87c272a0dcc028ea628d5e36f5b7e52ed27cb9c1bc17ea76527478e28b46d"
|
|
49
49
|
},
|
|
50
50
|
"model-lifecycle-management": {
|
|
51
51
|
"path": "skills/model-lifecycle-management",
|
|
52
|
-
"requires_cli": ">=0.8.
|
|
53
|
-
"revision": "0.2.2-alpha.
|
|
54
|
-
"sha256": "sha256:
|
|
52
|
+
"requires_cli": ">=0.8.2 <0.9.0",
|
|
53
|
+
"revision": "0.2.2-alpha.3",
|
|
54
|
+
"sha256": "sha256:ec6ebb2587fd7acd024def75a8c0e9cd94b6cdd8ee6df439609291b496751b91"
|
|
55
55
|
}
|
|
56
56
|
},
|
|
57
|
-
"source_commit": "
|
|
57
|
+
"source_commit": "e713953153439c28680b60b56f57d3b9679ff49a"
|
|
58
58
|
}
|
|
@@ -147,6 +147,9 @@ resolve the same contracts as submission without registering or scheduling
|
|
|
147
147
|
workloads. Read `submitted=false` and `unchecked`: successful preflight does not
|
|
148
148
|
verify image pulls, cluster resources or runtime execution. Complete request
|
|
149
149
|
examples and identity propagation are in the bundled model lifecycle Skill.
|
|
150
|
+
Training Run and Job validation also return `effective_trainer_parameters`;
|
|
151
|
+
for Job preflight it must match `job_spec.trainer_parameters` and represents
|
|
152
|
+
the complete mapping delivered to the Worker after defaults are resolved.
|
|
150
153
|
|
|
151
154
|
Maintainers can export the current API, including uncommitted schema changes,
|
|
152
155
|
with `uv run python scripts/generate_openapi_schema.py --working-tree` from the
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhuoyuezs/ml-platform-business-client",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@zhuoyuezs/ml-platform-business-client",
|
|
9
|
-
"version": "0.8.
|
|
9
|
+
"version": "0.8.2",
|
|
10
10
|
"license": "UNLICENSED",
|
|
11
11
|
"bin": {
|
|
12
12
|
"ml-platform": "src/cli.js"
|
|
@@ -26,7 +26,7 @@ const BUSINESS_COMMANDS = new Set([
|
|
|
26
26
|
"add-dataset", "update-dataset", "delete-dataset", "list-dataset-artifacts",
|
|
27
27
|
"register-operator", "show-operator-specs", "delete-operator", "run-operator",
|
|
28
28
|
"get-job", "wait-job", "retry-job", "cancel-job", "get-dataset-artifact", "download-dataset-artifact", "fetch-inference-data", "fetch-inference-context", "predict-model", "apply",
|
|
29
|
-
"list-system-models", "get-system-model", "
|
|
29
|
+
"list-system-models", "get-system-model", "register-training-run", "validate-training-run", "submit-training-job", "get-training-job", "retry-training-job", "cancel-training-job",
|
|
30
30
|
"register-evaluation-config", "get-evaluation-config", "register-metric-definition", "get-metric-definition",
|
|
31
31
|
"register-executable-package", "verify-executable-package", "publish-executable-package",
|
|
32
32
|
"validate-evaluation-run", "submit-evaluation", "get-evaluation-run", "get-evaluation-job", "retry-evaluation-job", "cancel-evaluation-job", "list-evaluation-attempts",
|
|
@@ -108,8 +108,6 @@ const COMMAND_USAGE = {
|
|
|
108
108
|
"predict-model": "predict-model REQUEST_JSON --serving-url URL",
|
|
109
109
|
"list-system-models": "list-system-models",
|
|
110
110
|
"get-system-model": "get-system-model NAME VERSION [--project PROJECT]",
|
|
111
|
-
"list-trainer-definitions": "list-trainer-definitions",
|
|
112
|
-
"get-trainer-definition": "get-trainer-definition NAME VERSION [--project PROJECT]",
|
|
113
111
|
"register-training-run": "register-training-run RUN_JSON",
|
|
114
112
|
"validate-training-run": "validate-training-run RUN_JSON",
|
|
115
113
|
"submit-training-job": "submit-training-job REQUEST_JSON",
|
|
@@ -827,15 +825,6 @@ async function runBusinessCli(argv) {
|
|
|
827
825
|
const project = take(rest, "--project", "default");
|
|
828
826
|
result = await client(options).get(`/system-models/${encodeURIComponent(project)}/${encodeURIComponent(name)}/${encodeURIComponent(version)}`);
|
|
829
827
|
}
|
|
830
|
-
else if (options.command === "list-trainer-definitions") {
|
|
831
|
-
result = await client(options).get("/trainer-definitions");
|
|
832
|
-
}
|
|
833
|
-
else if (options.command === "get-trainer-definition") {
|
|
834
|
-
const name = positional(rest, "trainer name");
|
|
835
|
-
const version = positional(rest, "trainer version");
|
|
836
|
-
const project = take(rest, "--project", "default");
|
|
837
|
-
result = await client(options).get(`/trainer-definitions/${encodeURIComponent(project)}/${encodeURIComponent(name)}/${encodeURIComponent(version)}`);
|
|
838
|
-
}
|
|
839
828
|
else if ({
|
|
840
829
|
"register-training-run": "/training-runs", "validate-training-run": "/training-runs/validate",
|
|
841
830
|
"validate-training-job": "/training-jobs/validate", "validate-model-package": "/model-packages/validate", "submit-training-job": "/training-jobs", "register-evaluation-config": "/evaluation-configs", "register-metric-definition": "/metric-definitions",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: model-lifecycle-management
|
|
3
|
-
description: Manage ITSMP model training, evaluation, immutable model packaging, and contract-bound inference requests. Use when a user asks to
|
|
3
|
+
description: Manage ITSMP system-model discovery, model training, evaluation, immutable model packaging, and contract-bound inference requests. Use when a user asks to inspect platform-owned SystemModels and runtime bindings, validate or submit a training run, inspect/retry/cancel training jobs, configure or run governed evaluation, inspect evaluation evidence, validate a ModelArtifact, create and inspect a ModelPackage, or invoke a deployed model. Do not use for feature catalog authoring, dataset builds, model deployment, Kubernetes administration, or image release engineering.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Model Lifecycle Management
|
|
@@ -24,13 +24,15 @@ Before training a model that will be evaluated, also read
|
|
|
24
24
|
[references/evaluation.md](references/evaluation.md). Check the final dataset
|
|
25
25
|
schema, training split binding and evaluation runtime before submission.
|
|
26
26
|
OpenAPI free-form dictionaries are not complete nested contracts: use the
|
|
27
|
-
examples in these references and same-release
|
|
28
|
-
to discover fields. Preserve release/error
|
|
27
|
+
SystemModel `parameter_schema`, examples in these references and same-release
|
|
28
|
+
validation, not successive 422s to discover fields. Preserve release/error
|
|
29
|
+
evidence when deployment differs.
|
|
29
30
|
|
|
30
|
-
- Establish exact immutable inputs,
|
|
31
|
+
- Establish exact immutable inputs, canonical SystemModel `v1`, runtime-release image digest, model inputs/targets, resources, evaluation policy, and package destination from authoritative contracts. Do not infer them from model names.
|
|
32
|
+
- For Chronos-2, inspect the typed `lora_config` schema before authoring a Run and preserve `effective_trainer_parameters` from validation. Do not infer PEFT keys or rely on Worker defaults.
|
|
31
33
|
- Validate, register, submit, retry, cancel, and package creation are separate actions. Read-only discovery and validation do not authorize mutation or workload submission.
|
|
32
34
|
- Before submission, show the exact JSON path, immutable identities, expected workload, and target API. Obtain explicit authorization. Retry and cancel require separate authorization for the exact Job.
|
|
33
|
-
- Never use `latest` image tags. During development
|
|
35
|
+
- Never use `latest` image tags. During development the canonical SystemModel stays at `v1`; image changes are reviewed Runtime Release updates and require confirming no active Job depends on the previous binding.
|
|
34
36
|
- A succeeded Job is insufficient evidence. Training requires a valid ModelArtifact and signature; evaluation requires immutable Result/Summary evidence and coverage; packaging requires `READY`, an immutable image digest, manifest, and passing test report.
|
|
35
37
|
- Register a ModelArtifact through `register-model-artifact` only after a platform-generated PASS evaluation/result or summary has complete evidence; do not bypass the CLI with a direct registration HTTP request.
|
|
36
38
|
- Do not register caller-computed evaluation results. Workers produce predictions, metrics, decisions, and summaries from frozen DatasetArtifact rowsets.
|
|
@@ -9,18 +9,21 @@ capability probe.
|
|
|
9
9
|
## Effective runtime policy
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
+
ml-platform --profile server list-system-models
|
|
13
|
+
ml-platform --profile server get-system-model NAME v1 --project PROJECT
|
|
12
14
|
ml-platform --profile server get-model-runtime-release
|
|
13
|
-
ml-platform --profile server list-trainer-definitions
|
|
14
|
-
ml-platform --profile server get-trainer-definition NAME v1 --project PROJECT
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
System-model discovery returns the platform-owned algorithm identity,
|
|
18
|
+
capabilities, parameter contract and Serving input modes. Runtime discovery
|
|
19
|
+
returns `configured`, `release_id`, `approval_policy`, and `bindings`. Each
|
|
20
|
+
binding contains the exact `project/name:version:device` compatibility key,
|
|
19
21
|
immutable training and Serving base images, input modes and architectures.
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
Confirm that the canonical SystemModel supports the selected device and that an
|
|
23
|
+
exact runtime binding exists before Job preflight. Do not use historical
|
|
24
|
+
TrainerDefinition registry entries to select a model or image.
|
|
25
|
+
`configured=false` means capability-based validation without a release allowlist;
|
|
26
|
+
it does not mean every model/device is approved by a release.
|
|
24
27
|
`evaluation.runtime_identity` and `default_executor` are effective server values.
|
|
25
28
|
`worker_dependencies_verified=false` explicitly means discovery has not tested
|
|
26
29
|
imports, image pulls or model prediction in the Worker.
|
|
@@ -65,6 +68,10 @@ artifact eligibility, selected runtime, input modes and immutable-version confli
|
|
|
65
68
|
checks used by creation. Both return `status=valid`, the proposed `job_spec` or
|
|
66
69
|
`package`, `submitted=false` and `unchecked` execution checks. They do not register
|
|
67
70
|
Jobs/packages or invoke schedulers. Artifact reads can populate local caches.
|
|
71
|
+
For training, confirm that top-level `effective_trainer_parameters` exactly
|
|
72
|
+
matches `job_spec.trainer_parameters`; this is the complete parameter mapping
|
|
73
|
+
the Worker receives after platform defaults and reproducibility controls are
|
|
74
|
+
resolved.
|
|
68
75
|
|
|
69
76
|
A valid preview does not prove image availability, cluster capacity, credentials,
|
|
70
77
|
framework imports, training success or packaging test success. Read `unchecked`
|
|
@@ -78,9 +85,11 @@ Training Run `task`, `data`, `data.artifact`, `features.feature_set`, `splits`,
|
|
|
78
85
|
`temporal` and `trainer` are explicit objects in OpenAPI. Evaluation artifact,
|
|
79
86
|
config references, members and execution, plus ModelPackage requests, are also
|
|
80
87
|
structured. Unknown keys return 422 with `detail[].loc` identifying the field.
|
|
81
|
-
Keep algorithm-specific `trainer.parameters`
|
|
82
|
-
|
|
83
|
-
|
|
88
|
+
Keep algorithm-specific `trainer.parameters` governed by the SystemModel
|
|
89
|
+
parameter schema. A typed nested contract such as Chronos-2 `lora_config`
|
|
90
|
+
rejects unknown fields; a SystemModel that intentionally advertises
|
|
91
|
+
`additionalProperties` remains extensible. Do not infer one policy from the
|
|
92
|
+
other.
|
|
84
93
|
|
|
85
94
|
These HTTP checks preserve accepted values and do not rewrite historical stored
|
|
86
95
|
contracts or hashes. Legacy records remain readable. A previously ignored typo
|
|
@@ -68,6 +68,59 @@ Non-temporal regression can omit it. Do not change task kind just to evade check
|
|
|
68
68
|
`series_keys` must identify entity-key columns when multiple series coexist;
|
|
69
69
|
an empty list treats the entire artifact as one series.
|
|
70
70
|
|
|
71
|
+
## Chronos-2 LoRA parameters
|
|
72
|
+
|
|
73
|
+
Chronos-2 fine-tuning settings belong under `trainer.parameters`; they are
|
|
74
|
+
frozen with the immutable TrainingRun. This fragment overrides rank and keeps
|
|
75
|
+
the other released LoRA defaults explicit:
|
|
76
|
+
|
|
77
|
+
```json
|
|
78
|
+
{
|
|
79
|
+
"trainer": {
|
|
80
|
+
"project": "default",
|
|
81
|
+
"name": "chronos2_forecaster",
|
|
82
|
+
"version": "v1",
|
|
83
|
+
"parameters": {
|
|
84
|
+
"finetune_mode": "lora",
|
|
85
|
+
"num_steps": 1000,
|
|
86
|
+
"batch_size": 16,
|
|
87
|
+
"learning_rate": 0.00001,
|
|
88
|
+
"gradient_accumulation_steps": 2,
|
|
89
|
+
"logging_steps": 10,
|
|
90
|
+
"lora_config": {
|
|
91
|
+
"r": 16,
|
|
92
|
+
"lora_alpha": 16,
|
|
93
|
+
"lora_dropout": 0.0,
|
|
94
|
+
"target_modules": [
|
|
95
|
+
"self_attention.q",
|
|
96
|
+
"self_attention.v",
|
|
97
|
+
"self_attention.k",
|
|
98
|
+
"self_attention.o",
|
|
99
|
+
"output_patch_embedding.output_layer"
|
|
100
|
+
]
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
},
|
|
104
|
+
"reproducibility": {"seed": 42, "deterministic": true}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Always obtain the accepted fields, target-module enum and defaults from
|
|
109
|
+
`get-system-model chronos2_forecaster v1`; unknown nested LoRA keys are
|
|
110
|
+
rejected before scheduling. `r >= 1`, `lora_alpha >= 1`, and
|
|
111
|
+
`0 <= lora_dropout < 1`. `finetune_mode=full` rejects `lora_config`.
|
|
112
|
+
|
|
113
|
+
The platform materializes omitted values before Job creation. Run validation
|
|
114
|
+
returns `effective_trainer_parameters`; Job validation returns the same object
|
|
115
|
+
both at the top level and in `job_spec.trainer_parameters`. Review that object
|
|
116
|
+
instead of assuming library defaults. Changing any Trainer parameter requires
|
|
117
|
+
a new TrainingRun identity; Job retry cannot alter it.
|
|
118
|
+
|
|
119
|
+
Do not put `prediction_length` in this mapping. It is derived from the temporal
|
|
120
|
+
horizon and frequency. Trainer `context_length` defaults to the sequence input
|
|
121
|
+
adapter's context length, and `min_past` defaults to prediction length. GPU,
|
|
122
|
+
CPU, memory and deadline remain TrainingJob execution fields.
|
|
123
|
+
|
|
71
124
|
## Direct tabular forecasting with known-future features
|
|
72
125
|
|
|
73
126
|
Tree and other matrix-based models can forecast a variable target grid without
|
|
@@ -237,7 +290,7 @@ For `continuous_target_series`, TrainingRun v3 derives the fixed maximum
|
|
|
237
290
|
`prediction_length` as `data.temporal.horizon / data.temporal.frequency`; the
|
|
238
291
|
horizon must be a positive exact multiple of the frequency. The target input
|
|
239
292
|
must be a numeric, at-prediction Feature and the output label must be the sole
|
|
240
|
-
entry in `data.labels`. Use this adapter only when the inspected
|
|
293
|
+
entry in `data.labels`. Use this adapter only when the inspected SystemModel
|
|
241
294
|
advertises `forecast_target_modes=["continuous_target_series"]`.
|
|
242
295
|
|
|
243
296
|
The resulting model emits the complete fixed-length trajectory. Serving accepts
|
|
@@ -6,10 +6,10 @@ Settle the final DataSchema (including split/metadata and label/time columns),
|
|
|
6
6
|
FeatureSet order and evaluation runtime before the first Job. See
|
|
7
7
|
[evaluation.md](evaluation.md) for inherited split bindings and runtime failures.
|
|
8
8
|
|
|
9
|
-
- Inspect exact
|
|
9
|
+
- Inspect the exact canonical SystemModel `project/name:v1`, entrypoint,
|
|
10
10
|
capabilities (including `forecast_target_modes`) and parameter schema. Similar names in different projects are
|
|
11
|
-
distinct identities
|
|
12
|
-
- Match
|
|
11
|
+
distinct identities. Resolve its immutable image from the active Runtime Release.
|
|
12
|
+
- Match the SystemModel and device to the active runtime release. On `not approved
|
|
13
13
|
for device`, preserve the rejected identity, device and release ID. Use `get-model-runtime-release` to find the
|
|
14
14
|
approved binding; if the deployed release lacks discovery, request its contract;
|
|
15
15
|
do not try similar names or re-register trainers to bypass approval.
|
|
@@ -52,22 +52,22 @@ working directory so later diagnosis needs no source repository.
|
|
|
52
52
|
Read [training-contracts.md](training-contracts.md) when authoring a Run or Job
|
|
53
53
|
JSON. It provides complete request shapes, response paths and sequence semantics.
|
|
54
54
|
|
|
55
|
-
Discover
|
|
56
|
-
|
|
55
|
+
Discover the platform-owned SystemModel before authoring a TrainingRunSpec, then
|
|
56
|
+
inspect the active Runtime Release for the selected device:
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
|
-
ml-platform --profile server list-
|
|
60
|
-
ml-platform --profile server get-
|
|
59
|
+
ml-platform --profile server list-system-models
|
|
60
|
+
ml-platform --profile server get-system-model <name> <version> [--project default]
|
|
61
|
+
ml-platform --profile server get-model-runtime-release
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
`get-
|
|
64
|
-
`
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
`get-system-model` returns the canonical identity, entrypoint, `artifact_format`,
|
|
65
|
+
`model_file`, capabilities, parameter schema, and Serving input modes. Runtime
|
|
66
|
+
discovery supplies the approved immutable training image for the selected device.
|
|
67
|
+
A missing SystemModel or runtime binding is a platform release gap; do not register
|
|
68
|
+
or select a historical TrainerDefinition as a workaround.
|
|
68
69
|
|
|
69
70
|
```bash
|
|
70
|
-
ml-platform --profile server register-trainer trainer-definition.json
|
|
71
71
|
ml-platform --profile server validate-training-run training-run.json
|
|
72
72
|
ml-platform --profile server register-training-run training-run.json
|
|
73
73
|
ml-platform --profile server validate-training-job training-job-request.json
|
|
@@ -75,7 +75,7 @@ ml-platform --profile server submit-training-job training-job-request.json
|
|
|
75
75
|
ml-platform --profile server get-training-job <job-id>
|
|
76
76
|
```
|
|
77
77
|
|
|
78
|
-
The TrainingRun binds immutable DatasetArtifact identities, DataSchema, ordered inputs, targets, InputAdapter,
|
|
78
|
+
The TrainingRun binds immutable DatasetArtifact identities, DataSchema, ordered inputs, targets, InputAdapter, canonical SystemModel `v1`, reproducibility controls, and runtime identity. Job resolution freezes the SystemModel and approved runtime image as an internal TrainerDefinition snapshot. Validation proves compatibility only. Submit the run and Job separately after authorization and record spec hash and Job ID. Terminal success must expose a ModelArtifact ID; validate it before evaluation or packaging.
|
|
79
79
|
|
|
80
80
|
```bash
|
|
81
81
|
ml-platform --profile server validate-model-artifact <artifact-id>
|
|
@@ -85,6 +85,70 @@ ml-platform --profile server cancel-training-job <job-id>
|
|
|
85
85
|
|
|
86
86
|
Retry and cancellation require exact-Job authorization. Never change a run contract while retrying; create a new immutable run when semantic inputs change.
|
|
87
87
|
|
|
88
|
+
## Chronos-2 fine-tuning parameters
|
|
89
|
+
|
|
90
|
+
Configure Chronos-2 algorithm parameters only under
|
|
91
|
+
`trainer.parameters` in the TrainingRun. Configure execution device and GPU
|
|
92
|
+
resources later under TrainingJob `execution`; do not mix the two contracts.
|
|
93
|
+
The Run is immutable after registration, so changing rank, learning rate,
|
|
94
|
+
batch size or fine-tuning mode requires a new `run_id`. Retrying an existing
|
|
95
|
+
Job must retain the original parameters.
|
|
96
|
+
|
|
97
|
+
Inspect the same-release contract first:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
ml-platform --profile server get-system-model \
|
|
101
|
+
chronos2_forecaster v1 --project default
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
The returned `parameter_schema` is authoritative. A typical explicit LoRA
|
|
105
|
+
fragment is:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"trainer": {
|
|
110
|
+
"project": "default",
|
|
111
|
+
"name": "chronos2_forecaster",
|
|
112
|
+
"version": "v1",
|
|
113
|
+
"parameters": {
|
|
114
|
+
"finetune_mode": "lora",
|
|
115
|
+
"num_steps": 1000,
|
|
116
|
+
"batch_size": 16,
|
|
117
|
+
"learning_rate": 0.00001,
|
|
118
|
+
"gradient_accumulation_steps": 2,
|
|
119
|
+
"logging_steps": 10,
|
|
120
|
+
"lora_config": {
|
|
121
|
+
"r": 16,
|
|
122
|
+
"lora_alpha": 32,
|
|
123
|
+
"lora_dropout": 0.05
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"reproducibility": {"seed": 42, "deterministic": true}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
`r` and `lora_alpha` must be positive integers; `lora_dropout` is in `[0, 1)`.
|
|
132
|
+
Only target modules enumerated by the SystemModel schema are accepted. LoRA is
|
|
133
|
+
the default mode; full fine-tuning rejects `lora_config`. Omitted LoRA settings
|
|
134
|
+
resolve to `r=8`, `lora_alpha=16`, `lora_dropout=0` and the released Chronos-2
|
|
135
|
+
target-module list. Omitted learning rate resolves to `1e-5` for LoRA and
|
|
136
|
+
`1e-6` for full fine-tuning. `min_past` defaults to the derived prediction
|
|
137
|
+
length, while trainer `context_length` defaults to
|
|
138
|
+
`input_adapter.context_length`.
|
|
139
|
+
|
|
140
|
+
Set random seed and determinism only through top-level `reproducibility`.
|
|
141
|
+
Compatibility fields with the same names may appear in the parameter schema,
|
|
142
|
+
but the top-level values are authoritative. Do not configure
|
|
143
|
+
`prediction_length`; the platform derives it as `temporal.horizon /
|
|
144
|
+
temporal.frequency`.
|
|
145
|
+
|
|
146
|
+
After `validate-training-run`, inspect and preserve
|
|
147
|
+
`effective_trainer_parameters`. After Run registration, call
|
|
148
|
+
`validate-training-job` and confirm that its top-level
|
|
149
|
+
`effective_trainer_parameters` exactly equals
|
|
150
|
+
`job_spec.trainer_parameters` before requesting submission authorization.
|
|
151
|
+
|
|
88
152
|
## Chronos-2 future-known inputs
|
|
89
153
|
|
|
90
154
|
For storage forecasting, tomorrow's weather forecast and peak/valley schedule
|