Chinese Poker GPT
一个从零开始训练的中文语言模型,具备基础的扑克策略问答能力。
模型介绍
本模型完全从零开始训练,不依赖任何预训练权重,记录了一个完整的语言模型训练过程。
| 属性 | 详情 |
|---|---|
| 参数量 | 15.65M |
| 架构 | nanoGPT(Decoder-only Transformer) |
| 词表大小 | 13113 |
| 上下文长度 | 512 tokens |
| 训练硬件 | Apple M4 Pro 48GB |
训练过程
第一阶段:预训练
- 数据:中文维基百科 50000 篇文章
- 步数:100000 steps
- 最终 val loss:2.93
第二阶段:知识蒸馏 + 指令微调
- Teacher 模型:Qwen2.5-72B
- 蒸馏数据:12946 条中文问答(通用 + 扑克策略)
- 步数:6000 steps(在预训练基础上继续)
- 最终 val loss:1.51
使用方法
import pickle
import torch
# 加载词表
with open('meta.pkl', 'rb') as f:
meta = pickle.load(f)
stoi = meta['stoi']
itos = meta['itos']
SPECIAL_TOKENS = ['<|user|>', '<|assistant|>', '<|end|>']
def encode(text):
tokens = []
i = 0
while i < len(text):
matched = False
for special in SPECIAL_TOKENS:
if text[i:i+len(special)] == special:
tokens.append(stoi[special])
i += len(special)
matched = True
break
if not matched:
ch = text[i]
if ch in stoi:
tokens.append(stoi[ch])
i += 1
return tokens
# 推理示例
question = "什么是德州扑克中的位置优势?"
prompt = f"<|user|>{question}<|end|><|assistant|>"
模型输出示例
问: 什么是德州扑克中的位置优势?
答: 在扑克中,位置优势是指玩家在有利位置时的策略优势。
- 信息获取:后位玩家可以观察到前面玩家的行动...
- 控制底池:按钮位置可以根据对手行动调整策略...
局限性
- 参数量较小(15.65M),复杂推理能力有限
- 没有多轮对话能力
- 未经过 RLHF 对齐
训练日志
完整训练过程记录见作者 GitHub(包含所有参数调试细节和 loss 曲线分析)。
作者
训练目的:学习语言模型训练全链路,作为 AI 产品方向的个人项目。
- Downloads last month
- 3
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support