当前位置: 首页 > news >正文

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通信失败相关日志内容:

Image

Image

解决方案:

  1. 问题定位前需要先开启日志生成环境变量:

    Image

    算子库&加速库&模型库日志保存路径:/root/atb/log

    CANN日志保存路径:/root/ascend/log/debug/plog

  2. 通过hccn_tool工具进行连通性检测,发现出现链路down,修复链路down的问题后,通信失败问题解决。

02 通信错误:Hccl通信超时 ​

可配置以下环境变量,增大超时等待时间。

Image

03 显存不足:NPU out of memory ​

问题现象:

在服务化拉起过程中,出现NPU out of memory报错。

Image

解决方案:

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

Image

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 推理卡顿:纯模型/服务化拉起卡住、停止 ​

Image

问题现象:

如果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:

Image

所有卡利用率为0:

Image

当前识别为重计算触发的问题,可通过修改mindieservice的config文件进行临时规避。

要求maxseqen与maxprefilltoken参数配置为相同大小。

当前识别为重计算触发的问题,可通过修改mindieservice的config文件进行临时规避。

要求maxseqen与maxprefilltoken参数配置为相同大小。

Image

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

Image

需正确配置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地址,注意容器开放的端口不要和主机冲突。

Image

10 日志采集:纯模型Profiling 采集 ​

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

Image

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

Image

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

Image

采集完成后,核心数据解析到$PROFILING_FILEPATH /ASCEND_PROFILER_OUTPUT 路径下。

11 日志采集:通用方法 ​

遇到推理报错时,请打开日志环境变量,收集日志信息。

Image

12 Tokenizer 报错 ​

Image

MindIE 报 XXX 错误,有一定误导性。实际上只要是 transformers 加载 tokenizer 报错,MindIE 会捕获所有错误,直接退出,并且不会显示真正错误原因。通常,transformers 加载 tokenizer 常见错误以及对应排查方法有:

1、词表文件损坏

检查tokenizer.json 文件完整性,V3 和 R1 的词表不一样。 推荐使用由 Unsloth 维护的 bf16 版本

Image

2、transformers / tokenizer 版本不匹配

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

Image

13 性能问题:推理性能不符合预期 ​

首先,请确保使能AIV,关闭确定性计算。

Image

其次,DeepSeek-R1 官方推荐服务化请求遵循以下配置,以达到预期性能:

  • 将温度设置在0.5-0.7范围内(推荐0.6),以防止出现无休止的重复或不连贯的输出。
  • 避免添加 System Prompt;所有指令应包含在 User Prompt 中。
  • 对于数学问题,建议在提示中加入以下指令:“请逐步推理,并将最终答案放在\boxed{}内。”
  • 在评估模型性能时,建议进行多次测试并取平均结果。
  • 若遇到精度问题,请确保使用openai接口。

此外,DeepSeek-R1系统模型在回答某些问题时倾向于绕过思考模式(即不输出“<think>\n\n</think>”),这可能会影响模型的表现。为了确保模型进行正确的推理,建议强制模型在每次输出的开头使用“<think>\n”。

14 权重路径和权限问题 ​

问题描述:

在服务化拉起过程中出现权重路径不可用或者权重文件夹权限问题。

解决方案:

注意保证权重路径是可用的,执行以下命令修改权限,注意是整个父级目录的权限:

Image

15. 16卡及以上配置推理测试类问题 ​

1、16卡及以上配置推理测试类问题 ​

问题描述:

多节点参与的推理超过两小时不通信会超时,从而服务化报错。

解决方案:

当前版本可以写一个每小时调用健康监控接口的脚本,进行服务化保活。服务化监控探测接口参考MindIE官方文档:健康探针接口-EndPoint管理面接口-服务化接口-MindIE Service开发指南-服务化集成部署-MindIE1.0.0开发文档-昇腾社区

2、权重加载过程中/加载完成后卡死 ​

遇到多节点推理拉起问题可以用一个轻量化的脚本尝试快速定位一下,卡死是否是由于节点间通信算子导致的(以AllReduce为例)。

首先需要在每个节点上(推理容器内)创建三个文件,分别是 hostfile, test_allreduce.sh, test_allreduce.py

Image

Image

Image

Image

如果该指令能成功跑通且有回显,则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行注释掉:

Image

4、Not set valid RANKTABLEFILE报错 ​

问题描述:

在执行服务化benchmark测试时,报错 not set valid RANKTABLEFILE。

Image

解决方案:

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

Image

相关文章:

DeepSeek在昇腾上的模型部署 - 常见问题及解决方案

2024年12月26日&#xff0c;DeepSeek-V3横空出世&#xff0c;以其卓越性能备受瞩目。该模型发布即支持昇腾&#xff0c;用户可在昇腾硬件和MindIE推理引擎上实现高效推理&#xff0c;但在实际操作中&#xff0c;部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾Dee…...

安全面试5

文章目录 sql的二次注入在linux下&#xff0c;现在有一个拥有大量ip地址的txt文本文档&#xff0c;但是里面有很多重复的&#xff0c;如何快速去重&#xff1f;在内网渗透中&#xff0c;通过钓鱼邮件获取到主机权限&#xff0c;但是发现内网拦截了tcp的出网流量&#xff0c;聊一…...

【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)

本章将详细介绍四大主流金融数据源&#xff08;Tushare、AkShare、Baostock、通联数据&#xff08;DataAPI&#xff09;&#xff09;&#xff0c;分析其特点与适用场景&#xff0c;并通过实战案例展示数据获取与处理的全流程。 &#x1f449; 点击关注不迷路 &#x1f449; 点击…...

Exoplayer(MediaX)实现音频变调和变速播放

在K歌或录音类应用中变调是个常见需求&#xff0c;比如需要播出萝莉音/大叔音等。变速播放在影视播放类应用中普遍存在&#xff0c;在传统播放器Mediaplayer中这两个功能都比较难以实现&#xff0c;特别在低版本SDK中&#xff0c;而Exoplayer作为google官方推出的Mediaplayer替…...

服务器间迁移conda环境

注意&#xff1a;可使用迁移miniconda文件 or 迁移yaml文件两种方式&#xff0c;推荐前者&#xff0c;基本无bug&#xff01; 一、迁移miniconda文件&#xff1a; 拷贝旧机器的miniconda文件文件到新机器: 内网拷贝&#xff1a;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提供的一种消息队列机制&#xff0c;支持多播的可持久化的消息队列&#xff0c;用户实现发布订阅的功能&#xff0c;借鉴了kafka设计。 二、常用命令 命令名称描述XADD key ID field value [field value ...]添加一条消息 key&#xff1a;St…...

DAY40|动态规划Part08|LeetCode: 121. 买卖股票的最佳时机 、 122.买卖股票的最佳时机II 、 123.买卖股票的最佳时机III

目录 LeetCode:121. 买卖股票的最佳时机 暴力解法 贪心法 动态规划法 LeetCode:122.买卖股票的最佳时机II 基本思路 LeetCode: 买卖股票的最佳时机III、IV 基本思路 C代码 LeetCode:121. 买卖股票的最佳时机 力扣题目链接 文字讲解&#xff1a;121. 买卖股票的最佳时…...

【安装及调试旧版Chrome + 多版本环境测试全攻略】

&#x1f468;&#x1f4bb; 安装及调试旧版Chrome 多版本环境测试全攻略 &#x1f310; &#xff08;新手友好版 | 覆盖安装/运行/调试全流程&#xff09; &#x1f570;️ 【背景篇】为什么我们需要旧版浏览器测试&#xff1f; &#x1f30d; &#x1f310; 浏览器世界的“…...

【Linux】进程间通信——命名管道

文章目录 命名管道什么是命名管道**命名管道 vs. 无名管道**如何创建命名管道 用命名管道实现进程间通信MakefileComm.hppServer.hppClient.hppServer.cppClient.cpp 效果总结 命名管道 什么是命名管道 命名管道&#xff0c;也称为 FIFO&#xff08;First In First Out&#…...

Qt在Linux嵌入式开发过程中复杂界面滑动时卡顿掉帧问题分析及解决方案

Qt在Linux嵌入式设备开发过程中&#xff0c;由于配置较低&#xff0c;加上没有GPU&#xff0c;我们有时候会遇到有些组件比较多的复杂界面&#xff0c;在滑动时会出现掉帧或卡顿的问题。要讲明白这个问题还得从CPU和GPU的分工说起。 一、硬件层面核心问题根源剖析 CPU&#x…...

AI学习第六天-python的基础使用-趣味图形

在 Python 编程学习过程中&#xff0c;turtle库是一个非常有趣且实用的工具&#xff0c;它可以帮助我们轻松绘制各种图形。结合for循环、random模块以及自定义方法等知识点&#xff0c;能够创作出丰富多彩的图案。下面就来分享一下相关的学习笔记。 一、基础知识点回顾 &…...

[VMware]卸载VMware虚拟机和Linux系统ubuntu(自记录版)

记录一下,不是教程,只是防止我做错了可以回溯一下 我打开vscode,就会跳出下图 虚拟机,Linux还是很久之前学习安装的,种途可能卸载过(不太记得了),现在尝试彻底卸载 彻底卸载VMware虚拟机的详细步骤-CSDN博客虚拟机Vmware 转移 克隆 卸载及移除Linux系统_克隆的虚拟机怎么移除-…...

J-LangChain,用Java实现LangChain编排!轻松加载PDF、切分文档、向量化存储,再到智能问答

Java如何玩转大模型编排、RAG、Agent&#xff1f;&#xff1f;&#xff1f; 在自然语言处理&#xff08;NLP&#xff09;的浪潮中&#xff0c;LangChain作为一种强大的模型编排框架&#xff0c;已经在Python社区中广受欢迎。然而&#xff0c;对于Java开发者来说&#xff0c;能…...

Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)

漏洞简介&#xff1a; Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境&#xff1a; 春秋云镜中的漏洞靶标&#xff0c;CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…...

可以免费无限次下载PPT的网站

前言 最近发现了一个超实用的网站&#xff0c;想分享给大家。 在学习和工作的过程中&#xff0c;想必做PPT是一件让大家都很头疼的一件事。 想下载一些PPT模板减少做PPT的工作量&#xff0c;但网上大多精美的PPT都是需要付费才能下载使用。 即使免费也有次数限制&#xff0…...

STM32中使用PWM对舵机控制

目录 1、硬件JIE 2、PWM口配置 3、角度转换 4、main函数中应用 5、工程下载连接 1、硬件介绍 单片机&#xff1a;STM32F1 舵机&#xff1a;MG995 2、PWM口配置 20毫秒的PWM脉冲占空比&#xff0c;对舵机控制效果较好 计算的公式&#xff1a; PSC、ARR值的选取&#xf…...

使用插件 `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数据库中&#xff0c;表约束是确保数据完整性的关键。约束限制了可以在表中插入或更新的数据类型&#xff0c;保证数据的准确性和可靠性。了解MySQL中的各种表约束对于数据库设计和数据维护至关重要。以下是MySQL支持的主要表约束类型及其应用的详细介绍。 1. 主键约束…...

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战

【大模型+知识图谱】大模型与知识图谱融合:技术演进、实践应用与未来挑战 大模型与知识图谱融合:技术演进、实践应用与未来挑战引言:为什么需要融合?一、技术融合的三重路径1.1 知识图谱增强大模型1.2 大模型赋能知识图谱1.3 协同推理框架二、工业级应用场景落地2.1 智能问…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

【Java学习笔记】BigInteger 和 BigDecimal 类

BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点&#xff1a;传参类型必须是类对象 一、BigInteger 1. 作用&#xff1a;适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)

引言 在人工智能飞速发展的今天&#xff0c;大语言模型&#xff08;Large Language Models, LLMs&#xff09;已成为技术领域的焦点。从智能写作到代码生成&#xff0c;LLM 的应用场景不断扩展&#xff0c;深刻改变了我们的工作和生活方式。然而&#xff0c;理解这些模型的内部…...

Qt 事件处理中 return 的深入解析

Qt 事件处理中 return 的深入解析 在 Qt 事件处理中&#xff0c;return 语句的使用是另一个关键概念&#xff0c;它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别&#xff1a;不同层级的事件处理 方…...