Download tools/smoke_test.py from SciCode/MileTone_2: direct link, hf CLI and curl.
- Browser
- Download file 4.1 kB
-
https://huggingface.co/SciCode/MileTone_2/resolve/main/tools/smoke_test.py
- Command line
-
hf download hf://SciCode/MileTone_2/tools/smoke_test.py
-
curl -L -o smoke_test.py https://huggingface.co/SciCode/MileTone_2/resolve/main/tools/smoke_test.py
4.1 kB
| #!/usr/bin/env python3 | |
| """Load each delivered checkpoint on CPU and verify finite logits.""" | |
| from __future__ import annotations | |
| import gc | |
| import json | |
| import os | |
| import platform | |
| import sys | |
| import traceback | |
| from pathlib import Path | |
| THREADS = "4" | |
| for variable in ( | |
| "OMP_NUM_THREADS", | |
| "MKL_NUM_THREADS", | |
| "OPENBLAS_NUM_THREADS", | |
| "NUMEXPR_NUM_THREADS", | |
| "VECLIB_MAXIMUM_THREADS", | |
| "BLIS_NUM_THREADS", | |
| ): | |
| os.environ.setdefault(variable, THREADS) | |
| os.environ.setdefault("CUDA_VISIBLE_DEVICES", "") | |
| import torch # noqa: E402 | |
| import safetensors # noqa: E402 | |
| import transformers # noqa: E402 | |
| from transformers import AutoConfig, AutoModelForCausalLM, AutoTokenizer # noqa: E402 | |
| ROOT = Path(__file__).resolve().parents[1] | |
| PROMPT = 'def rmsd(a, b):\n """Root-mean-square deviation."""\n' | |
| TARGETS = { | |
| "pretrained/codegpt_multilingual_5epoch": ROOT / "models/pretrained/codegpt_multilingual_5epoch", | |
| "pretrained/gpt2_124m_code_5epoch": ROOT / "models/pretrained/gpt2_124m_code_5epoch", | |
| "pretrained/qwen25_coder_7b_cpt": ROOT / "models/pretrained/qwen25_coder_7b_cpt", | |
| "pretrained/stage1_cpt": ROOT / "models/pretrained/stage1_cpt", | |
| "sft/sft_f3_refined_instruct": ROOT / "models/sft/sft_f3_refined_instruct", | |
| } | |
| for checkpoint in sorted((ROOT / "models/sft").iterdir()): | |
| if checkpoint.is_dir() and (checkpoint / "config.json").is_file(): | |
| TARGETS.setdefault(f"sft/{checkpoint.name}", checkpoint) | |
| def check(name: str, path: Path) -> dict: | |
| result = {"model": name, "path": str(path.relative_to(ROOT)), "ok": False} | |
| try: | |
| config = AutoConfig.from_pretrained(path) | |
| result.update( | |
| architecture=(config.architectures or [type(config).__name__])[0], | |
| hidden_size=getattr(config, "hidden_size", None), | |
| layers=getattr(config, "num_hidden_layers", None), | |
| vocab_size=getattr(config, "vocab_size", None), | |
| ) | |
| tokenizer = AutoTokenizer.from_pretrained(path) | |
| model = AutoModelForCausalLM.from_pretrained( | |
| path, | |
| dtype="auto", | |
| low_cpu_mem_usage=True, | |
| ) | |
| model.eval() | |
| inputs = tokenizer(PROMPT, return_tensors="pt") | |
| with torch.no_grad(): | |
| logits = model(**inputs).logits | |
| last = logits[0, -1].float() | |
| result.update( | |
| tokenizer=type(tokenizer).__name__, | |
| parameters_million=round(sum(p.numel() for p in model.parameters()) / 1e6, 1), | |
| logits_shape=list(logits.shape), | |
| finite=bool(torch.isfinite(logits).all()), | |
| top1_zscore=round(((last.max() - last.mean()) / last.std()).item(), 2), | |
| ) | |
| result["ok"] = result["finite"] and result["top1_zscore"] > 3.0 | |
| del model, tokenizer, inputs, logits, last | |
| gc.collect() | |
| except Exception as error: # noqa: BLE001 | |
| result["error"] = f"{type(error).__name__}: {error}" | |
| result["traceback"] = traceback.format_exc(limit=3) | |
| return result | |
| def main() -> int: | |
| torch.set_num_threads(int(THREADS)) | |
| results = [check(name, path) for name, path in TARGETS.items()] | |
| report = { | |
| "validation_environment": { | |
| "python": platform.python_version(), | |
| "torch": torch.__version__, | |
| "transformers": transformers.__version__, | |
| "safetensors": safetensors.__version__, | |
| "device": "cpu", | |
| "threads": int(THREADS), | |
| }, | |
| "results": results, | |
| } | |
| output = ROOT / "evidence/smoke_test_results.json" | |
| output.write_text(json.dumps(report, indent=2, ensure_ascii=False) + "\n", encoding="utf-8") | |
| for result in results: | |
| status = "PASS" if result["ok"] else "FAIL" | |
| detail = f"{result.get('parameters_million', '?')}M, z={result.get('top1_zscore', '?')}" | |
| print(f"{status}: {result['model']} ({detail})") | |
| passed = sum(result["ok"] for result in results) | |
| print(f"{passed}/{len(results)} checkpoints passed; results: {output}") | |
| return 0 if passed == len(results) else 1 | |
| if __name__ == "__main__": | |
| sys.exit(main()) | |