Commit fe1f89f9 authored by mashun1's avatar mashun1
Browse files

dpsk-r1-distill

parents
FROM image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-ubuntu22.04-dtk24.04.3-py3.10
\ No newline at end of file
# DeepSeek-R1-Distill
## 论文
`DeepSeek-R1`
* https://github.com/deepseek-ai/DeepSeek-R1/blob/main/DeepSeek_R1.pdf
## 模型结构
该算法共有三种模型,分别是LLama3.1,LLama3.3和Qwen2.5,三者都是decoder-only结构。
![alt text](readme_imgs/arch.png)
## 算法原理
DeepSeek-R1-Distill-model基于目前性能较好的开源模型,使用`DeepSeek-R1`生成的高质量数据进行监督微调(SFT)获得。
## 环境配置
### Docker(方法一)
docker pull image.sourcefind.cn:5000/dcu/admin/base/pytorch:2.3.0-ubuntu22.04-dtk24.04.3-py3.10
docker run --shm-size 500g --network=host --name=dpskv3 --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash
pip install https://download.sourcefind.cn:65024/directlink/4/lmslim/DAS1.3/lmslim-0.1.2+das.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl
pip install https://download.sourcefind.cn:65024/directlink/4/vllm/DAS1.3/vllm-0.6.2+das.opt1.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl
### Dockerfile(方法二)
docker build -t <IMAGE_NAME>:<TAG> .
docker run --shm-size 500g --network=host --name=dpskv3 --privileged --device=/dev/kfd --device=/dev/dri --group-add video --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v 项目地址(绝对路径):/home/ -v /opt/hyhal:/opt/hyhal:ro -it <your IMAGE ID> bash
pip install https://download.sourcefind.cn:65024/directlink/4/lmslim/DAS1.3/lmslim-0.1.2+das.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl
pip install https://download.sourcefind.cn:65024/directlink/4/vllm/DAS1.3/vllm-0.6.2+das.opt1.dtk24043-cp310-cp310-manylinux_2_28_x86_64.whl
## 数据集
数据需要使用`DeepSeek-R1`获取,本项目提供一个示例数据集用于测试,见`examples/toy.json`
## 训练
可使用[LLaMA-Factory](https://developer.sourcefind.cn/codes/OpenDAS/llama-factory)训练,安装方法如下
```bash
git clone http://developer.sourcefind.cn/codes/OpenDAS/llama-factory.git
cd llama-factory && pip install -e ".[torch,metrics]"
```
### SFT
deepseek_r1_distill.yaml
```yaml
# 单机N卡训练配置(按需修改)
model_name_or_path: /path/to/your/model
stage: sft
do_train: true
finetuning_type: full
deepspeed: examples/deepspeed/ds_z3_config.json
dataset: deepseek-r1_distill
template: qwen
cutoff_len: 2048
max_samples: 5000
overwrite_cache: true
preprocessing_num_workers: 16
output_dir: /path/to/save/checkpoints
logging_steps: 10
save_steps: 500
overwrite_output_dir: true
per_device_train_batch_size: 1
gradient_accumulation_steps: 4
learning_rate: 1.0e-4
num_train_epochs: 3.0
lr_scheduler_type: cosine
warmup_ratio: 0.1
bf16: true
ddp_timeout: 1800
val_size: 0.1
per_device_eval_batch_size: 1
eval_strategy: steps
eval_steps: 500
```
```bash
llamafactory-cli train /path/to/deepseek_r1_distill.yaml
```
## 推理
### vllm服务
```bash
vllm serve /path/to/distill_model --tensor-parallel-size 2 --max-model-len 32768 --enforce-eager
```
```bash
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "model_id",
"prompt": "your prompt",
"max_tokens": 512,
"temperature": 0
}'
```
## result
```bash
curl http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "/home/modelzoo/DeepSeek-R1-Distill-Qwen-14B/",
"prompt": "甲乙两班共有学生98人,甲班比乙班多6人,求两班各有多少人?",
"max_tokens": 300,
"temperature": 0
}'
```
```bash
{"id":"cmpl-5473237b46054a98ba27906a4b099e33","object":"text_completion","created":1737515343,"model":"/home/modelzoo/DeepSeek-R1-Distill-Qwen-14B/","choices":[{"index":0,"text":"(用方程解)\n\n首先,设乙班有x人,那么甲班就有x + 6人。\n\n根据总人数,可以列出方程:x + (x + 6) = 98。\n\n解这个方程,得到x = 41。\n\n因此,乙班有41人,甲班有47人。\n</think>\n\n**解答:**\n\n设乙班有 \\( x \\) 人,则甲班有 \\( x + 6 \\) 人。\n\n根据题意,两班共有学生98人,可以列出方程:\n\n\\[\nx + (x + 6) = 98\n\\]\n\n解方程:\n\n\\[\n2x + 6 = 98\n\\]\n\n\\[\n2x = 98 - 6\n\\]\n\n\\[\n2x = 92\n\\]\n\n\\[\nx = 46\n\\]\n\n因此,乙班有46人,甲班有:\n\n\\[\nx + 6 = 46 + 6 = 52\n\\]\n\n**答案:**\n\n甲班有 \\(\\boxed{52}\\) 人,乙班有 \\(\\boxed{46}\\) 人。","logprobs":null,"finish_reason":"stop","stop_reason":null,"prompt_logprobs":null}],"usage":{"prompt_tokens":27,"total_tokens":285,"completion_tokens":258}}
```
### 精度
与Nvidia GPU保持一致。
## 应用场景
### 算法类别
`对话问答`
### 热点应用行业
`电商,教育,广媒`
## 预训练权重
|model|下载地址|
|:---:|:---:|
|DeepSeek-R1-Distill-Qwen-1.5B| [huggingface](https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B) \| [SCNet高速下载通道](http://113.200.138.88:18080/aimodels/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B) |
|DeepSeek-R1-Distill-Qwen-7B| [huggingface](https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B) \| [SCNet高速下载通道](http://113.200.138.88:18080/aimodels/deepseek-ai/DeepSeek-R1-Distill-Qwen-7B) |
|DeepSeek-R1-Distill-Llama-8B| [huggingface](https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Llama-8B) \| [SCNet高速下载通道](http://113.200.138.88:18080/aimodels/deepseek-ai/DeepSeek-R1-Distill-Llama-8B) |
|DeepSeek-R1-Distill-Qwen-14B| [huggingface](https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B) \| [SCNet高速下载通道](http://113.200.138.88:18080/aimodels/deepseek-ai/DeepSeek-R1-Distill-Qwen-14B)|
|DeepSeek-R1-Distill-Qwen-32B| [huggingface](https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B) \| [SCNet高速下载通道](http://113.200.138.88:18080/aimodels/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B)|
|DeepSeek-R1-Distill-Llama-70B| [huggingface](https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Llama-70B) \| [SCNet高速下载通道](http://113.200.138.88:18080/aimodels/deepseek-ai/DeepSeek-R1-Distill-Llama-70B)|
## 源码仓库及问题反馈
* https://developer.sourcefind.cn/codes/modelzoo/deepseek-r1-distill_vllm
## 参考资料
* https://github.com/deepseek-ai/DeepSeek-R1
{"instruction": "服装厂原来做一套衣服用布3.2米,改进裁剪方法后,每套衣服用布2.8米。原来做791套衣服的布,现在可以做多少套?", "input": "", "output": "'现在可以做904套衣服。\n\n**步骤解析:**\n\n1. **计算原来使用的总布料:** \n 每套原用布3.2米,做791套的总布料为: \n \\(3.2 \\times 791 = 2531.2\\) 米。\n\n2. **计算现在可制作的套数:** \n 改进后每套用布2.8米,总布料2531.2米可做: \n \\(\\frac{2531.2}{2.8} = 904\\) 套。\n\n**答案:** \n现在可以做904套衣服。', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='嗯,这个问题看起来是关于服装厂用布量变化后,能多做多少套衣服的应用题。让我先仔细读一遍题目,确保我理解正确。题目是说,服装厂原来做一套衣服需要用布3.2米,后来改进了裁剪方法,现在每套只需要用布2.8米。原来做791套衣服的布,现在可以做多少套呢?\n\n好,首先我需要明确已知 条件和要求解的问题。原来的每套用布量是3.2米,现在减少到2.8米。原来的数量是791套,现在想知道用同样的总布料,现在可以多做 多少套。也就是总布料不变的情况下,现在能做多少套。\n\n首先,我应该计算原来的总布料是多少。原来的每套用布3.2米,做791套的话,总布料应该是3.2乘以791。算一下,3.2×791。嗯,这个乘法可能需要分步骤来算。比如,3×791=2373,0.2×791=158.2,所以总共有2373+158.2=2531.2米布料。\n\n接下来,现在每套用布2.8米,那么总布料2531.2米可以做的套数就是总布料除以现在的每套用量,也就是2531.2÷2.8。这一步的除法可能需要仔细计算,或者看看有没有简便的方法。\n\n或者,可能有没有其他方法呢?比如,原来的总布料是3.2×791,现在每套省了0.4米(3.2-2.8=0.4),所以每套节省的布料可以多做多少套?不过这个方法可能不如直接计算总布料再除以 现在的用量直观。\n\n不过先试试直接计算总布料,再算现在能做多少套。先算2531.2÷2.8。为了计算方便,或许可以把分子分母同时乘以10,变成25312÷28,这样可能更容易计算。或者用长除法来算。\n\n2531.2 ÷ 2.8,首先,我们可以把2.8转换成28,而把2531.2转换 成25312,这样就是25312 ÷ 28。或者保持小数点的位置,用长除法计算。\n\n先试一下长除法。2531.2 ÷ 2.8。我们可以把被除数和除 数同时乘以10,变成25312 ÷ 28,这样小数位就消去了,计算起来方便。\n\n现在计算25312 ÷ 28。28乘以多少接近25312?可能需要一 步步来算。\n\n比如,28×900=25200,因为28×900=28×9×100=252×100=25200。然后25312-25200=112。接下来,112 ÷28=4,所以总共是900+4=904。所以25312÷28=904,也就是原来的总布料现在可以做904套。\n\n或者,可以这样想:原来的总布料是3.2×791=2531.2米,现 在每套用2.8米,所以2531.2÷2.8=904套。所以答案是904套。\n\n不过,我需要确认我的计算是否正确。比如,3.2×791,是否等于2531.2?\n\n3.2×700=2240,3.2×90=288,3.2×1=3.2,所以总和是2240+288=2528,加上3.2就是2531.2,没错。\n\n然后2531.2÷2.8,确实是904。因为2.8×900=2520,2.8×4=11.2,所以2520+11.2=2531.2,没错。所以结果正确。\n\n不过有没有可能题目中要求四舍五入或者取 整数?比如,当布料不够做一套的时候,是否舍去?但这里的结果刚好是整数,所以应该没问题。\n\n或者有没有其他方法?比如,原来做一套用3.2米,现在用2.8米,所以现在每套节省了0.4米。那么每做一套原来需要的布料,现在可以节省0.4米,这些节省下来的布料可以做更多的套数。\n\n不过这个方法可能比较复杂,不如直接计算总布料更直接。\n\n另外,可以计算现在能做的套数是原来的(3.2/2.8)倍,即原来的套数乘以这个比例。791×(3.2/2.8)=791×(8/7)=791×8÷7=6328÷7=904。这样计算也可以得到同样的结果。嗯,这种方法 可能更快。\n\n比如,3.2÷2.8=3.2/2.8=32/28=8/7≈1.142857,所以原来的套数乘以8/7就是现在的套数。791×8=6328,然后6328÷7=904 ,没错。所以两种方法都得到同样的结果,说明答案是正确的。\n\n所以,现在的答案是904套。"}
{"instruction": "食堂运来一批蔬菜,原计划每天吃50千克,30天慢慢消费完这批蔬菜。后来根据大家的意见,每天比原计划多吃10千克,这批蔬菜可以吃多少天?", "input": "", "output": "食堂运来的蔬菜总量为原计划每天50千克,30天吃完,故总重量为:\n\\[ 50 \\, \\text{千克/天} \\times 30 \\, \\text{天} = 1500 \\, \\text{千克} \\]\n\n调整后每天消耗量为:\n\\[ 50 \\, \\text{千克/天} + 10 \\, \\text{千克/天} = 60 \\, \\text{千克/天} \\]\n\n因此,调整后的可食用天数为:\n\\[ \\frac{1500 \\, \\text{千克}}{60 \\, \\text{千克/天}} = 25 \\, \\text{天} \\]\n\n**答案:这批蔬菜可以吃25天。**', refusal=None, role='assistant', audio=None, function_call=None, tool_calls=None, reasoning_content='嗯,我现在要解决这个问题,关于食堂运来的蔬菜能吃多少天的问题。原计划 是每天吃50千克,30天吃完,后来改成每天多吃10千克,问现在可以吃多少天。让我仔细想想怎么解决这个问题。\n\n首先,原计划是每天50千克,30天吃完,那总共有多少千克蔬菜呢?应该是50乘以30对吧?50×30=1500千克。所以食堂运来的蔬菜总量是1500千克。这个应该没问题,对吧?原计划的总量算出来了。\n\n然后现在的情况是,大家决定每天比原计划多吃10千克,也就是说现在每天吃的是50+10=60千克。那现在的问题就变成了,总量1500千克,每天吃60千克的话,能吃多少天呢?\n\n这时候可能有两种情况:一种是总量不变,每天消耗量增加,所以天数减少。这应该是正确的。不过我要确认一下是不是这个逻辑。是的,总量一定的情况下,每天消耗越多,能维持的天数就越少。所以这个时候应该用总量除以每天的消耗量,也就是1500÷60,对吧?\n\n让我算一下这个结果是多少。1500除以60,可 以先简化一下,两边同时除以10,变成150÷6,这样更容易计算。150除以6的话,6乘25是150,所以150÷6=25。这样的话,答案就是25天 ?\n\n不过等等,是不是哪里错了?让我再检查一下。原计划每天50kg,30天,总量确实是50×30=1500kg没错。然后现在每天吃60kg,那么天数就是1500÷60=25天,对的,没错。这应该是正确的。\n\n不过,有时候可能会有其他因素需要考虑,比如是否每天的消耗量刚好可以整除总量,或者有没有剩余的问题。比如,如果是1500除以60的话,正好是25,没有余数,所以刚好可以吃25天,不会有剩余。所以答案应该是25天。\n\n或者,有没有可能题目有其他陷阱呢?比如,是否每天多吃10千克是指比原计划多吃,所以是否可能每天吃的是原计划的量加上10,即50+10=60,没错,前面已经这样计算了。所以我觉得这个解法是对的。\n\n不过为了确认,再尝试另一种思路。原计划是30天吃完,每天50kg,现在每天多吃10kg,也就是每天多消耗原计划的20%(10/50=0.2)。那么消耗速度加快了20%,所以时间会减少 相应的比例吗?\n\n不过这可能涉及到反比例关系,因为总工作量一定,效率和时间成反比。这里的工作量是总量1500kg,效率是每天的消耗量。原来的效率是50kg/天,现在变成60kg/天,所以新的时间应该是原时间乘以原效率除以新效率,也就是30×(50/60)=30×5/6=25天,这样结果一样,所以是对的。\n\n所以无论是直接计算总量,还是用反比例的方法,结果都是25天,这应该是正确的答案。\n\n不过,我是不是应该再考虑有没有其他可能的解释方式?比如题目中的“慢慢消费”是否有特殊含义?或者是否存在其他条件没有被考虑进去?\n\n比如,是否可能存在蔬菜的保存期限或者腐败问题,导致即使总量足够,也不能吃太久?不过题目里并没有提到这样的条件,所以应该不需要考虑。题目只是单纯的数学问题,所以按照总量和每天的消耗量来计算即可。\n\n另外,可能有人会误解题意,比如“每天比原计 划多吃10千克”是否是指每天比前一天多吃10kg,即每天的量递增,但这题看起来应该是每天固定比原计划多吃10kg,也就是每天都是60kg,而不是每天递增。因为原题说“每天比原计划多吃10kg”,这里的“每天”应该是指调整后的每天都是同样的增加量,所以是固定每天60kg。如果每天递增的话,题目应该会说明,比如“每天比前一天多吃10kg”,但这里没有这样的表述,所以应该是每天固定60kg。\n\n因此 ,我认为正确答案是25天,也就是总量1500kg,每天吃60kg,可以吃25天。"}
\ No newline at end of file
icon.png

53.8 KB

# 模型唯一标识
modelCode=1313
# 模型名称
modelName=DeepSeek-R1-Distill_vllm
# 模型描述
modelDescription=高性能蒸馏模型
# 应用场景
appScenario=训练,推理,对话问答,医疗,电商,教育,广媒
# 框架类型
frameType=vllm
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment