国产软硬件|飞龙服务器(飞腾CPU)+麒麟系统 Ollama离线部署方案

2026年01月19日/ 浏览 10

国产软硬件适配|飞龙RM5000-F(飞腾CPU)+麒麟系统 Ollama离线部署教程(小白也能懂)

前两天有为网友私信讨论了一下国产硬件+麒麟系统部署大模型的问题。一开始我也是有点懵的。因为之前我没接触过国产CPU和显卡。大脑里有点空白,就连麒麟系统其实也很陌生。聊着聊着吧,发现需求并非这么简单。服务器还没显卡,还不连互联网,需要docker部署,局域网内用户还要可以访问。以我之前的经验,基本知道即便部署起来,实际用户体验也不会好到哪里去。但是,朋友提了需求,拿就得想办法去解决呗。于是开始各种找资料。

经过两天时间学习,基本上总结了一个方案。

一、适用情况(对号入座)

硬件:飞龙RM5000-F服务器(搭配飞腾FT-2000+ CPU,ARM64架构,64核2.2GHz),没有独立显卡,内存至少16GB(不够会卡顿)系统:麒麟系统(不管是Debian/Ubuntu版,还是RHEL/CentOS版都能用)环境限制:服务器不连外网,只能离线操作,想用Docker装(容器化更稳,不容易出问题)核心需求:装Ollama大模型,搭自己的知识库(比如公司文档、专业资料),实现离线问答,还能让同一局域网的电脑、手机都访问使用

二、核心思路(不用懂原理,跟着做就行)

离线环境下就四步走:先在能上网的机器下好所有东西→拷贝到离线服务器→装容器和模型→搭知识库。用到的工具都给大家说清楚,不用额外找:

容器工具:Docker(专门适配ARM64架构的版本,咱们离线装)大模型:Ollama(纯靠CPU跑,选轻量版的,4-bit量化后不占资源)知识库工具:LlamaIndex+Chroma(本地存数据,不用连远程数据库)嵌入模型:bge-small-zh-v1.5(专门处理中文,体积小,CPU也能带动)

三、提前准备(联网机器上弄,就一次)

找一台能上网、且和服务器最好同架构的ARM64 Linux机器(比如另一台麒麟、Ubuntu ARM64电脑),把所有需要的文件下好打包,之后用U盘或内网拷贝到离线服务器就行。

1. 下Docker离线安装包(服务器没装过Docker就弄)

打开Docker官方网站下载离线包,选和服务器系统对应的版本(比如麒麟V10就选Ubuntu 20.04的)下载3个ARM64架构的包:docker-ce、docker-ce-cli、containerd.io(麒麟Debian版下.deb后缀,RHEL版下.rpm后缀)打包成一个文件,方便拷贝:Debian版输tar -zcvf docker-offline.tar.gz *.deb,RHEL版输tar -zcvf docker-offline.tar.gz *.rpm

2. 下Ollama镜像和模型(核心组件)

(1)Ollama ARM64镜像

# 这个命令会自动下ARM64版本,官方镜像自带多架构,不用手动选 docker pull ollama/ollama:latest # 把镜像存成包,方便拷贝到离线服务器 docker save -o ollama-arm64.tar ollama/ollama:latest

小提醒:Ollama官方镜像自带ARM64版本,在ARM机器上执行命令,Docker会自动识别下载对应版本,不用额外设置。

(2)轻量模型(离线能用,不卡CPU)

# 下中文友好的轻量模型,qwen2:0.5b版最稳,CPU跑着流畅 ollama pull qwen2:0.5b-instruct-q4_0 # 把模型目录打包,默认存在用户目录下的.ollama/models里 tar -zcvf ollama-models.tar.gz ~/.ollama/models

3. 下载Python依赖和嵌入模型(搭知识库用)

(1)Python离线依赖包

# 建个目录存依赖,避免乱 mkdir -p python-packages # 下载搭知识库需要的所有依赖,都是适配ARM64的 pip download llama-index chromadb pypdf sentence-transformers gradio -d ./python-packages # 打包起来 tar -zcvf python-packages.tar.gz python-packages/

(2)离线嵌入模型(处理中文知识库)

下bge-small-zh-v1.5就行,才100MB左右,纯CPU也能跑,处理中文很顺手,打包后拷贝:

# 方式1:用git克隆(联网机操作,慢的话换方式2) git clone https://huggingface.co/BAAI/bge-small-zh-v1.5 tar -zcvf bge-small-zh-v1.5.tar.gz bge-small-zh-v1.5/ # 方式2:手动下载(git克隆失败用这个) # 打开https://huggingface.co/BAAI/bge-small-zh-v1.5/tree/main,把所有文件下载下来 # 手动建个同名目录放进去,再打包,目录结构别乱就行

4. 准备自己的知识库文档

把你要导入的文档(TXT、PDF、Markdown都行)整理好,打包成一个文件:

# 建个目录放文档 mkdir -p knowledge-base # 把你的文档都放进这个目录,再打包 tar -zcvf knowledge-base.tar.gz knowledge-base/

5. 拷贝所有文件到离线服务器

先在离线的麒麟服务器上建个目录,统一放这些文件,避免乱:mkdir -p /root/offline,然后把以下6个文件都拷贝到这个目录里:

docker-offline.tar.gz(Docker离线安装包)ollama-arm64.tar(Ollama镜像包)ollama-models.tar.gz(Ollama模型包)python-packages.tar.gz(Python依赖包)bge-small-zh-v1.5.tar.gz(嵌入模型包)knowledge-base.tar.gz(你的知识库文档包)

四、核心部署(离线服务器上操作,一步一步来)

步骤1:离线装Docker(分系统操作,别装错)

麒麟(Debian/Ubuntu版)

# 进入存离线包的目录 cd /root/offline # 解压Docker安装包 tar -zxvf docker-offline.tar.gz # 按顺序装这三个包,忽略依赖警告就行 sudo dpkg -i containerd.io_*.deb docker-ce-cli_*.deb docker-ce_*.deb # 启动Docker,设置开机自启(下次服务器重启自动运行) sudo systemctl start docker sudo systemctl enable docker # 验证下是否装成,能显示版本号就没问题 docker --version

麒麟(RHEL/CentOS版)

# 进入目录 cd /root/offline # 解压 tar -zxvf docker-offline.tar.gz # 安装 sudo rpm -ivh containerd.io-*.rpm docker-ce-cli-*.rpm docker-ce-*.rpm # 启动并设自启 sudo systemctl start docker && sudo systemctl enable docker

步骤2:导入Ollama镜像和模型(让Docker能用)

(1)导入Ollama镜像

cd /root/offline # 导入镜像到Docker sudo docker load -i ollama-arm64.tar # 看看是否导入成功,能看到ollama/ollama:latest就对了 sudo docker images

(2)导入模型(持久化存储,下次不用再导)

# 建个模型目录 mkdir -p ~/ollama/models # 解压模型包,直接放到指定目录,去掉多余层级 tar -zxvf ollama-models.tar.gz -C ~/ollama --strip-components=2 # 给权限,避免Docker访问不了 sudo chmod -R 777 ~/ollama/models

步骤3:启动Ollama容器(纯CPU模式,支持局域网访问)

sudo docker run -d \ --name ollama-cpu \ # 给容器起个名字,好管理 --restart=always \ # 服务器重启后自动启动容器 -v ~/ollama/models:/root/.ollama \ # 挂载模型目录,容器能读取 -e OLLAMA_CPU=1 \ # 强制用CPU跑,因为没有显卡 -e OLLAMA_NUM_PARALLEL=32 \ # 用32线程,适配64核CPU,不浪费资源 -e OLLAMA_MAX_MEMORY=16GB \ # 限制用16GB内存,防止卡死 -e OLLAMA_HOST=0.0.0.0:11434 \ # 关键!允许局域网所有设备访问 -p 11434:11434 \ # 端口映射,把容器端口暴露给服务器 ollama/ollama:latest # 看看容器是否启动成功,状态是UP就没问题 sudo docker ps # 有问题就看日志排查 sudo docker logs -f ollama-cpu

局域网访问说明:上面的-e OLLAMA_HOST=0.0.0.0:11434和-p 11434:11434这两个配置是关键,能让同一局域网的电脑、手机,通过“服务器局域网IP:11434”访问这个Ollama服务,不管是对话、调API还是用知识库都能用。

步骤4:搭自有知识库(离线也能查自己的资料)

(1)装Python离线依赖

cd /root/offline # 解压依赖包 tar -zxvf python-packages.tar.gz # 离线安装,不用连网 pip install --no-index --find-links=./python-packages llama-index chromadb pypdf sentence-transformers gradio

(2)导入嵌入模型

# 建个目录存嵌入模型 mkdir -p ~/offline-models # 解压到这个目录 tar -zxvf bge-small-zh-v1.5.tar.gz -C ~/offline-models/

(3)准备知识库文档

# 建目录存自己的文档 mkdir -p ~/knowledge-base # 解压文档包 tar -zxvf knowledge-base.tar.gz -C ~/knowledge-base/

(4)写个脚本(一键启动知识库问答)

新建一个叫offline_kb_qa.py的文件,把下面的代码复制进去就行,全程不用连网,代码里都加了注释,不用懂Python也能抄:

# 导入需要的工具 from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, StorageContext from llama_index.core import Settings from llama_index.embeddings.huggingface import HuggingFaceEmbedding from llama_index.llms.ollama import Ollama from llama_index.vector_stores.chroma import ChromaVectorStore import chromadb import gradio as gr # 1. 配置中文嵌入模型(填咱们刚才解压的路径) embed_model = HuggingFaceEmbedding( model_name="/root/offline-models/bge-small-zh-v1.5", embed_batch_size=16 # 适配CPU性能,不卡顿 ) # 2. 连接本地Ollama服务 llm = Ollama( model="qwen2:0.5b-instruct-q4_0", # 用咱们导入的轻量模型 base_url="http://localhost:11434", # 连接Docker里的Ollama temperature=0.1 # 回答更精准,不瞎编 ) # 3. 全局设置(固定配置,不用改) Settings.llm = llm Settings.embed_model = embed_model Settings.chunk_size = 512 # 文档拆分大小,适配小模型 Settings.chunk_overlap = 50 # 拆分后留部分重叠,检索更准 # 4. 加载自己的知识库文档 documents = SimpleDirectoryReader("/root/knowledge-base").load_data() # 5. 本地建向量库(存文档向量,不用远程) chroma_client = chromadb.PersistentClient(path="/root/local-chroma-db") chroma_collection = chroma_client.get_or_create_collection("my_kb") vector_store = ChromaVectorStore(chroma_collection=chroma_collection) storage_context = StorageContext.from_defaults(vector_store=vector_store) # 6. 构建索引,创建问答引擎 index = VectorStoreIndex.from_documents(documents, storage_context=storage_context) query_engine = index.as_query_engine(similarity_top_k=5) # 找5个最相关的文档片段 # 7. 问答函数(对接Web界面) def kb_qa(question): response = query_engine.query(question) return str(response) # 8. 启动Web界面(可选,局域网能访问) if __name__ == "__main__": gr.Interface( fn=kb_qa, inputs="text", # 输入问题的地方 outputs="text", # 显示回答的地方 title="飞龙RM5000-F离线知识库问答", description="无网也能用,只回答你知识库中的内容(飞腾CPU驱动)" ).launch(server_name="0.0.0.0", server_port=7860) # 局域网可访问

(5)启动知识库问答

# 先确保Ollama容器在运行 sudo docker start ollama-cpu # 运行脚本,启动Web界面 python3 offline_kb_qa.py

步骤5:验证是否成功(4步搞定,不踩坑)

本地验证:在服务器终端输curl http://localhost:11434,能返回一串带版本号的信息,就说明Ollama服务正常;局域网验证:在同一局域网的电脑上,打开浏览器输http://[服务器局域网IP]:11434,能返回同样的信息,说明局域网能访问;Web界面验证:浏览器输http://[服务器局域网IP]:7860,能看到问答界面,输入问题(比如“我的知识库有哪些内容”),能返回回答就没问题;API调用验证:局域网电脑终端输下面的命令(替换成服务器IP),能收到回答就说明API能用: curl http://[服务器局域网IP]:11434/api/generate -d "{ \"model\": \"qwen2:0.5b-instruct-q4_0\", \"prompt\": \"你好\" }" 小提醒:里面的双引号前面加了反斜杠,别删,不然会报错; 速度验证:进容器输docker exec -it ollama-cpu ollama run qwen2:0.5b-instruct-q4_0 --verbose,日志里的“eval rate”就是每秒输出的字符数,飞龙服务器估计理论能跑这个模型大概18-25。

五、提速小技巧(适配飞龙服务器,跑得更顺)

1. CPU和内存优化(充分利用64核性能)

容器参数就按我给的来:-e OLLAMA_NUM_PARALLEL=32(用一半核心,既够快又不占满)、-e OLLAMA_MAX_MEMORY=16GB(按实际修改,避免内存不够卡死);模型就选qwen2:0.5b或1.5b版,4-bit量化的,12-25字符/秒的速度,日常用足够,别选7B及以上的,CPU扛不住;关闭swap分区(输sudo swapoff -a),开启CPU性能模式(输sudo cpupower frequency-set -g performance),飞龙CPU的性能能拉满。

2. 知识库优化(回答更精准)

文档预处理:大PDF(超过100MB)拆成小文件,删掉没用的内容(比如页眉页脚),检索更准;调整参数:大文档把chunk_size改成1024,小文档改成256,similarity_top_k设3-5就行,太多反而乱;权限优化:向量库目录别直接设777(虽然后台能用,但不安全),输sudo chown -R $USER:$USER /root/local-chroma-db,精准授权更稳妥。

六、常见问题排查(遇到问题不用慌)

遇到的问题

怎么解决

装Docker时提示缺依赖

先装系统依赖:Debian版输sudo apt install -y libseccomp2,RHEL版输sudo dnf install -y libseccomp

Ollama容器启动后闪退

输docker logs ollama-cpu看日志;检查模型目录权限;把OLLAMA_MAX_MEMORY改成12GB试试

模型加载失败,提示文件缺失

看看~/ollama/models/blobs里有没有大文件,没有就重新导入模型包,可能是拷贝时损坏了

知识库加载不了,提示无法读取文档

确保装了pypdf依赖(离线包已包含);文档只能是PDF、TXT、MD格式,别用其他格式

局域网访问不了Web界面或API

先放行端口:sudo firewall-cmd --permanent --add-port=7860/tcp --add-port=11434/tcp && sudo firewall-cmd --reload;再排查:1. 用ip addr查服务器局域网IP对不对;2. 用docker ps看端口是否映射成0.0.0.0:11434->11434/tcp;3. 用ps aux | grep python3看脚本是否在运行

七、总结(一句话概括,放心用)

这个方案专门适配飞龙RM5000-F服务器(飞腾FT-2000+ CPU)和麒麟离线环境,全程不用连网,按“联网下文件→拷贝→部署→用”的流程来,选qwen2:0.5b模型最稳,局域网里多设备都能访问,不管是日常问答还是查自己的知识库都够用。

有些代码和参数根据实际情况进行修改。

#ollama##AI大模型##国产服务器##麒麟系统#

picture loss