初始化项目,由ModelHub XC社区提供模型
Model: QingYuYunTu/DongPo Source: Original Platform
This commit is contained in:
36
.gitattributes
vendored
Normal file
36
.gitattributes
vendored
Normal file
@@ -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
|
||||||
|
*.json filter=lfs diff=lfs merge=lfs -text
|
||||||
11
Modelfile
Normal file
11
Modelfile
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# ollama modelfile auto-generated by llamafactory
|
||||||
|
|
||||||
|
FROM .
|
||||||
|
|
||||||
|
TEMPLATE """{{ if .System }}System: {{ .System }}<|im_end|>
|
||||||
|
{{ end }}{{ range .Messages }}{{ if eq .Role "user" }}Human: {{ .Content }}<|im_end|>
|
||||||
|
Assistant:{{ else if eq .Role "assistant" }}{{ .Content }}<|im_end|>
|
||||||
|
{{ end }}{{ end }}"""
|
||||||
|
|
||||||
|
PARAMETER stop "<|im_end|>"
|
||||||
|
PARAMETER num_ctx 4096
|
||||||
210
README.md
Normal file
210
README.md
Normal file
@@ -0,0 +1,210 @@
|
|||||||
|
---
|
||||||
|
license: mit
|
||||||
|
language:
|
||||||
|
- 中文
|
||||||
|
base_model:
|
||||||
|
- Qwen/Qwen3-8B
|
||||||
|
pipeline_tag: text-generation
|
||||||
|
---
|
||||||
|
# DongPo: 基于Qwen3-8B微调的苏东坡角色扮演大模型
|
||||||
|
|
||||||
|
[](https://huggingface.co/QingYuYunTu/DongPo)
|
||||||
|
[](#license)
|
||||||
|
[](#model-overview)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
|
## 🧠 关于基础模型:Qwen3-8B
|
||||||
|
|
||||||
|
**DongPo模型基于通义千问最新一代大语言模型Qwen3-8B进行深度微调**。Qwen3是Qwen系列中的最新一代大型语言模型,提供了一整套密集型和专家混合(MoE)模型。基于广泛的训练,Qwen3在推理、指令执行、代理能力和多语言支持方面取得了突破性进展,具有以下关键特性:
|
||||||
|
|
||||||
|
- **智能模式切换**:在同一模型内无缝切换思考模式(适用于复杂的逻辑推理、数学和编码)和非思考模式(适用于高效的通用对话),确保在各种场景下的最佳性能
|
||||||
|
- **卓越推理能力**:在数学、代码生成和常识逻辑推理方面超越了之前的QwQ(在思考模式下)和Qwen2.5指令模型(在非思考模式下)
|
||||||
|
- **高度对齐人类偏好**:在创意写作、角色扮演、多轮对话和指令执行方面表现出色,提供了更自然、吸引人和沉浸式的对话体验
|
||||||
|
- **强大的代理能力**:能够在思考和非思考模式下精确集成外部工具,并在复杂的基于代理的任务中达到开源模型中的领先性能
|
||||||
|
- **全面多语言支持**:支持100多种语言和方言,具有强大的多语言指令执行和翻译能力
|
||||||
|
|
||||||
|
### Qwen3-8B 模型概述
|
||||||
|
- **类型**:因果语言模型
|
||||||
|
- **训练阶段**:预训练和后训练
|
||||||
|
- **参数数量**:82亿
|
||||||
|
- **非嵌入参数数量**:69.5亿
|
||||||
|
- **层数**:36
|
||||||
|
- **注意力头数(GQA)**:Q为32个,KV为8个
|
||||||
|
- **上下文长度**:原生32,768和使用YaRN的131,072个令牌
|
||||||
|
|
||||||
|
> 📌 **为什么选择Qwen3-8B作为基础**:其卓越的角色扮演能力和高度对齐的人类偏好特性,为历史人物角色扮演提供了理想基础架构。我们在此强大基础上,通过专业数据集微调,创造出真正沉浸式的苏东坡对话体验。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📖 DongPo 模型介绍
|
||||||
|
|
||||||
|
**DongPo** 是一个专为模拟北宋文豪苏东坡(苏轼)而设计的角色扮演大语言模型。本模型基于 **Qwen3-8B** 基础模型进行深度微调,通过精心构建的2万余条历史数据集,全面捕捉苏东坡的诗词创作、人生经历、哲学思想与文化影响。模型严格遵循历史背景——**苏东坡对现代事物一无所知**,当被问及后世概念时,会以符合其时代认知的方式回应(如困惑、引用古语或表示未闻此事),为您带来沉浸式的历史对话体验。
|
||||||
|
|
||||||
|
> 🌟 **一句话简介**:与千年前的文豪苏东坡"对话",谈诗论道、共赏山水,却不知智能手机为何物——打造真实感的历史角色扮演!
|
||||||
|
|
||||||
|
|
||||||
|

|
||||||
|
## ✅ 开箱即用:真正的"默认苏东坡"体验
|
||||||
|
|
||||||
|
与普通角色模型不同,**DongPo已将角色设定固化到模型权重中**,这意味着:
|
||||||
|
- 🌟 **无需任何系统提示词**:直接提问即可获得苏东坡风格回应
|
||||||
|
- 🌟 **自动维持角色一致性**:即使多轮对话也不会"掉马"
|
||||||
|
- 🌟 **天然具备历史认知边界**:对现代事物自然表现出困惑
|
||||||
|
|
||||||
|
> 💡 **技术原理**:我们在Qwen3-8B基础上,采用**角色锚定技术**进行微调,将2万+条"苏东坡第一人称"数据作为训练目标,使模型内部表征完全对齐历史人物。
|
||||||
|
|
||||||
|
## 📚 数据集详情
|
||||||
|
本模型使用自建数据集,覆盖苏东坡生平 **6大核心维度**,确保角色塑造的深度与广度。所有数据均经过历史学者风格校验,力求还原真实苏东坡:
|
||||||
|
|
||||||
|
| **类别** | **覆盖内容** | **示例条目** |
|
||||||
|
|----------|--------------|--------------|
|
||||||
|
| **诗词作品** | 27类主题创作 | 黄州时期词、思乡诗、山水词、贬谪心情诗、饮酒词、月夜词等 |
|
||||||
|
| **个人经历** | 18类生活场景 | 黄州贬谪生活、杭州治水经历、与佛印禅师交往、东坡肉发明故事等 |
|
||||||
|
| **思想哲学** | 20类精神内核 | 人生无常观、自然敬畏、名利超脱、生死豁达、为官准则等 |
|
||||||
|
| **文化影响** | 17类历史贡献 | 茶文化推广、书法绘画革新、园林艺术、民俗记录、贬谪文化转变等 |
|
||||||
|
| **时代认知边界** | 专项设计 | 对现代事物的"无知"反应(如问及汽车、手机时生成符合宋代认知的困惑回应) |
|
||||||
|
| **语言风格** | 文言与白话融合 | 70%白话口语 + 30%文言典故 |
|
||||||
|
|
||||||
|
|
||||||
|
> 💡 **关键设计**:模型被明确训练为"不知现代事"。例如:
|
||||||
|
> **用户问**:”东坡先生,您用过智能手机吗?“
|
||||||
|
> **模型答**:”智能手机?此物吾生平未闻。昔日在儋州,唯以竹简记事、驿马传书,何来掌中奇器?莫非是海外番邦之物?“
|
||||||
|
> 这种设定避免了历史角色扮演中常见的"穿越"问题,极大提升沉浸感。
|
||||||
|
|
||||||
|
## ⚙️ 如何使用(与Qwen3-8B完全兼容)
|
||||||
|
|
||||||
|
### 方法一:ModelScope 简洁调用(推荐)
|
||||||
|
```python
|
||||||
|
from modelscope import AutoModelForCausalLM, AutoTokenizer
|
||||||
|
|
||||||
|
model = AutoModelForCausalLM.from_pretrained(
|
||||||
|
"QingYuYunTu/DongPo",
|
||||||
|
device_map="auto",
|
||||||
|
trust_remote_code=True
|
||||||
|
)
|
||||||
|
tokenizer = AutoTokenizer.from_pretrained("QingYuYunTu/DongPo", trust_remote_code=True)
|
||||||
|
|
||||||
|
# 直接提问!无需任何角色设定
|
||||||
|
response, _ = model.chat(
|
||||||
|
tokenizer,
|
||||||
|
"先生在黄州时最爱吃何种食物?", # 纯自然提问
|
||||||
|
history=[] # 多轮对话时自动维持角色
|
||||||
|
)
|
||||||
|
print(response)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 预期输出(真实苏东坡风格):
|
||||||
|
```
|
||||||
|
(抚须而笑)黄州虽苦,然老夫自得其乐。尝于东坡开荒种麦,又创"东坡肉"之法:慢着火,少着水,火候足时他自美。此物配以雪堂新酿,佐以春笋秋菘,虽玉食珍馐不过如此!
|
||||||
|
```
|
||||||
|
|
||||||
|
### 方法二:Hugging Face Transformers 极简调用
|
||||||
|
```python
|
||||||
|
from transformers import pipeline
|
||||||
|
|
||||||
|
# 一行代码启动苏东坡
|
||||||
|
dongpo = pipeline(
|
||||||
|
"text-generation",
|
||||||
|
"QingYuYunTu/DongPo",
|
||||||
|
device_map="auto",
|
||||||
|
torch_dtype="auto"
|
||||||
|
)
|
||||||
|
|
||||||
|
# 直接对话
|
||||||
|
print(dongpo(
|
||||||
|
"明月几时有?把酒问青天,此词作于何时?",
|
||||||
|
max_new_tokens=150,
|
||||||
|
do_sample=True,
|
||||||
|
temperature=0.6
|
||||||
|
)[0]['generated_text'])
|
||||||
|
```
|
||||||
|
|
||||||
|
### 预期输出:
|
||||||
|
```
|
||||||
|
明月几时有?把酒问青天,此词作于何时?
|
||||||
|
(举杯遥望)此乃丙辰中秋,欢饮达旦,大醉后作于密州超然台。时与子由别七年矣,对月怀人,遂有"但愿人长久,千里共婵娟"之叹。老夫醉后题壁,次日醒来看之,墨迹犹新,不觉莞尔。
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 🌰 真实调用效果示例
|
||||||
|
|
||||||
|
### 场景:询问现代事物
|
||||||
|
```python
|
||||||
|
# 直接问现代概念(无需任何修饰)
|
||||||
|
print(dongpo("智能手机是什么?", max_new_tokens=100)[0]['generated_text'])
|
||||||
|
```
|
||||||
|
|
||||||
|
**输出**:
|
||||||
|
```
|
||||||
|
智能手机是什么?
|
||||||
|
(困惑摇头)此物老夫未尝闻也。昔在儋州,唯以竹简传书,驿马报信。莫非是鲁班所创机关?然"智能"二字连用,似海外奇谈,恐非中土之物。
|
||||||
|
```
|
||||||
|
|
||||||
|
### 场景:诗词创作背景
|
||||||
|
```python
|
||||||
|
print(dongpo("念奴娇·赤壁怀古作于何时?", max_new_tokens=150)[0]['generated_text'])
|
||||||
|
```
|
||||||
|
|
||||||
|
**输出**:
|
||||||
|
```
|
||||||
|
念奴娇·赤壁怀古作于何时?
|
||||||
|
(展卷沉吟)元丰五年秋,老夫谪居黄州。偶至赤鼻矶,见乱石穿空,惊涛拍岸,忆周郎破曹旧事,遂有"大江东去"之句。当时与客泛舟江上,酒酣耳热,援笔立就,墨染蓑衣而不觉也。
|
||||||
|
```
|
||||||
|
|
||||||
|
### 场景:多轮对话测试
|
||||||
|
```python
|
||||||
|
history = []
|
||||||
|
for q in [
|
||||||
|
"先生为何号东坡?",
|
||||||
|
"可曾后悔贬谪黄州?",
|
||||||
|
"若能重来,可愿不同?"
|
||||||
|
]:
|
||||||
|
response, history = model.chat(tokenizer, q, history=history)
|
||||||
|
print(f"\n问:{q}\n答:{response}")
|
||||||
|
```
|
||||||
|
|
||||||
|
**输出**:
|
||||||
|
```
|
||||||
|
问:先生为何号东坡?
|
||||||
|
答:(指窗外)此黄州城东坡地三亩,老夫躬耕其中,故自号"东坡居士"。虽劳筋骨,然得享"晨兴理荒秽,带月荷锄归"之趣,岂不快哉!
|
||||||
|
|
||||||
|
问:可曾后悔贬谪黄州?
|
||||||
|
答:(大笑)九死南荒吾不恨,兹游奇绝冠平生!黄州于我,乃重生之地。雪堂夜雨,赤壁清风,皆天地馈赠。若无此谪,安得"一蓑烟雨任平生"之悟?
|
||||||
|
|
||||||
|
问:若能重来,可愿不同?
|
||||||
|
答:(凝望江水)人生如逆旅,我亦是行人。若重来...(忽展笑颜)仍当持节云中,射天狼!然或可少饮两杯,免得夜游赤壁时,误将石钟山认作月宫耳!
|
||||||
|
```
|
||||||
|
|
||||||
|
## ⚠️ 限制与注意事项
|
||||||
|
- **历史准确性边界**:模型基于公开史料训练,但苏东坡部分轶事存在学术争议(如"东坡肉"起源),生成内容仅供参考,**不替代专业历史研究**。
|
||||||
|
- **现代无知设定**:这是**刻意设计**而非缺陷!若需讨论现代话题,请切换至通用模型。
|
||||||
|
- **语言局限**:仅支持中文,且文言比例控制在合理范围(避免过度晦涩)。
|
||||||
|
- **幻觉风险**:极少数情况下可能混合类似文人(如欧阳修)的细节,建议核对《苏轼全集》。
|
||||||
|
- **性能要求**:8B参数模型需至少16GB GPU显存(建议RTX 3090及以上)。
|
||||||
|
|
||||||
|
## 📜 许可证
|
||||||
|
本模型采用 **[license: MIT 许可证](LICENSE)** 开源:
|
||||||
|
- 允许免费商用、修改、分发
|
||||||
|
- 需保留原始版权声明
|
||||||
|
- **不提供历史事实担保**,使用者需自行验证内容准确性
|
||||||
|
|
||||||
|
> 📌 重要提示:模型生成内容属于**历史角色扮演创作**,不代表对苏东坡的真实还原。请勿用于严肃历史研究或教育场景,除非经过专业史学审核。
|
||||||
|
|
||||||
|
## 🙏 致谢
|
||||||
|
- **基础模型**:感谢 [Qwen 团队](https://qwenlm.github.io/) 开源强大的 Qwen3-8B
|
||||||
|
- **数据支持**:参考《苏轼全集校注》、《苏东坡全传》等权威资料、感谢智谱GLM4.5数据清洗支持!
|
||||||
|
- **开源社区**:Hugging Face 平台及 transformers 库开发者
|
||||||
|
- **特别致谢**:所有热爱中华文化的贡献者——正是你们让千年文豪在数字时代"重生"
|
||||||
|
|
||||||
|
## 🌱 贡献指南
|
||||||
|
欢迎共建更真实的苏东坡AI!
|
||||||
|
- **报告问题**:通过 [Hugging Face Issues](https://huggingface.co/QingYuYunTu/DongPo/discussions) 提交历史细节错误
|
||||||
|
- **性能优化**:欢迎提交量化/蒸馏方案(如 GGUF 格式适配)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> **"问汝平生功业,黄州惠州儋州。"** —— 本模型愿做数字时代的"雪堂",邀您共话东坡风月。
|
||||||
|
> **模型直达** 👉 [https://huggingface.co/QingYuYunTu/DongPo](https://huggingface.co/QingYuYunTu/DongPo)
|
||||||
|
> **作者**:QingYuYunTu · 2025年8月 ·
|
||||||
3
added_tokens.json
Normal file
3
added_tokens.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:c0284b582e14987fbd3d5a2cb2bd139084371ed9acbae488829a1c900833c680
|
||||||
|
size 707
|
||||||
4
chat_template.jinja
Normal file
4
chat_template.jinja
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ 'System: ' + system_message + '<|im_end|>' + '
|
||||||
|
' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ 'Human: ' + content + '<|im_end|>' + '
|
||||||
|
Assistant:' }}{% elif message['role'] == 'assistant' %}{{ content + '<|im_end|>' + '
|
||||||
|
' }}{% endif %}{% endfor %}
|
||||||
3
config.json
Normal file
3
config.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:cacd6f61d28089193ad5651daab1a4cf9e8814da26364cd3d20825120f1ce92d
|
||||||
|
size 1544
|
||||||
3
generation_config.json
Normal file
3
generation_config.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:822104c6c325c580624bf4410dc001323325e01aaaa757af3870a5efe31c4ffa
|
||||||
|
size 214
|
||||||
151388
merges.txt
Normal file
151388
merges.txt
Normal file
File diff suppressed because it is too large
Load Diff
3
model-00001-of-00004.safetensors
Normal file
3
model-00001-of-00004.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:4048ce18d0e30ad9e72912291f12d8fb55e80038254da9df3ee740d92a1b065b
|
||||||
|
size 4902257696
|
||||||
3
model-00002-of-00004.safetensors
Normal file
3
model-00002-of-00004.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:948ea96f989ba5dd6d7c7fc7bc1064e3d8aab7b8abafdf69683644e40cd8ce68
|
||||||
|
size 4915960368
|
||||||
3
model-00003-of-00004.safetensors
Normal file
3
model-00003-of-00004.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:cf508e3df60be0fcc8903c9d7679f0027eae03e181b56e8c7468e207faa511bf
|
||||||
|
size 4983068496
|
||||||
3
model-00004-of-00004.safetensors
Normal file
3
model-00004-of-00004.safetensors
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:dfd30e6021125446d1e0dd91a2f9d0b970f0976a55d0e2dfd1f83998f952464e
|
||||||
|
size 1580230264
|
||||||
3
model.safetensors.index.json
Normal file
3
model.safetensors.index.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:e7e4bdc58d3302c97357f27979b270987dd620cf0cd9b1c130e3a51c9d64df95
|
||||||
|
size 32914
|
||||||
BIN
special_tokens_map.json
(Stored with Git LFS)
Normal file
BIN
special_tokens_map.json
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
tokenizer.json
(Stored with Git LFS)
Normal file
BIN
tokenizer.json
(Stored with Git LFS)
Normal file
Binary file not shown.
3
tokenizer_config.json
Normal file
3
tokenizer_config.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:ffe7b045351d007df591529681cad1b162859afaa83abc082da65c7e8eb994da
|
||||||
|
size 5430
|
||||||
BIN
vocab.json
(Stored with Git LFS)
Normal file
BIN
vocab.json
(Stored with Git LFS)
Normal file
Binary file not shown.
Reference in New Issue
Block a user