ncp-olmo-eval 0.1.0a16__tar.gz
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.
- ncp_olmo_eval-0.1.0a16/.github/workflows/ci.yml +107 -0
- ncp_olmo_eval-0.1.0a16/.github/workflows/publish-images.yml +163 -0
- ncp_olmo_eval-0.1.0a16/.github/workflows/release.yml +74 -0
- ncp_olmo_eval-0.1.0a16/CHANGELOG.md +214 -0
- ncp_olmo_eval-0.1.0a16/CONTRIBUTING.md +26 -0
- ncp_olmo_eval-0.1.0a16/LICENSE +201 -0
- ncp_olmo_eval-0.1.0a16/MANIFEST.in +7 -0
- ncp_olmo_eval-0.1.0a16/NOTICE +10 -0
- ncp_olmo_eval-0.1.0a16/PKG-INFO +408 -0
- ncp_olmo_eval-0.1.0a16/README.md +358 -0
- ncp_olmo_eval-0.1.0a16/SECURITY.md +10 -0
- ncp_olmo_eval-0.1.0a16/THIRD_PARTY_NOTICES.md +57 -0
- ncp_olmo_eval-0.1.0a16/configs/apptainer-images.example.json +1 -0
- ncp_olmo_eval-0.1.0a16/configs/assets.example.json +26 -0
- ncp_olmo_eval-0.1.0a16/configs/assets.gated.example.json +19 -0
- ncp_olmo_eval-0.1.0a16/configs/public-image-bases.json +20 -0
- ncp_olmo_eval-0.1.0a16/configs/runtime.env.example +33 -0
- ncp_olmo_eval-0.1.0a16/docker/core88_bigcodebench_sandbox.Dockerfile +69 -0
- ncp_olmo_eval-0.1.0a16/docker/core88_ds1000.Dockerfile +100 -0
- ncp_olmo_eval-0.1.0a16/docker/core88_sandbox.Dockerfile +53 -0
- ncp_olmo_eval-0.1.0a16/docker/core88_thin_sandbox.Dockerfile +56 -0
- ncp_olmo_eval-0.1.0a16/docker/offline-assets.Dockerfile +15 -0
- ncp_olmo_eval-0.1.0a16/docker/runtime.Dockerfile +38 -0
- ncp_olmo_eval-0.1.0a16/docs/IMAGES.md +80 -0
- ncp_olmo_eval-0.1.0a16/docs/OFFLINE_ASSETS.md +60 -0
- ncp_olmo_eval-0.1.0a16/docs/PORTABILITY.md +66 -0
- ncp_olmo_eval-0.1.0a16/docs/PROTOCOLS.md +108 -0
- ncp_olmo_eval-0.1.0a16/docs/RELEASE_CHECKLIST.md +167 -0
- ncp_olmo_eval-0.1.0a16/docs/SPECULATIVE_DECODING.md +178 -0
- ncp_olmo_eval-0.1.0a16/docs/VALIDATION.md +60 -0
- ncp_olmo_eval-0.1.0a16/docs/validation/dflash_a14_synthetic.json +85 -0
- ncp_olmo_eval-0.1.0a16/pyproject.toml +97 -0
- ncp_olmo_eval-0.1.0a16/scripts/build-public-images.sh +174 -0
- ncp_olmo_eval-0.1.0a16/scripts/render-kubernetes-jobs.py +66 -0
- ncp_olmo_eval-0.1.0a16/scripts/run-plan-local.sh +25 -0
- ncp_olmo_eval-0.1.0a16/scripts/run-task-apptainer.sh +32 -0
- ncp_olmo_eval-0.1.0a16/scripts/submit-plan-slurm.sh +44 -0
- ncp_olmo_eval-0.1.0a16/setup.cfg +4 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/__init__.py +10 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/assets.py +156 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/benchmark.py +80 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core88_workflow.py +1143 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_aggregate.py +797 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_answer_eval.py +526 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_cached_finalize.py +336 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_code_eval.py +1595 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_contract.py +6 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_eval.py +2180 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_plan.py +57 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_pool.py +1083 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_summary.py +939 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/core_native_work.py +380 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/device_layout.py +45 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/dflash_checkpoint.py +120 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/dflash_contract.py +250 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/evaluation_cli.py +3324 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/gsm8k_eval.py +1077 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/helmet_api_judge.py +449 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/helmet_prepare.py +374 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/helmet_protocol.py +1074 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/helmet_score.py +600 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/helmet_trec_eval_compat.py +108 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/inference.py +39 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/lm_eval_runtime.py +59 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/lmdeploy_inference.py +26 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/long_context_inference.py +745 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/long_context_prepare.py +302 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/long_context_protocol.py +1322 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/long_context_score.py +192 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/native_megatron_inference.py +11 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/native_vllm_inference.py +1003 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/ncp_dflash_vllm_benchmark.py +558 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/portable_tasks.py +553 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/prepare_cli.py +33 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/prepare_long_context_model_overlay.py +87 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/prepare_native_vllm_model.py +43 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/py.typed +1 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/runtime_smoke.py +79 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/source_identity.py +102 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/task_runner.py +102 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/task_spec.py +199 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/transformers_inference.py +10 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/unified_eval_results.py +281 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/__init__.py +10 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/batch_invariance.py +154 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/compare_backend_runs.py +199 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/compare_flash_versions.py +199 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/contract.py +317 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/gsm8k.py +1125 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/hf_config.py +26 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/hlm.py +1386 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/model.py +876 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/model_runner.py +125 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/ncp_dflash_proposer.py +1314 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/ncp_dflash_state.py +80 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/parity.py +758 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/plugin.py +29 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/probe.py +84 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/qkv.py +45 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/routes.py +321 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/state.py +471 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/throughput.py +482 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/token_tower.py +566 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/weights.py +753 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval/vllm_plugin/worker.py +114 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval.egg-info/PKG-INFO +408 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval.egg-info/SOURCES.txt +145 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval.egg-info/dependency_links.txt +1 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval.egg-info/entry_points.txt +10 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval.egg-info/requires.txt +35 -0
- ncp_olmo_eval-0.1.0a16/src/ncp_olmo_eval.egg-info/top_level.txt +1 -0
- ncp_olmo_eval-0.1.0a16/tests/conftest.py +30 -0
- ncp_olmo_eval-0.1.0a16/tests/installed_package_summary_smoke.py +53 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_bigcodebench_sandbox_contract.py +31 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_core88_workflow.py +128 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_core_native_cached_finalize.py +184 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_core_native_code_loader.py +78 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_core_native_summary.py +716 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_core_summary_source_identity.py +36 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_dflash_checkpoint.py +98 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_dflash_contract.py +79 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_evaluation_cli.py +515 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_gsm8k_eval.py +99 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_helmet_api_judge.py +29 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_helmet_protocol.py +541 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_lm_eval_runtime.py +40 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_long_context_protocol.py +1239 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_native_vllm_inference.py +733 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_ncp_dflash_vllm_benchmark.py +192 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_portable_runtime.py +152 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_release_integrity.py +289 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_release_metadata.py +45 -0
- ncp_olmo_eval-0.1.0a16/tests/unit/test_sciq_protocol.py +336 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_compare_backend_runs.py +85 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_compare_flash_versions.py +91 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_contract.py +151 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_gsm8k.py +224 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_hf_config.py +53 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_hlm.py +374 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_model_transaction.py +187 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_ncp_dflash_model_runner.py +159 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_ncp_dflash_proposer.py +689 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_ncp_dflash_state.py +67 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_plugin.py +76 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_qk_norm.py +81 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_state.py +337 -0
- ncp_olmo_eval-0.1.0a16/tests/vllm_plugin/test_weights.py +532 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
name: ci
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
host-contracts:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
python: ["3.10", "3.12"]
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
|
|
21
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
22
|
+
with:
|
|
23
|
+
python-version: ${{ matrix.python }}
|
|
24
|
+
cache: pip
|
|
25
|
+
- name: Install host-only dependencies
|
|
26
|
+
run: python -m pip install -e '.[dev,scoring]'
|
|
27
|
+
- name: Lint
|
|
28
|
+
run: ruff check src tests scripts
|
|
29
|
+
- name: Compile
|
|
30
|
+
run: python -m compileall -q src
|
|
31
|
+
- name: Test contracts
|
|
32
|
+
run: pytest -q
|
|
33
|
+
- name: Check portable adapters
|
|
34
|
+
run: |
|
|
35
|
+
find scripts -name '*.sh' -print0 | xargs -0 -n1 bash -n
|
|
36
|
+
python -m py_compile scripts/*.py
|
|
37
|
+
- name: Build distributions
|
|
38
|
+
if: matrix.python == '3.12'
|
|
39
|
+
run: python -m build
|
|
40
|
+
- name: Verify Core88 summary from installed wheel path
|
|
41
|
+
if: matrix.python == '3.12'
|
|
42
|
+
run: |
|
|
43
|
+
python -m venv .ci/installed-package
|
|
44
|
+
.ci/installed-package/bin/python -m pip install --no-deps dist/*.whl
|
|
45
|
+
.ci/installed-package/bin/ncp-olmo-eval-dflash-benchmark --help
|
|
46
|
+
NCP_OLMO_SOURCE_REVISION="$(git rev-parse HEAD)" \
|
|
47
|
+
.ci/installed-package/bin/python tests/installed_package_summary_smoke.py
|
|
48
|
+
|
|
49
|
+
docker-scorer-contracts:
|
|
50
|
+
runs-on: ubuntu-latest
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
|
|
53
|
+
- name: Fetch pinned OLMo-Eval scorer source
|
|
54
|
+
env:
|
|
55
|
+
OLMO_EVAL_COMMIT: f8816eea36563f27b4a9dd2533d68d34f3c67d3f
|
|
56
|
+
run: |
|
|
57
|
+
git clone --filter=blob:none https://github.com/allenai/OLMo-Eval.git .ci/olmo-eval
|
|
58
|
+
git -C .ci/olmo-eval checkout --detach "$OLMO_EVAL_COMMIT"
|
|
59
|
+
test "$(git -C .ci/olmo-eval rev-parse HEAD)" = "$OLMO_EVAL_COMMIT"
|
|
60
|
+
- name: Build release runtime scorer slice and run Math smoke
|
|
61
|
+
run: |
|
|
62
|
+
docker build \
|
|
63
|
+
-f docker/runtime.Dockerfile \
|
|
64
|
+
--build-arg BASE_IMAGE=python:3.12.11-slim-bookworm \
|
|
65
|
+
--build-arg INSTALL_EXTRAS=scoring \
|
|
66
|
+
--build-arg SOURCE_REVISION="$(git rev-parse HEAD)" \
|
|
67
|
+
-t ncp-olmo-eval:ci-runtime .
|
|
68
|
+
- name: Prepare locked BigCodeBench parser wheels
|
|
69
|
+
run: |
|
|
70
|
+
mkdir -p .ci/wheels
|
|
71
|
+
python -m pip download --only-binary=:all: --no-deps \
|
|
72
|
+
--dest .ci/wheels \
|
|
73
|
+
--python-version 310 \
|
|
74
|
+
--implementation cp \
|
|
75
|
+
--abi cp310 \
|
|
76
|
+
--abi abi3 \
|
|
77
|
+
--platform manylinux_2_28_x86_64 \
|
|
78
|
+
tree-sitter==0.25.2 tree-sitter-python==0.25.0
|
|
79
|
+
tree_sitter_wheel="$(basename "$(find .ci/wheels -maxdepth 1 -name 'tree_sitter-*.whl' -print -quit)")"
|
|
80
|
+
tree_sitter_python_wheel="$(basename "$(find .ci/wheels -maxdepth 1 -name 'tree_sitter_python-*.whl' -print -quit)")"
|
|
81
|
+
test -n "$tree_sitter_wheel"
|
|
82
|
+
test -n "$tree_sitter_python_wheel"
|
|
83
|
+
{
|
|
84
|
+
echo "TREE_SITTER_WHEEL=.ci/wheels/$tree_sitter_wheel"
|
|
85
|
+
echo "TREE_SITTER_SHA256=$(sha256sum ".ci/wheels/$tree_sitter_wheel" | awk '{print $1}')"
|
|
86
|
+
echo "TREE_SITTER_PYTHON_WHEEL=.ci/wheels/$tree_sitter_python_wheel"
|
|
87
|
+
echo "TREE_SITTER_PYTHON_SHA256=$(sha256sum ".ci/wheels/$tree_sitter_python_wheel" | awk '{print $1}')"
|
|
88
|
+
} >> "$GITHUB_ENV"
|
|
89
|
+
- name: Build and execute the formal BigCodeBench sandbox image
|
|
90
|
+
env:
|
|
91
|
+
OLMO_EVAL_COMMIT: f8816eea36563f27b4a9dd2533d68d34f3c67d3f
|
|
92
|
+
run: |
|
|
93
|
+
docker build \
|
|
94
|
+
-f docker/core88_bigcodebench_sandbox.Dockerfile \
|
|
95
|
+
--build-arg CORE88_UPSTREAM_REFERENCE="allenai/OLMo-Eval@$OLMO_EVAL_COMMIT" \
|
|
96
|
+
--build-arg CORE88_SCORER_COMMIT="$(git rev-parse HEAD)" \
|
|
97
|
+
--build-arg TREE_SITTER_WHEEL="$TREE_SITTER_WHEEL" \
|
|
98
|
+
--build-arg TREE_SITTER_SHA256="$TREE_SITTER_SHA256" \
|
|
99
|
+
--build-arg TREE_SITTER_PYTHON_WHEEL="$TREE_SITTER_PYTHON_WHEEL" \
|
|
100
|
+
--build-arg TREE_SITTER_PYTHON_SHA256="$TREE_SITTER_PYTHON_SHA256" \
|
|
101
|
+
-t ncp-olmo-eval:ci-bigcodebench-sandbox .
|
|
102
|
+
docker run --rm \
|
|
103
|
+
-e OLMO_EVAL_COMMIT="$OLMO_EVAL_COMMIT" \
|
|
104
|
+
-e OLMO_EVAL_ROOT=/opt/olmo-eval \
|
|
105
|
+
-v "$PWD/.ci/olmo-eval:/opt/olmo-eval:ro" \
|
|
106
|
+
ncp-olmo-eval:ci-bigcodebench-sandbox \
|
|
107
|
+
python3 -m ncp_olmo_eval.runtime_smoke bigcodebench
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
name: publish-public-images
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
ref:
|
|
9
|
+
description: Existing tag or full commit SHA to build
|
|
10
|
+
required: true
|
|
11
|
+
version:
|
|
12
|
+
description: Existing package version used as the image tag
|
|
13
|
+
required: true
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
publish:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
strategy:
|
|
22
|
+
fail-fast: false
|
|
23
|
+
matrix:
|
|
24
|
+
image_key:
|
|
25
|
+
- NCP_OLMO_EVAL_IMAGE
|
|
26
|
+
- CORE88_PYTHON_IMAGE
|
|
27
|
+
- CORE88_BIGCODEBENCH_IMAGE
|
|
28
|
+
- CORE88_DS1000_IMAGE
|
|
29
|
+
- CORE88_MULTIPLE_IMAGE
|
|
30
|
+
permissions:
|
|
31
|
+
contents: read
|
|
32
|
+
packages: write
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
|
|
35
|
+
with:
|
|
36
|
+
ref: ${{ github.event_name == 'release' && github.event.release.tag_name || inputs.ref }}
|
|
37
|
+
- name: Free runner disk for the CUDA runtime image
|
|
38
|
+
if: matrix.image_key == 'NCP_OLMO_EVAL_IMAGE'
|
|
39
|
+
run: |
|
|
40
|
+
df -h /
|
|
41
|
+
sudo rm -rf /usr/local/lib/android /usr/share/dotnet /opt/ghc /usr/local/share/boost
|
|
42
|
+
docker system prune --all --force
|
|
43
|
+
df -h /
|
|
44
|
+
- uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f
|
|
45
|
+
- uses: docker/login-action@c94ce9fb468520275223c153574b00df6fe4bcc9
|
|
46
|
+
with:
|
|
47
|
+
registry: ghcr.io
|
|
48
|
+
username: ${{ github.actor }}
|
|
49
|
+
password: ${{ secrets.GITHUB_TOKEN }}
|
|
50
|
+
- name: Verify version and source identity
|
|
51
|
+
id: identity
|
|
52
|
+
env:
|
|
53
|
+
REQUESTED_VERSION: ${{ github.event_name == 'release' && github.event.release.tag_name || inputs.version }}
|
|
54
|
+
run: |
|
|
55
|
+
package_version="$(python3 -c 'import tomllib; print(tomllib.load(open("pyproject.toml", "rb"))["project"]["version"])')"
|
|
56
|
+
requested="${REQUESTED_VERSION#v}"
|
|
57
|
+
test "$requested" = "$package_version"
|
|
58
|
+
revision="$(git rev-parse HEAD)"
|
|
59
|
+
test "${#revision}" = 40
|
|
60
|
+
echo "version=$package_version" >> "$GITHUB_OUTPUT"
|
|
61
|
+
echo "revision=$revision" >> "$GITHUB_OUTPUT"
|
|
62
|
+
- name: Build, smoke, and push release images
|
|
63
|
+
env:
|
|
64
|
+
IMAGE_KEY: ${{ matrix.image_key }}
|
|
65
|
+
OUTPUT_DIR: dist/${{ matrix.image_key }}
|
|
66
|
+
PUSH: "1"
|
|
67
|
+
VERSION: ${{ steps.identity.outputs.version }}
|
|
68
|
+
SOURCE_REVISION: ${{ steps.identity.outputs.revision }}
|
|
69
|
+
REGISTRY: ghcr.io/luckysjtu
|
|
70
|
+
run: scripts/build-public-images.sh
|
|
71
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
|
72
|
+
with:
|
|
73
|
+
name: public-image-${{ matrix.image_key }}
|
|
74
|
+
path: |
|
|
75
|
+
dist/${{ matrix.image_key }}/public-images-${{ matrix.image_key }}.env
|
|
76
|
+
dist/${{ matrix.image_key }}/public-images-${{ matrix.image_key }}.json
|
|
77
|
+
if-no-files-found: error
|
|
78
|
+
|
|
79
|
+
manifest:
|
|
80
|
+
needs: publish
|
|
81
|
+
runs-on: ubuntu-latest
|
|
82
|
+
permissions:
|
|
83
|
+
contents: write
|
|
84
|
+
steps:
|
|
85
|
+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
|
|
86
|
+
with:
|
|
87
|
+
pattern: public-image-*
|
|
88
|
+
path: dist/fragments
|
|
89
|
+
merge-multiple: true
|
|
90
|
+
- name: Merge and verify immutable image manifests
|
|
91
|
+
run: |
|
|
92
|
+
python3 - <<'PY'
|
|
93
|
+
import json
|
|
94
|
+
import re
|
|
95
|
+
from pathlib import Path
|
|
96
|
+
|
|
97
|
+
expected = (
|
|
98
|
+
"NCP_OLMO_EVAL_IMAGE",
|
|
99
|
+
"CORE88_PYTHON_IMAGE",
|
|
100
|
+
"CORE88_BIGCODEBENCH_IMAGE",
|
|
101
|
+
"CORE88_DS1000_IMAGE",
|
|
102
|
+
"CORE88_MULTIPLE_IMAGE",
|
|
103
|
+
)
|
|
104
|
+
fragments = sorted(Path("dist/fragments").glob("public-images-*.json"))
|
|
105
|
+
if len(fragments) != len(expected):
|
|
106
|
+
raise SystemExit(f"expected {len(expected)} image fragments, found {len(fragments)}")
|
|
107
|
+
|
|
108
|
+
version = None
|
|
109
|
+
revision = None
|
|
110
|
+
images = {}
|
|
111
|
+
for path in fragments:
|
|
112
|
+
payload = json.loads(path.read_text(encoding="utf-8"))
|
|
113
|
+
if payload.get("schema_version") != "ncp-olmo-eval-published-images-v1":
|
|
114
|
+
raise SystemExit(f"unexpected schema in {path}")
|
|
115
|
+
if payload.get("immutable") is not True:
|
|
116
|
+
raise SystemExit(f"mutable image fragment: {path}")
|
|
117
|
+
version = version or payload["release_version"]
|
|
118
|
+
revision = revision or payload["source_revision"]
|
|
119
|
+
if payload["release_version"] != version or payload["source_revision"] != revision:
|
|
120
|
+
raise SystemExit(f"release identity mismatch in {path}")
|
|
121
|
+
for key, value in payload["images"].items():
|
|
122
|
+
if key in images:
|
|
123
|
+
raise SystemExit(f"duplicate image key: {key}")
|
|
124
|
+
if not re.search(r"@sha256:[0-9a-f]{64}$", value):
|
|
125
|
+
raise SystemExit(f"missing immutable digest for {key}")
|
|
126
|
+
images[key] = value
|
|
127
|
+
|
|
128
|
+
if tuple(key for key in expected if key in images) != expected or len(images) != len(expected):
|
|
129
|
+
raise SystemExit(f"image keys do not match release contract: {sorted(images)}")
|
|
130
|
+
|
|
131
|
+
output = Path("dist")
|
|
132
|
+
combined = {
|
|
133
|
+
"schema_version": "ncp-olmo-eval-published-images-v1",
|
|
134
|
+
"release_version": version,
|
|
135
|
+
"source_revision": revision,
|
|
136
|
+
"immutable": True,
|
|
137
|
+
"images": {key: images[key] for key in expected},
|
|
138
|
+
}
|
|
139
|
+
(output / "public-images.json").write_text(
|
|
140
|
+
json.dumps(combined, indent=2, sort_keys=True) + "\n", encoding="utf-8"
|
|
141
|
+
)
|
|
142
|
+
(output / "public-images.env").write_text(
|
|
143
|
+
"\n".join(f"{key}={images[key]}" for key in expected) + "\n",
|
|
144
|
+
encoding="utf-8",
|
|
145
|
+
)
|
|
146
|
+
PY
|
|
147
|
+
test "$(grep -Ec '@sha256:[0-9a-f]{64}$' dist/public-images.env)" = 5
|
|
148
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
|
149
|
+
with:
|
|
150
|
+
name: public-image-digests
|
|
151
|
+
path: |
|
|
152
|
+
dist/public-images.env
|
|
153
|
+
dist/public-images.json
|
|
154
|
+
if-no-files-found: error
|
|
155
|
+
- name: Attach digest manifests to GitHub release
|
|
156
|
+
if: github.event_name == 'release'
|
|
157
|
+
env:
|
|
158
|
+
GH_TOKEN: ${{ github.token }}
|
|
159
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
160
|
+
run: |
|
|
161
|
+
gh release upload "$RELEASE_TAG" \
|
|
162
|
+
--repo "$GITHUB_REPOSITORY" \
|
|
163
|
+
dist/public-images.env dist/public-images.json --clobber
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
name: publish-python-release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
|
|
7
|
+
permissions:
|
|
8
|
+
contents: read
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803
|
|
15
|
+
with:
|
|
16
|
+
ref: ${{ github.event.release.tag_name }}
|
|
17
|
+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1
|
|
18
|
+
with:
|
|
19
|
+
python-version: "3.12"
|
|
20
|
+
cache: pip
|
|
21
|
+
- name: Verify release identity
|
|
22
|
+
env:
|
|
23
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
24
|
+
run: |
|
|
25
|
+
python - <<'PY'
|
|
26
|
+
import os
|
|
27
|
+
import tomllib
|
|
28
|
+
from pathlib import Path
|
|
29
|
+
|
|
30
|
+
version = tomllib.loads(Path("pyproject.toml").read_text())["project"]["version"]
|
|
31
|
+
assert os.environ["RELEASE_TAG"] == f"v{version}"
|
|
32
|
+
PY
|
|
33
|
+
test "$(git rev-parse HEAD)" = "${{ github.sha }}"
|
|
34
|
+
- name: Build and inspect distributions
|
|
35
|
+
run: |
|
|
36
|
+
python -m pip install --upgrade build twine
|
|
37
|
+
python -m build
|
|
38
|
+
python -m twine check dist/*
|
|
39
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02
|
|
40
|
+
with:
|
|
41
|
+
name: python-package-distributions
|
|
42
|
+
path: dist/
|
|
43
|
+
if-no-files-found: error
|
|
44
|
+
|
|
45
|
+
publish-pypi:
|
|
46
|
+
needs: build
|
|
47
|
+
runs-on: ubuntu-latest
|
|
48
|
+
environment:
|
|
49
|
+
name: pypi
|
|
50
|
+
url: https://pypi.org/p/ncp-olmo-eval
|
|
51
|
+
permissions:
|
|
52
|
+
id-token: write
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
|
|
55
|
+
with:
|
|
56
|
+
name: python-package-distributions
|
|
57
|
+
path: dist/
|
|
58
|
+
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33
|
|
59
|
+
|
|
60
|
+
attach-distributions:
|
|
61
|
+
needs: build
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
permissions:
|
|
64
|
+
contents: write
|
|
65
|
+
steps:
|
|
66
|
+
- uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
|
|
67
|
+
with:
|
|
68
|
+
name: python-package-distributions
|
|
69
|
+
path: dist/
|
|
70
|
+
- name: Attach immutable distributions to GitHub release
|
|
71
|
+
env:
|
|
72
|
+
GH_TOKEN: ${{ github.token }}
|
|
73
|
+
RELEASE_TAG: ${{ github.event.release.tag_name }}
|
|
74
|
+
run: gh release upload "$RELEASE_TAG" --repo "$GITHUB_REPOSITORY" dist/* --clobber
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.1.0a16
|
|
6
|
+
|
|
7
|
+
- Make checkout-free release jobs pass the repository explicitly when attaching
|
|
8
|
+
Python distributions and immutable OCI digest manifests to GitHub Releases.
|
|
9
|
+
- Replace the unpublished `lm-evaluation-harness` Git direct reference with
|
|
10
|
+
the official `lm-eval==0.4.13` PyPI release. The pinned tag retains the same
|
|
11
|
+
GSM8K task files as the validated development commit, while making wheel and
|
|
12
|
+
source-distribution metadata acceptable to public package indexes.
|
|
13
|
+
- Reject direct URL dependencies in the release metadata contract so PyPI
|
|
14
|
+
publication failures are caught before a tag is created.
|
|
15
|
+
|
|
16
|
+
## 0.1.0a15
|
|
17
|
+
|
|
18
|
+
- Accept NCP DFlash checkpoints published as Hugging Face sharded SafeTensors,
|
|
19
|
+
validate every file referenced by `model.safetensors.index.json`, and seal
|
|
20
|
+
the full shard identity while retaining one-file checkpoint compatibility.
|
|
21
|
+
- Adopt **NCP-ArchPreview** as the public model-family name throughout the
|
|
22
|
+
documentation and package metadata while retaining existing distribution,
|
|
23
|
+
import, CLI, environment-variable, schema, and model-config identifiers for
|
|
24
|
+
backward compatibility.
|
|
25
|
+
- Document the public Stage1, Stage2 v1/v2/v3, and Stage2 DFlash2 NCPFlash
|
|
26
|
+
checkpoints published by the ArchSpace Collection on Hugging Face.
|
|
27
|
+
- Re-license original repository code under Apache-2.0 and separate upstream
|
|
28
|
+
attribution and asset terms into `NOTICE` and `THIRD_PARTY_NOTICES.md`.
|
|
29
|
+
- Pin the public upstream OCI bases used by the validated Core88 sandboxes and
|
|
30
|
+
add release automation that publishes runtime and scorer images to GHCR with
|
|
31
|
+
an immutable digest manifest.
|
|
32
|
+
- Add a PyPI Trusted Publishing workflow that builds once, validates the wheel
|
|
33
|
+
and source distribution, and publishes through GitHub OIDC without a stored
|
|
34
|
+
API token.
|
|
35
|
+
- Build each public OCI image on an isolated matrix runner, then merge and
|
|
36
|
+
verify their immutable digest fragments without exhausting a shared runner.
|
|
37
|
+
- Reclaim preinstalled hosted-runner toolchains before building the large CUDA
|
|
38
|
+
runtime image, and bootstrap pinned modern packaging tools in the legacy
|
|
39
|
+
MultiPL-E base so the release package is installed by its real identity.
|
|
40
|
+
- Replace asset and image placeholders with pinned public references or an
|
|
41
|
+
explicit gated-asset boundary, and document the one-time publisher setup.
|
|
42
|
+
|
|
43
|
+
## 0.1.0a14
|
|
44
|
+
|
|
45
|
+
- Publish the a14 validation record for the sealed NCP DFlash
|
|
46
|
+
continuous-batching operating point introduced in `0.1.0a13`, without
|
|
47
|
+
changing the inference or scoring protocols.
|
|
48
|
+
- Record both the fixed active-batch/draft-width sweep and a mixed-length
|
|
49
|
+
32-request continuous queue. The tested pair reached `1.43x` steady-state
|
|
50
|
+
continuous throughput and preserved the adaptive `1:8,2:8,4:4,8:2` policy.
|
|
51
|
+
- Document cold-start cost, pair-specific acceptance, and matched downstream
|
|
52
|
+
quality A/B results so the synthetic speed result cannot be presented as a
|
|
53
|
+
universal or target-exact guarantee.
|
|
54
|
+
- Add release-metadata consistency coverage and package the sanitized
|
|
55
|
+
validation evidence in the source distribution.
|
|
56
|
+
|
|
57
|
+
## 0.1.0a13
|
|
58
|
+
|
|
59
|
+
- Seal the complete target-plus-DFlash operating point into every comparison
|
|
60
|
+
artifact and registration, including active batch size, scheduler queue,
|
|
61
|
+
draft width policy, model-runner selection, cache/mixer settings, and target
|
|
62
|
+
runtime controls. Legacy speculative comparison artifacts must be regenerated.
|
|
63
|
+
- Preserve the verified batch-to-draft-width policy when emitting Core88 and
|
|
64
|
+
GSM8K tasks instead of replacing it with a hard-coded width of 16 or planner
|
|
65
|
+
environment variables.
|
|
66
|
+
- Require continuous-batching A/B runs to submit at least one full scheduler
|
|
67
|
+
queue, and bind the same batch, queue, and runtime contract into formal
|
|
68
|
+
inference manifests and GSM8K aggregates.
|
|
69
|
+
|
|
70
|
+
## 0.1.0a12
|
|
71
|
+
|
|
72
|
+
- Add the correctness-gated NCP DFlash proposer and vLLM 0.13 model-runner
|
|
73
|
+
adapter without patching installed vLLM files.
|
|
74
|
+
- Add target/draft A/B benchmarking with exact and explicitly approximate
|
|
75
|
+
verification modes, immutable artifact binding, speed gates, GPU-memory
|
|
76
|
+
evidence, and proposal/rejection telemetry.
|
|
77
|
+
- Extend model registration with a sealed draft identity and comparison
|
|
78
|
+
artifact. Formal speculative inference fails closed until the artifact
|
|
79
|
+
covers at least eight prompts and 1,024 forced tokens at seed 42.
|
|
80
|
+
- Route verified speculative registrations through GSM8K and Core88 task specs,
|
|
81
|
+
propagate their proven generation batch size, and reject SciQ/RULER/HELMET
|
|
82
|
+
speculative use.
|
|
83
|
+
- Add continuous scheduler-queue support and request-local target state
|
|
84
|
+
transactions needed for batched DFlash proposal and rejection.
|
|
85
|
+
- Document the source integration's known exact-parity limitation: exact modes
|
|
86
|
+
remain fail-closed diagnostic gates, while the evidenced tuned path is an
|
|
87
|
+
explicitly approximate registration requiring matched downstream quality
|
|
88
|
+
A/B.
|
|
89
|
+
|
|
90
|
+
## 0.1.0a11
|
|
91
|
+
|
|
92
|
+
- Add standalone SciQ inference, scoring, status validation, and final result
|
|
93
|
+
materialization to the scheduler-neutral unified entry.
|
|
94
|
+
- Seal SciQ to the OLMo `all_supported_local` task 348 export: 1,000 test
|
|
95
|
+
examples, four continuation likelihoods, zero-shot `Question:/Answer:`
|
|
96
|
+
prompts, seed 42, one eight-GPU vLLM job, and official raw `acc`.
|
|
97
|
+
- Normalize OLMo's ordered metric definitions without losing their source
|
|
98
|
+
evidence, selecting raw `acc` ahead of `acc_norm` for SciQ.
|
|
99
|
+
- Add subset-aware Core-native planning and aggregation while retaining strict
|
|
100
|
+
full-profile order checks, exact source SHA-256 validation, complete unique
|
|
101
|
+
prediction coverage, and CPU-only rescoring.
|
|
102
|
+
|
|
103
|
+
## 0.1.0a10
|
|
104
|
+
|
|
105
|
+
- Separate the immutable evaluator identity recorded in a Core88 prediction-score
|
|
106
|
+
snapshot from the installed release that only materializes the final tables.
|
|
107
|
+
- Preserve and validate the cached scorer commit/tree against the workflow even
|
|
108
|
+
when the clean finalizer is installed at another path or comes from a newer
|
|
109
|
+
release; record the finalizer identity independently in the output report.
|
|
110
|
+
- Extend the clean-wheel regression smoke to cover cached Core88 finalization
|
|
111
|
+
across distinct workflow, scorer, and installed-package paths.
|
|
112
|
+
|
|
113
|
+
## 0.1.0a9
|
|
114
|
+
|
|
115
|
+
- Preserve the installed evaluator package tree SHA-256 when the fixed Core88
|
|
116
|
+
30-column summary revalidates a workflow-bound GSM8K companion.
|
|
117
|
+
- Add a regression contract for matching evaluator packages installed at a
|
|
118
|
+
different absolute path from the workflow checkout, including a clean-wheel
|
|
119
|
+
installation smoke in CI.
|
|
120
|
+
|
|
121
|
+
## 0.1.0a8
|
|
122
|
+
|
|
123
|
+
- Expose the locked BigCodeBench parser wheels at
|
|
124
|
+
`/opt/core88/olmo-eval-deps` through the formal sandbox image's
|
|
125
|
+
`PYTHONPATH`, and verify both `tree_sitter` modules during the image build.
|
|
126
|
+
- Give copied parser wheels fixed container-side names, allowing formal builds
|
|
127
|
+
to use either root-level files or paths nested inside the build context.
|
|
128
|
+
- Preserve that image-local dependency directory after task-spec environment
|
|
129
|
+
merging, so an explicit OLMo-Eval source `PYTHONPATH` cannot hide the
|
|
130
|
+
sandbox's parser modules.
|
|
131
|
+
- Replace the synthetic BigCodeBench CI layer with a build and execution of
|
|
132
|
+
the published `core88_bigcodebench_sandbox.Dockerfile`, using the same
|
|
133
|
+
locked-wheel extraction layout as the release image.
|
|
134
|
+
|
|
135
|
+
## 0.1.0a7
|
|
136
|
+
|
|
137
|
+
- Pin the mutually compatible and previously GPU-validated dependency pair
|
|
138
|
+
`transformers==4.57.6` and `huggingface-hub==0.36.2`; the old public
|
|
139
|
+
`transformers>=5` declaration conflicted with vLLM 0.13.0's `<5` bound.
|
|
140
|
+
- Pin the release Math scorer runtime to `sympy==1.14.0` and
|
|
141
|
+
`antlr4-python3-runtime==4.11`, install it in the default runtime image, and
|
|
142
|
+
execute a real Minerva/MATH equivalence smoke during the Docker build.
|
|
143
|
+
- Load BigCodeBench's two required helpers from SHA-verified files at the
|
|
144
|
+
pinned OLMo-Eval commit instead of importing its eager task registry. This
|
|
145
|
+
removes the accidental dependency on the deleted
|
|
146
|
+
`huggingface_hub.utils.silent_tqdm` API without weakening source fidelity.
|
|
147
|
+
- Add Docker CI that builds the runtime scorer slice, runs the official Math
|
|
148
|
+
runtime smoke, and runs a BigCodeBench helper preflight against the pinned
|
|
149
|
+
upstream source.
|
|
150
|
+
- Allow site executors to replace only a Python task's interpreter through the
|
|
151
|
+
explicit `NCP_OLMO_TASK_PYTHON` boundary, so heterogeneous sandbox images do
|
|
152
|
+
not inherit an unrelated inference virtualenv.
|
|
153
|
+
|
|
154
|
+
## 0.1.0a6
|
|
155
|
+
|
|
156
|
+
- Gate LMDeploy argument validation on the selected backend in the Core88
|
|
157
|
+
worker pool and standalone GSM8K evaluator. Public vLLM jobs no longer enter
|
|
158
|
+
the intentionally unavailable LMDeploy compatibility boundary.
|
|
159
|
+
- Make the omitted-LMDeploy validator itself a no-op for non-LMDeploy
|
|
160
|
+
backends, while continuing to fail closed when LMDeploy is explicitly
|
|
161
|
+
selected.
|
|
162
|
+
- Add a regression test for both sides of that backend boundary.
|
|
163
|
+
|
|
164
|
+
## 0.1.0a5
|
|
165
|
+
|
|
166
|
+
- Remove the unpublished LMDeploy verification flag from portable vLLM
|
|
167
|
+
Core88, RULER, and HELMET commands. The public package intentionally omits
|
|
168
|
+
LMDeploy, so passing its internal-only flag made the public parsers reject
|
|
169
|
+
otherwise valid jobs before model loading.
|
|
170
|
+
- Add release-integrity coverage that rejects future command-generation leaks
|
|
171
|
+
of the removed flag; release validation also parses the generated Core88
|
|
172
|
+
worker command in the pinned GPU runtime.
|
|
173
|
+
|
|
174
|
+
## 0.1.0a4
|
|
175
|
+
|
|
176
|
+
- Pin the official `lm-evaluation-harness` commit required by GSM8K/Core88.
|
|
177
|
+
- Include that runtime in the `vllm` and CPU-only `gsm8k` installation extras.
|
|
178
|
+
- Fail early on a missing or version-drifted harness and record its immutable
|
|
179
|
+
identity in prepared GSM8K manifests.
|
|
180
|
+
|
|
181
|
+
## 0.1.0a3
|
|
182
|
+
|
|
183
|
+
- Restored the CUDA device-layout helper required when Core88 starts its GPU
|
|
184
|
+
worker pool from an installed package.
|
|
185
|
+
- Made the unpublished native-Megatron reference side of the optional parity
|
|
186
|
+
harness fail early with an actionable boundary instead of importing modules
|
|
187
|
+
that are not part of the public distribution.
|
|
188
|
+
- Added release-integrity tests for internal package imports and worker device
|
|
189
|
+
mapping so source extraction omissions fail in CPU-only CI.
|
|
190
|
+
- Kept the GSM8K, Core88, RULER, and HELMET vLLM protocol contracts unchanged.
|
|
191
|
+
|
|
192
|
+
## 0.1.0a2
|
|
193
|
+
|
|
194
|
+
- Replaced the site-specific submission layer with portable JSON task specs,
|
|
195
|
+
atomic task status files, and a local task runner.
|
|
196
|
+
- Added example local, Slurm, and Kubernetes adapters with no site defaults.
|
|
197
|
+
- Added a reproducible CUDA runtime image, explicit Core88 sandbox image
|
|
198
|
+
contracts, and sealed/verified Hugging Face asset preparation.
|
|
199
|
+
- Made formal execution offline by default and rejected serialized secrets.
|
|
200
|
+
- Preserved strict artifact validation and raw-rescore fallback for Core88.
|
|
201
|
+
- Replaced Core88's worker-side `.git` requirement with an exact evaluator
|
|
202
|
+
source-tree SHA-256 while retaining Git revision evidence when available.
|
|
203
|
+
|
|
204
|
+
## 0.1.0a1
|
|
205
|
+
|
|
206
|
+
- First standalone alpha release.
|
|
207
|
+
- Added a unified interactive and non-interactive CLI for model registration,
|
|
208
|
+
inference, scoring, status, and finalization.
|
|
209
|
+
- Added vLLM support for stock OLMo and the experimental NCP-ArchPreview plugin.
|
|
210
|
+
- Added Core88 plus standard GSM8K, RULER 4K-64K, and HELMET 8K-64K.
|
|
211
|
+
- Added tokenizer-bound sealed long-context preparation, fail-closed resume and
|
|
212
|
+
finalization contracts and explicit seed 42.
|
|
213
|
+
- Removed private paths, registry names, mounts, accounts, proxies, and model
|
|
214
|
+
defaults from the published code.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Please keep benchmark protocol changes explicit and reviewable. A protocol
|
|
4
|
+
change must update tests, result metadata/schema where necessary,
|
|
5
|
+
`docs/PROTOCOLS.md`, and the changelog. Do not mix predictions from different
|
|
6
|
+
protocol revisions under resume.
|
|
7
|
+
|
|
8
|
+
Before submitting a change, run:
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
python -m compileall -q src tests
|
|
12
|
+
python -m pytest
|
|
13
|
+
ruff check src tests scripts
|
|
14
|
+
git diff --check
|
|
15
|
+
for script in scripts/*.sh; do bash -n "$script"; done
|
|
16
|
+
python -m py_compile scripts/*.py
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Release candidates must also follow
|
|
20
|
+
[`docs/RELEASE_CHECKLIST.md`](docs/RELEASE_CHECKLIST.md), including clean-wheel,
|
|
21
|
+
distribution-content, public-tree, and formal sandbox-image validation. Version
|
|
22
|
+
changes, tags, and publication are explicit release actions and should not be
|
|
23
|
+
mixed into routine cleanup.
|
|
24
|
+
|
|
25
|
+
Never commit model weights, benchmark data, credentials, private registry
|
|
26
|
+
names, internal mounts, or judge API keys.
|