DeepSeek R1 与 Janus-Pro 本地部署高级教程
本文详细介绍了在本地环境中部署 DeepSeek-R1 和 Janus-Pro 大模型的方法。通过下载模型权重并使用 Transformers 库进行推理,用户可以在个人电脑上运行这些模型。内容涵盖环境配置、模型下载、代码实战及常见问题解决,适合希望掌握本地大模型部署的开发者。重点讲解了多模态 Janus-Pro 的图片理解实现以及 R1 模型的思维链输出配置,同时提供了显存优化和推理加速的建议。

本文详细介绍了在本地环境中部署 DeepSeek-R1 和 Janus-Pro 大模型的方法。通过下载模型权重并使用 Transformers 库进行推理,用户可以在个人电脑上运行这些模型。内容涵盖环境配置、模型下载、代码实战及常见问题解决,适合希望掌握本地大模型部署的开发者。重点讲解了多模态 Janus-Pro 的图片理解实现以及 R1 模型的思维链输出配置,同时提供了显存优化和推理加速的建议。

随着大语言模型技术的快速发展,本地化部署已成为保护数据隐私、降低 API 成本以及离线使用的重要方案。虽然 Ollama 和 LM Studio 等工具提供了一键部署的便捷性,但通过 transformers 库直接加载模型权重的方式提供了更高的灵活性和可控性。
本文将详细介绍如何下载并部署 DeepSeek-R1 及最新的 Janus-Pro 多模态模型。该方法基于 Hugging Face Transformers 生态,理论上支持所有兼容该框架的模型。尽管相比 VLLM 或 SGLang 等专用推理框架,其推理速度可能稍慢,但其通用性和调试便利性使其成为学习和研究的首选方案。
在开始部署之前,请确保您的开发环境满足以下基本要求:
国内用户推荐使用 ModelScope(魔搭社区)进行模型权重下载,网络稳定性优于 Hugging Face。
访问 DeepSeek 官方组织页面:https://www.modelscope.cn/organization/deepseek-ai
在该页面中,您可以找到 DeepSeek-R1 系列以及 Janus-Pro 系列模型。两者的下载流程基本一致。
由于模型文件较大,建议使用 Git LFS(Large File Storage)进行下载。
安装 Git LFS:
git lfs install
克隆模型仓库: 以 Janus-Pro-1B 为例:
git clone https://www.modelscope.cn/deepseek-ai/Janus-Pro-1B.git
执行上述命令后,本地将生成一个包含模型权重的文件夹。等待下载完成即可进入下一步。
Janus-Pro 需要配合官方提供的推理代码使用。请访问 GitHub 仓库:https://github.com/deepseek-ai/Janus
点击右上角的 "Code" 按钮,选择 "Download ZIP" 下载源码包,解压至本地目录。
进入项目根目录,创建虚拟环境(可选但推荐):
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
安装项目依赖。如果遇到网络超时,可使用国内镜像源加速:
pip install -e .
或使用清华源:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
Janus-Pro 是一个多模态模型,支持图像理解与文生图功能。以下演示如何进行图片理解任务。
在项目目录下新建 inference.py,填入以下代码。请注意修改 model_path 为实际路径,并确保图片路径正确。
import torch
from transformers import AutoModelForCausalLM
from janus.models import MultiModalityCausalLM, VLChatProcessor
from janus.utils.io import load_pil_images
# 指定模型路径
model_path = "./Janus-Pro-1B"
# 初始化处理器和分词器
vl_chat_processor: VLChatProcessor = VLChatProcessor.from_pretrained(model_path)
tokenizer = vl_chat_processor.tokenizer
# 加载模型
vl_gpt: MultiModalityCausalLM = AutoModelForCausalLM.from_pretrained(
model_path, trust_remote_code=True
)
# 设置设备与精度
vl_gpt = vl_gpt.to(torch.bfloat16).cuda().eval()
# 准备输入
image = "images/doge.png"
question = "Extract all information from this image and convert them into markdown format."
# 构建对话
conversation = [
{
"role": "<|User|>",
"content": f"<image_placeholder>\n{question}",
"images": [image],
},
{"role": "<|Assistant|>", "content": ""},
]
# 推理
inputs = vl_chat_processor(questions=conversation, images=None, return_tensors="pt", padding=True)
inputs = inputs.to(vl_gpt.device)
with torch.no_grad():
outputs = vl_gpt.generate(**inputs,
do_sample=False,
max_new_tokens=1024,
use_cache=True)
response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response)
images 文件夹下存在 doge.png 或其他测试图片。DeepSeek-R1 目前支持本地部署的主要是 Qwen 或 Llama 架构的蒸馏版本。这些模型通过 transformers 加载,能够展示完整的思维链(Chain-of-Thought)过程。
参考 Qwen 官方文档获取启动脚本:https://qwen.readthedocs.io/zh-cn/latest/getting_started/quickstart.html
默认情况下,模型可能只输出 512 个字符,导致思维链推导过程被截断。需要在代码中调整 max_new_tokens 参数。
outputs = model.generate(
input_ids=input_ids,
attention_mask=attention_mask,
max_new_tokens=2048, # 增加输出长度以容纳完整思考过程
do_sample=False,
temperature=0.7
)
成功执行后,输出中将包含 <thought> 和 <answer> 标识符(具体格式视模型微调方式而定)。这展示了模型在给出最终答案前的逻辑推导步骤。
如果报错 CUDA out of memory,可尝试以下方法:
batch_size 或 max_new_tokens。device_map="auto"。Transformers 原生推理速度较慢,如需生产级速度,建议后续迁移至 VLLM 或 SGLang 框架。
本地部署的蒸馏模型(如 32B)效果通常弱于云端原版(如 671B)。对于复杂任务,建议优先选择参数量较大的模型,并确保硬件配置充足。
本文详细介绍了从下载权重到本地运行的完整流程。通过掌握这一通用方法,开发者可以灵活部署各类开源大模型,而不仅限于特定平台。虽然本地部署对硬件有一定要求,但随着量化技术的发展,个人电脑运行中等规模模型已逐渐成为现实。未来,结合 RAG(检索增强生成)技术,本地大模型将在企业私有知识库场景中发挥更大作用。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online