初始化项目,由ModelHub XC社区提供模型
Model: 3tic/Orion-Qwen3-1.7B-SFT-v2603 Source: Original Platform
This commit is contained in:
264
README.md
Normal file
264
README.md
Normal file
@@ -0,0 +1,264 @@
|
||||
---
|
||||
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)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user