Greyscope v2
Greyscope estimates how much AI was involved in a passage. It returns a score from 0 to 1 and one
of three labels: human, AI-edited, or AI-generated. It supports English, Japanese, and
Traditional Chinese.
This is the reference bf16 model. Other builds use the same labels and calibration:
| Artifact | Size | Best for |
|---|
| bf16 | 8.4 GB | CUDA, or CPU when speed is not important |
| MLX Q4 | 2.4 GB | Apple Silicon |
| Transformers int4 | 3.5 GB | NVIDIA GPU when bf16 does not fit |
Quick start
The
Greyscope repository contains the calibrated decoder:
1git clone https://github.com/yaoandy107/greyscope
2cd greyscope
3uv sync
4uv run greyscope "Paste a paragraph here."
From Python:
1from greyscope.inference import detect
2
3result = detect("Paste a paragraph here.")
Example output:
1{
2 "label": "AI-edited",
3 "ai_involvement": 0.46,
4 "bucket_probs": {"none": 0.18, "light": 0.44, "moderate": 0.31, "heavy": 0.07}
5}
ai_involvement describes the estimated degree of AI involvement; it is not a probability that the
author cheated. bucket_probs are the model's probabilities for its four training levels. Use
--mode binary if you need a human / AI label.
Use Greyscope's calibrated decoder rather than a stock Transformers classification pipeline. The
three model logits are CORN conditional logits, not class probabilities.
Mac performance
Measured on an M1 Pro with 32 GB unified memory.
| Build | Model size | Peak memory | 512 tokens |
|---|
| MLX Q4 | 2.4 GB | 3.0 GB | 2.43 s |
| Transformers bf16 | 8.4 GB | 9.4 GB | 2.54 s |
MLX Q4 matched bf16 quality across 3,007 external benchmark rows. See the
release metrics
for details.
Evaluations
Graded AI involvement
APT-Eval
Uses 3,000 of 14,950 rows: all 300 human passages and a stratified sample of 2,700 polished
passages. Spearman measures whether the score tracks editing amount; higher is better.
Binary AI detection
These evaluations compare human and AI text, so binary-only detectors can be included.
Beemo
Uses a 2,997-row sample from the larger Beemo dataset: 333 source documents with all nine variants.
AUROC tests generated and edited text; higher is better.
RAID extra
Uses 4,968 rows from RAID extra: code, Czech, and German with all 11 attacks. This is an
out-of-domain robustness check, not a supported-language benchmark. Higher is better for both
metrics. MELD and Desklib are excluded because they trained on RAID.
Benchmark metadata is in
benchmarks/.
Limitations
- Light AI editing is harder to detect than fully generated text.
- Results change with text length, subject, generator, language, and rewriting method.
- The model reads at most 2,048 tokens from each passage.
- Chinese training data is Traditional Chinese; do not assume the same quality on Simplified Chinese.
- Training edit-strength labels came from embedding distance rather than human annotation.
- Do not use this model as the sole evidence in academic, employment, or disciplinary decisions.
Training and license
Greyscope v2 is a Qwen3.5-4B LoRA with a four-level CORN ordinal head and a ranking loss. It was
trained on English, Japanese, and Traditional-Chinese text. No EditLens data was used for training.
The weights are Apache-2.0 and the code is MIT. Source texts and the generated training dataset are
not redistributed with the weights. The complete recipe is in the
repository.