任皓:解放军总医院DeepSeek部署实践经验分享

发布时间:2025-03-03
浏览次数:

  近日,解放军总医院联合华为公司,基于昇腾硬件及MindIE推理平台完成DeepSeek-R1模型的本地部署,并通过MaxKB工具完成本地知识库构建。在满足“数据不出院”的要求下,为医院提供了DeepSeek-R1推理模型的高效应用体验。

  本文将DeepSeek模型在局域网中本地化部署遇到的一些问题进行详细阐述,希望对广大同行有所启发。部署分几个步骤,包括准备环境、创建容器、配置启动MindIE、使用WebUI等。部署之后,我们也进行了本地知识库构建和Java编程接入。

一 准备环境

  第一步是驱动固件安装‌,这里需要特别注意操作系统版本与驱动版本是否匹配,建议参考官方文档进行驱动安装;使用Smart Kit升级BMC、BIOS、CPLD;升级Smart Provisioning;升级网卡、RAID卡、NPU固件等;如遇兼容性问题,尝试升级操作系统或更换驱动版本;另外要检查系统日志,根据错误提示进行针对性解决。

  第二步是操作系统安装。提前确认操作系统版本,根据我们了解,可选择的系统版本包括Kylin V10(SP1、SP2、SP3)、CTyunOS 22.06、Ubuntu 24.04、CULinux 3.0、openEuler 23.03、BC-Linux 21.10等。如果遇到操作系统反复安装不上的问题,建议采用如下方法:

  (1)RAID阵列及状态‌‌检查:阵列是否处于"Degraded"(降级)、"Rebuilding"(重建)、"Failed"(故障)状态;

  (2)同步/重建进度‌‌检查项‌:重建进度百分比、预计完成时间、是否存在中断风险(如硬盘性能不足);

  (3)配置一致性‌‌检查:RAID级别、硬盘数量、热备盘配置是否与预期一致。‌此环节存在误移除硬盘或配置错误导致冗余失效的风险;

  (4)安装介质问题‌‌验证‌:重新制作启动盘(推荐 Rufus 或 Ventoy)。

  第三步是Docker安装‌。不同操作系统安装Docker的方法有所不同,可以在网上找到各个操作系统下安装Docker的方法,在此不再赘述。不过需要注意的是:Docker安装后,其默认IP一般为172.17.0.1,如果局域网内有设备使用和Docker默认IP地址相同的网段,则可能会发生IP地址冲突,导致Docker无法访问,此时需要修改Docker默认IP地址,修改方法如下:

  (1)进入/etc/docker目录,查看是否存在daemon.json,若不存在则新建一个。

  (2)vim daemon.json编辑文件内容,修改网段为规划网段并保存(此处以 192.168.0.1/24 网段为例),cat daemon.json确认修改正确。

  (3)service docker restart重启Docker服务。

1.jpg

图1 修改Docker默认IP地址

二 创建容器

  为了简化DeepSeek安装过程,MindIE镜像包集成了DeepSeek模型运行所需的依赖环境,包括操作系统、深度学习框架以及配置脚本等,基于该镜像包技术人员只需要通过简单的命令即可完成环境搭建,无需手动配置繁琐的软件和依赖,避免了因环境配置不当而导致的部署失败问题。该镜像包可在昇腾社区上拉取,部署不同版本的DeepSeek使用不同的镜像包,具体的版本说明以及镜像拉取指导可参考昇腾社区官方指导:https://www.hiascend.cn/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f‌。

  MindIE镜像包预置了DeepSeek模型推理脚本,无需再额外下载模型适配代码,直接新建容器即可。以下给出容器启动的一个实例:

3.jpg

  其中:path-to-weights为权重路径,mindie:1.0.0-800I-A2-py311-openeuler24.03-lts为使用的镜像,需要根据实际的权重路径和使用的镜像进行修改。

三 配置启动MindIE

  容器创建成功后,进入容器,需要对配置进行修改,要修改的配置文件为:/usr/local/Ascend/mindie/latest/mindie-service/conf/config.json。一般主要涉及修改的配置有:NPU DeviceIds参数表示启用哪几张卡,如配置[[0,1,2,3]]表示使用前4张卡,同时需要将WorldSize配置为4;modelWeightPath配置模型权重路径;IP Address配置主节点的服务器IP地址;Port配置服务端口号。部署完成服务启动后,如果出现模型回答显示不全等问题,可以通过修改MindIE的配置参数进行调测,关于MindIE配置的更多信息请参考https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0001.html。如果仍无法解决问题,可在昇腾社区论坛中求助。配置好MindIE服务参数后,即可执行以下命令拉起服务。

4.jpg

四 使用WebUI

  在ChatBox、Open-WebUI软件中配置API时,经常会遇到这样那样的问题,第一类是无法连接到MindIE服务。建议检查这几个方面:确认API域名和端口号正确无误,且与MindIE服务配置的IP和端口一致;检查操作系统防火墙设置,确保MindIE服务的端口已开放给ChatBox 、Open-WebUI软件访问;如遇网络问题,尝试重启MindIE服务和ChatBox软件,或检查网络连接状态。第二类是选择Model的时候遇到因为参数问题连接不上,这个时候可以通过请求开放的OpenAPI接口,例如:浏览器请求 http://192.168.0.1/v1/models可以获取已经部署的模型列表,根据需要选择所要接入的模型。

  用户交互方面,可以独立开发一套前端问答界面接入DeepSeek的Api实现简单问答页面,为了便于扩展,建议还是选择使用开源的MaxKB知识库问答系统。

  MaxKB支持一键部署,代码在GitHub开源,它可以生成公共UI接口进行问答界面的展示。利用IFrame标签将MaxKB生成的UI页面嵌入到第三方应用程序中,支持配置嵌入白名单设置。

2.jpg

图2 嵌入页面展示

五 关于建立本地知识库与Java编程接入xiezuo20250225-170026

  按照平台格式要求进行知识库信息的导入,支持Word、Excel等多种文件上传,如下是知识库实现效果。

5.jpg

图3 建立本地知识库

6.jpg

图4 建立本地知识库

  如何实现在开发工具中直接接入OpenApi协助开发。我们可以在IDEA中添加插件,例如CodeGPT、Continue等许多开源插件,这里以Continue为例接入本地DeepSeek-R1模型,实现模型调用。

7.jpg

图5 编程接入DeepSeek模型

  在调用模型时,如果提示卡数不匹配或算子不支持。看看这几个方面:确认调用的卡数与模型要求的卡数一致,遵循{1,2,4,8}的规则;检查模型是否支持当前调用的算子,如需支持可尝试升级MindIE版本或更换模型;如遇资源冲突问题,尝试调整NPU资源的分配或使用其它空闲的卡进行模型调用。

  在DeepSeek部署过程中,或许还会遇到一些其他问题,比如无法查看NPU的使用情况或信息不准确、无法停止模型或停止后服务仍占用资源等,这些我们都遇到过,也都有相应解决的办法。当遇到问题时,可以在昇腾社区的论坛中搜索问题的解决方案,或者我们一起探索。

  作者简介

8.jpg

  任皓,硕士研究生,解放军总医院信息科高级工程师,中国老年保健医学研究会数据分析分会委员。主要研究领域:医院网络建设及规划、网络安全管理等相关工作。参与多项省部级课题研究,信息化建设方案编制,发表统计源核心期刊10余篇。2021年在“新华三杯”医疗新基建网络技能大赛中获得二等奖。