Instructions to use pzarzycki/hrm-text-1b-code-tools-sft with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Keras
How to use pzarzycki/hrm-text-1b-code-tools-sft with Keras:
# !pip install -U keras tensorflow huggingface_hub # Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here; # "jax" and "torch" also work for computation once TensorFlow is installed. import os os.environ["KERAS_BACKEND"] = "tensorflow" import keras model = keras.saving.load_model("hf://pzarzycki/hrm-text-1b-code-tools-sft") - KerasHub
How to use pzarzycki/hrm-text-1b-code-tools-sft with KerasHub:
import keras_hub # Create a Backbone model unspecialized for any task backbone = keras_hub.models.Backbone.from_preset("hf://pzarzycki/hrm-text-1b-code-tools-sft") - Keras
How to use pzarzycki/hrm-text-1b-code-tools-sft with Keras:
# !pip install -U keras tensorflow huggingface_hub # Keras needs TensorFlow installed to read "hf://" paths, so the tensorflow backend is selected here; # "jax" and "torch" also work for computation once TensorFlow is installed. import os os.environ["KERAS_BACKEND"] = "tensorflow" import keras model = keras.saving.load_model("hf://pzarzycki/hrm-text-1b-code-tools-sft") - Notebooks
- Google Colab
- Kaggle
Publish Stage A HRM-Text code and tool-use SFT pilot
Browse filesFinal Keras preset, full checkpoint, completed-run telemetry, TensorBoard events, hardware telemetry, and training-loss chart for the Stage A seed-17 pilot.
- .gitattributes +2 -0
- ARTIFACTS.tsv +30 -0
- LICENSE +16 -0
- README.md +137 -0
- checkpoint-00020000.keras +3 -0
- preset/assets/tokenizer/merges.txt +0 -0
- preset/assets/tokenizer/vocabulary.json +0 -0
- preset/config.json +36 -0
- preset/metadata.json +9 -0
- preset/model.weights.h5 +3 -0
- preset/preprocessor.json +51 -0
- preset/task.json +95 -0
- preset/tokenizer.json +30 -0
- training-loss.png +3 -0
- training/environment.json +1 -0
- training/gpu.jsonl +0 -0
- training/history.csv +2 -0
- training/history.json +14 -0
- training/pilot-completed-metrics.jsonl +0 -0
- training/pilot-completion.json +20 -0
- training/platform.jsonl +0 -0
- training/preflight.json +112 -0
- training/tensorboard/train/events.out.tfevents.1784941536.ccdf07020f90.51.0.v2 +3 -0
- training/tensorboard/validation/events.out.tfevents.1784994496.ccdf07020f90.51.1.v2 +3 -0
- training/training-plan.json +14 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
checkpoint-00020000.keras filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
training-loss.png filter=lfs diff=lfs merge=lfs -text
|
ARTIFACTS.tsv
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
ARTIFACTS.tsv 0
|
| 2 |
+
LICENSE 561
|
| 3 |
+
README.md 4571
|
| 4 |
+
checkpoint-00020000.keras 11831471907
|
| 5 |
+
preset/assets/tokenizer/merges.txt 635535
|
| 6 |
+
preset/assets/tokenizer/vocabulary.json 1502734
|
| 7 |
+
preset/config.json 1031
|
| 8 |
+
preset/metadata.json 190
|
| 9 |
+
preset/model.weights.h5 2366554504
|
| 10 |
+
preset/preprocessor.json 1746
|
| 11 |
+
preset/task.json 3722
|
| 12 |
+
preset/tokenizer.json 845
|
| 13 |
+
training-loss.png 136398
|
| 14 |
+
training/environment.json 171
|
| 15 |
+
training/gpu.jsonl 947076
|
| 16 |
+
training/history.csv 162
|
| 17 |
+
training/history.json 219
|
| 18 |
+
training/pilot-completed-metrics.jsonl 1735944
|
| 19 |
+
training/pilot-completion.json 878
|
| 20 |
+
training/platform.jsonl 210602
|
| 21 |
+
training/preflight.json 3751
|
| 22 |
+
training/tensorboard/train/events.out.tfevents.1784941536.ccdf07020f90.51.0.v2 932008
|
| 23 |
+
training/tensorboard/validation/events.out.tfevents.1784994496.ccdf07020f90.51.1.v2 78
|
| 24 |
+
training/training-plan.json 355
|
| 25 |
+
path bytes integrity
|
| 26 |
+
preset/model.weights.h5 2366554504 sha256:8ddb10cea110edff99380b360ec569e5dbde0d4a233d1c058b0e292700a42b84
|
| 27 |
+
checkpoint-00020000.keras 11831471907 md5:1cbcae0768082e8df30b793c5890bb08
|
| 28 |
+
training/pilot-completed-metrics.jsonl 1735944 sha256:fbbb63a26548fe2b7e1cc49e13b9e1fe3b037f4eb40764d513ff60112ad86f52
|
| 29 |
+
training/pilot-completion.json 878 completion manifest for canonical telemetry
|
| 30 |
+
training-loss.png 136398 chart derived only from canonical telemetry
|
LICENSE
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
Apache License 2.0
|
| 2 |
+
|
| 3 |
+
Copyright 2026
|
| 4 |
+
|
| 5 |
+
Licensed under the Apache License, Version 2.0 (the "License");
|
| 6 |
+
you may not use this file except in compliance with the License.
|
| 7 |
+
You may obtain a copy of the License at
|
| 8 |
+
|
| 9 |
+
http://www.apache.org/licenses/LICENSE-2.0
|
| 10 |
+
|
| 11 |
+
Unless required by applicable law or agreed to in writing, software
|
| 12 |
+
distributed under the License is distributed on an "AS IS" BASIS,
|
| 13 |
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
| 14 |
+
See the License for the specific language governing permissions and
|
| 15 |
+
limitations under the License.
|
| 16 |
+
|
README.md
ADDED
|
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
language:
|
| 3 |
+
- en
|
| 4 |
+
license: apache-2.0
|
| 5 |
+
base_model: sapientinc/HRM-Text-1B
|
| 6 |
+
library_name: keras
|
| 7 |
+
pipeline_tag: text-generation
|
| 8 |
+
tags:
|
| 9 |
+
- hrm
|
| 10 |
+
- prefix-lm
|
| 11 |
+
- code
|
| 12 |
+
- tool-use
|
| 13 |
+
- keras
|
| 14 |
+
- keras-hub
|
| 15 |
+
- sft
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
# HRM-Text-1B Code & Tool-Use SFT
|
| 19 |
+
|
| 20 |
+
This page tracks successive code and tool-use SFT stages of
|
| 21 |
+
[`sapientinc/HRM-Text-1B`](https://huggingface.co/sapientinc/HRM-Text-1B),
|
| 22 |
+
saved as native Keras/KerasHub presets. The current default revision and the
|
| 23 |
+
immutable `stage-a-v1` tag are a full-parameter Stage A pilot. They adapt the
|
| 24 |
+
base PrefixLM to the study's coding and tool-use transcript syntax.
|
| 25 |
+
|
| 26 |
+
> **Pilot release.** This model has not yet undergone downstream benchmark
|
| 27 |
+
> evaluation. Training loss is not a measure of coding-agent or tool-use task
|
| 28 |
+
> performance. Do not treat it as a production-ready agent.
|
| 29 |
+
|
| 30 |
+
## Release lineage
|
| 31 |
+
|
| 32 |
+
| Tag | State | Availability |
|
| 33 |
+
| --- | --- | --- |
|
| 34 |
+
| `stage-a-v1` | Completed 10M-response-token Stage A pilot, seed 17 | Current default revision |
|
| 35 |
+
| `stage-b-v1` | Stage B continuation | Not trained or published yet |
|
| 36 |
+
|
| 37 |
+
Stage B will be published as `stage-b-v1` on this same page only after its
|
| 38 |
+
training and release checks complete. `stage-a-v1` will remain immutable for
|
| 39 |
+
reproducibility.
|
| 40 |
+
|
| 41 |
+
## Training result
|
| 42 |
+
|
| 43 |
+

|
| 44 |
+
|
| 45 |
+
| Metric | Value |
|
| 46 |
+
| --- | ---: |
|
| 47 |
+
| Training budget | 10,000,147 response tokens |
|
| 48 |
+
| Serialized tokens | 19,650,833 |
|
| 49 |
+
| Microbatches / optimizer updates | 38,248 / 4,781 planned |
|
| 50 |
+
| Final training loss | 0.03527 |
|
| 51 |
+
| Validation loss | 0.02808 |
|
| 52 |
+
| Final validation token accuracy | 0.90152 |
|
| 53 |
+
| Hardware | One NVIDIA H100 80 GB |
|
| 54 |
+
| Wall time | 14 h 44 min |
|
| 55 |
+
|
| 56 |
+
The chart uses the canonical completed-run telemetry segment. The thin trace is
|
| 57 |
+
the loss logged every ten microbatches; the dark trace is a 25-point trailing
|
| 58 |
+
mean.
|
| 59 |
+
|
| 60 |
+
## Training data and protocol
|
| 61 |
+
|
| 62 |
+
- Dataset: [`pzarzycki/hrm-text-code-tools-sft`](https://huggingface.co/datasets/pzarzycki/hrm-text-code-tools-sft), canonical v2 Stage A.
|
| 63 |
+
- Source: `nvidia/OpenCodeInstruct` pinned to revision
|
| 64 |
+
`8f3ba5bafe4d6e8db46082cf7ae6741bc370604d` (CC-BY-4.0).
|
| 65 |
+
- The deterministic pilot selection contains 38,248 rows from the sealed
|
| 66 |
+
Stage A training split. It is not a full pass over all 1.13M Stage A rows.
|
| 67 |
+
- Context cap: 4,096 serialized tokens. Oversized rows were rejected during
|
| 68 |
+
data preparation; no example was silently truncated.
|
| 69 |
+
- The only condition used was `direct`.
|
| 70 |
+
|
| 71 |
+
The learned SFT envelope is:
|
| 72 |
+
|
| 73 |
+
```text
|
| 74 |
+
<|im_start|><|object_ref_start|>instruction<|im_end|>response<|box_end|>
|
| 75 |
+
```
|
| 76 |
+
|
| 77 |
+
`<user>`, `<assistant>`, `<tools>`, `<tool_call>`, and `<tool_result>` inside
|
| 78 |
+
the content are ordinary learned transcript markup, not additional pretrained
|
| 79 |
+
HRM control tokens.
|
| 80 |
+
|
| 81 |
+
## Optimization
|
| 82 |
+
|
| 83 |
+
Full-parameter BF16 fine-tuning used KerasHub HRM-Text support, AdamW
|
| 84 |
+
(`lr=3e-5`, `beta_1=0.9`, `beta_2=0.95`, `weight_decay=0.1`), global gradient
|
| 85 |
+
clip norm 1.0, EMA (`0.999`), batch size 1 with gradient accumulation 8,
|
| 86 |
+
and 3% warmup. Loss is applied only to response tokens, including
|
| 87 |
+
`<|box_end|>`; prefix tokens receive zero loss weight.
|
| 88 |
+
|
| 89 |
+
## Files
|
| 90 |
+
|
| 91 |
+
| Path | Purpose |
|
| 92 |
+
| --- | --- |
|
| 93 |
+
| `preset/` | Final Keras preset: model configuration, tokenizer, preprocessor, and final weights. |
|
| 94 |
+
| `checkpoint-00020000.keras` | Full Keras checkpoint saved at microbatch 20,000. |
|
| 95 |
+
| `training/pilot-completion.json` | Immutable completion manifest and metrics SHA-256. |
|
| 96 |
+
| `training/pilot-completed-metrics.jsonl` | Canonical first-run loss, learning-rate, token, and throughput telemetry. |
|
| 97 |
+
| `training/gpu.jsonl` | GPU utilization, VRAM, power, and temperature telemetry. |
|
| 98 |
+
| `training/platform.jsonl` | RunPod GPU/CPU utilization samples. |
|
| 99 |
+
| `training/history.json` | Final Keras training and validation summary. |
|
| 100 |
+
| `training/tensorboard/` | TensorBoard events for the completed training run. |
|
| 101 |
+
| `ARTIFACTS.tsv` | Sizes and release-integrity checksums for the key artifacts. |
|
| 102 |
+
|
| 103 |
+
## Loading and prompting
|
| 104 |
+
|
| 105 |
+
The preset requires a KerasHub build with HRM-Text support. With the study's
|
| 106 |
+
HRM-enabled KerasHub branch installed, load the preset from a local clone or
|
| 107 |
+
using the Hugging Face handle:
|
| 108 |
+
|
| 109 |
+
```python
|
| 110 |
+
from keras_hub.models import HrmTextCausalLM
|
| 111 |
+
|
| 112 |
+
model = HrmTextCausalLM.from_preset(
|
| 113 |
+
"hf://pzarzycki/hrm-text-1b-code-tools-sft"
|
| 114 |
+
)
|
| 115 |
+
prompt = (
|
| 116 |
+
"<|im_start|><|object_ref_start|>"
|
| 117 |
+
"Write a Python function that returns the larger of two integers."
|
| 118 |
+
"<|im_end|>"
|
| 119 |
+
)
|
| 120 |
+
print(model.generate(prompt, max_length=256))
|
| 121 |
+
```
|
| 122 |
+
|
| 123 |
+
HRM-Text is a PrefixLM base model, not a ChatML/Qwen chat model. Keep the
|
| 124 |
+
`direct` condition and the `<|im_end|>` instruction boundary at inference.
|
| 125 |
+
|
| 126 |
+
## Limitations and intended use
|
| 127 |
+
|
| 128 |
+
This is a research artifact for continued evaluation of code generation and a
|
| 129 |
+
fixed tool-transcript protocol. It does not itself execute tools, validate tool
|
| 130 |
+
calls, sandbox generated code, or establish benchmark performance. Use
|
| 131 |
+
independent task-level evaluation before deployment.
|
| 132 |
+
|
| 133 |
+
## Provenance
|
| 134 |
+
|
| 135 |
+
The base model is Apache-2.0. Stage A training data is CC-BY-4.0; source pins,
|
| 136 |
+
dataset checksums, serializer details, preflight configuration, and completed
|
| 137 |
+
telemetry are included in this repository's `training/` artifacts.
|
checkpoint-00020000.keras
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:d89e41a7dd481c9d20b5778228961cae38acee09fab3862095f3e4b12b90fbe1
|
| 3 |
+
size 11831471907
|
preset/assets/tokenizer/merges.txt
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
preset/assets/tokenizer/vocabulary.json
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
preset/config.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_backbone",
|
| 3 |
+
"class_name": "HrmTextBackbone",
|
| 4 |
+
"config": {
|
| 5 |
+
"name": "hrm_text_backbone",
|
| 6 |
+
"trainable": true,
|
| 7 |
+
"dtype": {
|
| 8 |
+
"module": "keras",
|
| 9 |
+
"class_name": "DTypePolicy",
|
| 10 |
+
"config": {
|
| 11 |
+
"name": "bfloat16"
|
| 12 |
+
},
|
| 13 |
+
"registered_name": null
|
| 14 |
+
},
|
| 15 |
+
"vocabulary_size": 65536,
|
| 16 |
+
"hidden_dim": 1536,
|
| 17 |
+
"intermediate_dim": 4096,
|
| 18 |
+
"num_layers_per_stack": 16,
|
| 19 |
+
"num_attention_heads": 12,
|
| 20 |
+
"head_dim": 128,
|
| 21 |
+
"h_cycles": 2,
|
| 22 |
+
"l_cycles": 3,
|
| 23 |
+
"max_sequence_length": 4096,
|
| 24 |
+
"rope_theta": 10000.0,
|
| 25 |
+
"rms_norm_epsilon": 1e-06,
|
| 26 |
+
"l_bp_cycles": [
|
| 27 |
+
0,
|
| 28 |
+
3
|
| 29 |
+
],
|
| 30 |
+
"initializer_range": 0.025515518153991442,
|
| 31 |
+
"embedding_scale": 39.191835884530846,
|
| 32 |
+
"tie_word_embeddings": false,
|
| 33 |
+
"rematerialization": true
|
| 34 |
+
},
|
| 35 |
+
"registered_name": "keras_hub>HrmTextBackbone"
|
| 36 |
+
}
|
preset/metadata.json
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"keras_version": "3.15.0",
|
| 3 |
+
"keras_hub_version": "0.30.0.dev0",
|
| 4 |
+
"parameter_count": 1182795264,
|
| 5 |
+
"date_saved": "2026-07-25@15:49:24",
|
| 6 |
+
"tasks": [
|
| 7 |
+
"CausalLM"
|
| 8 |
+
]
|
| 9 |
+
}
|
preset/model.weights.h5
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8ddb10cea110edff99380b360ec569e5dbde0d4a233d1c058b0e292700a42b84
|
| 3 |
+
size 2366554504
|
preset/preprocessor.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_causal_lm_preprocessor",
|
| 3 |
+
"class_name": "HrmTextCausalLMPreprocessor",
|
| 4 |
+
"config": {
|
| 5 |
+
"name": "hrm_text_causal_lm_preprocessor",
|
| 6 |
+
"trainable": true,
|
| 7 |
+
"dtype": {
|
| 8 |
+
"module": "keras",
|
| 9 |
+
"class_name": "DTypePolicy",
|
| 10 |
+
"config": {
|
| 11 |
+
"name": "float32"
|
| 12 |
+
},
|
| 13 |
+
"registered_name": null
|
| 14 |
+
},
|
| 15 |
+
"tokenizer": {
|
| 16 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_tokenizer",
|
| 17 |
+
"class_name": "HrmTextTokenizer",
|
| 18 |
+
"config": {
|
| 19 |
+
"name": "hrm_text_tokenizer",
|
| 20 |
+
"trainable": true,
|
| 21 |
+
"dtype": {
|
| 22 |
+
"module": "keras",
|
| 23 |
+
"class_name": "DTypePolicy",
|
| 24 |
+
"config": {
|
| 25 |
+
"name": "int32"
|
| 26 |
+
},
|
| 27 |
+
"registered_name": null
|
| 28 |
+
},
|
| 29 |
+
"config_file": "tokenizer.json",
|
| 30 |
+
"sequence_length": null,
|
| 31 |
+
"add_prefix_space": false,
|
| 32 |
+
"unsplittable_tokens": [
|
| 33 |
+
"<|im_end|>",
|
| 34 |
+
"<|quad_end|>",
|
| 35 |
+
"<|object_ref_end|>",
|
| 36 |
+
"<|object_ref_start|>",
|
| 37 |
+
"<|box_end|>",
|
| 38 |
+
"<|endoftext|>",
|
| 39 |
+
"<|im_start|>",
|
| 40 |
+
"<|quad_start|>"
|
| 41 |
+
]
|
| 42 |
+
},
|
| 43 |
+
"registered_name": "keras_hub>HrmTextTokenizer"
|
| 44 |
+
},
|
| 45 |
+
"config_file": "preprocessor.json",
|
| 46 |
+
"sequence_length": 4096,
|
| 47 |
+
"add_start_token": true,
|
| 48 |
+
"add_end_token": true
|
| 49 |
+
},
|
| 50 |
+
"registered_name": "keras_hub>HrmTextCausalLMPreprocessor"
|
| 51 |
+
}
|
preset/task.json
ADDED
|
@@ -0,0 +1,95 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_causal_lm",
|
| 3 |
+
"class_name": "HrmTextCausalLM",
|
| 4 |
+
"config": {
|
| 5 |
+
"backbone": {
|
| 6 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_backbone",
|
| 7 |
+
"class_name": "HrmTextBackbone",
|
| 8 |
+
"config": {
|
| 9 |
+
"name": "hrm_text_backbone",
|
| 10 |
+
"trainable": true,
|
| 11 |
+
"dtype": {
|
| 12 |
+
"module": "keras",
|
| 13 |
+
"class_name": "DTypePolicy",
|
| 14 |
+
"config": {
|
| 15 |
+
"name": "bfloat16"
|
| 16 |
+
},
|
| 17 |
+
"registered_name": null
|
| 18 |
+
},
|
| 19 |
+
"vocabulary_size": 65536,
|
| 20 |
+
"hidden_dim": 1536,
|
| 21 |
+
"intermediate_dim": 4096,
|
| 22 |
+
"num_layers_per_stack": 16,
|
| 23 |
+
"num_attention_heads": 12,
|
| 24 |
+
"head_dim": 128,
|
| 25 |
+
"h_cycles": 2,
|
| 26 |
+
"l_cycles": 3,
|
| 27 |
+
"max_sequence_length": 4096,
|
| 28 |
+
"rope_theta": 10000.0,
|
| 29 |
+
"rms_norm_epsilon": 1e-06,
|
| 30 |
+
"l_bp_cycles": [
|
| 31 |
+
0,
|
| 32 |
+
3
|
| 33 |
+
],
|
| 34 |
+
"initializer_range": 0.025515518153991442,
|
| 35 |
+
"embedding_scale": 39.191835884530846,
|
| 36 |
+
"tie_word_embeddings": false,
|
| 37 |
+
"rematerialization": true
|
| 38 |
+
},
|
| 39 |
+
"registered_name": "keras_hub>HrmTextBackbone"
|
| 40 |
+
},
|
| 41 |
+
"preprocessor": {
|
| 42 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_causal_lm_preprocessor",
|
| 43 |
+
"class_name": "HrmTextCausalLMPreprocessor",
|
| 44 |
+
"config": {
|
| 45 |
+
"name": "hrm_text_causal_lm_preprocessor",
|
| 46 |
+
"trainable": true,
|
| 47 |
+
"dtype": {
|
| 48 |
+
"module": "keras",
|
| 49 |
+
"class_name": "DTypePolicy",
|
| 50 |
+
"config": {
|
| 51 |
+
"name": "float32"
|
| 52 |
+
},
|
| 53 |
+
"registered_name": null
|
| 54 |
+
},
|
| 55 |
+
"tokenizer": {
|
| 56 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_tokenizer",
|
| 57 |
+
"class_name": "HrmTextTokenizer",
|
| 58 |
+
"config": {
|
| 59 |
+
"name": "hrm_text_tokenizer",
|
| 60 |
+
"trainable": true,
|
| 61 |
+
"dtype": {
|
| 62 |
+
"module": "keras",
|
| 63 |
+
"class_name": "DTypePolicy",
|
| 64 |
+
"config": {
|
| 65 |
+
"name": "int32"
|
| 66 |
+
},
|
| 67 |
+
"registered_name": null
|
| 68 |
+
},
|
| 69 |
+
"config_file": "tokenizer.json",
|
| 70 |
+
"sequence_length": null,
|
| 71 |
+
"add_prefix_space": false,
|
| 72 |
+
"unsplittable_tokens": [
|
| 73 |
+
"<|im_end|>",
|
| 74 |
+
"<|quad_end|>",
|
| 75 |
+
"<|object_ref_end|>",
|
| 76 |
+
"<|object_ref_start|>",
|
| 77 |
+
"<|box_end|>",
|
| 78 |
+
"<|endoftext|>",
|
| 79 |
+
"<|im_start|>",
|
| 80 |
+
"<|quad_start|>"
|
| 81 |
+
]
|
| 82 |
+
},
|
| 83 |
+
"registered_name": "keras_hub>HrmTextTokenizer"
|
| 84 |
+
},
|
| 85 |
+
"config_file": "preprocessor.json",
|
| 86 |
+
"sequence_length": 4096,
|
| 87 |
+
"add_start_token": true,
|
| 88 |
+
"add_end_token": true
|
| 89 |
+
},
|
| 90 |
+
"registered_name": "keras_hub>HrmTextCausalLMPreprocessor"
|
| 91 |
+
},
|
| 92 |
+
"name": "hrm_text_causal_lm"
|
| 93 |
+
},
|
| 94 |
+
"registered_name": "keras_hub>HrmTextCausalLM"
|
| 95 |
+
}
|
preset/tokenizer.json
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"module": "keras_hub.src.models.hrm_text.hrm_text_tokenizer",
|
| 3 |
+
"class_name": "HrmTextTokenizer",
|
| 4 |
+
"config": {
|
| 5 |
+
"name": "hrm_text_tokenizer",
|
| 6 |
+
"trainable": true,
|
| 7 |
+
"dtype": {
|
| 8 |
+
"module": "keras",
|
| 9 |
+
"class_name": "DTypePolicy",
|
| 10 |
+
"config": {
|
| 11 |
+
"name": "int32"
|
| 12 |
+
},
|
| 13 |
+
"registered_name": null
|
| 14 |
+
},
|
| 15 |
+
"config_file": "tokenizer.json",
|
| 16 |
+
"sequence_length": null,
|
| 17 |
+
"add_prefix_space": false,
|
| 18 |
+
"unsplittable_tokens": [
|
| 19 |
+
"<|im_end|>",
|
| 20 |
+
"<|quad_end|>",
|
| 21 |
+
"<|object_ref_end|>",
|
| 22 |
+
"<|object_ref_start|>",
|
| 23 |
+
"<|box_end|>",
|
| 24 |
+
"<|endoftext|>",
|
| 25 |
+
"<|im_start|>",
|
| 26 |
+
"<|quad_start|>"
|
| 27 |
+
]
|
| 28 |
+
},
|
| 29 |
+
"registered_name": "keras_hub>HrmTextTokenizer"
|
| 30 |
+
}
|
training-loss.png
ADDED
|
Git LFS Details
|
training/environment.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
|
|
|
|
| 1 |
+
{"keras_backend": "torch", "pid": 51, "platform": "Linux-6.17.0-1008-nvidia-x86_64-with-glibc2.39", "python": "3.12.3", "recorded_at": "2026-07-25T15:50:59.589577+00:00"}
|
training/gpu.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/history.csv
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
|
|
|
| 1 |
+
epoch,loss,sparse_categorical_accuracy,val_loss,val_sparse_categorical_accuracy
|
| 2 |
+
0,0.03527289628982544,0.879867672920227,0.028078513219952583,0.9015151262283325
|
training/history.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"loss": [
|
| 3 |
+
0.03527289628982544
|
| 4 |
+
],
|
| 5 |
+
"sparse_categorical_accuracy": [
|
| 6 |
+
0.879867672920227
|
| 7 |
+
],
|
| 8 |
+
"val_loss": [
|
| 9 |
+
0.028078513219952583
|
| 10 |
+
],
|
| 11 |
+
"val_sparse_categorical_accuracy": [
|
| 12 |
+
0.9015151262283325
|
| 13 |
+
]
|
| 14 |
+
}
|
training/pilot-completed-metrics.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/pilot-completion.json
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"examples_seen": 38248,
|
| 3 |
+
"final_preset": "preset/",
|
| 4 |
+
"final_training_loss": 0.03527289628982544,
|
| 5 |
+
"finished_at": "2026-07-25T15:49:24.079371+00:00",
|
| 6 |
+
"format": "hrm-sft-pilot-completion-v1",
|
| 7 |
+
"metrics_segment": "pilot-completed-metrics.jsonl",
|
| 8 |
+
"metrics_segment_lines": 3826,
|
| 9 |
+
"metrics_segment_sha256": "fbbb63a26548fe2b7e1cc49e13b9e1fe3b037f4eb40764d513ff60112ad86f52",
|
| 10 |
+
"microbatch_steps": 38248,
|
| 11 |
+
"mid_run_checkpoint": "checkpoint-00020000.keras",
|
| 12 |
+
"post_completion_stream_present": true,
|
| 13 |
+
"post_completion_stream_reason": "container restarted after successful completion; pod stopped before second cycle was used",
|
| 14 |
+
"raw_metrics_stream": "metrics.jsonl",
|
| 15 |
+
"response_tokens_seen": 10000147,
|
| 16 |
+
"run_id": "hrm-stage-a-pilot-20260724-restart1",
|
| 17 |
+
"serialized_tokens_seen": 19650833,
|
| 18 |
+
"started_at": "2026-07-25T01:05:36.032965+00:00",
|
| 19 |
+
"status": "completed"
|
| 20 |
+
}
|
training/platform.jsonl
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
training/preflight.json
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"config": {
|
| 3 |
+
"data": {
|
| 4 |
+
"context_length": 4096,
|
| 5 |
+
"manifest": "/workspace/sft/stage-a/manifest.json",
|
| 6 |
+
"response_only_loss": true,
|
| 7 |
+
"tokenizer_json": "/workspace/models/hrm-text-1b/tokenizer.reference.json"
|
| 8 |
+
},
|
| 9 |
+
"framework": "keras",
|
| 10 |
+
"model": {
|
| 11 |
+
"family": "hrm-text",
|
| 12 |
+
"preset": "/workspace/models/hrm-text-1b",
|
| 13 |
+
"rematerialization": true,
|
| 14 |
+
"source_lock": "keras-hub.lock"
|
| 15 |
+
},
|
| 16 |
+
"run_name": "hrm-stage-a-pilot",
|
| 17 |
+
"training": {
|
| 18 |
+
"backup_save_freq": 500,
|
| 19 |
+
"beta_1": 0.9,
|
| 20 |
+
"beta_2": 0.95,
|
| 21 |
+
"checkpoint_save_freq": 20000,
|
| 22 |
+
"clipnorm": 1.0,
|
| 23 |
+
"cosine_min_lr_ratio": 0.1,
|
| 24 |
+
"ema_momentum": 0.999,
|
| 25 |
+
"gradient_accumulation_steps": 8,
|
| 26 |
+
"learning_rate": 3e-05,
|
| 27 |
+
"micro_batch_size": 1,
|
| 28 |
+
"observability": {
|
| 29 |
+
"every_n_batches": 10,
|
| 30 |
+
"tensorboard_every_n_batches": 10
|
| 31 |
+
},
|
| 32 |
+
"output_dir": "artifacts/hrm-stage-a-pilot-seed17",
|
| 33 |
+
"precision": "bfloat16",
|
| 34 |
+
"seed": 17,
|
| 35 |
+
"target_response_tokens": 10000000,
|
| 36 |
+
"use_ema": true,
|
| 37 |
+
"validation_steps": 128,
|
| 38 |
+
"warmup_ratio": 0.03,
|
| 39 |
+
"weight_decay": 0.1
|
| 40 |
+
}
|
| 41 |
+
},
|
| 42 |
+
"config_sha256": "3e535c768bd399c8dbdbbb54d13ad03e1fc56d83bf6171cf3ed44a090f80327c",
|
| 43 |
+
"manifest": {
|
| 44 |
+
"active_token_ids": {
|
| 45 |
+
"<|box_end|>": 11,
|
| 46 |
+
"<|endoftext|>": 5,
|
| 47 |
+
"<|im_end|>": 7,
|
| 48 |
+
"<|im_start|>": 6,
|
| 49 |
+
"<|object_ref_end|>": 9,
|
| 50 |
+
"<|object_ref_start|>": 8,
|
| 51 |
+
"<|quad_end|>": 13,
|
| 52 |
+
"<|quad_start|>": 12
|
| 53 |
+
},
|
| 54 |
+
"condition_distribution": {
|
| 55 |
+
"direct": 1157064
|
| 56 |
+
},
|
| 57 |
+
"data_schema_version": 2,
|
| 58 |
+
"declared_license": "CC-BY-4.0",
|
| 59 |
+
"decontamination": "complete",
|
| 60 |
+
"decontamination_report": "decontamination.json",
|
| 61 |
+
"decontamination_report_sha256": "3c4ace8d0ca0a668db2ebcea4ef6874499b6aefbb359d324dbfc694ac48f35ba",
|
| 62 |
+
"deduplication": {
|
| 63 |
+
"exact": "complete"
|
| 64 |
+
},
|
| 65 |
+
"format": "hrm-code-tools-sft-v2",
|
| 66 |
+
"migration": {
|
| 67 |
+
"input_manifest_sha256": "18c43a551e6c62adf600deb9614d3057ebb1db6dd1ecff5e76b76f26ee375881",
|
| 68 |
+
"input_train_sha256": "5d5b4a8f0fd37d4efb43db433c5d715f0f7ded228a07406e294e8cfed63f752a",
|
| 69 |
+
"input_validation_sha256": "3101880dc4b750499617f24312984c05d23081ae68e37739366f9ffebf0cd0d0",
|
| 70 |
+
"method": "v1 curated rows -> canonical v2 fields; re-split, deduplicate, and re-cap"
|
| 71 |
+
},
|
| 72 |
+
"records": {
|
| 73 |
+
"accepted": 1157064,
|
| 74 |
+
"by_source": {
|
| 75 |
+
"nvidia/OpenCodeInstruct": 1157064
|
| 76 |
+
},
|
| 77 |
+
"input_rows": 1157064,
|
| 78 |
+
"rejected_context_limit": 0,
|
| 79 |
+
"rejected_duplicate_id": 0,
|
| 80 |
+
"rejected_exact_duplicate": 0,
|
| 81 |
+
"response_tokens": 300785226,
|
| 82 |
+
"serialized_tokens": 590957065,
|
| 83 |
+
"train": 1133817,
|
| 84 |
+
"validation": 23247
|
| 85 |
+
},
|
| 86 |
+
"selection": {
|
| 87 |
+
"input_was_full_stage": true,
|
| 88 |
+
"max_serialized_sequence_length": 4096
|
| 89 |
+
},
|
| 90 |
+
"serializer_version": "hrm-prefixlm-sft-v1",
|
| 91 |
+
"sources": {
|
| 92 |
+
"nvidia/OpenCodeInstruct": {
|
| 93 |
+
"license": "CC-BY-4.0",
|
| 94 |
+
"revision": "8f3ba5bafe4d6e8db46082cf7ae6741bc370604d"
|
| 95 |
+
}
|
| 96 |
+
},
|
| 97 |
+
"split": {
|
| 98 |
+
"method": "sha256(source-id)%100",
|
| 99 |
+
"validation_percent": 2
|
| 100 |
+
},
|
| 101 |
+
"stage": "stage-a",
|
| 102 |
+
"tokenizer_json": "/data1/contributions/keras/hrm-text-1b-reference/tokenizer.json",
|
| 103 |
+
"tokenizer_revision": "d08ed34cc79b3c788d7b5d81399511439a0e39af",
|
| 104 |
+
"tokenizer_sha256": "ba520107dc9b27d25643e8f43fc1d9921038c86d3ada9dcaabf18526c5836d50",
|
| 105 |
+
"train_jsonl": "train.jsonl",
|
| 106 |
+
"train_sha256": "b6e340ea64568570b24e2d5f08c506a6f3221482d9fca6778a49c5577832171c",
|
| 107 |
+
"transform_version": "hrm-sft-v2",
|
| 108 |
+
"validation_jsonl": "validation.jsonl",
|
| 109 |
+
"validation_sha256": "f8c52067e80f5a7edb8be22a08cbc20de421ae6f368878f9bab64abe88a1bcc4"
|
| 110 |
+
},
|
| 111 |
+
"status": "preflight-passed"
|
| 112 |
+
}
|
training/tensorboard/train/events.out.tfevents.1784941536.ccdf07020f90.51.0.v2
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:524387a608d8a3f2e29f1262f5a8dcc6063d6e3bc6dc956aa4f84f6d0f33ee12
|
| 3 |
+
size 932008
|
training/tensorboard/validation/events.out.tfevents.1784994496.ccdf07020f90.51.1.v2
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:8f3c28f06dc827ca97d96dd544759c46d1ad6ad53b6fa99a17286a80246f2223
|
| 3 |
+
size 78
|
training/training-plan.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"gradient_accumulation_steps": 8,
|
| 3 |
+
"micro_batch_size": 1,
|
| 4 |
+
"microbatch_steps": 38248,
|
| 5 |
+
"optimizer_steps": 4781,
|
| 6 |
+
"train": {
|
| 7 |
+
"requested_response_tokens": 10000000,
|
| 8 |
+
"selected_response_tokens": 10000147,
|
| 9 |
+
"selected_rows": 38248,
|
| 10 |
+
"selected_serialized_tokens": 19650833,
|
| 11 |
+
"shuffle_cycles_touched": 1,
|
| 12 |
+
"source_rows": 1133817
|
| 13 |
+
}
|
| 14 |
+
}
|