配置Open-R1,评测第三方蒸馏模型的性能2
接上文,本地配置Open-R1,用蒸馏量化版本DeepSeek-R1-distill-Qwen跑AIME2024评测失败了。想了半天,把本地环境全推了不可能,配docker又不太方便。不死心翻了翻最近配的4090机器,发现驱动刚好装了最新的,能够支持CUDA12.4。
还好,失败了没有恼羞成怒的删了env和代码,赶紧打包放到这台机器上,改了几个路径问题,激活环境,调用torch和vllm都可以。
又开始跑测试脚本,第一个是解决离线无法下载模型和数据的事情。模型的话,因为之前介绍提到的,已经下载并测试了一般问题回答,因此,直接传到这个机器,修改模型路径MODEL即可。数据的话,要修改到./src/open-r1/evaluation.py中的LightevalTaskConfig中的hf_repo,改成本地路径就行,后面再看怎么传参数进去。按照repo把数据下回来,改好路径。
再次执行测试脚本,终于还是又出错了,RuntimeError: expected scalar type Half but found BFloat16。
MODEL=deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B
MODEL_ARGS="pretrained=$MODEL,dtype=bfloat16,max_model_length=32768,gpu_memory_utilisation=0.8"
OUTPUT_DIR=data/evals/$MODEL
# AIME 2024
TASK=aime24
lighteval vllm $MODEL_ARGS "custom|$TASK|0|0" \
--custom-tasks src/open_r1/evaluate.py \
--use-chat-template \
--output-dir $OUTPUT_DIR
原来是脚本里面的dtype问题,改成half和float16都行。但是,后面要是跑Q8及其他量化时,那是不是还是默认要转到float16或者bfloat16?那岂不是,只节省了存储,而不节省计算和带宽。要是性能再不好,那真是特别的好处了。
模型 | AIME2024 @1 [6] | MATH500 @1 [7] |
o1-mini [1] | 63.6 | 90.0 |
DeepSeek-R1-671B [1] | 79.8 | 97.3 |
DeepSeek-R1-distill-Qwen-1.5B [1] | 28.9 | 83.9 |
DeepSeek-R1-distill-Qwen-7B [1] | 55.5 | 92.8 |
DeepSeek-R1-distill-Qwen-32B [1] | 72.6 | 94.3 |
Open-R1-1.5B [2] | - | 81.2 |
Open-R1-7B [2] | - | 91.8 |
Open-R1-32B [2] | - | 95.0 |
bartowski/DeepSeek-R1-distill-Qwen-1.5B-f16 * | 23.3 | 68.8 |
bartowski/DeepSeek-R1-distill-Qwen-7B-Q8 * | 53.3 | 92.2 |
bartowski/DeepSeek-R1-distill-Qwen-32B-Q8 * | 70.0 | 95.6 |
表中数据来源,如下文献[1]和[2]。*号是编译Open-R1后,利用bartowski [3][4][5]中的蒸馏量化模型,在AIME2024和MATH500进行测试得到的。对比看,1.5B的性能差距是最大的,不知道是不是f16模型的问题?后面还得再check一遍。7B和32B,相比文[1]中的数据比较接近。后面还得再把DeepSeek自己提供的模型都测试一下。从模型大小看,应该是提供的FP16版本。
因此,整体上看,网络上提供的蒸馏模型还是基本可用的。如果是自己用LM studio跑着完,那1.5B模型就基本够用了。再加上,现在知乎、微信等等都接入了DeepSeek,当然这俩都是做的RAG,利用自己的数据,从回答上能明显看出来。同时,DeepSeek app目前也没有出现服务器忙的现象。
接下来,用LM Studio试试其他模型,比如llava,Mistral,Janus,Qwen2.5/-Instruct/-VL。还可以考虑把加载图片结合上DeepSeek-R1做题,以及图像生成模型。
[1] DeepSeek-AI. DeepSeek_R1_Incentivizing Reasoning Capability in LLMs via Reinforcement Learning. GitHub - deepseek-ai/DeepSeek-R1
[2] https://github.com/huggingface/open-r1
[3] https://huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-1.5B-GGUF
[4] https://huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-7B-GGUF
[5] https://huggingface.co/bartowski/DeepSeek-R1-Distill-Qwen-32B-GGUF
[6] https://huggingface.co/datasets/HuggingFaceH4/aime_2024
[7] HuggingFaceH4/MATH-500 · Datasets at HF Mirror