Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
55 changes: 43 additions & 12 deletions .github/ci/benchmark_config.json
Original file line number Diff line number Diff line change
Expand Up @@ -107,12 +107,16 @@
},
{
"address": "0x02000000",
"paths": ["yolo/weights_region.bin"],
"paths": [
"yolo/weights_region.bin"
],
"required": true
},
{
"address": "0x04A00000",
"paths": ["yolo/coco_room_000139_raw_480x640x3_uint8_rgb.bin"],
"paths": [
"yolo/coco_room_000139_raw_480x640x3_uint8_rgb.bin"
],
"required": true
}
],
Expand All @@ -122,15 +126,21 @@
"image_count": 5,
"min_image_count": 5,
"reference_contract": ".github/ci/reference/yolo.json",
"source_shape": [480, 640, 3]
"source_shape": [
480,
640,
3
]
},
"benchmark_cases": [
{
"name": "coco_room_000139",
"file_loads": [
{
"address": "0x04A00000",
"paths": ["yolo/coco_room_000139_raw_480x640x3_uint8_rgb.bin"],
"paths": [
"yolo/coco_room_000139_raw_480x640x3_uint8_rgb.bin"
],
"required": true
}
],
Expand All @@ -146,7 +156,9 @@
"file_loads": [
{
"address": "0x04A00000",
"paths": ["yolo/coco_cat_524280_raw_480x640x3_uint8_rgb.bin"],
"paths": [
"yolo/coco_cat_524280_raw_480x640x3_uint8_rgb.bin"
],
"required": true
}
],
Expand All @@ -162,7 +174,9 @@
"file_loads": [
{
"address": "0x04A00000",
"paths": ["yolo/coco_giraffes_296969_raw_480x640x3_uint8_rgb.bin"],
"paths": [
"yolo/coco_giraffes_296969_raw_480x640x3_uint8_rgb.bin"
],
"required": true
}
],
Expand All @@ -178,7 +192,9 @@
"file_loads": [
{
"address": "0x04A00000",
"paths": ["yolo/coco_elephants_445248_raw_480x640x3_uint8_rgb.bin"],
"paths": [
"yolo/coco_elephants_445248_raw_480x640x3_uint8_rgb.bin"
],
"required": true
}
],
Expand All @@ -194,7 +210,9 @@
"file_loads": [
{
"address": "0x04A00000",
"paths": ["yolo/coco_baseball_043816_raw_480x640x3_uint8_rgb.bin"],
"paths": [
"yolo/coco_baseball_043816_raw_480x640x3_uint8_rgb.bin"
],
"required": true
}
],
Expand Down Expand Up @@ -234,17 +252,24 @@
"file_loads": [
{
"address": "0x0",
"paths": ["zero2m.bin", "common/zero2m.bin"],
"paths": [
"zero2m.bin",
"common/zero2m.bin"
],
"required": true
},
{
"address": "0x2000",
"paths": ["dncnn/dncnn20l64_input.bin"],
"paths": [
"dncnn/dncnn20l64_input.bin"
],
"required": true
},
{
"address": "0x14000",
"paths": ["dncnn/dncnn20l64_weights.bin"],
"paths": [
"dncnn/dncnn20l64_weights.bin"
],
"required": true
}
],
Expand All @@ -253,7 +278,10 @@
"accuracy": {
"kind": "uint8_npy",
"offset": "0x10000",
"shape": [64, 64],
"shape": [
64,
64
],
"max_abs": 2,
"reference_path": "ported_models/dncnn/refs/dncnn20l64_reference.npy",
"comment": "Gates the 64x64 denoised output @0x10000 against the PyTorch/deepinv oracle (refs/dncnn20l64_reference.npy, produced by scripts/gen_dncnn_oracle.py running deepinv.models.DnCNN on the pinned weights). Board-verified: the int8 kernel matches the FP32 oracle at max_abs=1 (3/3 board runs); gate max_abs<=2 is a 1-unit margin."
Expand Down Expand Up @@ -315,6 +343,9 @@
},
"smolvlm_500m": {
"config": "ported_models/llama_cpp_et/benchmarks/smolvlm_500m.json"
},
"falcon_h1_1_5b": {
"config": "ported_models/llama_cpp_et/benchmarks/falcon_h1_1_5b.json"
}
}
}
66 changes: 66 additions & 0 deletions ported_models/falcon_h1_1_5b/docs/RECIPE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Falcon-H1-1.5B-Instruct Porting Recipe

## Overview

Adds `tiiuae/Falcon-H1-1.5B-Instruct` (1.5B-parameter causal LM, TII's
newer hybrid attention+SSM architecture) to the `llama.cpp-et` framework.
Confirmed via local GGUF metadata inspection: `general.architecture =
falcon-h1` -- distinct from `falcon` (already ported earlier in this
campaign), a genuinely different architecture, not just a size variant:
Falcon-H1 interleaves standard attention layers with Mamba-style recurrent
layers in the same model (hybrid, not pure transformer or pure SSM).

## Model Reference

- **Source**: `tiiuae/Falcon-H1-1.5B-Instruct` (Hugging Face), revision
`80ebc50d7799a440b96c93bb6686a3924a09b0cb`
- **License**: Falcon LLM License (`falcon-llm-license`,
https://falconllm.tii.ae/falcon-terms-and-conditions.html) -- a custom
TII license, not a standard OSI license; same family as falcon7b's
license in this campaign but a distinct license id
- **GGUF source**: `tiiuae/Falcon-H1-1.5B-Instruct-GGUF` (official), file
`Falcon-H1-1.5B-Instruct-Q8_0.gguf`
- **Quantization**: Q8_0,
`sha256=0044322ad5aaea5ccc2264f83f430f4ab2d20acc6db71a12d79b3f5acb0f69d5`
(verified locally against the downloaded file)
- **Architecture**: `arch = falcon-h1` per GGUF metadata, 411 tensors.

## Verification performed this round

Host reference: built a plain CPU-only (`GGML_ET=OFF`) configuration of the
same vendored `llama.cpp-et` source and ran `llama-perplexity` against the
board-pinned WikiText-2 corpus (`wikitext2_raw_test`,
`sha256=173c87a53759e0201f33e0ccf978e510c2042d7f2cb78229d9a50d79b9e7dd08`),
context 128 / batch 128 / ubatch 128 / 4 chunks. The model loads and runs
cleanly, allocating **both** a standard transformer KV cache (`llama_kv_cache`,
256 cells / 24 layers) **and** a recurrent SSM state cache
(`llama_memory_recurrent`, 1 cell / 24 layers) simultaneously -- direct
confirmation this is a genuine hybrid, not mislabeled:

```
Final estimate: PPL = 11.6708 +/- 2.60807
```

This is the second SSM-adjacent model in this campaign (after
`mamba_1_4b`) to confirm `SSM_CONV`/`SSM_SCAN` work on `ggml-cpu`, and the
first to combine them with standard attention in one graph.

## Why this port's ET-SoC1 kernel support is a real, open question

Same caveat as `mamba_1_4b`: CPU-backend success does not prove the
ET-SoC1 backend supports `SSM_CONV`/`SSM_SCAN`. This is a second, mostly
independent data point on the same open question (different model, same
underlying ops) -- if either mamba_1_4b or this port ever gets a real
board run, it directly answers whether ET-SoC1 can run recurrent-state
architectures at all.

## Open items for maintainer review

- Registered in `artifacts.json`, `ported_models/llama_cpp_et/benchmarks/falcon_h1_1_5b.json`,
and `.github/ci/benchmark_config.json` (port 18141) -- board-testable now,
independent of the model-ports track claim below.
- `ported_models/submissions/model_ports/falcon_h1_1_5b.json` is the
model-ports track claim, pending identity approval.
- No changes to any protected file or the vendored submodule.
- SSM ops (`SSM_CONV`/`SSM_SCAN`) confirmed on CPU, NOT live-verified
against ET sysemu specifically.
25 changes: 25 additions & 0 deletions ported_models/falcon_h1_1_5b/oracle/perplexity_oracle.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"oracle_type": "perplexity_threshold",
"model_artifact": {
"repo": "tiiuae/Falcon-H1-1.5B-Instruct-GGUF",
"revision": "main",
"filename": "Falcon-H1-1.5B-Instruct-Q8_0.gguf",
"sha256": "0044322ad5aaea5ccc2264f83f430f4ab2d20acc6db71a12d79b3f5acb0f69d5"
},
"corpus": {
"artifact": "wikitext2_raw_test",
"sha256": "173c87a53759e0201f33e0ccf978e510c2042d7f2cb78229d9a50d79b9e7dd08"
},
"command": "llama-perplexity --model Falcon-H1-1.5B-Instruct-Q8_0.gguf -f wiki.test.raw -c 128 -b 128 -ub 128 --chunks 4",
"reference_run": {
"final_ppl": 11.6708,
"final_ppl_stderr": 2.60807,
"measured_on": "CPU (ggml-cpu backend, GGML_ET=OFF build)",
"measured_date": "2026-07-25"
},
"comparison_threshold": {
"metric": "final_ppl",
"max_relative_deviation": 0.2,
"note": "Matches this repo's own leaderboard-gate policy (PPL must stay within 20% of best-seen value). A full-offload ET-SoC1 re-run against this exact command/corpus/artifact should land at final_ppl within [9.34, 14.00] to be considered consistent with this reference run. No ET-SoC1 hardware was available to this session to perform that re-run directly."
}
}
17 changes: 17 additions & 0 deletions ported_models/llama_cpp_et/artifacts.json
Original file line number Diff line number Diff line change
Expand Up @@ -485,6 +485,23 @@
"sha256": "d1eb8b6b23979205fdf63703ed10f788131a3f812c7b1f72e0119d5d81295150",
"size_bytes": 108783360,
"note": "SmolVLM 500M vision projector (SigLIP ~93M + MLP). Q8_0 quantized. Must be loaded alongside smolvlm_500m_q8_gguf."
},
"falcon_h1_1_5b_q8_gguf": {
"kind": "model",
"framework": "llama.cpp-et",
"variant": "Falcon-H1-1.5B-Instruct-Q8_0",
"filename": "Falcon-H1-1.5B-Instruct-Q8_0.gguf",
"env": "FALCON_H1_1_5B_MODEL_PATH",
"source": {
"type": "huggingface",
"repo": "tiiuae/Falcon-H1-1.5B-Instruct-GGUF",
"revision": "main",
"filename": "Falcon-H1-1.5B-Instruct-Q8_0.gguf",
"url": "https://huggingface.co/tiiuae/Falcon-H1-1.5B-Instruct-GGUF/resolve/main/Falcon-H1-1.5B-Instruct-Q8_0.gguf"
},
"sha256": "0044322ad5aaea5ccc2264f83f430f4ab2d20acc6db71a12d79b3f5acb0f69d5",
"local_cache": "local-artifacts/models/Falcon-H1-1.5B-Instruct-Q8_0.gguf",
"board_path": "/data/models/Falcon-H1-1.5B-Instruct-Q8_0.gguf"
}
}
}
52 changes: 52 additions & 0 deletions ported_models/llama_cpp_et/benchmarks/falcon_h1_1_5b.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"runner": "llama_server",
"board": true,
"framework": {
"name": "llama.cpp-et",
"runner": "llama_server",
"source_artifact": "llama_cpp_source"
},
"artifacts_file": "../artifacts.json",
"canonical_variant": "Falcon-H1-1.5B-Instruct-Q8_0",
"score": {
"metric": "tokens_per_second",
"label": "Decode tokens/s",
"higher_is_better": true
},
"llama_server": {
"source_artifact": "llama_cpp_source",
"model_artifact": "falcon_h1_1_5b_q8_gguf",
"server_artifact": "llama_server",
"workdir_artifact": "llama_cpp_build",
"host": "127.0.0.1",
"port": 18141,
"device": "ET",
"gpu_layers": 99,
"ctx_size": 2048,
"batch_size": 256,
"ubatch_size": 128,
"parallel": 1,
"cache_ram_mib": 0,
"ready_timeout_s": 300,
"request_timeout_s": 420,
"flash_attn": false,
"api": "completion",
"prompt": "Repeat this token sequence without commentary: OK OK OK OK OK OK OK OK OK OK",
"max_tokens": 96,
"temperature": 0,
"ignore_eos": true,
"min_completion_tokens": 32,
"perplexity": {
"enabled": true,
"perplexity_artifact": "llama_perplexity",
"corpus_artifact": "wikitext2_raw_test",
"ctx_size": 128,
"batch_size": 128,
"ubatch_size": 128,
"timeout_s": 420,
"min_ppl": 1.0,
"max_ppl": 1000.0,
"chunks": 4
}
}
}
59 changes: 59 additions & 0 deletions ported_models/persimmon_8b/docs/RECIPE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# Persimmon-8B -- Negative Result

## Summary

Attempted to add `adept/persimmon-8b-base` (8B-parameter causal LM, Adept's
Persimmon architecture) to the `llama.cpp-et` framework. **This repo's
vendored `llama.cpp-et` submodule has no `persimmon` architecture support
compiled in at all -- the model fails to load with `unknown model
architecture: 'persimmon'`.** No model-ports claim is filed.

## Model Reference

- **Source**: `adept/persimmon-8b-base` (Hugging Face), revision
`94dc4e0bb7eeb26ec521eb3f78c36c91f6fe866b`
- **License**: Apache-2.0
- **GGUF source**: `maddes8cht/adept-persimmon-8b-base-gguf`, file
`adept-persimmon-8b-base-Q8_0.gguf`
- **Quantization**: Q8_0, 9.30 GiB,
`sha256=25eb5e4901cd45ae03c9a447bb49c7716a71a26562d1a5a3b291de232c27b0c4`
(verified locally against the downloaded file)
- GGUF metadata (read successfully -- the failure is architecture support,
not file corruption): `general.architecture = persimmon`, 580 tensors,
36 layers, 4096 embedding, 64 attention heads (no GQA -- head_count ==
head_count_kv), 16384-token context, RoPE freq_base 25000.

## Root cause: confirmed, not speculative

Built a plain CPU-only (`GGML_ET=OFF`) configuration of the exact vendored
`llama.cpp-et` source in this repo and tried to load the file with
`llama-perplexity`. The GGUF header parses completely (llama.cpp's own
metadata dump above proves the file itself is well-formed), but model
construction fails immediately after:

```
llama_model_load: error loading model: error loading model architecture:
unknown model architecture: 'persimmon'
llama_model_load_from_file_impl: failed to load model
```

Upstream llama.cpp has historically had Persimmon support (it was one of
the earlier non-Llama architectures added), but this repo's vendored fork
either predates that support or has since dropped it. Either way, the
architecture registry `llama_model_load()` dispatches on simply does not
contain an entry for `persimmon` in this exact vendored commit.

## Why no claim is filed

The failure is unambiguous and reproducible -- not a tooling gap like
`flan_t5_base` (where the model loads but the CLI can't drive it) and not
an exotic-quant-type collision like `bitnet_2b` (where the file itself
gets rejected). This is the simplest and most direct kind of negative
result: the architecture is not implemented in this vendored source at
all.

## What would need to change

Persimmon support would need to be added to (or restored in) this repo's
vendored `llama.cpp-et` fork -- a submodule content change, out of scope
for a model-port PR.
16 changes: 16 additions & 0 deletions ported_models/submissions/model_ports/falcon_h1_1_5b.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"schema_version": 1,
"track": "most_models_ported",
"benchmark_model": "falcon_h1_1_5b",
"identity_id": "falcon-h1",
"source": {
"repo": "tiiuae/Falcon-H1-1.5B-Instruct",
"revision": "80ebc50d7799a440b96c93bb6686a3924a09b0cb",
"license": "falcon-llm-license"
},
"implementation_paths": [
"ported_models/falcon_h1_1_5b"
],
"benchmark_config": "ported_models/llama_cpp_et/benchmarks/falcon_h1_1_5b.json",
"recipe": "ported_models/falcon_h1_1_5b/docs/RECIPE.md"
}
Loading