DeepSeek-MoE-16b-chat Transformers 部署与调用指南
模型简介:DeepSeek-MoE-16b-chat
deepseek moe 系列目前发布的是参数总量为160亿的版本,实际激活参数约为28亿。相较于其自家的7b全连接模型,在19个基准测试任务中表现互有优劣,整体性能相当接近。而对比同类型的llama 2-7b密集模型,该moe模型在数学推理和代码生成等任务上展现出更优的能力。值得注意的是,llama 2-7b和deepseek 7b密集模型每处理4k token所需的计算量均超过180tflops,而deepseek-moe仅需74.4tflops,能耗效率提升显著,仅为前者的约40%。
环境搭建步骤
在Autodl平台上租用一台配备双卡3090(单卡24G显存,共48G) 的服务器实例,选择镜像环境为:PyTorch → 2.1.0 → Python 3.10 (Ubuntu 22.04) → CUDA 12.1。成功启动后,进入该服务器的 JupyterLab 界面,并打开终端进行后续操作。
![[大模型]DeepSeek-MoE-16b-chat Transformers 部署调用](https://img.php.cn/upload/article/001/503/042/176248226752807.jpg)
接下来将在终端中完成依赖安装、模型下载及推理演示。
更换pip源并安装必要依赖
# 开启Autodl学术加速功能以提高GitHub访问速度 source /etc/network_turbo升级pip至最新版本
python -m pip install --upgrade pip
配置清华镜像源以加快包下载速度
pip config set global.index-url https://www.php.cn/link/a6455ffc4e47fd737db213366771ec0e
安装核心库
pip install modelscope transformers sentencepiece accelerate
安装Flash Attention加速库(适配当前CUDA与PyTorch版本)
pip install https://www.php.cn/link/0e7adb08b43a589df528d2bdd69b6b03
模型获取方式
使用 modelscope 提供的 snapshot_download 方法来拉取模型文件。第一个参数指定模型名称,cache_dir 指定本地存储路径。
在 /root/autodl-tmp 目录下创建 download.py 文件,并填入以下代码内容。保存文件后运行命令:python /root/autodl-tmp/download.py。模型总大小约30GB,下载过程预计耗时10~20分钟。
import torch from modelscope import snapshot_download, AutoModel, AutoTokenizer import osmodel_dir = snapshot_download('deepseek-ai/deepseek-moe-16b-chat', cache_dir='/root/autodl-tmp', revision='master')
推理脚本编写
在相同目录 /root/autodl-tmp 下新建 trains.py 文件,写入如下推理代码:
import torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig设置模型路径
model_name = "/root/autodl-tmp/deepseek-ai/deepseek-moe-16b-chat"
加载分词器,启用远程代码执行权限
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
加载模型,采用bfloat16精度以节省显存,自动分配GPU设备
model = AutoModelForCausalLM.from_pretrained( model_name, torch_dtype=torch.bfloat16, device_map="auto", trust_remote_code=True )
加载生成配置
model.generation_config = GenerationConfig.from_pretrained(model_name, trust_remote_code=True)
设置pad_token_id与eos_token_id一致,便于解码处理
model.generation_config.pad_token_id = model.generation_config.eos_token_id
构造对话输入
messages = [ {"role": "user", "content": "你是谁"} ]
使用模板格式化输入,添加生成提示符
input_tensor = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
执行文本生成,限制最大新生成token数为100以防显存溢出
outputs = model.generate(input_tensor.to(model.device), max_new_tokens=100)
解码输出结果,跳过特殊标记以获得干净文本
result = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True)
输出最终回答
print(result)
模型部署与调用
在终端中执行以下命令,运行刚刚编写的推理脚本:
cd /root/autodl-tmp python trains.py
运行过程中会看到“loading checkpoint”等提示信息,表明模型正在加载中。待加载完成后,模型将自动生成对“你是谁”的回应,效果如下图所示:
![[大模型]DeepSeek-MoE-16b-chat Transformers 部署调用](https://img.php.cn/upload/article/001/503/042/176248226869660.jpg)











