DeepSeek在昇腾上的模型部署 - 常见问题及解决方案
2024年12月26日,DeepSeek-V3横空出世,以其卓越性能备受瞩目。该模型发布即支持昇腾,用户可在昇腾硬件和MindIE推理引擎上实现高效推理,但在实际操作中,部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾DeepSeek模型部署的常见问题及解决方案。
01 通信错误:Hccl execute failed
问题现象:
日志显示卡(IP地址10.0.3.9)与卡(IP地址10.0.3.17)之间connection fail
查看日志发现出现hccl通信失败相关日志内容:


解决方案:
-
问题定位前需要先开启日志生成环境变量:

算子库&加速库&模型库日志保存路径:/root/atb/log
CANN日志保存路径:/root/ascend/log/debug/plog
-
通过hccn_tool工具进行连通性检测,发现出现链路down,修复链路down的问题后,通信失败问题解决。
02 通信错误:Hccl通信超时
可配置以下环境变量,增大超时等待时间。

03 显存不足:NPU out of memory
问题现象:
在服务化拉起过程中,出现NPU out of memory报错。

解决方案:
适当调高NPU_MEMORY_FRACTION环境变量(默认值为0.8),适当调低mindie-service服务化配置文件config.json中maxSeqLen、maxInputTokenLen、maxPrefillBatchSize、maxPrefillTokens、maxBatchSize等参数。

04 推理卡顿:模型加载时间长,可能达到2H及以上
问题现象:
模型部署过程中,推理前的模型加载时间过长,部分极端情况需要等待>2H。
可能原因:
1)用户场景内存不足导致swap介入;
2)首次加载权重,权重存储硬件的传输速率慢,传统的HDD或低速SSD或网络存储方式存在I/O瓶颈;
3)框架权重加载使用单线程加载;
解决方案:
1)更换NVMe SSD高速存储硬件;
2)使用内存映射文件mmap加载权重,例如:Weights = torch.load(“model.bin”,mmap=True);
3)使用并行加载的方式,将权重按层或模块拆分为多个文件,可搜索教程
4)减少多线程开销,设置以下环境变量 export OMP_NUM_THREADS=15)预热加载,提前预加载模型权重到内存
05 推理卡顿:纯模型/服务化拉起卡住、停止

问题现象:
如果free -h中的free内存小于权重大小 / 机器数,纯模型拉起会卡死,过一段时间后进程被杀。
根据经验,可以确保一下free_mem >= (权重大小 / 机器数) * 1.3 (该计算方式待验证,但需要确保内存足够)
解决方案: 重启/释放缓存。
推荐使用释放缓存的方式,可以在容器内运行以下指令:
sync; echo 3 > /proc/sys/vm/drop_caches
注意,每次跑完模型,请检查一下机器的host侧内存占用。
06 推理卡顿:首Curl请求卡死
问题现象:
在服务化成功启动后出现首次curl请求发送后,无返回的现象;或者服务化拉起卡死的现象。
可能原因:
多节点的服务化config.json有区别,或是除了需要写本机信息外的环境变量不一样。
1、例如,A、B两个8卡节点的服务化配置文件中,A配置了interNodeTLSEnabled=true,B配置了interNodeTLSEnbal=false。
2、容器A的环境变量中未设置确定性计算相关环境变量,容器B的环境变量中却有确定性计算相关的环境变量。尽管执行推理请求的节点确定性计算相关的环境变量是关闭状态,仍可能影响推理卡住。
export HCCL_DETERMINISTIC=false
所以,请一定要一一核对好每个8卡容器内的环境变量是一样的,服务化的config.json也需是一样的。
07 推理卡顿:大流量下curl请求超时
问题现象:
服务启动后,在大流量下会出现挂死,具体表现为Curl请求超时,Aicore利用率为0:

所有卡利用率为0:

当前识别为重计算触发的问题,可通过修改mindieservice的config文件进行临时规避。
要求maxseqen与maxprefilltoken参数配置为相同大小。
当前识别为重计算触发的问题,可通过修改mindieservice的config文件进行临时规避。
要求maxseqen与maxprefilltoken参数配置为相同大小。

08 配置问题:服务化benchmark初始化失败

需正确配置Ranktable: export RANKTABLEFILE=/Path/To/ranktable[X].json
09 配置问题:Ranktable中的server id和container ip填写
ranktable中的server id和container ip均填写成主机IP,前提是起容器时需要设置成host模式:docker run --network host <image_name>,含义就是容器的ip地址=主机的ip地址,注意容器开放的端口不要和主机冲突。

10 日志采集:纯模型Profiling 采集
当前 MindIE atb-models 中已经内置了 Profiling 采集逻辑,核心代码在 atb-models/examples/run_pa.py 的 PARunner 中。我们可以通过以下环境变量对 Profiling 采集进行控制:

执行采集时,只需要配置环境变量,在modeltest下拉起性能测试,即可获取到 Profiling 数据。若需采集的卡数大于8,则需要在每个节点上同时开启以下环境变量:

开启环境变量后,参照性能测试,指令如下(可自行修改指令):

采集完成后,核心数据解析到$PROFILING_FILEPATH /ASCEND_PROFILER_OUTPUT 路径下。
11 日志采集:通用方法
遇到推理报错时,请打开日志环境变量,收集日志信息。

12 Tokenizer 报错

MindIE 报 XXX 错误,有一定误导性。实际上只要是 transformers 加载 tokenizer 报错,MindIE 会捕获所有错误,直接退出,并且不会显示真正错误原因。通常,transformers 加载 tokenizer 常见错误以及对应排查方法有:
1、词表文件损坏
检查tokenizer.json 文件完整性,V3 和 R1 的词表不一样。 推荐使用由 Unsloth 维护的 bf16 版本

2、transformers / tokenizer 版本不匹配
- 确认 transformers、tokenizer 版本:查看模型权重路径下的 config.json 中,transformers版本号。注意:不同的原权重由于fp8转bf16时的transformers版本不同,可能会有不同的transformers 配套,请以机器上的deepseek官方权重中的config.json中的transformers版本为准)
- 若怀疑Tokenizer的问题,可以使用以下Tokenizer 校验方法,创建一个 python 脚本,如果运行成功,则 tokenizer 加载无问题。若报错,请按照上述方法检查。

13 性能问题:推理性能不符合预期
首先,请确保使能AIV,关闭确定性计算。

其次,DeepSeek-R1 官方推荐服务化请求遵循以下配置,以达到预期性能:
- 将温度设置在0.5-0.7范围内(推荐0.6),以防止出现无休止的重复或不连贯的输出。
- 避免添加 System Prompt;所有指令应包含在 User Prompt 中。
- 对于数学问题,建议在提示中加入以下指令:“请逐步推理,并将最终答案放在\boxed{}内。”
- 在评估模型性能时,建议进行多次测试并取平均结果。
- 若遇到精度问题,请确保使用openai接口。
此外,DeepSeek-R1系统模型在回答某些问题时倾向于绕过思考模式(即不输出“<think>\n\n</think>”),这可能会影响模型的表现。为了确保模型进行正确的推理,建议强制模型在每次输出的开头使用“<think>\n”。
14 权重路径和权限问题
问题描述:
在服务化拉起过程中出现权重路径不可用或者权重文件夹权限问题。
解决方案:
注意保证权重路径是可用的,执行以下命令修改权限,注意是整个父级目录的权限:

15. 16卡及以上配置推理测试类问题
1、16卡及以上配置推理测试类问题
问题描述:
多节点参与的推理超过两小时不通信会超时,从而服务化报错。
解决方案:
当前版本可以写一个每小时调用健康监控接口的脚本,进行服务化保活。服务化监控探测接口参考MindIE官方文档:健康探针接口-EndPoint管理面接口-服务化接口-MindIE Service开发指南-服务化集成部署-MindIE1.0.0开发文档-昇腾社区
2、权重加载过程中/加载完成后卡死
遇到多节点推理拉起问题可以用一个轻量化的脚本尝试快速定位一下,卡死是否是由于节点间通信算子导致的(以AllReduce为例)。
首先需要在每个节点上(推理容器内)创建三个文件,分别是 hostfile, test_allreduce.sh, test_allreduce.py




如果该指令能成功跑通且有回显,则hccl出现问题的几率较小,可以定位范围缩小到模型加载的问题上(本方法为简易HCCL联通验证,HCCL连通完全校验请使用 hccl test 工具)。
如果该指令在计算过程中卡住,则hccl出现问题的几率较大,可以再容器外再次尝试该验证方法。若在容器外也无法验通,可以按照1.4.1章节对机器进行前置准备,再进行容器外、容器内的连通验证。
如果该指令直接拉起失败,检查脚本是否有写错的地方,如sh脚本中各个参数。
3、Unicode Error
问题描述:
出现UnicodeEncodeError: 'ascii' codec can't encode character \uff5c in position 301:ordinal not in range(128) 报错。
解决方案:
这是因为由于系统在写入或打印日志ASCII编码deepseek的词表失败,导致报错,不影响服务化正常运行。如果需要规避,需要将/usr/local/Ascend/atb-models/atb_llm/runner/model_runner.py的第145行注释掉:

4、Not set valid RANKTABLEFILE报错
问题描述:
在执行服务化benchmark测试时,报错 not set valid RANKTABLEFILE。

解决方案:
需在每台机器上正确配置RANKTABLEFILE文件路径的环境变量:

相关文章:
DeepSeek在昇腾上的模型部署 - 常见问题及解决方案
2024年12月26日,DeepSeek-V3横空出世,以其卓越性能备受瞩目。该模型发布即支持昇腾,用户可在昇腾硬件和MindIE推理引擎上实现高效推理,但在实际操作中,部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾Dee…...
安全面试5
文章目录 sql的二次注入在linux下,现在有一个拥有大量ip地址的txt文本文档,但是里面有很多重复的,如何快速去重?在内网渗透中,通过钓鱼邮件获取到主机权限,但是发现内网拦截了tcp的出网流量,聊一…...
【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)
本章将详细介绍四大主流金融数据源(Tushare、AkShare、Baostock、通联数据(DataAPI)),分析其特点与适用场景,并通过实战案例展示数据获取与处理的全流程。 👉 点击关注不迷路 👉 点击…...
Exoplayer(MediaX)实现音频变调和变速播放
在K歌或录音类应用中变调是个常见需求,比如需要播出萝莉音/大叔音等。变速播放在影视播放类应用中普遍存在,在传统播放器Mediaplayer中这两个功能都比较难以实现,特别在低版本SDK中,而Exoplayer作为google官方推出的Mediaplayer替…...
服务器间迁移conda环境
注意:可使用迁移miniconda文件 or 迁移yaml文件两种方式,推荐前者,基本无bug! 一、迁移miniconda文件: 拷贝旧机器的miniconda文件文件到新机器: 内网拷贝:scp -r mazhf192.168.1.233:~/miniconda3 ~/ 外…...
docker高级
文章目录 1.Docker Compose1.1 介绍1.2 compose文件1.3 常用命令1.4 安装1.5 项目说明和构建1.5.1 手工启动1.5.2 compose 编排启动1.5.3 完善 compose.yml1.5.4 加入前端容器 2.UI管理平台2.1 portainer 3.镜像发布3.1 阿里云3.2 Docker Registry3.2.1 介绍3.2.2 安装3.2.3 测…...
Redis Stream基本使用及应用场景
一、概念 Redis Streams是Redis5.0提供的一种消息队列机制,支持多播的可持久化的消息队列,用户实现发布订阅的功能,借鉴了kafka设计。 二、常用命令 命令名称描述XADD key ID field value [field value ...]添加一条消息 key:St…...
DAY40|动态规划Part08|LeetCode: 121. 买卖股票的最佳时机 、 122.买卖股票的最佳时机II 、 123.买卖股票的最佳时机III
目录 LeetCode:121. 买卖股票的最佳时机 暴力解法 贪心法 动态规划法 LeetCode:122.买卖股票的最佳时机II 基本思路 LeetCode: 买卖股票的最佳时机III、IV 基本思路 C代码 LeetCode:121. 买卖股票的最佳时机 力扣题目链接 文字讲解:121. 买卖股票的最佳时…...
【安装及调试旧版Chrome + 多版本环境测试全攻略】
👨💻 安装及调试旧版Chrome 多版本环境测试全攻略 🌐 (新手友好版 | 覆盖安装/运行/调试全流程) 🕰️ 【背景篇】为什么我们需要旧版浏览器测试? 🌍 🌐 浏览器世界的“…...
【Linux】进程间通信——命名管道
文章目录 命名管道什么是命名管道**命名管道 vs. 无名管道**如何创建命名管道 用命名管道实现进程间通信MakefileComm.hppServer.hppClient.hppServer.cppClient.cpp 效果总结 命名管道 什么是命名管道 命名管道,也称为 FIFO(First In First Out&#…...
Qt在Linux嵌入式开发过程中复杂界面滑动时卡顿掉帧问题分析及解决方案
Qt在Linux嵌入式设备开发过程中,由于配置较低,加上没有GPU,我们有时候会遇到有些组件比较多的复杂界面,在滑动时会出现掉帧或卡顿的问题。要讲明白这个问题还得从CPU和GPU的分工说起。 一、硬件层面核心问题根源剖析 CPU&#x…...
AI学习第六天-python的基础使用-趣味图形
在 Python 编程学习过程中,turtle库是一个非常有趣且实用的工具,它可以帮助我们轻松绘制各种图形。结合for循环、random模块以及自定义方法等知识点,能够创作出丰富多彩的图案。下面就来分享一下相关的学习笔记。 一、基础知识点回顾 &…...
[VMware]卸载VMware虚拟机和Linux系统ubuntu(自记录版)
记录一下,不是教程,只是防止我做错了可以回溯一下 我打开vscode,就会跳出下图 虚拟机,Linux还是很久之前学习安装的,种途可能卸载过(不太记得了),现在尝试彻底卸载 彻底卸载VMware虚拟机的详细步骤-CSDN博客虚拟机Vmware 转移 克隆 卸载及移除Linux系统_克隆的虚拟机怎么移除-…...
J-LangChain,用Java实现LangChain编排!轻松加载PDF、切分文档、向量化存储,再到智能问答
Java如何玩转大模型编排、RAG、Agent??? 在自然语言处理(NLP)的浪潮中,LangChain作为一种强大的模型编排框架,已经在Python社区中广受欢迎。然而,对于Java开发者来说,能…...
Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)
漏洞简介: Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境: 春秋云镜中的漏洞靶标,CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…...
可以免费无限次下载PPT的网站
前言 最近发现了一个超实用的网站,想分享给大家。 在学习和工作的过程中,想必做PPT是一件让大家都很头疼的一件事。 想下载一些PPT模板减少做PPT的工作量,但网上大多精美的PPT都是需要付费才能下载使用。 即使免费也有次数限制࿰…...
STM32中使用PWM对舵机控制
目录 1、硬件JIE 2、PWM口配置 3、角度转换 4、main函数中应用 5、工程下载连接 1、硬件介绍 单片机:STM32F1 舵机:MG995 2、PWM口配置 20毫秒的PWM脉冲占空比,对舵机控制效果较好 计算的公式: PSC、ARR值的选取…...
使用插件 `vue2-water-marker`添加全局水印
使用插件 vue2-water-marker添加全局水印 效果图 1、安装插件 npm install vue2-water-marker --save2、全局注册 // main.js import Vue from vue import Vue2WaterMarker from vue2-water-markerVue.use(Vue2WaterMarker)3、在组件中使用 <template><div id&q…...
MySQL表约束的种类与应用
在MySQL数据库中,表约束是确保数据完整性的关键。约束限制了可以在表中插入或更新的数据类型,保证数据的准确性和可靠性。了解MySQL中的各种表约束对于数据库设计和数据维护至关重要。以下是MySQL支持的主要表约束类型及其应用的详细介绍。 1. 主键约束…...
【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战
【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战 大模型与知识图谱融合:技术演进、实践应用与未来挑战引言:为什么需要融合?一、技术融合的三重路径1.1 知识图谱增强大模型1.2 大模型赋能知识图谱1.3 协同推理框架二、工业级应用场景落地2.1 智能问…...
未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?
编辑:陈萍萍的公主一点人工一点智能 未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战,在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
【从零开始学习JVM | 第四篇】类加载器和双亲委派机制(高频面试题)
前言: 双亲委派机制对于面试这块来说非常重要,在实际开发中也是经常遇见需要打破双亲委派的需求,今天我们一起来探索一下什么是双亲委派机制,在此之前我们先介绍一下类的加载器。 目录 编辑 前言: 类加载器 1. …...
FFmpeg avformat_open_input函数分析
函数内部的总体流程如下: avformat_open_input 精简后的代码如下: int avformat_open_input(AVFormatContext **ps, const char *filename,ff_const59 AVInputFormat *fmt, AVDictionary **options) {AVFormatContext *s *ps;int i, ret 0;AVDictio…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
[USACO23FEB] Bakery S
题目描述 Bessie 开了一家面包店! 在她的面包店里,Bessie 有一个烤箱,可以在 t C t_C tC 的时间内生产一块饼干或在 t M t_M tM 单位时间内生产一块松糕。 ( 1 ≤ t C , t M ≤ 10 9 ) (1 \le t_C,t_M \le 10^9) (1≤tC,tM≤109)。由于空间…...
