From 95d22fc8c215c71cc299e9918865465035b0db19 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Tue, 9 Jun 2026 11:54:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: Murasaki-Project/Murasaki-8B-v0.2 Source: Original Platform --- .gitattributes | 36 +++++++ Murasaki-8B-v0.2-f16.gguf | 3 + README.md | 200 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 239 insertions(+) create mode 100644 .gitattributes create mode 100644 Murasaki-8B-v0.2-f16.gguf create mode 100644 README.md diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6990217 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,36 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text +Murasaki-8B-v0.2-f16.gguf filter=lfs diff=lfs merge=lfs -text diff --git a/Murasaki-8B-v0.2-f16.gguf b/Murasaki-8B-v0.2-f16.gguf new file mode 100644 index 0000000..e3473e5 --- /dev/null +++ b/Murasaki-8B-v0.2-f16.gguf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c7740c063f947a37e15920d97f7fb2e46231f9dad0030bfe6fbaf40cc7fa30a5 +size 16388043520 diff --git a/README.md b/README.md new file mode 100644 index 0000000..b39fb2e --- /dev/null +++ b/README.md @@ -0,0 +1,200 @@ +--- +language: +- ja +- zh +license: cc-by-nc-sa-4.0 +tags: +- translation +- light-novel +- galgame +- anime-subtitles +- cot +- system-2 +- text-generation-inference +- transformers +- pytorch + +pipeline_tag: text-generation +--- +
+ +Murasaki Logo + +

Murasaki-8B-v0.2

+ +**System 2 Reasoning Model for ACGN Translation**
+**原生 CoT 思维链 · 长上下文 · ACGN 领域特化翻译模型** + +[Github](https://github.com/soundstarrain/Murasaki-project) | [Benchmark](https://github.com/soundstarrain/Murasaki-benchmark) | [GGUF Version](https://huggingface.co/Murasaki-Project/Murasaki-8B-v0.2-GGUF) | [License: CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/) + +
+ +--- + +## 更新日志 (v0.2) + +**Murasaki-8B-v0.2** 是在 v0.1 基础上的重大迭代版本,核心改进如下: + +1. **训练数据量提升**:训练数据集扩充至 v0.1 的 **3倍以上**。 +2. **领域覆盖增强**:针对性补充了 **30%** 的动画字幕和 Galgame 脚本数据,显著增强了模型对对话流、口语化文本以及无主语场景的理解能力。 +3. **多模式支持**:针对不同翻译场景,训练了三种(轻小说、剧本、短句)CoT思维方式,用户可通过切换 System Prompt 激活对应的翻译模式。 + +--- + +## 简介 + +**Murasaki-8B** 是专为 ACGN 领域(轻小说、Galgame、漫画等)优化的 System 2 推理型翻译模型。 + +不同于传统的直觉式(System 1)模型,Murasaki-8B 引入了原生 **Chain-of-Thought (CoT)** 思维链技术。在生成译文前,模型会先在 `` 标签内完成风格定调、动作流解析、人设推导及人称确认。这种机制显著提升了长难句的解析精度与叙事连贯性,**特别是精准解决了 ACGN 翻译中常见的施动者/受动者判定模糊、人称混淆及语境风格漂移等难点**。 + +> **✨ Now Live:** 无需下载模型,点击 **[Online Demo](https://huggingface.co/spaces/Murasaki-Project/online-demo)** 在线体验模型。 + +--- + +## 🚀 Prompt 模板与模式选择 (重要) + +本模型支持三种特定的翻译模式。为了获得最佳效果,**请务必根据翻译内容使用对应的 System Prompt**。 + +### 1. 轻小说模式 (Novel Mode) +* **适用场景**:轻小说正文、Web 小说、注重文学性的长文本。 + +```python +# 无术语表版本 +NOVEL_SYSTEM_PROMPT = """你是一位精通二次元文化的资深轻小说翻译家。 +请将日文文本翻译成流畅、优美的中文。 + +**核心要求:** +1. **深度思考:** 在翻译前,先在 标签中分析文风、补全主语并梳理逻辑。 +2. **信达雅:** 译文需符合中文轻小说阅读习惯,还原原作的沉浸感与文学性。""" + +# 带术语表版本 (推荐) +NOVEL_SYSTEM_PROMPT_WITH_GLOSSARY = """你是一位精通二次元文化的资深轻小说翻译家。 +请将日文文本翻译成流畅、优美的中文。 + +**核心要求:** +1. **深度思考:** 在翻译前,先在 标签中分析文风、补全主语并梳理逻辑。 +2. **信达雅:** 译文需符合中文轻小说阅读习惯,还原原作的沉浸感与文学性。 + +【术语表】 +{glossary}""" +``` + +### 2. 剧本模式 (Script Mode) +* **适用场景**:Galgame 脚本、动画字幕、漫画对话、RPG游戏文本。 + +```python +SCRIPT_SYSTEM_PROMPT = """你是一位专注于 Galgame 与动漫台词的本地化专家。 +请将剧本/台词翻译为地道的中文口语。 + +**核心要求:** +1. **角色还原:** 结合语境分析说话人的性格(如傲娇、腹黑),精准还原语气与口癖。 +2. **拒绝翻译腔:** 译文必须自然生动,符合"能被读出来的台词"标准。""" + +# 带术语表版本同轻小说末尾格式 +``` + +### 3. 单句模式 (Short Mode) +* **适用场景**:UI 界面文本、系统提示、无上下文的独立短句、技能名。 +* +```python +SHORT_SYSTEM_PROMPT = """你是一个严谨的 ACGN 短句翻译引擎。 +请对输入的日文短句进行精准直译。 + +**核心要求:** +1. **零上下文:** 严禁脑补不存在的背景或主语。指代不明时保持模糊。 +2. **精准还原:** 忠实保留原文的结构与信息量,不进行过度润色。""" + +# 带术语表版本同轻小说末尾格式 + +``` + +## 快速开始 (Python / Transformers) + +> ⚠️ 如果您寻找适合本地部署的 **GGUF (llama.cpp)** 量化版,请前往:[**Murasaki-8B-v0.2-GGUF**](https://huggingface.co/Murasaki-Project/Murasaki-8B-v0.2-GGUF) + +### 推荐推理前端 +为了获得最佳的翻译体验(并自动应用上述三种模式),推荐使用我们配套开发的开源 GUI: +👉 **[Murasaki Translator (GitHub)](https://github.com/soundstarrain/Murasaki-Translator)** + +### Python 代码示例 +以下代码展示了如何使用 **轻小说模式 + 术语表** 进行推理: + +```python +from transformers import AutoModelForCausalLM, AutoTokenizer +import torch + +model_name = "Murasaki-Project/Murasaki-8B-v0.2" +tokenizer = AutoTokenizer.from_pretrained(model_name) +model = AutoModelForCausalLM.from_pretrained( + model_name, + device_map="auto", + torch_dtype=torch.bfloat16 +) + +# 1. 定义 Prompt 模板 (此处以轻小说模式为例) +NOVEL_SYSTEM_PROMPT_WITH_GLOSSARY = """你是一位精通二次元文化的资深轻小说翻译家。 +请将日文文本翻译成流畅、优美的中文。 + +**核心要求:** +1. **深度思考:** 在翻译前,先在 标签中分析文风、补全主语并梳理逻辑。 +2. **信达雅:** 译文需符合中文轻小说阅读习惯,还原原作的沉浸感与文学性。 + +【术语表】 +{glossary}""" + +USER_PROMPT_TEMPLATE = "请翻译:\n{jp}" + +# 2. 准备数据 +glossary_dict = {"レールガン": "超电磁炮", "妹": "妹妹"} +glossary_str = "\n".join([f"{k}: {v}" for k, v in glossary_dict.items()]) +jp_text = "「お兄ちゃん、私のレールガンを見て!」" + +# 3. 构造完整 Prompt +system_content = NOVEL_SYSTEM_PROMPT_WITH_GLOSSARY.format(glossary=glossary_str) +user_content = USER_PROMPT_TEMPLATE.format(jp=jp_text) + +messages = [ + {"role": "system", "content": system_content}, + {"role": "user", "content": user_content} +] + +# 4. 推理 +text = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True) +model_inputs = tokenizer([text], return_tensors="pt").to(model.device) + +generated_ids = model.generate( + model_inputs.input_ids, + max_new_tokens=2048, + temperature=0.3, + repetition_penalty=1.05 +) + +# 解码 (跳过 prompt 部分) +response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] + +# 分离 思考过程与正文 +if "" in response and "" in response: + thought = response.split("")[0].replace("", "").strip() + translation = response.split("")[1].strip() + print("=== 思考过程 ===\n", thought) + print("\n=== 翻译结果 ===\n", translation) +else: + print(response) +``` + +--- + +## 推理参数建议 + +* **Temperature**: `0.1` - `0.5` (推荐 `0.3`) +* **Repetition Penalty**: 从 `1.0` 开始,如出现复读可增加至 `1.05` - `1.1` +* **Max New Tokens**: 建议 `4096` 或更高 + +--- + +## 协议与致谢 + +- **Base Model**: 特别感谢 [**SakuraLLM**](https://github.com/SakuraLLM/) 提供的优秀 Base 模型。 +- **License**: 软件代码遵循 Apache-2.0 协议,模型权重遵循 [**CC BY-NC-SA 4.0**](https://creativecommons.org/licenses/by-nc-sa/4.0/) 协议,严禁用于任何商业用途。 + +

Copyright © 2026 Murasaki Project

\ No newline at end of file