资讯动态

银河麒麟V10离线部署DeepSeek:ARM64内网大模型服务搭建指南

发布时间:2026/10/16 19:14:57 来源:尧图企业网站定制
简介这份文档面向需要在银河麒麟V10Kylin-Desktop-V10-SP1ARM64架构上离线部署大语言模型的技术人员解决无外网或受限网络环境下搭建AI服务的问题。内容围绕ollama服务安装、deepseek-r1:14b蒸馏模型的离线下载与导入、系统服务与环境变量配置以及chatbox客户端安装、桌面快捷方式创建和远程连接方式展开适合具备一定Linux命令行基础、希望掌握国产操作系统AI部署流程的读者。资源包为1个docx文档约2.69MB以图文步骤与命令示例呈现便于对照操作。目前已有5531人学习下载说明该场景需求较为集中。读者可从中获得从环境准备、模型导入到服务常驻与客户端交互的完整思路并参考示例路径与配置项调整自身部署方案减少离线环境下的试错成本。1. 银河麒麟V10离线部署DeepSeek从零搭起一套能跑的内网大模型服务手里有一台飞腾FT-2000的麒麟V10机器没显卡也不让连外网但领导要求把DeepSeek跑起来给团队用——这个场景这两年我碰到过好几次。这份资源给的就是一套完整的离线部署路径ollama做模型服务底座deepseek-r1:14b蒸馏模型做推理chatbox做前端交互全部落在/opt/deepseek目录下配置成systemd服务开机自启。它解决的核心问题是在ARM64架构的国产Linux发行版上不依赖任何在线源把大模型服务从零搭到可用。适合谁适合需要在信创环境里做AI能力落地的运维和开发尤其是那些机器没显卡、网络隔离、但又必须交付一个能对话的模型服务的场景。下面我按实际拆解的顺序把每一步的命令、参数和容易翻车的地方讲清楚。2. 环境准备与ollama离线安装ARM64包怎么解、用户怎么建2.1 确认系统架构与依赖完整性动手之前先确认两件事CPU架构和系统版本。这份资源针对的是Kylin-Desktop-V10-SP1-General-Release-2303-arm64CPU是Phytium FT-2000。如果你手里的机器是x86_64那ollama的包得换对应的版本不能混用。确认命令很简单# 查看系统架构输出应为 aarch64 或 arm64 uname -m # 查看系统版本信息 cat /etc/os-release | grep -E PRETTY_NAME|VERSION逻辑说明uname -m输出aarch64说明是ARM64架构ollama的linux-arm64包才能用。/etc/os-release里的版本号用来确认是不是SP1-2303这个基线不同小版本的glibc可能有差异后面chatbox的AppImage如果跑不起来大概率就是glibc版本对不上。参数说明没有需要调的参数这一步纯粹是确认环境。如果uname -m输出x86_64后面所有arm64的包都得换成amd64版本包括ollama、chatbox和zlib1g-dev。常见做法是先把所有离线包集中放到一个目录比如/opt/deepseek后面所有操作都在这个目录下进行路径统一了好排查。2.2 解压ollama并创建专用运行用户ollama的离线包是ollama-linux-arm64.tgz解压到/opt/deepseek/ollama。注意解压出来的目录结构是bin/和lib/bin/下面就是ollama的可执行文件。# 进入存放安装包的目录 cd /opt/deepseek # 创建ollama安装目录 mkdir -p /opt/deepseek/ollama # 解压ollama压缩包到指定目录 tar -C /opt/deepseek/ollama -xzf ollama-linux-arm64.tgz # 确认解压结果应该能看到bin/ollama ls /opt/deepseek/ollama/bin/逻辑说明tar -C指定解压目标目录-xzf分别表示解压、gzip格式、指定文件名。解压后/opt/deepseek/ollama/bin/ollama就是主程序。参数说明-C /opt/deepseek/ollama这个路径要和后面systemd服务里ExecStart的路径一致改了就两边一起改。接下来创建ollama专用用户。为什么要建用户因为ollama服务不应该用root跑权限太大一旦出问题影响面广。资源里用的是useradd -r创建系统用户shell设为/bin/false禁止登录# 创建ollama系统用户不分配登录shell家目录设在/usr/share/ollama sudo useradd -r -s /bin/false -U -m -d /usr/share/ollama ollama # 把当前用户加入ollama组方便后续操作 sudo usermod -a -G ollama $(whoami)逻辑说明-r表示创建系统用户-s /bin/false禁止该用户登录终端-U创建同名用户组-m -d指定并创建家目录。usermod -a -G把当前操作用户加入ollama组这样后面操作模型文件时不会因为权限问题被拒。参数说明家目录/usr/share/ollama是ollama的默认约定不建议改。如果你改了OLLAMA_HOME环境变量也得跟着调。2.3 配置systemd服务与环境变量文件ollama要作为系统服务常驻需要写一个systemd unit文件。资源里放在/etc/systemd/system/ollama.service[Unit] DescriptionOllama Service Afternetwork-online.target [Service] ExecStart/opt/deepseek/ollama/bin/ollama serve Userollama Groupollama Restartalways RestartSec3 EnvironmentFile/opt/deepseek/ollama/ollama.conf [Install] WantedBydefault.target逻辑说明Afternetwork-online.target确保网络就绪后再启动虽然离线场景下网络不是必须的但ollama启动时会绑定端口网络栈没准备好可能报错。Restartalways配合RestartSec3实现崩溃后3秒自动重启。EnvironmentFile指向独立的环境变量文件这样改配置不用动service文件。参数说明User和Group都设为ollama和前面创建的用户对应。ExecStart的路径必须和实际解压路径一致。WantedBydefault.target表示多用户模式下自启。环境变量文件/opt/deepseek/ollama/ollama.conf内容如下OLLAMA_HOME/opt/deepseek/ollama OLLAMA_MODELS/opt/deepseek/ollama/models OLLAMA_HOST0.0.0.0 OLLAMA_ORIGINS* PATH$OLLAMA_HOME/bin:$PATH逻辑说明OLLAMA_MODELS指定模型文件存放路径离线导入的gguf文件最终会落在这里。OLLAMA_HOST0.0.0.0让ollama监听所有网卡这样局域网内其他机器才能远程调用。OLLAMA_ORIGINS*放开跨域限制chatbox作为前端才能连上。参数说明OLLAMA_HOST如果只写0.0.0.0不带端口默认走11434。如果要改端口写成0.0.0.0:11435这种格式。OLLAMA_ORIGINS在生产环境建议收窄到具体IP但内网测试用*最省事。配置完成后改权限、重载systemd、启动服务# 把ollama目录的所有权给ollama用户 sudo chown -R ollama:ollama /opt/deepseek/ollama # 重载systemd配置 sudo systemctl daemon-reload # 设置开机自启 sudo systemctl enable ollama # 立即启动服务 sudo systemctl start ollama # 查看运行状态 sudo systemctl status ollama逻辑说明chown -R把整个ollama目录的属主改成ollama因为服务以ollama用户运行模型文件写入需要权限。daemon-reload让systemd重新读取unit文件。enable加start是标准组合一个管开机自启一个管立即生效。参数说明status输出里看到Active: active (running)就说明服务起来了。如果看到failed用journalctl -u ollama -n 50看最近50行日志定位问题。最后把ollama的bin目录加到系统PATH里方便命令行直接调# 追加PATH到/etc/profile echo export PATH/opt/deepseek/ollama/bin:$PATH | sudo tee -a /etc/profile # 使配置立即生效 source /etc/profile逻辑说明tee -a追加写入避免覆盖已有内容。source让当前shell立即加载新PATH不用重新登录。参数说明写到/etc/profile是对所有用户生效如果只想对当前用户生效写到~/.bashrc里。3. 离线导入DeepSeek模型从联网机器拉取到内网create3.1 在联网机器上拉取模型并提取GGUF文件内网机器没法直接ollama pull所以得找一台同架构ARM64且能联网的机器做中转。步骤分三步装ollama、拉模型、导出GGUF。# 在联网的ARM64机器上安装ollama后拉取deepseek-r1:14b蒸馏模型 ollama pull deepseek-r1:14b # 查看模型的modelfile找到FROM行指向的文件 ollama show --modelfile deepseek-r1:14b逻辑说明ollama pull从官方仓库下载模型14b蒸馏版大小约9GB。ollama show --modelfile输出模型的完整定义其中第5行FROM后面跟的那个sha256命名的文件就是实际的GGUF权重文件。参数说明deepseek-r1:14b这个tag对应的是14B参数的蒸馏版本适合无显卡环境跑推理。如果内存够大32GB以上可以考虑更大的版本但FT-2000的CPU推理速度会明显下降。把ollama show --modelfile的输出完整复制到一个文本文件里命名为modelfile.txt。然后找到FROM行指向的那个文件通常在~/.ollama/models/blobs/目录下把它复制出来重命名为deepseek-r1-14b.gguf# 假设FROM行指向的sha256文件在blobs目录下 # 复制并重命名为gguf文件 cp ~/.ollama/models/blobs/sha256-6e9f90f02bb3b39b59e81916e8cfce9deb45aeaeb9a54a5be4414486b907dc1e \ /path/to/export/deepseek-r1-14b.gguf逻辑说明ollama的模型存储用content-addressable方式blobs目录下的文件名就是sha256值。ollama create命令需要的是一个标准的GGUF文件所以得把blob复制出来重命名。参数说明sha256值每个模型不同以你实际ollama show输出的为准。复制出来的gguf文件大小应该和ollama list里显示的SIZE一致约9.0GB。3.2 在内网机器上执行ollama create导入模型把modelfile.txt和deepseek-r1-14b.gguf两个文件拷贝到内网机器的/opt/deepseek目录下然后执行导入# 进入存放modelfile和gguf的目录 cd /opt/deepseek # 使用modelfile创建模型 ollama create deepseek-r1:14b -f modelfile.txt逻辑说明ollama create读取modelfile里的定义把GGUF文件注册为ollama可识别的模型。执行过程中会看到gathering model components、copying file、parsing GGUF、creating new layer、writing manifest这几个阶段最后输出success就表示导入完成。参数说明-f指定modelfile路径如果modelfile里FROM写的是相对路径确保执行时的工作目录正确。导入后的模型文件会存放在OLLAMA_MODELS指定的/opt/deepseek/ollama/models下。导入完成后验证# 列出已导入的模型 ollama list # 运行模型进行交互测试 ollama run deepseek-r1:14b逻辑说明ollama list应该能看到deepseek-r1:14bSIZE约9.0GB。ollama run进入交互模式输入问题能收到回复就说明模型可用。参数说明ollama run后面跟模型名进入交互后输入/?可以看帮助输入/bye退出。首次运行加载模型会花一些时间14B模型在FT-2000上加载大概需要几十秒到一分钟。3.3 配置模型开机自启服务ollama服务本身开机自启了但模型不会自动加载。资源里额外做了一个deepseek.service来实现模型随系统启动[Unit] Descriptiondeepseek Service Afterollama.service [Service] ExecStart/opt/deepseek/ollama/bin/ollama run deepseek-r1:14b ExecStop/opt/deepseek/ollama/bin/ollama stop deepseek-r1:14b Userollama Groupollama Restartalways RestartSec3 EnvironmentFile/opt/deepseek/ollama/ollama.conf [Install] WantedBydefault.target逻辑说明Afterollama.service确保ollama服务先起来。ExecStart用ollama run加载模型ExecStop用ollama stop卸载。Restartalways保证模型进程挂了自动拉起。参数说明User和Group同样是ollama和ollama服务保持一致。EnvironmentFile复用同一个配置文件保证环境变量一致。启用服务sudo systemctl daemon-reload sudo systemctl enable deepseek sudo systemctl start deepseek逻辑说明和ollama服务的操作一样daemon-reload重载配置enable设自启start立即启动。参数说明如果ollama run在非交互模式下有问题可以改成ollama serve已经在跑了模型按需加载也行。但资源里的做法是强制预加载适合需要保证首问响应速度的场景。4. Chatbox客户端部署与远程连接AppImage打包与API配置4.1 安装Chatbox AppImage并解决依赖Chatbox的Linux ARM64版本是AppImage格式下载后放到/opt/deepseek目录下。AppImage的好处是免安装但需要先给执行权限# 进入存放目录 cd /opt/deepseek # 给AppImage添加执行权限 chmod x Chatbox-1.9.8-arm64.AppImage # 直接运行测试 ./Chatbox-1.9.8-arm64.AppImage逻辑说明chmod x赋予执行权限AppImage本质是一个自挂载的镜像文件双击或命令行运行都会挂载后执行内部程序。参数说明文件名里的版本号1.9.8和架构arm64要和实际下载的一致。如果运行报错提示缺少库通常是zlib的问题。资源里提到了一个常见报错AppImage运行时报zlib相关错误。解决方法是安装zlib1g-dev的deb包# 安装zlib1g-dev依赖包 sudo dpkg -i zlib1g-dev_1%3a1.2.11.dfsg-2kylin1.5k0.2_arm64.deb逻辑说明dpkg -i安装本地deb包。文件名里的%3a是冒号的URL编码实际文件名可能是zlib1g-dev_1:1.2.11.dfsg-2kylin1.5k0.2_arm64.deb用Tab补全最稳妥。参数说明这个包是麒麟系统专用的版本号里的kylin标识说明是麒麟定制版。如果系统里已经有更高版本的zlib可能不需要装但AppImage打包时链接的版本可能和系统不一致装上最保险。4.2 制作桌面图标实现双击启动AppImage直接跑没问题但每次开终端敲命令太麻烦。资源里的做法是写一个.desktop文件放到桌面[Desktop Entry] Version1.0 NameChatbox CommentThis is my cool application Exec/opt/deepseek/Chatbox-1.9.8-arm64.AppImage Icon/opt/deepseek/Chatbox.png Terminalfalse TypeApplication CategoriesUtility;Application;逻辑说明Exec指向AppImage的绝对路径Icon指向图标文件Terminalfalse表示不打开终端窗口。Categories影响应用菜单里的归类。参数说明Icon的路径要确保Chatbox.png实际存在没有的话可以从AppImage里提取或者随便找个png放过去。Name是显示名称可以改成中文。保存后给.desktop文件加执行权限chmod x Chatbox.desktop逻辑说明.desktop文件需要可执行权限双击时系统才会当作启动器处理。参数说明如果双击后提示“不受信任的应用程序”在文件管理器里右键属性里勾选“允许作为程序执行”即可。4.3 配置Chatbox连接本地与远程ollamaChatbox首次打开会进入设置界面关键配置项是API域名和模型选择。本地使用时API域名填http://127.0.0.1:11434模型选deepseek-r1:14b。远程连接时在另一台网络互通的机器上安装ChatboxAPI域名填http://ollama主机IP:11434。前提是ollama的OLLAMA_HOST已经设为0.0.0.0并且防火墙放行了11434端口。# 在ollama主机上确认端口监听情况 ss -tlnp | grep 11434 # 如果防火墙开着放行11434端口firewalld示例 sudo firewall-cmd --add-port11434/tcp --permanent sudo firewall-cmd --reload逻辑说明ss -tlnp查看TCP监听端口确认ollama绑定了0.0.0.0:11434而不是127.0.0.1:11434。防火墙放行后才能从其他机器访问。参数说明--permanent让规则持久化--reload立即生效。如果用的是iptables对应命令是iptables -A INPUT -p tcp --dport 11434 -j ACCEPT。配置完成后点击“新对话”输入问题测试。如果连接失败先检查ollama服务状态再检查网络连通性最后看Chatbox的API域名有没有写错。5. 避坑与排查离线部署中最容易翻车的五个点5.1 模型导入后ollama list看不到现象执行ollama create后提示success但ollama list里没有新模型。原因OLLAMA_MODELS环境变量指向的目录和实际导入的目录不一致。ollama服务运行时读取的是ollama.conf里的配置而命令行执行ollama create时如果没加载这个环境变量模型会写到默认的~/.ollama/models下。解决确保命令行执行前source /etc/profile或者手动export OLLAMA_MODELS/opt/deepseek/ollama/models。更稳妥的做法是直接用systemctl管理服务所有操作都通过服务走。5.2 Chatbox连接ollama报跨域错误现象Chatbox配置好API域名后对话时提示CORS或跨域相关错误。原因OLLAMA_ORIGINS没有设置或者设置的值不包含Chatbox的来源。ollama默认只允许同源请求。解决在ollama.conf里设置OLLAMA_ORIGINS*然后sudo systemctl restart ollama。如果生产环境不想全放开可以写成OLLAMA_ORIGINShttp://192.168.1.100:*这种格式把IP换成Chatbox所在机器的IP。5.3 AppImage双击没反应或报zlib错误现象双击Chatbox图标没反应或者终端运行时报zlib version mismatch之类的错误。原因麒麟V10自带的zlib版本和AppImage打包时依赖的版本不一致。AppImage在挂载时需要调用系统的zlib库。解决安装资源里附的zlib1g-dev麒麟定制版deb包。如果装完还不行试试./Chatbox-1.9.8-arm64.AppImage --appimage-extract把AppImage解压出来直接运行squashfs-root/AppRun这样能绕过部分挂载问题。5.4 模型加载后内存爆满导致服务被杀现象ollama run deepseek-r1:14b执行后系统变卡然后ollama服务被OOM killer杀掉。原因14B模型加载需要约9GB内存加上系统本身占用如果机器内存只有16GB很容易触发OOM。解决先确认机器内存free -h16GB内存跑14B模型比较勉强建议关掉不必要的服务释放内存。如果内存实在不够换更小的模型版本比如7B或1.5B。另外可以在ollama.conf里加OLLAMA_MAX_LOADED_MODELS1限制同时加载的模型数量。5.5 远程连接时提示连接被拒绝现象远程机器的Chatbox配置了ollama主机IP但连接时提示connection refused。原因ollama只监听了127.0.0.1没有监听0.0.0.0。或者防火墙拦截了11434端口。解决检查ollama.conf里OLLAMA_HOST是否为0.0.0.0改完后sudo systemctl restart ollama。然后用ss -tlnp | grep 11434确认监听地址。如果监听正确但还连不上检查防火墙规则临时关闭防火墙测试sudo systemctl stop firewalld确认是防火墙问题后再加放行规则。6. 进阶技巧模型量化选择与推理速度调优离线部署跑通之后下一步就是让它在FT-2000上跑得尽量快。这里有几个我实际调过的方向。首先是模型量化格式的选择。资源里用的deepseek-r1:14b默认是Q4_K_M量化约9GB。如果内存紧张可以换成Q3_K_M或Q2_K体积能降到6GB左右但推理质量会下降。如果内存充裕32GB以上可以试试Q5_K_M或Q8_0质量更好但速度更慢。切换方法是在联网机器上ollama pull对应tag然后重新导出GGUF导入。其次是ollama的并发和上下文参数。在ollama.conf里可以加几个调优项# 限制同时加载的模型数量避免内存争抢 OLLAMA_MAX_LOADED_MODELS1 # 设置并行请求数无显卡环境下建议设为1 OLLAMA_NUM_PARALLEL1 # 设置模型常驻内存时间-1表示永不卸载 OLLAMA_KEEP_ALIVE-1逻辑说明OLLAMA_MAX_LOADED_MODELS1确保只有一个模型占内存。OLLAMA_NUM_PARALLEL1避免并发请求把CPU打满。OLLAMA_KEEP_ALIVE-1让模型一直留在内存里避免每次请求重新加载。参数说明OLLAMA_KEEP_ALIVE默认是5分钟设成-1适合专用推理机。如果机器还要跑其他服务设成30m这种折中值。还有一个实测有效的技巧在Chatbox里把对话的max tokens调低。默认可能是2048或4096无显卡环境下生成这么多token要等很久。调到512或1024响应速度会明显提升日常问答够用了。验证调优效果的方法很简单问同一个问题看从发送到收到完整回复的时间。我一般会问“用一句话解释什么是操作系统”然后掐表。调优前可能要等一两分钟调优后能压到几十秒。从那以后我每次部署完离线模型都会先跑一遍这个计时测试再根据结果决定要不要调参。希望帮到你。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑