Files
Interpreter-Qwen3-1.7B/README.md
ModelHub XC 6ba60bf119 初始化项目,由ModelHub XC社区提供模型
Model: Ismantic/Interpreter-Qwen3-1.7B
Source: Original Platform
2026-10-02 22:23:23 +08:00

99 lines
3.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
license: apache-2.0
base_model: Qwen/Qwen3-1.7B-Base
language:
- zh
- en
pipeline_tag: translation
library_name: transformers
tags:
- translation
- qwen3
- zh-en
- en-zh
- sft
- cpo
- grpo
datasets:
- haoranxu/ALMA-Human-Parallel
- haoranxu/X-ALMA-Parallel-Data
---
# Interpreter-Qwen3-1.7B
A 1.7B Chinese↔English translation model, trained **SFT → CPO → GRPO**.
This model is one half of an A/B pair. The two differ in **exactly two things** — the base checkpoint and the tokenizer — and share the same data, hyperparameters, losses and rewards. The other half is [`Ismantic/Interpreter-Qwen3-1.7B-ReTok`](https://huggingface.co/Ismantic/Interpreter-Qwen3-1.7B-ReTok).
| | this model |
|---|---|
| Tokenizer | Qwen3 native BBPE (151643) |
| Chat format | ChatML |
| Pipeline | SFT → CPO → GRPO |
## Results (WMT23)
| direction | BLEU / COMET |
|---|---|
| zh→en | 20.31 / 0.8053 |
| en→zh | 33.69 / 0.8540 |
### How to read these numbers
WMT23 is the primary test set — **WMT22 is excluded**, roughly 17.5% of it leaked
into the ALMA SFT data. COMET is `Unbabel/wmt22-comet-da`, which is *also* the
GRPO reward, so gains were cross-checked on WMT23/24 + Flores-200 with BLEU and
chrF to rule out reward hacking.
vLLM greedy decoding is not bit-reproducible; BLEU varies by ~0.1 between runs.
Differences at that scale are noise.
## Usage
Standard ChatML with a fixed translation instruction; `<|im_end|>` is the stop
token. Greedy decoding recommended.
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
tok = AutoTokenizer.from_pretrained("Ismantic/Interpreter-Qwen3-1.7B")
model = AutoModelForCausalLM.from_pretrained("Ismantic/Interpreter-Qwen3-1.7B", torch_dtype=torch.bfloat16).cuda().eval()
instr = ("Translate the following text from Chinese to English.\n"
"Chinese: 人工智能正在深刻改变我们的生活方式。\nEnglish:")
prompt = f"<|im_start|>user\n{instr}<|im_end|>\n<|im_start|>assistant\n"
ids = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**ids, max_new_tokens=256, do_sample=False,
eos_token_id=tok.convert_tokens_to_ids("<|im_end|>"))
print(tok.decode(out[0][ids.input_ids.shape[1]:], skip_special_tokens=True).strip())
```
vLLM works too — same ChatML prompt, `stop=["<|im_end|>"]`.
For a quick interactive demo, grab `translate.py` from this repo and run
`python translate.py` (needs `vllm`) — type sentences, zh↔en auto-detected.
## Training
Three stages, all on a single RTX 4090:
- **SFT** — full fine-tune on ~36.8K zh↔en pairs (ALMA + X-ALMA human parallel,
WMT22/23 leakage removed), loss on the response only.
- **CPO** — LoRA preference training, `-log σ(β·(logπ_w − logπ_l)) + λ·NLL(y_w)`,
on ~44K **self-generated** preference pairs (5 candidates sampled from the SFT
model, best/worst picked by COMET). LoRA only — full-parameter CPO collapses
the model.
- **GRPO** — full-parameter RL. Reward = reference-based `wmt22-comet-da` COMET
(1.0) + a 4-gram repetition penalty (0.3), over WMT17–21 source prompts.
Training code, data provenance and the negative results (what was tried and
rejected, with numbers) are in the
[Interpreter repo](https://github.com/Ismantic/Interpreter).
## License & attribution
Apache-2.0, following the base model. Training data derives from the ALMA /
X-ALMA parallel corpora and WMT news test sets. Please respect the licenses of
those upstream models and datasets.