bench-labs/cagliostro-v2

🤗 Hugging Face 来源text-generationapache-2.0150M 参数300 MBsafetensors✓ 1 个校验和今天更新
一条命令提交

在你的模型文件夹旁边运行它。它会制作种子、将文件与 Hugging Face 比对,然后提交。你只需开始做种,并粘贴你账户中的密钥。它只读取你的文件,绝不修改。如果愿意,可以先阅读脚本。

curl -fsSL https://pirateface.co/package.sh | bash -s -- --repo bench-labs/cagliostro-v2 ./model-folder
需要做种者 →

cagliostro-v2

A 150M parameter language model trained from scratch on 50B tokens.

It reaches an Open SLM Intelligence Index of 19.99, ahead of the previous release cagliostro-v1 by 0.84 when both are measured the same way.

Results

All three columns below were scored identically: lm-eval at 0-shot acc_norm for HellaSwag, ARC and PIQA, and AxiomicLabs' bencharithmark-3 for ArithMark. The new model was scored twice on different GPUs at different batch sizes and the two runs agreed to within 0.12 on the Index.

Component cagliostro-v2 cagliostro-v1 internal 70B run
HellaSwag 36.76 36.70 36.92
ARC-Easy 47.43 48.95 47.39
ARC-Challenge 28.58 26.19 25.43
CombinedARC 38.00 37.57 36.41
PIQA 65.67 65.34 65.29
ArithMark-3 35.20 33.20 37.20
Index 20.05 19.22 19.80

The Index was scored at five checkpoints. It is flat through the constant learning rate phase and moves once the decay starts, which is the shape this schedule produces: downstream metrics do not resolve small improvements while the weights are still in a high noise regime.

Second scoring run of cagliostro-v2: 19.93. Reported Index is 19.99, the mean.

The Index is (N(HellaSwag,25) + N(CombinedARC,25) + N(PIQA,50) + 0.65*N(ArithMark,25)) / 3.65 where N(v,c) = 100(v-c)/(100-c).

Note on the v1 figures

The cagliostro-v1 model card reports 17.85 and 19.13. Those came from an in-house harness that was later retired: checked against lm-eval on a model whose leaderboard row was already known, it read ARC-Challenge 3.9 points high, and the error changed sign between models so no constant correction recovers it. The 19.22 above is v1 rescored with lm-eval, which is higher than its own card claims. The comparison here is deliberately against the corrected, more favourable number.

The internal 70B run is an unreleased checkpoint trained on 70B tokens with a staged curriculum that included synthetic arithmetic. It is listed for context because it is the only other model of this family measured on this harness.

How to read this

Against the published v1, this model is ahead on four of six components and on the Index by 0.84, roughly seven times the spread between repeat measurements. ARC-Challenge is the largest single gain at +2.39, moving well clear of the 25.0 chance floor.

Against the internal 70B run the Index margin is only +0.26, which is not a claim worth making on its own. What that comparison does show is token efficiency: a comparable score on 50B tokens where the other run needed 70B, at identical parameter count and without the synthetic arithmetic that run used.

ARC-Easy is the one component where v1 remains ahead, 48.95 against 47.43.

Architecture

150,038,400 parameters, 129,066,880 excluding embeddings.

Layers 30
Hidden size 640
Attention heads 10
KV heads 5 (grouped-query)
MLP hidden 1600 (SwiGLU)
Sequence length 2048
Vocab 32768
Position encoding RoPE, theta 100000
Norm RMSNorm, per-head q/k norm
Embeddings tied

Two additions beyond a standard decoder, both adding zero parameters:

Exclusive Self Attention (arXiv:2603.09078). After attention, each head removes the component of its output that lies along its own value vector, so the block stops re-encoding what the residual stream already carries. Measured at -0.0785 nats over 123 paired readings against an otherwise identical baseline.

Logit soft-capping. Output logits pass through cap * tanh(logits / cap) with cap 15. Measured at -0.027 nats, flat across four quartiles of a 5B token ablation rather than decaying like every rejected variant did.

Because neither adds tensors, nothing in the state dict reveals them, and a checkpoint loaded without them scores at chance while every shape check passes. They are recorded in the config and the bundled modeling code implements them, so trust_remote_code loads the model correctly.

Ablations

Each arm is a 5B token run against a byte-identical baseline on the same pre-tokenized shards with the same seed, so a loss gap is attributable to the one flag that differs.

Arm Delta vs baseline Verdict
XSA -0.0785 kept
Logit cap 15 -0.027 kept
Canon layers -0.0027 rejected, costs 9 percent throughput for less than 9 percent more tokens buys
Value residual +0.0001 rejected, no effect
ReLU squared MLP +0.021 rejected

Three of the five ideas tried did not survive. Canon layers improved loss but lost on a compute-matched basis: they cost 9 percent throughput, and spending that 9 percent on more tokens instead was measured at roughly -0.008 nats against Canon's -0.0027.

Training

Tokens 50,000,000,000
Steps 508,625
Tokens per step 98,304
Optimizer AdamW, betas 0.9/0.95, weight decay 0.1
Peak LR 1.5e-3
Schedule warmup-stable-decay, 200 warmup steps, final 15 percent decayed
Precision bfloat16
Hardware 4x RTX 5090, about 40 hours at 348k tokens/sec
Final loss 2.8489

Data mixture: FineWeb-Edu 57.6 percent, DCLM-baseline 38.4 percent, Cosmopedia 4 percent. Pre-tokenized to uint16 memmapped shards, sampled by weight per sequence. 63.89B unique tokens backed the 50B token run, so repetition is near zero on every source.

A staged curriculum with code, arithmetic and dialogue was tried in earlier versions and abandoned: it scored Index 11.73 at 9.14B tokens, below GPT-2's 13.58, because the components that dominate the Index need web text rather than the specialised data the curriculum spent tokens on.

Usage

from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained(
    "bench-labs/cagliostro-v2", trust_remote_code=True)
tok = AutoTokenizer.from_pretrained("bench-labs/cagliostro-v2")

ids = tok("The capital of France is", return_tensors="pt")
out = model.generate(**ids, max_new_tokens=32)
print(tok.decode(out[0]))

trust_remote_code=True is required. The architecture is not in transformers and travels with the weights.

Limitations

This is a 150M parameter base model trained on 50B tokens. It is not instruction tuned, not aligned, and not filtered for safety. ARC-Challenge at 28.58 is meaningfully above chance but still low in absolute terms. It will produce confident nonsense on anything requiring real world knowledge.

The training data was decontaminated against the evaluation sets with 13-gram exact matching. Measured removal was 0.00 percent of FineWeb-Edu and 0.01 percent of DCLM, so decontamination is not doing meaningful work at this scale and the scores should not be read as more trustworthy because of it.