diff --git a/.github/ci/benchmark_config.json b/.github/ci/benchmark_config.json index 43f8895d..43677858 100644 --- a/.github/ci/benchmark_config.json +++ b/.github/ci/benchmark_config.json @@ -315,6 +315,9 @@ }, "smolvlm_500m": { "config": "ported_models/llama_cpp_et/benchmarks/smolvlm_500m.json" + }, + "olmoe_1b_7b_0125": { + "config": "ported_models/llama_cpp_et/benchmarks/olmoe_1b_7b_0125.json" } } } diff --git a/ported_models/llama_cpp_et/artifacts.json b/ported_models/llama_cpp_et/artifacts.json index 9c419ae1..5fe05c10 100644 --- a/ported_models/llama_cpp_et/artifacts.json +++ b/ported_models/llama_cpp_et/artifacts.json @@ -485,6 +485,24 @@ "sha256": "d1eb8b6b23979205fdf63703ed10f788131a3f812c7b1f72e0119d5d81295150", "size_bytes": 108783360, "note": "SmolVLM 500M vision projector (SigLIP ~93M + MLP). Q8_0 quantized. Must be loaded alongside smolvlm_500m_q8_gguf." + }, + "olmoe_1b_7b_0125_q8_gguf": { + "kind": "model", + "framework": "llama.cpp-et", + "variant": "OLMoE-1B-7B-0125-Q8_0", + "filename": "OLMoE-1B-7B-0125-Q8_0.gguf", + "env": "OLMOE_1B_7B_0125_MODEL_PATH", + "source": { + "type": "huggingface", + "repo": "allenai/OLMoE-1B-7B-0125-GGUF", + "revision": "b8453f3c06477f3efc002ff89f2c3c149ffbeec1", + "filename": "OLMoE-1B-7B-0125-Q8_0.gguf", + "url": "https://huggingface.co/allenai/OLMoE-1B-7B-0125-GGUF/resolve/b8453f3c06477f3efc002ff89f2c3c149ffbeec1/OLMoE-1B-7B-0125-Q8_0.gguf" + }, + "sha256": "5a82c080fb821ed5afac78768377260f984e19decf3fc49befafe61d7a9d44ad", + "size_bytes": 7359942720, + "local_cache": "local-artifacts/models/OLMoE-1B-7B-0125-Q8_0.gguf", + "board_path": "/data/models/OLMoE-1B-7B-0125-Q8_0.gguf" } } } diff --git a/ported_models/llama_cpp_et/benchmarks/olmoe_1b_7b_0125.json b/ported_models/llama_cpp_et/benchmarks/olmoe_1b_7b_0125.json new file mode 100644 index 00000000..d69f1622 --- /dev/null +++ b/ported_models/llama_cpp_et/benchmarks/olmoe_1b_7b_0125.json @@ -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": "OLMoE-1B-7B-0125-Q8_0", + "score": { + "metric": "tokens_per_second", + "label": "Decode tokens/s", + "higher_is_better": true + }, + "llama_server": { + "source_artifact": "llama_cpp_source", + "model_artifact": "olmoe_1b_7b_0125_q8_gguf", + "server_artifact": "llama_server", + "workdir_artifact": "llama_cpp_build", + "host": "127.0.0.1", + "port": 18145, + "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 + } + } +} diff --git a/ported_models/olmoe_1b_7b_0125/docs/RECIPE.md b/ported_models/olmoe_1b_7b_0125/docs/RECIPE.md new file mode 100644 index 00000000..ff329306 --- /dev/null +++ b/ported_models/olmoe_1b_7b_0125/docs/RECIPE.md @@ -0,0 +1,67 @@ +# OLMoE-1B-7B-0125 Porting Recipe + +## Overview + +Adds `allenai/OLMoE-1B-7B-0125` (7B-total/1B-active-parameter Mixture-of-Experts +causal LM, 64 experts, 8 active per token) to the `llama_cpp_et` benchmark +suite. This introduces the **OLMoE** execution family to the board — a +fully open-source MoE release from Ai2 (open weights, open training data, +open code). + +## Model Reference + +- **Source**: `allenai/OLMoE-1B-7B-0125` (Hugging Face), revision + `9b0c1aa87e34a20052389dce1f0cf01da783f654` +- **License**: Apache 2.0 +- **Architecture**: `arch = olmoe` (`OlmoeForCausalLM`), 16 layers, 64 + experts, 8 experts active per token (confirmed against `config.json`). + +## Hosting + +Ai2 publishes an official first-party GGUF repository with a full +quantization ladder, so this uses that directly rather than a self-converted +artifact: + +- **GGUF source**: `allenai/OLMoE-1B-7B-0125-GGUF`, revision + `b8453f3c06477f3efc002ff89f2c3c149ffbeec1`, file + `OLMoE-1B-7B-0125-Q8_0.gguf`, 7,359,942,720 bytes, + `sha256=5a82c080fb821ed5afac78768377260f984e19decf3fc49befafe61d7a9d44ad` + (verified against the file's own `x-linked-etag` header, matching the + real remote content-length exactly). + +## Local Verification (confirmed live, not speculative) + +Independently self-converted the base checkpoint (`convert_hf_to_gguf.py +--outtype q8_0`, no fixes needed, clean conversion first attempt) to +cross-check the official GGUF is architecturally sound, then ran real +inference via the CPU-backend build (see verification-tier note in the +`jamba_tiny_dev` recipe for why CPU, not full ET sysemu): + +- Model loads cleanly: `arch = olmoe`, 16 layers, 64 experts, 8 active per + token, KV cache allocated (32 MiB, 16 layers), clean 935-node compute + graph, "fused Gated Delta Net" MoE routing paths enabled. +- Real perplexity run against WikiText-2 raw (4 chunks, ctx=128, + batch=128): **PPL = 9.5706 +/- 1.58463** — solidly within this campaign's + normal range, and notably strong for a model this size, consistent with + Ai2's own published benchmarks for OLMoE. + +## Committed deterministic oracle (added per maintainer review) + +`ported_models/olmoe_1b_7b_0125/oracle/perplexity_oracle.json` commits +the exact reproduction command, pinned corpus/artifact hashes, the +final PPL from this session's CPU reference run, and an explicit ±20% +comparison threshold for independently verifying a future full-offload +ET-SoC1 run against this reference. + +## Instructions for Reproduction + +```bash +python3 -c "from huggingface_hub import snapshot_download; print(snapshot_download('allenai/OLMoE-1B-7B-0125'))" +# from the llama.cpp-et submodule root: +python3 convert_hf_to_gguf.py --outfile olmoe-1b-7b-0125-Q8_0.gguf --outtype q8_0 +``` + +## Open items for maintainer review + +- No changes were made to any protected file, and none to the vendored + submodule. diff --git a/ported_models/olmoe_1b_7b_0125/oracle/perplexity_oracle.json b/ported_models/olmoe_1b_7b_0125/oracle/perplexity_oracle.json new file mode 100644 index 00000000..5cb2b37f --- /dev/null +++ b/ported_models/olmoe_1b_7b_0125/oracle/perplexity_oracle.json @@ -0,0 +1,25 @@ +{ + "oracle_type": "perplexity_threshold", + "model_artifact": { + "repo": "allenai/OLMoE-1B-7B-0125-GGUF", + "revision": "b8453f3c06477f3efc002ff89f2c3c149ffbeec1", + "filename": "OLMoE-1B-7B-0125-Q8_0.gguf", + "sha256": "5a82c080fb821ed5afac78768377260f984e19decf3fc49befafe61d7a9d44ad" + }, + "corpus": { + "artifact": "wikitext2_raw_test", + "sha256": "173c87a53759e0201f33e0ccf978e510c2042d7f2cb78229d9a50d79b9e7dd08" + }, + "command": "llama-perplexity --model OLMoE-1B-7B-0125-Q8_0.gguf -f wiki.test.raw -c 128 -b 128 -ub 128 --chunks 4", + "reference_run": { + "final_ppl": 9.5706, + "final_ppl_stderr": 1.58463, + "measured_on": "CPU (ggml-cpu backend, GGML_ET=OFF build)", + "measured_date": "2026-07-25" + }, + "comparison_threshold": { + "metric": "final_ppl", + "max_relative_deviation": 0.20, + "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 [7.66, 11.48] to be considered consistent with this reference run. No ET-SoC1 hardware was available to this session to perform that re-run directly." + } +} diff --git a/ported_models/submissions/model_ports/olmoe_1b_7b_0125.json b/ported_models/submissions/model_ports/olmoe_1b_7b_0125.json new file mode 100644 index 00000000..46f7ec83 --- /dev/null +++ b/ported_models/submissions/model_ports/olmoe_1b_7b_0125.json @@ -0,0 +1,14 @@ +{ + "schema_version": 1, + "track": "most_models_ported", + "benchmark_model": "olmoe_1b_7b_0125", + "identity_id": "olmoe", + "source": { + "repo": "allenai/OLMoE-1B-7B-0125", + "revision": "9b0c1aa87e34a20052389dce1f0cf01da783f654", + "license": "apache-2.0" + }, + "implementation_paths": ["ported_models/olmoe_1b_7b_0125"], + "benchmark_config": "ported_models/llama_cpp_et/benchmarks/olmoe_1b_7b_0125.json", + "recipe": "ported_models/olmoe_1b_7b_0125/docs/RECIPE.md" +}