LMDeploy本地部署轻松玩转DeepSeek

前言

LMDeploy 是一个专为大语言模型(LLMs)和视觉-语言模型(VLMs)设计的高效且友好的部署工具箱。它集成了多种先进的技术和功能,有着卓越的推理性能、可靠的量化支持、便捷的服务部署以及极佳的兼容性

一、环境搭建

版本要求,CUDA 11+(>=11.3),python要求3.8 - 3.12之间.
获取代码,下面2种方法都可以.

1. pip

conda create -n lmdeploy python=3.8 -y
conda activate lmdeploy
pip install lmdeploy

2. git

git clone https://github.com/InternLM/lmdeploy.git
cd lmdeploy
pip install -e .

二、模型准备

1. 下模地址

1,huggingface

https://huggingface.io
需要梯子

2,魔塔社区

https://www.modelscope.cn
可直接访问

2. 选模

1,LLM(文本生成)

先来看看全球热度爆表的两款有着性价比之王赞誉的DeepSeek-R1和DeepSeek-V。
在这里插入图片描述

在这里插入图片描述
这两款大小几乎一样,一共切了163块,每块4.3G,还有个别一些事5-6G,总大小超过163*4.3=700.9G.要是企业级应用可以试试,自己玩的话,光下载至少3天,关键硬盘也没那么大,推理的话GPU要求也极高,综上所述,还是先放弃这两款。幸运的是,经过查找发现了一个小一点的,和他们都有血缘关系的deepseek,蒸馏过的1.5B参数的模型。
在这里插入图片描述
这个就很小了,只有3G多了,后面就拿这款测试了。

2,VLM(图像识别)

在这里插入图片描述
哥哥70G左右,弟弟30G,那就用弟弟。

在这里插入图片描述

3,T2I(文生图)

这是一款近期最近发布的,经过多家测评机构,一致认为在文生图的表现已经超过DALL·E 3,而且模型也不大.Janus-Pro-1B大概4G多点.在这里插入图片描述

3. 下模

1, LLM

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B')

2, VLM

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/deepseek-vl2-small')

3, T2I

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('deepseek-ai/Janus-Pro-1B')

魔塔社区的网站给了下载地址,直接复制到代码即可。
然后安装modelscope包。
唯一注意一点就是包下哪去了。

在这里插入图片描述
主要第一个模型没给参数,一般默认是根目录下.cache文件的modelscope下,如果是从huggingface下的,默认也是在这个目录,同样也会建一个huggingface目录,模型都保存在这里面.
如果不想考来考去,也可以指定下载目录,就是参数中加一个cache_dir,后面跟路径即可.2个模型分别用默认和指定下载,然后看看下哪了.这时候可以去干别的,可以开2个窗口同时下,过会再来看.
在这里插入图片描述

三、推理

1. 代码

只需要把模型路径改位自己的即可,问题可以随便写自己感兴趣的话题.这样,就可以不需要下任何app,不需要上网,本地就可以玩转大模型,也可以部署到自己服务器上.
下面举例演示过程.

1,文本

from lmdeploy import pipeline
pipe = pipeline('/root/autodl-tmp/llm/modelscope/hub/deepseek-ai/DeepSeek-R1-Distill-Qwen-1___5B')
response = pipe(['Hi, pls intro yourself', 'Shanghai is'])
print(response)

也可以使用调用OpenAI格式的prompts形式调用,关于相关更详细的调用,可以参考
https://blog.youkuaiyun.com/weixin_41688410/article/details/145378798

from lmdeploy import pipeline, GenerationConfig, TurbomindEngineConfig

backend_config = TurbomindEngineConfig(tp=2)
gen_config = GenerationConfig(top_p=0.8,
                              top_k=40,
                              temperature=0.8,
                              max_new_tokens=1024)
pipe = pipeline('internlm/internlm2_5-7b-chat',backend_config=backend_config)
prompts = [[{
   'role': 'user',
    		'content': 'Hi, pls intro yourself'}],
		  [{
   'role': 'user', 'content': 'Shanghai is'}]]
response = pipe(prompts, gen_config=gen_config)
print(response)

2,视觉

把模型路径,和需要加载的图片换成自己的即可。


from lmdeploy import pipeline
from lmdeploy.vl import load_image

pipe = pipeline('/root/autodl-tmp/llm/deepseek-ai/deepseek-vl2-small')

image = load_image('https://raw.githubusercontent.com/open-mmlab/mmdeploy/main/tests/data/tiger.jpeg')
response = pipe(('describe this image', image))
print(response)

2. 输出

下面是输出,可以看到,我

### 使用 `lmdeploy` 部署 DeepSeek 模型蒸馏 #### 安装依赖库 为了成功部署 DeepSeek 模型并执行模型蒸馏,首先需要安装必要的 Python 库和其他环境配置。这通常涉及设置 GPU 支持、CUDA 和 cuDNN 的版本匹配等。 ```bash pip install -r requirements.txt ``` 确保环境中已正确安装 PyTorch 及其对应的 CUDA 版本[^1]。 #### 下载预训练模型权重 DeepSeek-V3 已经开放了 Hugging Face 平台上的模型权重,可以直接通过官方文档获取详细的下载指导和链接。这对于准备用于蒸馏的学生模型至关重要[^2]。 #### 准备数据集 模型蒸馏过程中,高质量的数据集不可或缺。应当收集或创建一个适合目标任务的标注数据集。该数据集不仅应覆盖广泛的应用场景,还应该具有足够的多样性来帮助学生模型更好地学习教师模型的知识。 #### 编写蒸馏脚本 编写专门针对 DeepSeek 架构设计的蒸馏算法实现代码。此部分可能涉及到定义损失函数(如 KL 散度)、调整超参数以及监控训练过程中的性能指标变化情况。 ```python import torch.nn as nn from transformers import AutoModelForSequenceClassification, Trainer, TrainingArguments teacher_model = AutoModelForSequenceClassification.from_pretrained('path_to_teacher') student_model = AutoModelForSequenceClassification.from_pretrained('path_to_student') class DistillationLoss(nn.Module): def __init__(self, temperature=2.0): super().__init__() self.temperature = temperature def forward(self, student_logits, teacher_logits): loss_fn = nn.KLDivLoss(reduction="batchmean") return loss_fn( nn.functional.log_softmax(student_logits / self.temperature, dim=-1), nn.functional.softmax(teacher_logits / self.temperature, dim=-1) ) training_args = TrainingArguments(output_dir="./results", num_train_epochs=3) trainer = Trainer( model=student_model, args=training_args, train_dataset=train_dataset, eval_dataset=val_dataset, compute_metrics=lambda p: {"accuracy": (p.predictions.argmax(-1) == p.label_ids).mean()}, custom_loss_function=DistillationLoss() ) trainer.train() ``` #### 执行部署流程 完成上述准备工作之后,可以按照 `lmdeploy` 文档说明启动实际的服务端口监听和服务接口暴露工作。注意检查日志输出确认服务状态正常运行,并测试几个样例输入验证推理结果准确性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值