文章目录
- 步骤一:安装Hugging Face工具
- 步骤二:下载DeepSeek模型
- 步骤三:安装vLLM
- 步骤四:使用vLLM部署模型
- 步骤五:测试推理服务
- 性能优化建议
- 常见问题排查
前言
随着大语言模型(LLM)的快速发展,如何高效部署和运行这些模型成为开发者关注的重点。本文将演示在Ubuntu 20系统环境下:
使用huggingface-cli下载DeepSeek模型
通过vLLM实现高性能模型推理
创建简单的API服务
环境准备
系统要求
Ubuntu 20.04 LTS
NVIDIA显卡驱动 ≥ 515.48.07
CUDA 11.8+
Python 3.8+
基础依赖安装
sudo apt update && sudo apt install -y python3-pip git nvidia-cuda-toolkit
步骤一:安装Hugging Face工具
- 安装huggingface_hub
pip install huggingface_hub
- 置访问令牌(如需下载私有模型)
huggingface-cli login
# 输入Hugging Face账号的access token
步骤二:下载DeepSeek模型
DeepSeek系列模型对比表
模型名称 | 参数规模 | 架构/类型 | 核心优势 | 显存需求 | 适用场景 | 是否开源 | 成本效益 |
---|---|---|---|---|---|---|---|
DeepSeek-V3-Base | 671B(激活370B) | 混合专家(MoE) | 支持14.8万亿token预训练,通用性能媲美GPT-4o | ≥80GB(需多卡) | 科研级多模态任务、大规模企业应用 | 是 | 训练成本仅557万美元 |
DeepSeek-V3 | 同Base版优化 | 混合专家(MoE)优化版 | 评测成绩超越Qwen2.5-72B,闭源模型竞争力强 | ≥80GB(需多卡) | 复杂逻辑推理、跨领域生成任务 | 部分开源 | 与闭源模型性价比相当 |
DeepSeek-R1 | 未公开(对标o1) | 深度推理模型 | 支持联网搜索,数学/编程竞赛表现超越GPT-4o,中文写作能力顶尖 | 24GB+(单卡RTX 5090) | 高难度推理、实时数据分析、创意写作 | 是 | API价格仅为o1的3.7% |
DeepSeek-R1-Zero | 同R1原生版本 | 未蒸馏原版推理模型 | 完整保留R1推理链,支持数万字思维链生成 | 24GB+ | 学术研究、复杂问题拆解 | 是 | 免费使用 |
DeepSeek-R1-Distill-Llama-70B | 70B | Llama架构蒸馏版 | 保留70%原模型能力,支持长文本生成 | 48GB(双卡并行) | 企业级文档处理、多轮对话系统 | 是 | 训练成本降低60% |
DeepSeek-R1-Distill-Qwen-32B | 32B | Qwen架构蒸馏版 | 优化代码生成稳定性,适配国产GPU(如芯瞳CQ2040) | 24GB+ | 工业自动化、代码辅助开发 | 是 | 国产硬件适配成本低 |
DeepSeek-R1-Distill-Qwen-14B | 14B | Qwen轻量级蒸馏版 | 平衡性能与资源消耗,支持动态批处理 | 16GB+ | 中小企业智能客服、数据分析 | 是 | 单卡部署性价比最优 |
DeepSeek-R1-Distill-Llama-8B | 8B | Llama超轻量蒸馏版 | 支持端侧部署,响应速度达200 tokens/s | 8GB+ | 移动端应用、边缘计算场景 | 是 | 边缘设备适配成本极低 |
DeepSeek-R1-Distill-Qwen-7B | 7B | Qwen微型蒸馏版 | 中文NLP任务优化,文风模拟精度达85% | 8GB+ | 社交媒体文案生成、个性化推荐 | 是 | 适合初创团队低成本试水 |
DeepSeek-R1-Distill-Qwen-1.5B | 1.5B | Qwen极轻量蒸馏版 | 最低硬件门槛,支持实时交互 | 4GB+ | 智能家电控制、简单问答系统 | 是 | 物联网设备批量部署首选 |
我们目标模型为deepseek-ai/DeepSeek-R1-Distill-Qwen-7B模型
huggingface-cli download --resume-download deepseek-ai/DeepSeek-R1-Distill-Qwen-7B --local-dir DeepSeekR1 --resume-download
关键参数说明:
–local-dir: 指定本地存储路径, 我起了文件夹,命名为DeepSeekR1
–resume-download: 支持断点续传
步骤三:安装vLLM
推荐使用venv创建隔离环境:
python -m venv vllm-env
source vllm-env/bin/activate
pip install vllm torch
验证安装:
python -c "from vllm import LLM; print('vLLM version:', LLM().__class__)"
步骤四:使用vLLM部署模型
启动API服务器
vllm serve DeepSeekR1 --port 8000 --max-model-len 16384\--gpu-memory-utilization 0.9 > vllm.log 2>&1
参数说明
–max-model-len: 允许模型最大大小
–gpu-memory-utilization: 显存利用率设置 (数值太小,模型跑不起来,或者不用这个参数)
查看vllm.log,
用nvidia-smi查看内存情况,大概运行了20G左右的显存
步骤五:测试推理服务
使用ApiFox(类似postman)测试
{"model": "DeepSeekR1","prompt": "请解释量子计算的基本原理","role": "user","max_tokens": 1024
}
Python客户端示例
from litellm import completion
import osos.environ["OPENAI_API_BASE"] = "http://192.168.0.110:8000/v1" # 仅保留到 /v1
os.environ["OPENAI_API_KEY"] = "no-key-required"response = completion(model="DeepSeekR1", # 确保与 vLLM 启动时的模型名称一致messages=[{"role": "user", "content": "如何快速学习Python编程?"}], # 使用 "content" 而非 "prompt"custom_llm_provider="openai",temperature=0.7,max_tokens=1024,
)print(response.choices[0].message.content)
deepseek回答:
嗯,我现在想学习Python编程,但感觉有点难,不知道从哪里开始。先看看别人是怎么学的吧。好的,首先,我应该先了解基础语法。Python的变量、数据类型、运算符这些是基础,对吧?比如变量的声明,整数、字符串这些数据类型,还有一些运算符怎么用,应该先把这些弄明白。可能得花点时间写一些简单的代码,比如打印“Hello World!”,然后看看变量怎么用,比如a=5,b=“hello”,然后a + b会报错,因为类型不对,但至少知道它们是不同的类型。接下来是流程控制,这部分包括条件语句和循环。条件语句比如if-else,用来判断不同的情况,循环的话像for循环和while循环。比如用for循环遍历一个列表,打印每个元素,或者用while循环不断让变量增减直到满足某个条件。这部分可能需要多写一些循环结构的代码,比如计算阶乘或者找出质数之类的。然后是函数。函数可以让代码更模块化,更易读。学习如何定义函数,传递参数,返回值。比如写一个函数来计算两个数的和,或者更复杂的比如排序函数。理解默认参数和可变参数也是有必要的,这样在需要时能灵活使用函数。接下来是模块和库。Python有很多标准库,比如math库、datetime库,这些可以扩展功能。学习如何导入和使用模块,可能还需要了解如何查找帮助文档。比如,当我不记得某个函数怎么用的时候,可以用help函数看看文档,这样就能找到解决问题的方法。然后是面向对象编程,这部分可能有点难。理解类和对象的概念,构造函数,属性和方法,继承和多态性。比如写一个Rectangle类,继承自形状基类,然后定义宽度和高度,计算面积和周长。这有助于以后处理更复杂的问题,结构更清晰。数据结构也是必须学习的,比如列表、元组、字典、集合。掌握它们的操作,比如添加、删除、查找、排序等。比如用字典来存储用户信息,键是用户名,值是用户资料,这样访问起来方便。学习列表的高级操作,比如列表推导式,或者切片,这些在数据处理中非常有用。异常处理也很重要,编程中可能会遇到意外情况,比如文件读取错误或者除以零的情况。学习如何用try-except语句来捕获和处理异常,这样程序会更健壮,不会崩溃。然后是版本控制,使用Git来管理代码仓库。学习如何克隆仓库、分支、合并、commit等基本操作。这对于以后和团队合作或者长期项目管理很有帮助。可能需要花点时间熟悉这个工具,因为很多人使用它来管理项目。最后是做项目来巩固学习。找到一个项目,比如计算器、脚本处理工具、游戏程序,然后一步步实现。通过实际项目,能够将所学知识应用起来,发现不足并加以改进。比如做一个计算器,实现加减乘除,甚至括号运算,这样就能理解运算优先级和错误处理。还需要注意实践,写代码的时候要多思考,理解每个部分的作用,而不是只看别人写的代码。不要害怕犯错,调试能力也很重要,学会如何通过调试器一步一步排查问题。保持耐心也很关键,编程不是一天就能掌握的,需要持续学习和练习。可能刚开始会觉得枯燥,但坚持下去,一定能有收获。对了,可能还有模块化开发和代码注释的部分,这部分可以分阶段学习。先了解模块的作用,再学习注释,这样代码更容易被理解和维护。比如使用装饰器来简化代码结构,或者用注释来解释复杂的逻辑。总之,学习Python编程需要系统地掌握基础知识,逐步深入,多实践,多练习,遇到问题及时解决,这样才能逐渐掌握这门编程语言。
</think>学习Python编程需要系统地掌握基础知识,并逐步深入,同时通过实践来巩固和应用所学知识。以下是一个有条理的学习步骤指南:1. **了解基础语法**- **变量和数据类型**:学习整数、字符串、浮点数等数据类型,以及变量的声明和赋值。- **运算符**:掌握算术、比较、逻辑和位运算符,理解运算优先级。- **字符串操作**:学习字符串的切片、拼接、格式化等操作。2. **掌握流程控制结构**- **条件语句**:使用`if`、`elif`、`else`语句进行条件判断和分支处理。- **循环结构**:学习`for`循环和`while`循环的使用,以及如何处理循环中的常见问题,如无限循环。3. **学习函数和模块**- **函数定义和调用**:理解函数
查看vllm.log
性能优化建议
- 启用连续批处理(默认已开启)
- 调整–max-num-seqs参数控制并发量
- 使用AWQ量化技术减少显存占用
- 监控GPU使用情况:nvidia-smi -l 1
常见问题排查
- CUDA版本不匹配
确认CUDA版本:nvcc --version
重新安装对应版本的vLLM
- 模型加载失败
# 检查模型完整性
huggingface-cli download --repo-type model --revision main deepseek-ai/deepseek-llm-7b-chat --local-dir ./deepseek-7b-chat
- 显存不足
降低–gpu-memory-utilization
使用–quantization awq参数