File size: 13,996 Bytes
e6dba4e
 
902f600
 
 
 
e6dba4e
902f600
6657af0
 
 
 
 
 
 
 
 
 
a5f8580
6657af0
902f600
 
 
0dc7b63
6657af0
f4638dd
 
 
 
 
 
 
 
902f600
a5ed2ce
 
688b443
 
f4638dd
 
 
 
 
 
 
4d5922e
0f3e4ac
6c196b3
f4638dd
688b443
990f428
 
0b25c79
0dc7b63
7d360de
 
6657af0
 
 
990f428
6657af0
990f428
902f600
 
 
 
6657af0
 
902f600
6657af0
 
 
 
7d360de
6657af0
 
 
 
902f600
 
7d360de
 
 
 
 
 
 
9bcbce3
 
 
 
 
 
 
990f428
 
9bcbce3
 
 
 
 
 
 
 
 
 
7d360de
 
5cf100e
7d360de
 
 
 
 
 
 
 
6657af0
5cf100e
6657af0
 
 
 
 
 
 
990f428
 
5cf100e
990f428
 
 
 
 
 
 
 
902f600
5cf100e
902f600
990f428
 
902f600
 
 
 
 
 
688b443
 
acde72a
6657af0
 
 
 
 
 
 
 
 
 
688b443
 
 
 
 
 
 
 
 
902f600
 
 
 
990f428
 
 
 
 
 
 
 
 
 
 
 
 
 
 
902f600
0b25c79
6657af0
 
 
 
 
 
 
7d360de
 
 
6657af0
7d360de
902f600
7d360de
 
 
 
 
 
 
 
 
902f600
5f49373
 
7d360de
902f600
a02e4db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
902f600
 
7d360de
902f600
 
 
990f428
902f600
 
 
990f428
 
20bf981
990f428
20bf981
 
 
 
0b25c79
 
20bf981
 
 
 
 
 
 
990f428
902f600
 
 
 
 
 
6657af0
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
---
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>

# 介绍

基于LLaMA2-13B,OpenBuddy(v0.1-v0.4),Baichuan2-13B(v0.5,v0.8)和Qwen-14B(v0.7)构建,在Galgame中日文本数据上进行微调,旨在提供性能接近GPT3.5且完全离线的Galgame/轻小说翻译大语言模型. 新建了[TG交流群](https://t.me/+sCYaCYEsd3ZkMTE1),欢迎交流讨论。

### 模型下载:
|   版本  | 全量模型 | 8-bit量化 | 4-bit量化 | 3-bit量化 |
|:-------:|:-------:|:-------:|:-------:|:-------:|
| 20230827-v0.1 | 🤗 [Sakura-13B-Galgame-v0.1](https://huggingface.co/sakuraumi/Sakura-13B-Galgame/tree/main/sakura_13b_model_v0.1) | - | - | - |
| 20230908-v0.4 | 🤗 [Sakura-13B-Galgame-v0.4](https://huggingface.co/sakuraumi/Sakura-13B-Galgame/tree/main/sakura_13b_model_v0.4) | - | - | - |
| 20230917-v0.5 | 🤗 [Sakura-13B-Galgame-v0.5](https://huggingface.co/sakuraumi/Sakura-13B-Galgame) | 🤗 [Sakura-13B-Galgame-v0.5-8bits](https://huggingface.co/sakuraumi/Sakura-13B-Galgame/tree/main/sakura_13b_model_v0.5_8bits) | [Sakura-13B-Galgame-v0.5-4bits](https://huggingface.co/sakuraumi/Sakura-13B-Galgame/tree/main/sakura_13b_model_v0.5_4bits_autogptq_40k) | - |
| 20231011-v0.7 | 🤗 [Kisara-14B-LNovel](https://huggingface.co/sakuraumi/Sakura-14B-LNovel) | - | - | - |
| 20231026-v0.8 | 🤗 [Sakura-13B-LNovel-v0.8](https://huggingface.co/SakuraLLM/Sakura-13B-LNovel-v0.8) | 🤗 [Sakura-13B-LNovel-v0.8-8bit](https://huggingface.co/SakuraLLM/Sakura-13B-LNovel-v0.8-8bit) | 🤗 [Sakura-13B-LNovel-v0.8-4bit](https://huggingface.co/SakuraLLM/Sakura-13B-LNovel-v0.8-4bit) | 🤗 [Sakura-13B-LNovel-v0.8-3bit](https://huggingface.co/SakuraLLM/Sakura-13B-LNovel-v0.8-3bit) |

目前仍为实验版本,翻译质量较差.

~~lsp们最关注的翻译R18轻小说的效果:使用[这本r18小说](https://novel18.syosetu.com/n2975ig)的部分文本,比较各版本输出文本(其中GPT网页端和API均无法翻译),结果已上传至[链接](https://huggingface.co/sakuraumi/Sakura-13B-Galgame-Archived/blob/main/r18_test.txt)~~

# 显存需求(尚未完成)

使用v0.8版本进行测试,模型生成参数与仓库中`generation_config.json`一致,显存占用数据取自`nvidia-smi`

|  模型量化类型  | 载入显存 | 推理显存(ctx约600) | 推理显存(ctx约1800) |
|:-------:|:-------:|:-------:|:-------:|
| 全量 | 超出游戏显卡显存范围 | - | - |
| 8bit | 17G | 21.1G | 23.4G |
| 4bit | 11.3G | 14.9G | 17.4G |
| 3bit | 9.7G | 13.7G | 15.5G |


# 日志

`20231026`:上传第五版模型`sakura-13b-2epoch-3.8M-1025-v0.8`,改善数据集质量与格式,修复之前版本模型无法正确解析\n的问题,使用Baichuan2-13B-Chat模型进行微调。

`20231011`:上传第四版模型`sakura-14b-2epoch-4.4M-1003-v0.7`,改用QWen-14B-Chat模型进行微调,增加数据集。

`20230917`:上传第三版模型`sakura-13b-2epoch-2.6M-0917-v0.5`,改用Baichuan2-13B-Chat模型进行微调,翻译质量有所提高。

`20230908`:上传第二版模型`sakura-13b-1epoch-2.6M-0903-v0.4`,使用Galgame和轻小说数据集进行微调,语法能力有所提高。轻小说数据集感谢[CjangCjengh](https://github.com/CjangCjengh)大佬提供。

`20230827`:上传第一版模型`sakura-13b-2epoch-260k-0826-v0.1`

# 模型详情

## 描述

### v0.1-v0.4

- Finetuned by [SakuraUmi](https://github.com/pipixia244)
- Finetuned on [Openbuddy-LLaMA2-13B](https://huggingface.co/OpenBuddy/openbuddy-llama2-13b-v8.1-fp16)
- Base model: [LLaMA2-13B](https://huggingface.co/meta-llama/Llama-2-13b-chat-hf)
- Languages: Chinese/Japanese

### v0.5

- Finetuned by [SakuraUmi](https://github.com/pipixia244)
- Finetuned on [Baichuan2-13B-Chat](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat)
- Base model: [Baichuan2-13B-Base](https://huggingface.co/baichuan-inc/Baichuan2-13B-Base)
- Languages: Chinese/Japanese

### v0.7

- Finetuned by [SakuraUmi](https://github.com/pipixia244)
- Finetuned on [Qwen-14B-Chat](https://huggingface.co/Qwen/Qwen-14B)
- Base model: [Qwen-14B](https://huggingface.co/Qwen/Qwen-14B)
- Languages: Chinese/Japanese

### v0.8

- Finetuned by [SakuraUmi](https://github.com/pipixia244)
- Finetuned on [Baichuan2-13B-Chat](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat)
- Base model: [Baichuan2-13B-Base](https://huggingface.co/baichuan-inc/Baichuan2-13B-Base)
- Languages: Chinese/Japanese

## 版本

### v0.8

数据集:约3.8M条galgame与轻小说中日平行语料(共约0.25B字数)

微调方式:全参数

微调epoch数:2

参数量:13.9B

### v0.7

数据集:约1M 条Galgame中日平行语料 + 约3.4M 条轻小说中日平行语料(共约0.3B字数)

微调方式:全参数

微调epoch数:2

参数量:14B

### v0.5

数据集:约260k 条Galgame中日平行语料 + 约2.3M 条轻小说中日平行语料(共约0.17B字数)

微调方式:全参数

微调epoch数:2

参数量:13B

### v0.4

数据集:约260k 条Galgame中日平行语料 + 约2.3M 条轻小说中日平行语料(共约0.17B字数)

微调方式:全参数

微调epoch数:1

参数量:13B

### v0.1

数据集:约260k 条Galgame中日平行语料(共约10M字数)

微调方式:全参数

微调epoch数:2

参数量:13B

## 效果

- Galgame

|  原文   |  Ours(v0.5)  |  Ours(v0.4)  |  Ours(v0.1)  | ChatGPT(GPT-3.5) |
|  ----  | ---- | ---- | ---- | ---- |
| 「女の子の一人暮らしって、やっぱ一階は防范的に危ないのかな~? お父さんには、一階はやめとけ~って言われててね?」 | 「女生一个人住,一楼在防范上果然很危险吗~?我爸爸叫我不要住一楼哦。」 | 「女孩子一个人住,果然还是不太安全吧~?爸爸说过,不要住一楼~」 |  「一个女孩子住在一楼,还是有点不太安全吧?爸爸说让我不要住在一楼」 | "一个女孩子独自一人住,大概一楼会不安全吧~?爸爸对我说过,一楼最好不要住~" |
| 「助けて、誰か助けてって思いながら、ただただ泣いてたんです……」 | 「我一边想着谁来救救我,一边不停地哭……」 |「我一边想着有没有人能救救我,一边哭哭啼啼……」 |  「我一边祈祷着,祈祷着有人能来救救我们,一边不停地哭泣……」| 「帮帮我,我一边想着有人帮助我,一边只是哭泣着……」 |
| 「そうだよ。これが太一の普通の顔だって。でも、ちょっと不気味だから、わたしみたいにニッコリ笑ってみて?」 | 「对啊。这就是太一平常的表情。不过,这样有点毛骨悚然,所以试着像我这样笑吧?」 |「对啊,这就是太一的普通表情。不过,感觉有点诡异,你像我一样笑咪咪地试试看?」 |「是啊。这就是太一的普通表情。但是,因为有点吓人,所以你也试着像我一样微笑一下吧?」 | “是的呢,这就是太一的平常表情哦。不过,有点怪异,所以像我这样放个甜甜的笑容试试看?” |
| 「そういうヒトの感情は、発情期を迎えてもいないネコには難しい」 | 「对于还没到发情期的猫来说,人类的这种感情实在是有点难以理解」| 「这种人类的感情,对还没进入发情期的猫来说太难懂了。」 |「这种人类的感情,对还没有迎来发情期的猫来说太难懂了」 | 这种人类的情感对于尚未进入发情期的猫来说是复杂的。 |
| 「朝になって、病院に行くまで。ずっと、ずーっとそばに居てくれて……」 | 「从早上到去医院的这段时间,一直、一直陪在我身边……」 | 「一直陪伴着我,直到早上去医院为止……」  |「一直陪我到早上去医院。一直,一直陪在我身边……」 | "直到早晨去医院为止。一直,一直都在我身旁……" |
| 「それ以外は、自由に過ごしているため、各自が好きにできる、とても平和な部活だった……。」 | 「除此之外,由于可以自由活动,大家都能随心所欲,所以是非常和平的社团活动……」 |「除此之外,我们都可以自由活动,每个人都能随心所欲,是个非常和平的社团……」 | 「除此之外,社团活动都是自由参加的,每个人都可以按自己的意愿去做自己想做的事情,所以社团活动也是非常和平的……」 | 「除此以外,因为大家都自由自在地度过时间,是个每个人都能按自己喜好随意参与的非常和平的社团活动......。」|
| 「そーだそーだ。せっかくお店休みにして遊びに来たのに」 | 「对呀对呀,难得我们关店跑出来玩耶。」 | 「没错没错,难得店里放假,我们才来玩的。」 |「是啊是啊,难得休息一天,我还想出来玩一下呢」| "是啊是啊。本来店铺难得休息,特地过来玩的呢。" |
| 伝えなければ、伝わらない。きっと、大事なことであるほど。 | 不表达就传达不了。越是重要的事情,越是如此。 | 不说出来就不会知道。越是重要的事情,就越是不能不说。 | -- | 如果不传达,就不会传达。毫无疑问,对于重要的事情来说是如此。 |
| が、ハチロクを手伝うことでそれが果たせるというのなら、仕事がどれほど増えようと、決して苦とは感じない。 | 不过,如果帮忙八六能让我实现这个愿望,无论工作增加多少,我也绝不会觉得痛苦。 | 不过,如果帮助八六就能实现这个愿望,不管工作多么繁重,我都不会觉得辛苦。 | -- | 如果通过帮助八六实现这一目标,无论工作增加多少,我绝不会感到苦恼。 |

- 轻小说(全龄)

使用[该仓库](https://github.com/FishHawk/sakura-test)的测试文本,仓库内提供了测试代码,测试文本以及v0.5版本的测试结果。使用该仓库代码在v0.7模型上对测试文本进行测试的结果已上传到[sakuraumi/Sakura-13B-Galgame-Archived](https://huggingface.co/sakuraumi/Sakura-13B-Galgame-Archived/blob/main/text.sa-packed)。

- 轻小说(R18)

使用[这本r18小说](https://novel18.syosetu.com/n2975ig)的部分文本,比较各版本输出文本(其中GPT网页端和API均无法翻译),结果已上传至[链接](https://huggingface.co/sakuraumi/Sakura-13B-Galgame-Archived/blob/main/r18_test.txt)

# 推理

- Galgame翻译的prompt构建:

  - v0.1

    ```python
    input_text = "" # 用户输入
    query = "将下面的日文文本翻译成中文:" + input_text
    prompt = "Human: \n" + query + "\n\nAssistant: \n"
    ```
    
  - v0.4

    ```python
    input_text = "" # 用户输入
    query = "将下面的日文文本翻译成中文:" + input_text
    prompt = "User: " + query + "\nAssistant: "
    ```

  - v0.5与v0.8

    ```python
    input_text = "" # 用户输入
    query = "将下面的日文文本翻译成中文:" + input_text
    prompt = "<reserved_106>" + query + "<reserved_107>"
    ```

  - v0.7
    参考Qwen-14B-Chat的prompt构造方式:[这里](https://huggingface.co/Qwen/Qwen-14B-Chat/blob/5188dfeb4ff175705aa3a84ef9d616c70dea029b/qwen_generation_utils.py#L119)和[这里](https://github.com/hiyouga/LLaMA-Efficient-Tuning/blob/5310e4d1829f36619c8f224d09ec15eeaf7a4877/src/llmtuner/extras/template.py#L546)


- 推理与解码参数:

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

- 量化:

根据transformers文档中给出的AutoGPTQ量化教程自行量化,或使用我们已经量化好的模型。

使用量化模型推理的示例代码(v0.8与v0.5版本):

```python
from transformers import AutoTokenizer, GenerationConfig
from auto_gptq import AutoGPTQForCausalLM

path = "path/to/your/model"
text = "" #要翻译的文本

generation_config = GenerationConfig.from_pretrained(path)
tokenizer = AutoTokenizer.from_pretrained(path, use_fast=False, trust_remote_code=True)
model = AutoGPTQForCausalLM.from_quantized(path, device="cuda:0", trust_remote_code=True)

response = tokenizer.decode(model.generate(**tokenizer(f"<reserved_106>将下面的日文文本翻译成中文:{text}<reserved_107>", return_tensors="pt").to(model.device), generation_config=generation_config)[0]).replace("</s>", "").split("<reserved_107>")[1]
print(response)
```

# 微调

流程与LLaMA2(v0.1-v0.4)/Baichuan2(v0.5+)/Qwen14B(v0.7)一致,prompt构造参考推理部分

# 后续工作

1. 优化数据集,主要优化数据集质量
2. 支持上下文理解
3. 支持指定专有名词

# 致谢

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

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

- 三日月クリ

- [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)

# Copyright Notice

This model is built upon Meta's LLaMA series of models and is subject to Meta's licensing agreement.

This model is intended for use only by individuals who have obtained approval from Meta and are eligible to download LLaMA.

If you have not obtained approval from Meta, you must visit the https://ai.meta.com/llama/ page, read and agree to the model's licensing agreement, submit an application, and wait for approval from Meta before downloading the model from this page.