Views
No views yet
MatMulNBits-style packed UINT8 weights plus FLOAT16 scales), published so that a
weight-offload / memory-residency measurement can be reproduced on hardware other than the
machine it was first run on.| File | Size | Notes |
|---|---|---|
model.onnx | 0.66 MB | graph only; all initializers external |
model.onnx.data | 7.76 GiB | 339 packed-int4 UINT8 tensors (7.397 GB) + 581 FLOAT16 scale tensors (0.933 GB) |
inference_metadata.yaml | 157 KB | canonical pipeline.workflow — see below |
policies/*.onnx | small | ten token-policy graphs referenced by the workflow |
genai_config.json, config.json, tokenizer.json, tokenizer_config.json | small | standard |
context_length 8192.model.onnx.data was 16.652 GB, of which only 8.330 GB (50.02%) was
referenced by any initializer. The unreferenced part was a single contiguous prefix
[0, 8322547712): an entire superseded generation of weights left in the file, referenced by
nothing.host_registered_bytes = 16,652,453,888 for 8.33 GB of live weights. It also produced a wrong
derived number: sizing a weight budget from file length rather than referenced extents made the
model look 2.00× larger than it is
(#853, fixed in
#856).scripts/repack_external_data.py.source blob : 16,652,453,888 bytes (16.652 GB)
repacked : 8,330,399,744 bytes (8.330 GB)
reduction : 49.97%
tensors : 920captures=2 fallbacks=0 and
oversubscribed=0 unchanged. Weights are bit-identical; only their file offsets moved.1import onnx, pathlib
2m = onnx.load("model.onnx", load_external_data=False)
3referenced = sum(
4 int(dict((kv.key, kv.value) for kv in t.external_data)["length"])
5 for t in m.graph.initializer
6 if t.data_location == onnx.TensorProto.EXTERNAL
7)
8size = pathlib.Path("model.onnx.data").stat().st_size
9print(f"{referenced:,} referenced of {size:,} bytes ({100 * referenced / size:.2f}%)")inference_metadata.yamlpipeline.workflow. It declares the
decoder graph and the ten token-policy graphs under policies/ as workflow
components, threads all 48 layers' key/value cache pairs through
serving.state_service groups, and expresses sampling, termination, and length
bookkeeping as ONNX graphs. The autoregressive loop is therefore data the generic
workflow runtime executes — there is no decoder-specific lowering step.model.io section. That legacy form described a single decoder in a
shape only a special-cased decoder loader could execute; it is not supported.genai_config.json but not this
file. It is included here so the directory works out of the box.1hf download justinchuby/qwen2.5-14b-instruct-int4-zp-onnx --local-dir qwen14b-zp
2
3cargo build --release -p onnx-genai-bench --bin profile_native --features bench-native,cuda
4./target/release/profile_native --model qwen14b-zp --ep cuda --tokens 16 --steady"The capital of France is" at 16 tokens:generated_token_ids: [96347, 3375, 724, 11, 358, 2776, 14589, 311, 6723, 429, 498, 3003, 2581, 6617, 315, 752]inference_metadata.annotated.yaml for inline explanations of this package's workflow, tensor/state/cache contracts, and fail-closed omissions. inference_metadata.yaml remains the canonical machine-authored contract; automated validation confirms both files parse to the same metadata object.