DeepSeek-R1 游戏指令解析微调项目

基于 DeepSeek-R1-Distill-1B 模型微调实现的自然语言游戏指令解析工具,可将如 "封禁账号12345 2小时"类指令自动转换为结构化JSON操作。

🚀 功能特性

  • 多指令支持:封禁/解封/禁言/踢出/查询等游戏管理操作
  • 低资源适配:4-bit量化 + LoRA微调,16GB内存即可运行
  • 多平台部署:支持Kaggle/Colab训练,CPU/GPU推理
  • 即插即用:提供适配器权重,无需重新训练基础模型

📦 快速开始

环境安装

pip install torch transformers peft unsloth accelerate

模型加载

from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel

base_model = "unsloth/DeepSeek-R1-Distill-1B"
adapter_path = "game_assistant_lora"

model = AutoModelForCausalLM.from_pretrained(
    base_model,
    device_map="auto",
    load_in_4bit=True
)
model = PeftModel.from_pretrained(model, adapter_path)
tokenizer = AutoTokenizer.from_pretrained(base_model)

指令解析

def parse_command(command):
    prompt = f"指令: {command}\n响应: "
    inputs = tokenizer(prompt, return_tensors="pt").to("cuda")
    outputs = model.generate(**inputs, max_new_tokens=50)
    return tokenizer.decode(outputs[0], skip_special_tokens=True).split("响应:")[-1]

print(parse_command("封禁账号12345 2小时"))
# 输出: {"action": "ban", "user_id": "12345", "duration": "2h"}

🛠️ 训练配置

Kaggle环境

!pip install unsloth
from unsloth import FastLanguageModel

model, _ = FastLanguageModel.from_pretrained(
    "unsloth/DeepSeek-R1-Distill-1B",
    load_in_4bit=True,
    max_seq_length=1024,
)

LoRA参数

参数 说明
r (秩) 8 低秩矩阵维度
target_modules q_proj, v_proj 适配的注意力层
lora_alpha 16 缩放系数
batch_size 2 T4 GPU适配值

📊 性能指标

环境 速度 显存占用
Kaggle T4 12 samples/sec 10GB
CPU (i7-12700K) 1.2 tokens/sec 8GB

📂 文件结构

project/
├── adapters/
│   ├── adapter_config.json
│   └── adapter_model.bin  # LoRA权重 (仅8MB)
├── train.ipynb            # Kaggle训练 notebook
└── inference.py           # 部署脚本

🌟 最佳实践

  1. 数据增强 :添加更多游戏术语的指令样本
  2. 后处理校验 :用 json.loads()捕获非法输出
  3. 安全防护 :实现用户权限白名单机制