【AIGC魔童】DeepSeek v3推理部署:DeepSeek-Infer/ModelScope/ollama
- (1)快速使用
- (2)推理部署
- 2.1 使用DeepSeek-Infer部署DeepSeek
- 2.2 使用ModelScope部署DeepSeek
- 2.3 使用ollama部署DeepSeek
(1)快速使用
DeepSeek 官网访问:https://chat.deepseek.com
DeepSeek API访问:https://platform.deepseek.com
(2)推理部署
DeepSeek-V3 可以使用以下硬件和开源社区软件在本地部署:
2.1 使用DeepSeek-Infer部署DeepSeek
2.1.1 系统要求
注意:仅限 Python 3.10 的 Linux。不支持 Mac 和 Windows。
依赖包列表:
torch==2.4.1
triton==3.0.0
transformers==4.46.3
safetensors==0.4.5
2.1.2 模型权重和演示代码准备
首先,克隆DeepSeek-V3 GitHub 仓库:
git clone https://github.com/deepseek-ai/DeepSeek-V3.git
切换到inference
文件夹并安装requirements.txt
中列出的依赖项。最简单的方法是使用类似conda
或uv
的包管理器创建新的虚拟环境并安装依赖项。
cd DeepSeek-V3/inference
pip install -r requirements.txt
从 Hugging Face 下载模型权重,并将其放入文件夹中。/path/to/DeepSeek-V3
2.1.3 模型权重转换
将 Hugging Face 模型权重转换为特定格式:
python convert.py --hf-ckpt-path /path/to/DeepSeek-V3 --save-path /path/to/DeepSeek-V3-Demo --n-experts 256 --model-parallel 16
2.1.4 运行 DeepSeek-V3 聊天
torchrun --nnodes 2 --nproc-per-node 8 --node-rank $RANK --master-addr $ADDR generate.py --ckpt-path /path/to/DeepSeek-V3-Demo --config configs/config_671B.json --interactive --temperature 0.7 --max-new-tokens 200
或对给定文件进行批量推理:
torchrun --nnodes 2 --nproc-per-node 8 --node-rank $RANK --master-addr $ADDR generate.py --ckpt-path /path/to/DeepSeek-V3-Demo --config configs/config_671B.json --input-file $FILE
2.2 使用ModelScope部署DeepSeek
2.2.1 安装ModelScope依赖包
pip install modelscope
2.2.2 下载模型
mkdir ./deepseek
modelscope download --model deepseek-ai/DeepSeek-R1 --local_dir ./deepseek
2.2.3 模型权重转化
cd DeepSeek-V3/inference
python convert.py --hf-ckpt-path /path/to/DeepSeek-R1 --save-path /path/to/DeepSeek-R1-Demo --n-experts 256 --model-parallel 16
-
python convert.py
:运行 convert.py 脚本,这个脚本的作用是将Hugging Face格式的模型权重转换为另一个特定的格式。 -
--hf-ckpt-path /path/to/DeepSeek-R1
:指定Hugging Face格式的模型检查点路径(即模型文件所在的位置)。在这个例子中是 /path/to/DeepSeek-R1 。 -
--save-path /path/to/DeepSeek-R1-Demo
:指定转换后的模型权重保存的路径,即你想将模型保存到哪里。 -
--n-experts 256
:指定模型中的专家数量,这可能是与模型的分布式训练或者混合专家模型(Mixture of Experts, MoE)相关的参数,设置为256表示该模型将使用256个专家。 -
--model-parallel 16
:这个参数指定模型并行的程度,通常是指将模型分布在16个GPU上进行训练或推理。
2.2.4 模型推理
torchrun --nnodes 2 --nproc-per-node 8 --node-rank $RANK --master-addr $ADDR generate.py --ckpt-path /path/to/DeepSeek-R1-Demo --config configs/config_671B.json --interactive --temperature 0.7 --max-new-tokens 200
各个参数的含义如下:
torchrun :用于分布式训练或推理的命令。它会启动多个进程,支持跨多个节点(即多台机器)运行。
--nnodes 2 :指定集群中的节点数目。在这个例子中,使用2个节点(即2台机器)。
--nproc-per-node 8 :每个节点上运行的进程数。在每个节点上启动8个进程,通常是为了充分利用每个节点上的多个GPU。
--node-rank $RANK :当前节点在集群中的排名,用于区分不同节点。 $RANK 是一个环境变量,代表当前节点的编号。
--master-addr $ADDR :指定主节点的地址。主节点通常负责协调所有其他节点的工作。 $ADDR是一个环境变量,表示主节点的IP地址或主机名。generate.py :这是运行文本生成任务的脚本,它会使用模型进行推理生成文本。
--ckpt-path /path/to/DeepSeek-R1-Demo :指定转换后的DeepSeek-R1模型检查点路径。这个路径是你之前在转换步骤中保存的模型文件。
--config configs/config_671B.json :指定模型的配置文件。配置文件包含模型的架构、超参数等信息。在这个例子中,配置文件是 configs/config_671B.json 。
--interactive :启用交互模式,通常表示用户可以在命令行中输入内容,并实时获得模型的响应。
--temperature 0.7 :生成的温度值,影响模型的输出随机性。温度越高,生成的文本越随机;温度越低,生成的文本越确定。0.7通常意味着适度的随机性。
--max-new-tokens 200 :限制生成的最大新token数量,表示每次生成时最多生成200个新的词元。
2.3 使用ollama部署DeepSeek
目前DeepSeek R1已支持使用Ollama进行调用,并且非常便捷的是,Ollama中集成了DeepSeek
R1半精度版本,且集成了其他各蒸馏模型的Q4_K_M量化版本,支持ollama run命令一键下载与调用。
其中各模型在Q4_K_M量化情况下运行所需显存情况如下:
实际调用时,只需要在命令行输入ollama run + 模型版本即可,例如:
ollama run deepseek-r1:1.5b
即可运行1.5B蒸馏模型。而
ollama run deepseek-r1:671b
则可下载并运行半精度的DeepSeek R1模型。目前Ollama暂不支持全精度DeepSeek R1模型运行。