Files

265 lines
6.1 KiB
Markdown
Raw Permalink Normal View History

---
license: apache-2.0
language:
- ja
- zh
base_model:
- 3tic/Orion-Qwen3-1.7B-CPT-v2603
pipeline_tag: text-generation
tags:
- lightnovel
---
# Orion-Qwen3-1.7B-SFT-v2603
基于 [Orion-Qwen3-1.7B-CPT-v2603](https://huggingface.co/3tic/Orion-Qwen3-1.7B-CPT-v2603) 在轻小说、游戏、动漫文本数据上训练的翻译模型,支持术语表。
* 本版模型优化了术语表使用和上下文关系处理
## Prompt 结构
```
[上文] ← 可选,每 chunk 不同
[术语表] ← 可选,同文档共享,仅包含当前 chunk 命中的术语
[提示词] ← 根据有无上文/术语表选择措辞
[JSONL 内容] ← 待翻译文本
```
---
## 模板 1: plain无术语表无上文
### user
```
将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果不要额外解释
{"1":"原文1"}
{"2":"原文2"}
```
### assistant
```
{"1":"译文1"}
{"2":"译文2"}
```
### 示例
**user:**
```
将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果不要额外解释
{"1":"まだなにか、話すべきことがあっただろうか。"}
```
**assistant:**
```
{"1":"还有什么,需要说的事情吗。"}
```
---
## 模板 2: glossary有术语表无上文
### user
```
术语表:
実体A→译名A
実体B→译名B
参考术语表中的译法将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果
{"1":"原文1"}
{"2":"原文2"}
```
### assistant
```
{"1":"译文1"}
{"2":"译文2"}
```
### 示例
**user:**
```
术语表:
クトゥリフ→库托莉芙
サーフェちゃん→莎妃
ライム→莉姆
参考术语表中的译法将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果
{"1":"「思い出話をしましょう、と言っているのよ。私もグレンとは話せないし」"}
{"2":"うにょん! と楕円形に広がっていたライムが、あっという間に人の形に戻った。"}
{"3":"「いいんデスか! サーフェちゃん」"}
```
---
## 模板 3: context无术语表有上文
### user
```
上文行1
上文行2
上文行3
参考上文信息将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果
{"1":"原文1"}
{"2":"原文2"}
```
### assistant
```
{"1":"译文1"}
{"2":"译文2"}
```
### 示例
**user:**
```
「え……だっテ、グレンくんは教室でも浮いてましたシ……みんなと仲良くなれるきっかけになればと思ったんデス……」
サーフェとしては。
ライムがやったことは、サーフェの考えと似てはいても、もう少し先を見ていた。
参考上文信息将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果
{"1":"「医学部学生ではあるけど、身体の悩みを聞きます……というのは評判になりましたね」"}
{"2":"「エヘヘ! 噂を流した甲斐がありましター!」"}
{"3":"「それも貴女の仕業だったのね」"}
```
---
## 模板 4: glossary_context有术语表有上文
### user
```
上文行1
上文行2
上文行3
术语表:
実体A→译名A
実体B→译名B
参考上文和术语表将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果
{"1":"原文1"}
{"2":"原文2"}
```
### assistant
```
{"1":"译文1"}
{"2":"译文2"}
```
### 示例
**user:**
```
アカデミーは多数の学部に分かれ、大陸各地から有能な学者が招聘された。
ある日、アカデミーに一人の少年が留学した。
新入生の名はグレン・リトバイト。
术语表:
クトゥリフ→库托莉芙
グレン・リトバイト→格伦·利特贝特
ネメア→涅米亚
ネメア・アカデミー→涅米亚·学院
参考上文和术语表将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果
{"1":"ネメア・アカデミー。"}
{"2":"魔族領首都ネメア。その大都市が誇る、最大の教育機関。"}
{"3":"名前はグレン。"}
{"4":"手にしているのは、教授であるクトゥリフからの通知である。"}
```
---
## Transformers 推理示例
```python
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer
model_path = "3tic/Orion-Qwen3-1.7B-CPT-v2603"
tokenizer = AutoTokenizer.from_pretrained(
model_path,
trust_remote_code=True,
padding_side="left",
)
if tokenizer.pad_token is None:
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(
model_path,
trust_remote_code=True,
torch_dtype=torch.bfloat16,
device_map="auto",
)
prompt = (
"将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果不要额外解释\n"
'{"1": "おはようございます"}\n'
)
text = tokenizer.apply_chat_template(
[{"role": "user", "content": prompt}],
tokenize=False,
add_generation_prompt=True,
)
inputs = tokenizer(text, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_new_tokens=128,
do_sample=False,
temperature=1.0,
pad_token_id=tokenizer.pad_token_id,
)
generated_ids = outputs[0][inputs["input_ids"].shape[-1]:]
response = tokenizer.decode(generated_ids, skip_special_tokens=True)
print(response)
```
## vLLM 推理示例
```python
from vllm import LLM, SamplingParams
model_path = "3tic/Orion-Qwen3-1.7B-CPT-v2603"
llm = LLM(model=model_path, tensor_parallel_size=1, max_model_len=1024)
prompt = (
"将以下文本翻译为简体中文使用JSONLINE格式输出翻译结果只需输出翻译结果不要额外解释\n"
'{"1": "おはようございます"}\n'
)
outputs = llm.chat(
messages=[[{"role": "user", "content": prompt}]],
sampling_params=SamplingParams(max_tokens=128, temperature=0.0),
)
print(outputs[0].outputs[0].text)
```