玩转大语言模型——使用华为官方MindIE-Server镜像方式部署DeepSeek模型

系列文章目录

玩转大语言模型——使用langchain和Ollama本地部署大语言模型
玩转大语言模型——三分钟教你用langchain+提示词工程获得猫娘女友
玩转大语言模型——ollama导入huggingface下载的模型
玩转大语言模型——langchain调用ollama视觉多模态语言模型
玩转大语言模型——使用transformers中的pipeline调用huggingface中模型
玩转大语言模型——transformers微调huggingface格式的中文Bert模型
玩转大语言模型——使用GraphRAG+Ollama构建知识图谱
玩转大语言模型——完美解决GraphRAG构建的知识图谱全为英文的问题
玩转大语言模型——配置图数据库Neo4j(含apoc插件)并导入GraphRAG生成的知识图谱
玩转大语言模型——本地部署带聊天界面deepseek R1的小白教程
玩转大语言模型——本地部署deepseek R1和本地数据库的小白教程(Ollama+AnythingLLM)
玩转大语言模型——使用LM Studio在本地部署deepseek R1的零基础)教程
玩转大语言模型——Ubuntu系统环境下使用llama.cpp进行CPU与GPU混合推理deepseek
玩转大语言模型——使用Kiln AI可视化环境进行大语言模型微调数据合成
玩转大语言模型——昇腾NPU驱动固件以及CANN的安装
玩转大语言模型——在欧拉操作系统(国产Linux)使用华为官方MindIE-Server镜像方式部署DeepSeek模型


文章目录

  • 系列文章目录
  • 前言
  • 前期准备
    • 硬盘挂载、网络配置以及Docker的安装
    • 安装驱动和固件
    • 下载模型权值文件
  • 配置DeepSeek推理环境
    • 拉取MindIE-Server镜像
    • 启动容器
    • 进入容器
    • 配置模型参数文件
    • 修改mindie-servier配置
    • 启动 mindie-server 服务


前言

本文将详细介绍在国产Linux系统欧拉中使用华为官方MindIE-Server镜像方式部署DeepSeek模型。一般情况下华为昇腾800I服务器可以推理DeepSeek-R1-70B,4张300I-Duo服务器可以推理DeepSeek-R1-32B。在配置中尽量贴合官方文档,包含用到的一些其他的技术细节,便于零基础入门使用

前期准备

硬盘挂载、网络配置以及Docker的安装

在欧拉操作系统(国产Linux)中相关的配置可以参照文章Linux系统管理(十九)——欧拉系统硬盘挂载、网络配置以及Docker环境安装

安装驱动和固件

安装过程在上一篇中已经介绍过了,这里不再赘述,可以参照下面这篇博客。由于在mindie-server中已经内置了CANN,所以在安装mindie-server时,CANN的安装并非必选项。
玩转大语言模型——昇腾NPU驱动固件以及CANN的安装(教你如何使用官方社区安装)

下载模型权值文件

本文以DeepSeek-R1-32B为例,读者可以根据自己的情况选择模型权值文件下载,在本文中将下载后的模型保存到路径/data/llm/deepseek/
modelscope下载地址:https://www.modelscope.cn/models/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B
hf-mirror下载地址:https://hf-mirror.com/deepseek-ai/DeepSeek-R1-Distill-Qwen-32B


配置DeepSeek推理环境

拉取MindIE-Server镜像

官方mindie地址:https://www.hiascend.com/developer/ascendhub/detail/mindie
点击镜像版本后可以看到能够下载的版本,但是需要申请权限才能够下载
在这里插入图片描述

注册登录华为账号后,填写姓名、公司、邮箱、申请原因后即可下载
在这里插入图片描述
800I下载第一个镜像,300I-DUO下载第三个镜像,点击立即下载后按照官方提示拉取镜像即可
在这里插入图片描述
如果有大量配置需求的话,在拉取镜像后可以先保存拉取过的镜像,等需要的时候直接导入

启动容器

先给出一个参考命令,随后再给出解释

docker run -it --ipc=host \--device=/dev/davinci0 \--device=/dev/davinci1 \--device=/dev/davinci2 \--device=/dev/davinci3 \--device=/dev/davinci4 \--device=/dev/davinci5 \--device=/dev/davinci6 \--device=/dev/davinci7 \--device=/dev/davinci_manager \--device=/dev/devmm_svm \--device=/dev/hisi_hdc \--name=ds_service \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver \-v /usr/local/Ascend/add-ons/:/usr/local/Ascend/add-ons/ \-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi \-v /usr/local/sbin/:/usr/local/sbin/ \-v /var/log/npu/:/usr/slog \-v /data/llm/deepseek/:/home/HwHiAiUser \-d -p 1025:1025 mindie:1.0.0-T71.B020-300I-Duo-arm64-py3.11 /bin/bash

这里有几点需要根据实际情况修改

参数解释
–device=/dev/davinci0像这类参数用于表示核心数,这里从davinci0写到了davinci7,使用的是8个核心
-v /data/llm/deepseek/:/home/HwHiAiUser这个路径是映射模型的路径,将物理机上存储模型的路径/data/llm/deepseek/映射到容器的/home/HwHiAiUser路径上
-d -p 1025:1025将容器端口1025映射到物理机,这是为了外部访问mindie-server起的DeepSeek服务
mindie:1.0.0-T71.B020-300I-Duo-arm64-py3.11镜像版本,示例中是300I-DUO镜像,如果是800I的镜像,需要把名称换为swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:2.0.T3-800I-A2-py311-openeuler24.03-lts

进入容器

docker exec -it ds_service /bin/bash

配置模型参数文件

模型文件路径为:/home/HwHiAiUser
使用命令修改模型目录的所有者和权限模式, 这里以DeepSeek-R1-Distill-Qwen-32B为例,这个模型的模型路径为/home/HwHiAiUser/DeepSeek-R1-Distill-Qwen-32B

cd /home/HwHiAiUser
chown -R root:root DeepSeek-R1-Distill-Qwen-32B
chmod -R 750 DeepSeek-R1-Distill-Qwen-32B

进入DeepSeek-R1-Distill-Qwen-32B, 修改其中的config.json文件, 将其中torch_dtype项改为float16

cd DeepSeek-R1-Distill-Qwen-32B
vi config.json

修改mindie-servier配置

进入到mindie-server目录

cd /usr/local/Ascend/mindie/latest/mindie-service 
source set_env.sh

修改 config.json 文件

vi conf/config.json 

修改以下参数项

参数修改值
httpsEnablefalse
ipAddress0.0.0.0
AllowAllZeroIpListeningtrue
maxIterTimes4096:
numDeviceIds设为你想使用的卡的id
worldSize设为卡数
modelName模型名称,注意要和请求时用到的model名相同
modelWeightPath模型参数目录路径

其他值的修改参照官方
MindIE-Server参数设置:https://www.hiascend.com/document/detail/zh/mindie/100/mindieservice/servicedev/mindie_service0285.html

启动 mindie-server 服务

cd /usr/local/Ascend/mindie/latest/mindie-service

启动服务并将日志输入到 output.log文件中

nohup ./bin/mindieservice_daemon > output.log 2>&1 &

通过如下命令查看日志

tail -f output.log 

启动, 如果有以下内容则启动成功

Daemon start success!

启动成功后访问地址http://服务器IP:1025/v1即可使用类OpenAI的方式访问大模型的Server

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCP项目开发-一个简单的RAG示例

MCP项目开发-一个简单的RAG示例 前言 前言 客户端是基于官网的例子改的,模型改成了openai库连接仅仅使用基础的RAG流程作为一个演示,包含了以下步骤 query改写搜索:使用google serper重排序:使用硅基流动的api 大模型api也使用…

Tire树(字典树)

理论 上图是一棵Trie树,表示了关键字集合{“a”, “to”, “tea”, “ted”, “ten”, “i”, “in”, “inn”} 。从上图可以归纳出Trie树的基本性质: 根节点不包含字符,除根节点外的每一个子节点都包含一个字符。从根节点到某一个节点&…

厄瓜多尔主流收单方式:Pago Efectivo支付

PAGOEFECTIVO(Pago Efectivo)是秘鲁主流的在线支付方式,由El Comercio Group开发,主要为用户提供安全、便捷的在线支付解决方案,支持网银和现金支付,适用于没有信用卡或不愿透露银行信息的消费者。 Pago Ef…

【文献研究】含硼钢中BN表面偏析对可镀性的影响

《B 添加钢的溶融 Zn めっき性に及ぼす BN 表面析出の影響》由JFE公司田原大輔等人撰写。研究聚焦 B 添加钢在低露点退火时 BN 形成对镀锌性的影响,对汽车用高强度钢镀锌工艺优化意义重大。通过多组对比实验,结合多种分析手段,明确了相关因素…

语法: ptr=malloc(size)

MALLOC( ) 语法: ptrmalloc(size) 参数: size是一个整数,表示被分配的字节个数; 返回值: 如果允许的话,返回值是一个指向被分配存储器的指针;否则的话, 返回值是一个非指针; 功能: 该函数用来分配一定大小的空间给一个对象,其大小为size,但该空间的值为不确定值; 有…

JavaScript创建对象与构造函数

目录 创建对象 一、创建对象的 5 种核心方式 1. 对象字面量(直接量) 2. 使用 Object.create() 3. 工厂模式 4. 构造函数模式 5. ES6 class 语法(语法糖) 二、构造函数与 new 关键字 1. 构造函数的作用 2. 构造函数的特征…

AIDD-人工智能药物设计-深度学习助力提高儿童低级别胶质瘤复发风险预测的准确性

深度学习助力提高儿童低级别胶质瘤复发风险预测的准确性 儿童低级别胶质瘤(pLGG)是一种常见于儿童患者中的脑肿瘤,尽管大多数时候被认为是良性肿瘤,但是它们仍然可能导致相关症状和并发症的发生,包括但不限于头疼、癫…

redis的数据类型(1)

https://redis.io/docs/latest/develop/data-types/strings/ 社区版支持: String,字符串 Hash,key-value格式 List,根据插入顺序排序 Set,集合 Sorted set,有排序 Stream, Bitmap, …

Nacos配置中心使用

Nacos配置中心 Nacos除了可以做注册中心,🔗Nacos下载和注册中心教程,同样可以做配置管理来使用。 一、统一配置管理 当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服务配置就显得十分的不方便,而且很容易出错。我们…

OpenCV轮廓检测全面解析:从基础到高级应用

一、概述 轮廓检测是计算机视觉中的基础技术,用于识别和提取图像中物体的边界。与边缘检测不同,轮廓检测更关注将边缘像素连接成有意义的整体,形成封闭的边界。 轮廓检测的核心价值 - 物体识别:通过轮廓可以识别图像中的独立物体…

Jenkins学习(B站教程)

文章目录 1.持续集成CI2.持续交付CD3.持续部署4.持续集成的操作流程5.jenkins简介6.后续安装部署,见视频 bilibili视频 Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用…

ARM-UART

时钟选择PLCK,超时3ms自动发送,设置发送8位的缓冲区,且发送中断 设置触发深度,达到8字节将缓冲区数据发憷 中断处理函数

Rust所有权详解

文章目录 Rust所有权所有权规则作用域 内存和分配移动与克隆栈空间堆空间 关于函数的所有权机制作为参数作为返回值 引用与租借垂悬引用 Rust所有权 C/C中我们对于堆内存通常需要自己手动管理,手动申请和释放,即便有了智能指针,对于效率的影…

【在线OJ项目测试报告】

朋友们、伙计们,我们又见面了,本期来给大家带来关于在线OJ项目的测试报告,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言:从入门到精通 数…

【HFP】蓝牙HFP应用层核心技术研究

免提配置文件(Hands-Free Profile, HFP)作为实现设备间音频通信的关键协议,广泛应用于车载系统、蓝牙耳机等场景。本文将基于最新技术规范,深入剖析HFP应用层的功能要求、协议映射及编解码器支持,为蓝牙开发工程师提供详尽的技术指南。 一、HFP应用层功能全景图 HFP定义…

横扫SQL面试——PV、UV问题

📊 横扫SQL面试:UV/PV问题 🌟 什么是UV/PV? 在数据领域,UV(Unique Visitor,独立访客) 和 PV(Page View,页面访问量) 是最基础也最重要的指标&…

【C++】第八节—string类(上)——详解+代码示例

hello,又见面了! 云边有个稻草人-CSDN博客 C_云边有个稻草人的博客-CSDN博客——C专栏(质量分高达97!) 菜鸟进化中。。。 目录 一、为什么要学习string类? 1.1 C语言中的字符串 1.2 面试题(暂不做讲解) …

如何判断JVM中类和其他类是不是同一个类

如何判断JVM中的类是否为同一个类 在Java虚拟机(JVM)中,判断两个类是否相同需要同时满足以下三个条件: 1. 类全限定名必须相同 包括包名类名的完整路径必须完全一致例如:java.lang.String和com.example.String被视为不同类 2. 加载该类的…

ifconfig 使用详解

目录 一、基本语法二、常见用途及示例1. 查看所有网络接口信息2. 启用/禁用网络接口3. 配置 IP 地址和子网掩码4. 修改 MAC 地址5. 启用混杂模式(Promiscuous Mode)6. 设置 MTU(最大传输单元) 三、其他选项四、常见问题1. 新系统中…

1. 标准库的强依赖(核心原因)

1. 标准库的强依赖(核心原因) 容器操作(如 std::vector 扩容) 当标准库容器(如 std::vector)需要重新分配内存时,它会尝试移动现有元素到新内存,而非拷贝(为了性能&…