File size: 15,305 Bytes
e6dba4e
 
902f600
 
 
 
e6dba4e
902f600
6657af0
 
 
 
 
 
 
 
 
 
a5f8580
6657af0
902f600
b26fa53
 
902f600
 
a0671de
1117d83
 
a0671de
 
 
 
6657af0
4d8723c
 
c6b8b7a
b26fa53
d0fc291
a0671de
 
b26fa53
9099e24
a0671de
61c22e9
1117d83
 
 
 
 
 
b26fa53
 
 
 
 
 
 
 
 
97787df
 
a0671de
 
93fb974
b26fa53
 
 
 
 
9099e24
b26fa53
97787df
 
c6b8b7a
1117d83
 
 
c539b87
 
1117d83
 
 
c6b8b7a
 
93fb974
9099e24
b26fa53
ca1a913
 
 
1117d83
902f600
1117d83
688b443
97787df
 
 
 
 
 
b26fa53
 
 
 
 
97787df
940b18f
f4638dd
c6b8b7a
 
b26fa53
c6b8b7a
 
 
 
 
 
 
 
 
 
f4638dd
902f600
 
 
 
6657af0
 
b26fa53
 
 
7d360de
 
902f600
 
688b443
 
1117d83
a0671de
 
688b443
b26fa53
688b443
a0671de
0933db5
a0671de
688b443
902f600
 
4d8723c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b26fa53
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4d8723c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a0671de
902f600
a0671de
990f428
 
a0671de
990f428
a0671de
990f428
 
a0671de
990f428
 
a0671de
990f428
a0671de
990f428
902f600
7d360de
902f600
7d360de
 
a50048c
 
7d360de
 
 
 
 
902f600
b26fa53
a02e4db
902f600
 
a0671de
902f600
1117d83
 
 
 
 
 
 
 
97787df
 
990f428
 
20bf981
990f428
20bf981
 
6368e6d
20bf981
0b25c79
 
20bf981
 
 
 
 
 
 
990f428
1117d83
 
 
 
902f600
 
b26fa53
1117d83
b26fa53
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
---
license: apache-2.0
language:
- zh
- ja
pipeline_tag: text-generation
---


<!-- markdownlint-disable first-line-h1 -->
<!-- markdownlint-disable html -->
<div align="center">
<h1>
  Sakura-13B-Galgame
</h1>
</div>

<p align="center">
 🦉 <a href="https://github.com/pipixia244/Sakura-13B-Galgame" target="_blank">GitHub</a> | 🤖 <a href="https://www.modelscope.cn/models/sakuraumi/Sakura-13B-Galgame" target="_blank">ModelScope</a>
</p>

# 目前Sakura发布的所有模型均采用[CC BY-NC-SA 4.0协议](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans),Sakura所有模型与其衍生模型均禁止任何形式的商用!Sakura系列所有模型皆仅供学习交流使用,开发者对使用Sakura模型造成的问题不负任何责任。

# 介绍

- 基于一系列开源大模型构建,在通用日文语料与轻小说/Galgame等领域的中日语料上进行继续预训练与微调,旨在提供性能接近GPT3.5且完全离线的Galgame/轻小说翻译大语言模型。
  
- 目前仍为实验版本,v0.9版本模型在文风、流畅度与准确性上均强于GPT-3.5,但词汇量略逊于GPT-3.5(主观评价).

- 同时提供了运行模型的API后端,适配OpenAI API格式。

- 新建了[TG交流群](https://t.me/+QMDKZyO9GV1kNDA1),欢迎交流讨论。

**对于其他适配本模型的项目如使用非本项目提供的prompt格式进行翻译,不保证会获得与README中的说明一致的质量!**

**如果使用模型翻译并发布,请在最显眼的位置标注机翻!!!!!开发者对于滥用本模型造成的一切后果不负任何责任。**
> 由于模型一直在更新,请同时注明使用的模型版本等信息,方便进行质量评估和更新翻译。

**对于模型翻译的人称代词问题(错用,乱加,主宾混淆,男女不分等)和上下文理解问题,如果有好的想法或建议,欢迎提issue!**

### TODO:见https://github.com/SakuraLLM/Sakura-13B-Galgame/issues/42

## 快速开始

### 教程:

详见[本仓库Wiki](https://github.com/SakuraLLM/Sakura-13B-Galgame/wiki).

### 模型下载:

| 参数量 | 发布时间-底模-版本  | Transformers模型 | GGUF量化模型 |
|:-------:|:-------:|:-------:|:-------:|
| 32B | 20240508-Qwen1.5-32B-v0.9 | - | 🤗 [Sakura-32B-Qwen2beta-v0.9](https://huggingface.co/SakuraLLM/Sakura-32B-Qwen2beta-v0.9-GGUF) |
|     | 20240508-Qwen1.5-32B-v0.10pre1 | - | - |
| 14B | 20240111-Qwen-14B-v0.9 | 🤗 [Sakura-13B-LNovel-v0.9](https://huggingface.co/SakuraLLM/Sakura-13B-LNovel-v0.9) | 🤗 [Sakura-13B-LNovel-v0.9b-GGUF](https://huggingface.co/SakuraLLM/Sakura-13B-LNovel-v0.9b-GGUF) |
|     | 20240213-Qwen1.5-14B-v0.9 | 🤗 [Sakura-14B-Qwen2beta-v0.9](https://huggingface.co/SakuraLLM/Sakura-14B-Qwen2beta-v0.9) | 🤗 [Sakura-14B-Qwen2beta-v0.9-GGUF](https://huggingface.co/SakuraLLM/Sakura-14B-Qwen2beta-v0.9-GGUF) |
| 7B  | 20240116-Qwen-7B-v0.9 | - | 🤗 [Sakura-7B-LNovel-v0.9-GGUF](https://huggingface.co/SakuraLLM/Sakura-7B-LNovel-v0.9-GGUF) |
| 1.8B| 20240214-Qwen1.5-1.8B-v0.9.1 | 🤗 [Sakura-1B8-Qwen2beta-v0.9.1](https://huggingface.co/SakuraLLM/Sakura-1B8-Qwen2beta-v0.9.1) | 🤗 [Sakura-1B8-Qwen2beta-v0.9.1](https://huggingface.co/SakuraLLM/Sakura-1B8-Qwen2beta-v0.9.1-GGUF) |


p.s. 如果无法连接到HuggingFace服务器,可将链接中的`huggingface.co`改成`hf-mirror.com`,使用hf镜像站下载。

## News

1. **更新了基于Qwen1.5-32B底模的v0.9与v0.10pre1版本的GGUF模型。其中v0.10pre1版本为v0.10的预览版,具备术语表功能,相比上一版本优化翻译质量,同时使用新的prompt格式,详见[推理部分](https://github.com/SakuraLLM/Sakura-13B-Galgame?tab=readme-ov-file#%E6%8E%A8%E7%90%86)的prompt格式部分。**

1. **更新了使用Importance Matrix进行量化的Sakura-14B-Qwen2beta-v0.9-GGUF模型。[模型地址](https://huggingface.co/SakuraLLM/Sakura-14B-Qwen2beta-v0.9-GGUF/blob/main/sakura-14b-qwen2beta-v0.9-iq4_xs_ver2.gguf)**

1. **更新了基于Qwen1.5底模的`v0.9`版本模型,包括14B和1.8B两个版本。注意:此版本模型的结构为Qwen2. 同时补充更新了基于Qwen 7B的`v0.9`版本模型。**

1.  **更新了0.9的正式版模型`v0.9b`。清洗并增加了预训练与微调的数据量。更推荐使用正式版模型,它会比之前的pre版本更加稳定,质量更高。**

1. **增加了vllm模型后端的支持,详见**[#40](https://github.com/SakuraLLM/Sakura-13B-Galgame/pull/40)

1.  感谢[Isotr0py](https://github.com/Isotr0py)提供运行模型的NoteBook仓库[SakuraLLM-Notebooks](https://github.com/Isotr0py/SakuraLLM-Notebooks),可在[Colab](https://colab.research.google.com/)(免费T4\*1)与[Kaggle](https://www.kaggle.com/)(免费P100\*1或T4\*2)平台使用。**已经更新Kaggle平台的[使用教程](https://github.com/SakuraLLM/Sakura-13B-Galgame/wiki/%E7%99%BD%E5%AB%96Kaggle%E5%B9%B3%E5%8F%B0%E9%83%A8%E7%BD%B2%E6%95%99%E7%A8%8B),可以白嫖一定时间的T4\*2。**

1.  **Sakura API已经支持OpenAI格式,现在可以通过OpenAI库或者OpenAI API Reference上的请求形式与Server交互。**
一个使用OpenAI库与Sakura模型交互的例子详见[openai_example.py](https://github.com/SakuraLLM/Sakura-13B-Galgame/blob/main/tests/example_openai.py)。

## 已经接入模型的工具

1. 网站:[轻小说机翻机器人](https://books.fishhawk.top/)已接入Sakura模型(v0.8-4bit),站内有大量模型翻译结果可供参考。你也可以自行部署模型并使用该网站生成机翻,目前已经支持v0.8与v0.9模型,且提供了llama.cpp一键包。
  
   轻小说机翻机器人网站是一个自动生成轻小说机翻并分享的网站。你可以浏览日文网络小说,或者上传Epub/Txt文件,并生成机翻。

1. [LunaTranslator](https://github.com/HIllya51/LunaTranslator)已经支持Sakura API,可以通过本地部署API后端,并在LunaTranslator中配置Sakura API来使用Sakura模型进行Galgame实时翻译。  
    ~~使用[KurikoMoe](https://github.com/kurikomoe/LunaTranslator/releases/latest)的版本可以支持流式输出。~~ 目前官方版本已经支持流式输出,只需在翻译设置界面勾选流式输出即可。

   LunaTranslator是一个Galgame翻译工具,支持剪贴板、OCR、HOOK,支持40余种翻译引擎。

1. [GalTransl](https://github.com/XD2333/GalTransl)已经支持Sakura API,可以通过本地部署API后端,在GalTransl中配置使用Sakura模型来翻译Galgame,制作内嵌式翻译补丁。

   GalTransl是一个galgame自动化翻译工具,用于制作内嵌式翻译补丁。一个使用GalTransl和Sakura模型翻译的[示例](https://www.ai2moe.org/files/file/2271-%E6%88%AF%E7%94%BBgaltranslsakuragpt35%E7%88%B1%E4%B9%8B%E5%90%BB3-sexy-gpt%E7%BF%BB%E8%AF%91%E8%A1%A5%E4%B8%81uploadee5-mb/)

1. 翻译Unity引擎游戏的工具[SakuraTranslator](https://github.com/fkiliver/SakuraTranslator)。感谢[fkiliver](https://github.com/fkiliver)提供。

1. 翻译RPGMaker引擎游戏的工具[RPGMaker_LLaMA_Translator](https://github.com/fkiliver/RPGMaker_LLaMA_Translator)。感谢[fkiliver](https://github.com/fkiliver)提供。

1. [AiNiee](https://github.com/NEKOparapa/AiNiee-chatgpt)已经支持Sakura API,可以通过本地部署API后端,在AiNiee中使用Sakura模型进行翻译。

   AiNiee是一款基于【mtool】或【Translator++】,chatgpt自动批量翻译工具,主要是用来翻译各种RPG游戏。

1. [manga-image-translator](https://github.com/zyddnys/manga-image-translator)已经支持Sakura API,可以通过本地部署API后端,使用Sakura自动翻译漫画。

1. [BallonsTranslator](https://github.com/dmMaze/BallonsTranslator)已经支持Sakura API,可以通过本地部署API后端,使用Sakura翻译漫画。

# 显存需求

下面的表格显示了使用不同量化和不同格式的模型时显存占用的大小。如果你的显卡显存不满足上述需求,可以尝试同时使用CPU与GPU进行推理。

- llama.cpp GGUF模型(使用Qwen-14B v0.9模型进行测试)

|  模型量化类型  | 模型大小 | 推荐显存大小 |
|:-------:|:-------:|:-------:|
| fp16 | 26.3G | 超出游戏显卡显存范围 |
| Q8_0 | 14G | 24G |
| Q6_K | 11.4G | 20G |
| Q5_K_M | 10.1G | 16G |
| Q4_K_M | 8.8G | 16G |
| Q3_K_M | 7.2G | 16G |
| Q2_K | 6.1G | 12G |

# 模型详情

## 描述

- Finetuned by [SakuraUmi](https://github.com/pipixia244)
- Finetuned on [Baichuan2-13B-Chat](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat)
- Continual Pre-trained on [Qwen model series](https://github.com/QwenLM/Qwen)
- Continual Pre-trained on [Qwen1.5 model series](https://github.com/QwenLM/Qwen1.5)
- Finetuned on Sakura-Base model series
- Languages: Chinese/Japanese

## 效果

- Galgame

  [一个例子](https://www.ai2moe.org/files/file/2271-%E6%88%AF%E7%94%BBgaltranslsakuragpt35%E7%88%B1%E4%B9%8B%E5%90%BB3-sexy-gpt%E7%BF%BB%E8%AF%91%E8%A1%A5%E4%B8%81uploadee5-mb/)
  
- 轻小说

  网站:[轻小说机翻机器人](https://books.fishhawk.top/)已接入Sakura模型(v0.9),站内有大量模型翻译的轻小说可供参考。

- PPL/BLEU/Human

  TBD

# 推理

- openai api messages格式:

  - v0.9
    使用代码处理如下:
    ```python
    input_text_list = ['a', 'bb', 'ccc', ...] # 一系列上下文文本,每个元素代表一行的文本
    raw_text = "\n".join(input_text_list)
    messages=[
        {
            "role": "system",
            "content": "你是一个轻小说翻译模型,可以流畅通顺地以日本轻小说的风格将日文翻译成简体中文,并联系上下文正确使用人称代词,不擅自添加原文中没有的代词。"
        },
        {
            "role": "user",
            "content": "将下面的日文文本翻译成中文:" + raw_text
        }
    ]
    ```
- prompt格式:

  - v0.10pre1
    代码处理如下:
    ```python
            gpt_dict = [{
              "src": "原文1",
              "dst": "译文1",
              "info": "注释信息1",
            },]
            gpt_dict_text_list = []
            for gpt in gpt_dict:
                src = gpt['src']
                dst = gpt['dst']
                info = gpt['info'] if "info" in gpt.keys() else None
                if info:
                    single = f"{src}->{dst} #{info}"
                else:
                    single = f"{src}->{dst}"
                gpt_dict_text_list.append(single)

            gpt_dict_raw_text = "\n".join(gpt_dict_text_list)

            user_prompt = "根据以下术语表(可以为空):\n" + gpt_dict_raw_text + "\n\n" + "将下面的日文文本根据上述术语表的对应关系和备注翻译成中文:" + japanese
            prompt = "<|im_start|>system\n你是一个轻小说翻译模型,可以流畅通顺地使用给定的术语表以日本轻小说的风格将日文翻译成简体中文,并联系上下文正确使用人称代词,注意不要混淆使役态和被动态的主语和宾语,不要擅自添加原文中没有的代词,也不要擅自增加或减少换行。<|im_end|>\n" \ # system prompt
            + "<|im_start|>user\n" + user_prompt + "<|im_end|>\n" \ # user prompt
            + "<|im_start|>assistant\n" # assistant prompt start
    ```

  - v0.9
    文本格式如下:
    ```
    <|im_start|>system
    你是一个轻小说翻译模型,可以流畅通顺地以日本轻小说的风格将日文翻译成简体中文,并联系上下文正确使用人称代词,不擅自添加原文中没有的代词。<|im_end|>
    <|im_start|>user
    将下面的日文文本翻译成中文:日文第一行
    日文第二行
    日文第三行
    ...
    日文第n行<|im_end|>
    <|im_start|>assistant
    
    ```
    使用代码处理如下:
    ```python
    input_text_list = ['a', 'bb', 'ccc', ...] # 一系列上下文文本,每个元素代表一行的文本
    raw_text = "\n".join(input_text_list)
    prompt = "<|im_start|>system\n你是一个轻小说翻译模型,可以流畅通顺地以日本轻小说的风格将日文翻译成简体中文,并联系上下文正确使用人称代词,不擅自添加原文中没有的代词。<|im_end|>\n" \ # system prompt
            + "<|im_start|>user\n将下面的日文文本翻译成中文:" + raw_text + "<|im_end|>\n" \ # user prompt
            + "<|im_start|>assistant\n" # assistant prompt start
    ```

- prompt构建:

  - v0.8

    ```python
    input_text = "" # 要翻译的日文
    query = "将下面的日文文本翻译成中文:" + input_text
    prompt = "<reserved_106>" + query + "<reserved_107>"
    ```
    
  - v0.9

    ```python
    input_text = "" # 要翻译的日文
    query = "将下面的日文文本翻译成中文:" + input_text
    prompt = "<|im_start|>system\n你是一个轻小说翻译模型,可以流畅通顺地以日本轻小说的风格将日文翻译成简体中文,并联系上下文正确使用人称代词,不擅自添加原文中没有的代词。<|im_end|>\n<|im_start|>user\n" + query + "<|im_end|>\n<|im_start|>assistant\n"
    ```

- 推理与解码参数:

| 参数 | 值 |
| ---- | ---- |
| temperature | 0.1 |
| top p | 0.3 |
| do sample | True |
| beams number | 1 |
| repetition penalty | 1 |
| max new token | 512 |
| min new token | 1 |

**如出现退化(退化的例子可参见[#35](https://github.com/SakuraLLM/Sakura-13B-Galgame/issues/35)与[#36](https://github.com/SakuraLLM/Sakura-13B-Galgame/issues/36)),可增加`frequency_penalty`参数,并设置为大于0的某值,一般设置0.1~0.2即可。**

# 微调

模型微调框架参考[BELLE](https://github.com/LianjiaTech/BELLE)或[LLaMA-Factory](https://github.com/hiyouga/LLaMA-Factory),prompt构造参考推理部分。

# 相关项目

- [轻小说机翻机器人](https://books.fishhawk.top/):轻小说翻译

- [LunaTranslator](https://github.com/HIllya51/LunaTranslator):Galgame在线翻译

- [GalTransl](https://github.com/XD2333/GalTransl):Galgame离线翻译,制作补丁

- [AiNiee](https://github.com/NEKOparapa/AiNiee-chatgpt):RPG游戏翻译

# 致谢

- [CjangCjengh](https://github.com/CjangCjengh)

- [ryank231231](https://github.com/ryank231231)

- [KurikoMoe](https://github.com/kurikomoe)

- [FishHawk](https://github.com/FishHawk)

- [K024](https://github.com/K024)

- [minaduki-sora](https://github.com/minaduki-sora)

- [Kimagure7](https://github.com/Kimagure7)

- [YYF233333](https://github.com/YYF233333)

- [Isotr0py](https://github.com/Isotr0py)

- [XD2333](https://github.com/XD2333)

# Copyright Notice

v0.8版本模型的使用须遵守[Apache 2.0](https://github.com/baichuan-inc/Baichuan2/blob/main/LICENSE)、[《Baichuan 2 模型社区许可协议》](https://huggingface.co/baichuan-inc/Baichuan2-7B-Base/resolve/main/Baichuan%202%E6%A8%A1%E5%9E%8B%E7%A4%BE%E5%8C%BA%E8%AE%B8%E5%8F%AF%E5%8D%8F%E8%AE%AE.pdf)和[CC BY-NC-SA 4.0协议](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)。

v0.9版本模型的使用须遵守[Qwen模型许可协议](https://github.com/QwenLM/Qwen/blob/main/Tongyi%20Qianwen%20LICENSE%20AGREEMENT)和[CC BY-NC-SA 4.0协议](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.zh-hans)。