TQT-s 1.0 是专门为强化学习训练过程所做的前置数据准备,又是针对前置数据准备开发的一套本地知识库积累系统。在本地知识库之上使用了自训练的强学学习模型DeepSeek-rl-Qwen2.5-0.5B作为本地知识库的专精推理模型,用于智能AI的高效回答。
对于强学学习模型的产生过程,具体可参考下面的示例:
一、本地训练 基本参数
训练数据:gsm8k-chinese
Base模型:Qwen2.5-0.5B-Instruct微调模型
配置:RTX-3090(CUDA驱动版本:12.6)
Conda: Python 3.9.21, PIP依赖如下:
pip freeze > requirements.txt
absl-py==2.1.0
accelerate==1.3.0
aiohappyeyeballs==2.4.6
aiohttp==3.11.12
aiosignal==1.3.2
annotated-types==0.7.0
anyio==4.8.0
argon2-cffi==23.1.0
argon2-cffi-bindings==21.2.0
arrow==1.3.0
asttokens==3.0.0
async-lru==2.0.4
async-timeout==5.0.1
attrs==25.1.0
babel==2.17.0
beautifulsoup4==4.13.3
bleach==6.2.0
blinker==1.9.0
certifi==2025.1.31
cffi==1.17.1
charset-normalizer==3.4.1
click==8.1.8
colorama==0.4.6
comm==0.2.2
comtypes==1.4.9
contourpy==1.3.0
cycler==0.12.1
datasets==3.2.0
debugpy==1.8.12
decorator==5.1.1
defusedxml==0.7.1
dill==0.3.8
exceptiongroup==1.2.2
executing==2.2.0
fastjsonschema==2.21.1
filelock==3.17.0
Flask==3.1.0
Flask-Cors==5.0.0
fonttools==4.55.8
fqdn==1.5.1
frozenlist==1.5.0
fsspec==2024.9.0
grpcio==1.70.0
h11==0.14.0
httpcore==1.0.7
httpx==0.28.1
huggingface-hub==0.28.1
idna==3.10
importlib_metadata==8.6.1
importlib_resources==6.5.2
ipykernel==6.29.5
ipython==8.18.1
ipywidgets==8.1.5
isoduration==20.11.0
itsdangerous==2.2.0
jedi==0.19.2
Jinja2==3.1.5
json5==0.10.0
jsonpointer==3.0.0
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
jupyter==1.1.1
jupyter-console==6.6.3
jupyter-events==0.12.0
jupyter-lsp==2.2.5
jupyter_client==8.6.3
jupyter_core==5.7.2
jupyter_server==2.15.0
jupyter_server_terminals==0.5.3
jupyterlab==4.3.5
jupyterlab_pygments==0.3.0
jupyterlab_server==2.27.3
jupyterlab_widgets==3.0.13
kiwisolver==1.4.7
lxml==5.3.0
Markdown==3.7
markdown-it-py==3.0.0
MarkupSafe==3.0.2
matplotlib==3.9.4
matplotlib-inline==0.1.7
mdurl==0.1.2
mistune==3.1.1
mpmath==1.3.0
multidict==6.1.0
multiprocess==0.70.16
nbclient==0.10.2
nbconvert==7.16.6
nbformat==5.10.4
nest-asyncio==1.6.0
networkx==3.2.1
notebook==7.3.2
notebook_shim==0.2.4
numpy==2.0.2
ollama==0.4.7
opencv-python==4.11.0.86
overrides==7.7.0
packaging==24.2
pandas==2.2.3
pandocfilters==1.5.1
parso==0.8.4
peft==0.14.0
pillow==11.1.0
platformdirs==4.3.6
prometheus_client==0.21.1
prompt_toolkit==3.0.50
propcache==0.2.1
protobuf==5.29.3
psutil==6.1.1
pure_eval==0.2.3
py-cpuinfo==9.0.0
pyarrow==19.0.0
PyAudio==0.2.14
pycparser==2.22
pydantic==2.10.6
pydantic_core==2.27.2
Pygments==2.19.1
PyMuPDF==1.25.3
pyparsing==3.2.1
PyPDF2==3.0.1
pypiwin32==223
python-dateutil==2.9.0.post0
python-docx==1.1.2
python-json-logger==3.2.1
pyttsx3==2.98
pytz==2025.1
pywin32==308
pywinpty==2.0.15
PyYAML==6.0.2
pyzmq==26.2.1
referencing==0.36.2
regex==2024.11.6
requests==2.32.3
rfc3339-validator==0.1.4
rfc3986-validator==0.1.1
rich==13.9.4
rpds-py==0.22.3
safetensors==0.5.2
scipy==1.13.1
seaborn==0.13.2
Send2Trash==1.8.3
six==1.17.0
sniffio==1.3.1
soupsieve==2.6
srt==3.5.3
stack-data==0.6.3
sympy==1.13.1
tensorboard==2.18.0
tensorboard-data-server==0.7.2
terminado==0.18.1
tinycss2==1.4.0
tkinterdnd2==0.4.2
tokenizers==0.21.0
tomli==2.2.1
torch==2.6.0+cu126
torchaudio==2.6.0+cu126
torchvision==0.21.0+cu126
tornado==6.4.2
tqdm==4.67.1
traitlets==5.14.3
transformers==4.48.3
trl==0.14.0
types-python-dateutil==2.9.0.20241206
typing_extensions==4.12.2
tzdata==2025.1
ultralytics==8.3.72
ultralytics-thop==2.0.14
uri-template==1.3.0
urllib3==2.3.0
vosk==0.3.45
wcwidth==0.2.13
webcolors==24.11.1
webencodings==0.5.1
websocket-client==1.8.0
websockets==14.2
Werkzeug==3.1.3
widgetsnbextension==4.0.13
xxhash==3.5.0
yarl==1.18.3
zipp==3.21.0
训练参数:下载链接文末自取
training_args = GRPOConfig(
output_dir=output_dir,
learning_rate=5e-6,
adam_beta1=0.9,
adam_beta2=0.99,
weight_decay=0.1,
warmup_ratio=0.1,
lr_scheduler_type='cosine',
logging_steps=1,
bf16=True,
per_device_train_batch_size=1,
gradient_accumulation_steps=4,
num_generations=16,
max_prompt_length=256,
max_completion_length=200,
num_train_epochs=1,
save_steps=100,
max_grad_norm=0.1,
log_on_each_node=False,
use_vllm=False,
report_to="tensorboard"
)
二、效果对比
训练8个小时,每100个epoch保存一次模型。总共10个生成模型。采用强化学习方式,效果从第200epoch以后,慢慢变差。因此测试模型采用第200个epoch的生成来做推理,主要考下面两个基本问题:
1. 树下一只猴,树上骑个猴,请问一共几只猴?
2. 如果A=3, B=4,请问A和B能不能构成一个直角三角形?第三边长是多少?
2.1 本地Ollama部署Qwen2.5:0.5B推理结果
2.2 经强化学习训练后的推理结果
对比结果来看,经过强化学习后的答案输出:
1. 开始往系统提示词<think><answer>的输出格式上靠
2. 开始对结果展现多维的思考输出,譬如:第二题不仅输出正确答案,还知道是直锐角三角形
虽然直角三角形另外两个角不是锐角那能是个啥?有点儿相当于说废话; 但对于AI而言,推理出错误答案的表现那真可谓是千奇百怪,因此输出正确答案的同时,还能保持住语境前后逻辑的一致性,这仍旧应该算是逻辑推理过程不输的结果。
总结下:0.5B的效果还是比较弱,我们可以换3B的模型试试强化学习,同时改进一下奖励函数。奖励函数的好坏直接决定强化学习模型是否足够优秀,这个也是最难的地方。因为:
1. 一开始你并没有足够的经验来确定“奖励函数”中的分值权重
2. 一开始你也并不知道奖励函数,应该囊括哪些方面,并进行约束。相互之间有多大的影响。
这可能就是DeepSeek强化学习理论中最精彩、最核心、最值得学习研究的部分吧!
三、代码及训练模型自取地址
Base模型下载地址:https://www.modelscope.cn/models/Qwen/Qwen2.5-0.5B-Instruct/files
训练数据源地址:https://hf-mirror.com/datasets/swulling/gsm8k_chinese
训练代码/模型 一键整合包下载地址:
链接:https://pan.quark.cn/s/2d72c7bdcdd5
提取码:vnUi