Voltline's picture
Release vimeml-tiny-zh-v1 (step 844730): FP32 bundle, INT8 Core ML packages, source snapshot
81cffe7 verified
|
Raw History Blame Contribute Delete
9.89 kB

VimeML

Compact causal language models for candidate reranking in the Vime input method: Japanese kana-to-kanji conversion, and Chinese pinyin input since vimeml-tiny-zh-v1.

For Japanese, AzooKey supplies dictionary candidates. The language model reranks the fixed candidate pool using left context; dictionary retrieval remains an application dependency. Short continuation and next-word suggestions are secondary research features. These models are not instruction-tuned conversational assistants.

Model releases and status

Model Parameters Tokenizer Context Status
V1 7,386,624 16K SentencePiece Unigram, V1 vocabulary 128 Public baseline and fallback: Voltline/vimeml-tiny-ja-v1
V2.1 12,537,920 16K SentencePiece Unigram, V2 vocabulary 128 Previous deployment, public: Voltline/vimeml-tiny-ja-v2.1
V4.2 15,070,848 8K SentencePiece Unigram, V4 vocabulary 128 Deployed, public: Voltline/vimeml-tiny-ja-v4.2

V4.2 epoch 20 is the deployed model: symmetric INT8 block-32 weight compression, FP32 computation, and CPU-only Core ML on iOS 18 or later (17.16 MB package). It replaced V2.1 extend5 step 40,000 (14.33 MB package with the same recipe). V3 A/B, V4-B and V4.1 are completed experiments without a stable replacement advantage.

V4.2 (2026-10-20) is the strongest V4 model: a randomly initialized 8K-vocabulary model trained for twenty epochs on web text with 5% dialogue. It leads on Standard development but is only +6 over V2.1 on the fixed reference (p=0.56), trails on AJIMEE, and differs mainly in kana/kanji notation choices. Its INT8 Core ML package is 17.16 MB; on an iPhone 16 Pro Max test host it lowers peak footprint by 5.6 MB and tail rerank latency, while single calls are 0.16–0.35 ms slower. On the preregistered Standard v2 blind it scores 598/729 against V2.1's 576 (+22, author-cluster p = 0.0508, just short of the registered threshold); on the written-text homophone challenge it scores 438/619 against 450 (not significant) (confirmation results, Chinese). Keyboard-extension memory and typing latency have not been measured.

V4.3 (more web data) and V5 (d512/L8, 28.4M parameters, same data and budget as V4.3) are completed negative experiments: V5 lowers validation BPC by 0.10 but leaves IME Top-1 unchanged within noise, so neither is converted or deployed (V5 training).

Release bundles include inference weights, matching tokenizer assets, Core ML resources, and aggregate evaluation records. Training checkpoints, datasets, credentials, and private benchmark texts are stored separately. The custom checkpoint format is not a Transformers AutoModel implementation. Details appear in the model card.

Evaluation summary

IME columns report exact accepted-reference Top-1 counts on fixed AzooKey candidate pools, scored by the joint-tokenization suffix log-probability sum. Standard IME labels are frozen AI-reviewed annotations, not native-speaker gold.

Model Standard dev / 728 Fixed reference / 725 Legacy / 500 AJIMEE / 200 Historical dev / 137
V2.1 FP32 505 535 374 144 122
V2.1 INT8 (previous deployment) 506 — 375 144 122
V3 A 508 546 368 136 123
V4-B 498 — 377 144 120
V4.1 epoch 16 505 — 376 137 124
V4.2 FP32 523 541 370 139 123
V4.2 INT8 (deployed) 522 — 371 139 123
V4.3 epoch 30 519 — 367 143 123
V5 epoch 30 514 — 365 145 124

The 725-case reference split was consumed in the initial V2.1/V3 A comparison; later models are scored once under a preregistered plan (V3 B: 533; V4.2: 541). Standard development has been reused across experiments. Paired p-values are exploratory. INT8 rows come from the Mac Core ML harness; strict logits alignment fails for both INT8 models, while task-level counts move by at most one case.

Historical sets with original V1/V2 baselines:

Model Validation BPC ↓ AJIMEE / 200 Historical development / 137 Draft development / 2,000
V1 FP32 3.4736559 124 122 1,453
V2.0 FP32 3.2598221 125 124 1,463
V2.1 release FP32 3.0802686 144 122 1,487
V2.1 release INT8 Not measured 144 122 1,481

On the same validation text, V4-B, V4.2, V4.3 and V5 reach 3.027777, 3.045152, 3.043831 and 2.942180 BPC with the 8K tokenizer. Full methods and limitations appear in evaluation; V4.2 details are in the training summary and Core ML report.

Chinese pinyin model

Model Parameters Tokenizer Context Status
vimeml-tiny-zh-v1 20,036,736 12K SentencePiece Unigram, Chinese 128 Blind-confirmed; export, device tests and release pending

vimeml-tiny-zh-v1 reranks the pinyin candidates of librime with rime-ice using left context. It was trained from random initialization on 22.4B characters of cleaned and reviewed FineWeb2 cmn_Hani web text and LCCC dialogue, as the release arm (12k-fresh-s1) of a preregistered eight-arm experiment (plan, training, judgement). Internal code and artifact paths still use the codename zh13.

Exact Top-1 on ime-standard-zh-v1-r1 (CrossWOZ, RiSAWOZ and KdConv dialogue turns; AI-reviewed labels, not native-speaker gold). The blind split was consumed by the preregistered confirmation, which passed (+329/−19 against Rime, p = 3.6e-74); the comparisons were scored afterwards with blind as a reference test (report, Chinese).

System Pinyin dev / 1,456 Pinyin blind / 1,445 Abbreviated blind / 964
vimeml-tiny-zh-v1 93.6% 93.8% 35.0%
Qwen2.5-0.5B, same pool and scoring 91.3% 91.8% 31.0%
Qwen3-0.6B-Base, same pool and scoring 89.8% 89.2% 30.6%
rime-ice + Wanxiang grammar model 79.0% 82.2% 15.7%
rime-ice (candidate pool source) 68.8% 72.2% 14.6%
Luna Pinyin (Rime default) 68.3% 68.9% 12.9%

Rime configurations rank on their own without left context; the models rerank a frozen 20-candidate pool, which contains the answer for 97.4% of blind pinyin items and about 41% of abbreviated items. A dialogue-level leak scan of the training data found no republished benchmark dialogues.

Source installation and inference

Python 3.11 or later is required. Platform-specific versions are pinned in requirements.txt; the recorded Linux/CUDA training environment uses requirements/cuda.txt. Optional benchmark preparation dependencies are listed in requirements/evaluation.txt, and external-model comparisons in requirements/external-eval.txt.

python -m venv .venv
# POSIX activation; Windows: .venv\Scripts\Activate.ps1
source .venv/bin/activate
python -m pip install -e .
python scripts/training/infer.py \
  --checkpoint artifacts/models/tiny-ja-v2.1-e16k-d320-l6-extend5/best.pt \
  --tokenizer artifacts/tokenizers/ja-unigram-16k-v2 \
  --output outputs/inference/v21-local

This command assumes the matching local training artifacts and their manifests are present. The default inference CLI selects V1; V4 checkpoints load through vimeml.training.infer_v4.JapaneseLMV4, and scripts/benchmarks/evaluate_v42.py reproduces the V4.2 fixed-pool comparison. Hugging Face inference bundles have separate packaged-runtime instructions in their model cards. Core ML conversion and runtime evaluation require macOS. The iOS application is maintained in the separate Vime repository; examples/ios/ contains historical integration references.

Repository structure

Path Contents
src/vimeml/ Corpus processing, tokenization, training, evaluation, and deployment implementations
scripts/ Command-line entry points organized by subsystem
configs/ Versioned experiment and data-processing configurations; configs/annotations/ holds Japanese corpus review decisions
requirements/ Additional dependency pins for CUDA training, benchmark preparation and external-model evaluation
docs/ Primary English documentation and dated experiment records
docs/zh-CN/ Chinese documentation and detailed experiment reports
examples/ios/ Core ML probe, SentencePiece bridge, and historical client examples
templates/ Artifact exchange templates
tests/ Targeted implementation tests
datasets/, artifacts/, outputs/, runs/, handoff/ Local, Git-ignored data, model artifacts, results, and transfer manifests

Documentation and licensing

Documentation index · Model card · Chinese overview · Contribution conventions · Licensing and attribution

Project code and published model weights use GPL-3.0-or-later with an additional permission under section 7 for application distribution services such as the App Store (LICENSE-EXCEPTION). Releases before 2026-10-22 used GPL-2.0-only. Upstream libraries and source datasets retain their own licenses. Private research benchmark text is not included in the public repository or model releases. Third-party notices remain with the corresponding components.