TTDXQ commited on
Commit
cabd632
·
1 Parent(s): 6df4ac4

docs: 更新模型卡,补充完整模型说明与评测结果

Browse files

- 保留原有 YAML 元数据(license, datasets, language, base_model, tags)
- 补充完整的模型描述、使用方法、评测结果
- 添加 GitHub 和 Hugging Face 仓库链接
- 添加完整的训练信息和数据处理说明
- 中英双语版本

Files changed (1) hide show
  1. README.md +243 -1
README.md CHANGED
@@ -6,4 +6,246 @@ language:
6
  - zh
7
  base_model:
8
  - unsloth/Qwen3-4B-Instruct-2507
9
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
6
  - zh
7
  base_model:
8
  - unsloth/Qwen3-4B-Instruct-2507
9
+ tags:
10
+ - riichi-mahjong
11
+ - game-ai
12
+ - qwen
13
+ - qwen3
14
+ - mahjong
15
+ - discard-recommendation
16
+ - gguf
17
+ pipeline_tag: text-generation
18
+ ---
19
+
20
+ # Qwen3-4B-Instruct-2507-mahjong-alpha
21
+
22
+ `Qwen3-4B-Instruct-2507-mahjong-alpha` 是一个基于 `unsloth/Qwen3-4B-Instruct-2507` 进行 QLoRA 微调的立直麻将垂直模型,面向四麻弃牌建议任务。
23
+
24
+ 模型可根据输入的场次信息、手牌、副露、牌河、牌效与防守信息,输出当前最应打出的一张牌。
25
+
26
+ 当前版本主要面向工具集成场景,推理输出为单张牌文本,不包含解释信息。
27
+
28
+ ## 模型特点
29
+
30
+ - **任务**:四麻立直麻将弃牌建议
31
+ - **基座模型**:`unsloth/Qwen3-4B-Instruct-2507`
32
+ - **微调方式**:`QLoRA`
33
+ - **训练框架**:`Unsloth`
34
+ - **发布格式**:`GGUF (F16)`
35
+ - **推理方式**:`llama.cpp`
36
+ - **维护者**:`TTDXQ`
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
+ ```text
66
+ [情景分析]
67
+ - 牌局: 东一局,你是庄家 (第1巡,牌墙余69张)。
68
+ - 状态: 当前排名 1/4 (与一位差 0)。
69
+ - 宝牌: 5万
70
+ - 各玩家分数: 你有 25分, 下家: 25分, 对家: 25分, 上家: 25分。
71
+ - 你的手牌: 1万 5万 7万 3筒 5筒 6筒 8筒 8筒 3索 5索 8索 南 白 发
72
+ - 牌效: 5 向听,进张 82 张。
73
+ - 防御:
74
+ 最安全牌放铳率:11.3%
75
+ 平均放铳率:18.5%
76
+ 最危险牌放铳率:25.9%
77
+ 场上已见牌信息
78
+ 各玩家副露信息:本家副露:无, 下家副露:无, 对家副露:无, 上家副露:无
79
+ 各玩家牌河信息:本家:无, 下家:无, 对家:无, 上家:无
80
+
81
+ [任务]
82
+ 根据当前情景,选择一张最应该打出的手牌。
83
+ ```
84
+
85
+ ### 输出格式
86
+
87
+ 模型输出严格为"单张牌文本",不带"打"字,不带解释。例如:
88
+
89
+ ```text
90
+
91
+ ```
92
+
93
+ ## 使用方法
94
+
95
+ ### llama.cpp 推理
96
+
97
+ ```bash
98
+ llama-server -m Qwen3-4B-Instruct-2507-mahjong-alpha.gguf -c 2048
99
+ ```
100
+
101
+ ### Python 推理示例
102
+
103
+ ```python
104
+ from transformers import AutoModelForCausalLM, AutoTokenizer
105
+
106
+ model = AutoModelForCausalLM.from_pretrained(
107
+ "TTDXQ/Qwen3-4B-Instruct-2507-mahjong-alpha"
108
+ )
109
+ tokenizer = AutoTokenizer.from_pretrained(
110
+ "TTDXQ/Qwen3-4B-Instruct-2507-mahjong-alpha"
111
+ )
112
+
113
+ # 准备输入
114
+ input_text = "[情景分析]\n- 牌局: 东一局,你是庄家 (第1巡,牌墙余69张)。\n..."
115
+
116
+ # 推理
117
+ inputs = tokenizer(input_text, return_tensors="pt")
118
+ outputs = model.generate(**inputs, max_new_tokens=10)
119
+ result = tokenizer.decode(outputs[0], skip_special_tokens=True)
120
+ print(result) # 输出: 白
121
+ ```
122
+
123
+ ## 数据集
124
+
125
+ 训练数据使用 `pjura/mahjong_board_states` 的 2018 年部分数据。该数据集来源于天风麻将的游玩记录,每条数据包含 511 个数据点,涵盖游戏基础信息、宝牌指示牌、视角玩家手牌、玩家副露、牌河信息、玩家舍牌、弃牌决策等。
126
+
127
+ ### 数据处理
128
+
129
+ 将原始数据转换为便于阅读的自然语言描述形式,并根据数据计算出巡目数、实际宝牌、简易放铳参考等信息。根据巡目调整样本比例:
130
+
131
+ - 1~3 巡:15%
132
+ - 4~6 巡:20%
133
+ - 7~12 巡:35%
134
+
135
+ 最终使用 `192000` 条样本,未混入通用指令数据或自建数据。
136
+
137
+ - 训练集:`192000`
138
+ - 验证集:`2000`
139
+ - 测试集:`2019 年数据按需抽取`
140
+ - 训练 / 验证 / 测试:完全互不重叠
141
+
142
+ ### 数据集引用
143
+
144
+ ```bibtex
145
+ @dataset{mahjong_board_states,
146
+ title = {MahJong Board States Dataset},
147
+ author = {Patrick Jura},
148
+ year = {2024},
149
+ url = {https://huggingface.co/datasets/pjura/mahjong_board_states}
150
+ }
151
+ ```
152
+
153
+ ## 训练信息
154
+
155
+ ### 模型配置
156
+ - 基础模型:`unsloth/Qwen3-4B-Instruct-2507`
157
+ - 训练加载精度:`4bit`
158
+ - 微调方式:`QLoRA`
159
+ - 训练框架:`Unsloth`
160
+ - Max sequence length:`2048`
161
+
162
+ ### LoRA 参数
163
+ - Rank:`128`
164
+ - Alpha:`256`
165
+ - 目标模块:全部
166
+
167
+ ### 训练超参数
168
+ - Learning rate:`1e-4`
169
+ - LR scheduler:`cosine`
170
+ - Batch size:`64`
171
+ - 单卡批次:`2`
172
+ - 梯度累积步数:`32`
173
+ - Training steps:`3000`
174
+ - Warmup steps:`300`
175
+ - Random seed:`3407`
176
+ - 加载最优检查点:是
177
+
178
+ ### 训练时间
179
+ - 总时长:约 16.44 小时
180
+
181
+ ## 评测结果
182
+
183
+ ### 与数据库弃牌动作对比
184
+
185
+ 推理参数:Temperature=0.1, Top_P=0.1
186
+
187
+ **评测指标说明**:
188
+ - 得分:满分 500 分(每个样本正确得 1 分,错误得 0 分)
189
+ - 样本全对率:3 次测试均与测试集结��一致的样本占全部样本的比例
190
+ - 样本零分率:3 次测试均与测试集结果不符的样本占全部样本的比例
191
+
192
+ #### 牌效测试
193
+
194
+ | 模型 | 方法 | 得分 | 样本全对率 | 样本零分率 |
195
+ |------|------|------|------------|------------|
196
+ | Qwen3-4B | 提示词工程 | 50.21 | 6.60% | 86.13% |
197
+ | Qwen3-4B | 微调 | 229.66 | 45.87% | 53.93% |
198
+ | DeepSeek-V3.2 | 提示词工程 | 181.66 | 21.40% | 46.33% |
199
+
200
+ #### 防守测试
201
+
202
+ | 模型 | 方法 | 得分 | 样本全对率 | 样本零分率 |
203
+ |------|------|------|------------|------------|
204
+ | Qwen3-4B | 提示词工程 | 53.55 | 6.17% | 84.43% |
205
+ | Qwen3-4B | 微调 | 239.89 | 47.93% | 52.00% |
206
+ | DeepSeek-V3.2 | 提示词工程 | 172.00 | 16.00% | 46.80% |
207
+
208
+ #### 综合测试
209
+
210
+ | 模型 | 方法 | 得分 | 样本全对率 | 样本零分率 |
211
+ |------|------|------|------------|------------|
212
+ | Qwen3-4B | 提示词工程 | 53.44 | 0.60% | 84.40% |
213
+ | Qwen3-4B | 微调 | 233.33 | 46.53% | 53.20% |
214
+ | DeepSeek-V3.2 | 提示词工程 | 179.44 | 18.07% | 44.93% |
215
+
216
+ ### 与 Mortal 对比
217
+
218
+ 推理参数:Temperature=0.6, Top_P=0.95
219
+
220
+ #### 测试1:全部巡目数据
221
+
222
+ - 样本数:3000
223
+ - Top-1 准确率:**50.73%**
224
+ - Top-3 准确率:**83.37%**
225
+
226
+ #### 测试2:去除早巡数据
227
+
228
+ - 有效样本数:3000
229
+ - Top-1 准确率:**48.70%**
230
+ - Top-3 准确率:**79.20%**
231
+
232
+ > 注:Mortal 是当前开源最强的立直麻将 AI 之一
233
+
234
+ ## 仓库链接
235
+
236
+ - GitHub:https://github.com/ttdxq/Qwen3-4B-Instruct-2507-mahjong-alpha
237
+ - Hugging Face:https://huggingface.co/TTDXQ/Qwen3-4B-Instruct-2507-mahjong-alpha
238
+
239
+ ## License
240
+
241
+ 本模型遵循 Apache License 2.0 许可证。
242
+
243
+ 训练数据来自 `pjura/mahjong_board_states`,其许可证为 `CC BY 4.0`,使用时请保留相应署名与引用。
244
+
245
+ ## Acknowledgements
246
+
247
+ 感谢以下开源资源:
248
+
249
+ - `unsloth/Qwen3-4B-Instruct-2507`
250
+ - `pjura/mahjong_board_states`
251
+ - `Mortal`