1. 项目背景与需求分析
在国产化替代和信创产业快速发展的背景下,银河麒麟操作系统作为国产自主操作系统的代表,正被越来越多的政企单位采用。而DeepSeek作为当前热门的开源大语言模型,其7B量级的版本在各类业务场景中展现出优秀的文本理解和生成能力。将这两者结合,在银河麒麟系统上实现离线部署,成为许多需要数据安全和自主可控的单位刚需。
这个方案特别适合以下场景:
- 军工、金融等对数据安全要求严格的行业
- 科研院所等需要处理敏感研究资料的单位
- 网络隔离环境下的智能文档处理系统
- 国产化替代项目中的AI能力建设
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备与工具选型
2.1 硬件环境要求
建议配置:
- CPU:至少8核(推荐ARMv8架构)
- 内存:32GB以上
- 存储:100GB可用空间(SSD更佳)
- GPU:非必须,但若有NVIDIA显卡可显著提升推理速度
2.2 软件环境准备
需要准备两套环境:
-
联网环境(用于资源下载):
- 任意Linux发行版(推荐Ubuntu 20.04+)
- 下载工具:wget/curl
- 传输工具:scp/rsync
-
离线环境(银河麒麟系统):
- 银河麒麟V10 SP1/Advanced Server
- 基础工具:tar/systemd
- 依赖库:glibc 2.28+
注意:确保离线环境的glibc版本不低于模型编译时的版本,否则可能无法运行。
2.3 工具选型考量
选择Ollama作为部署工具的主要优势:
- 对ARM架构支持良好
- 提供完善的模型管理功能
- 支持systemd集成
- 内存管理优化较好
相比直接使用Python部署,Ollama提供了更便捷的模型加载和版本管理功能,特别适合生产环境使用。
3. 详细部署步骤
3.1 联网环境准备
- 下载Ollama安装包:
bash复制wget https://ollama.com/download/ollama-linux-arm64.tgz -O ollama-kylin.tgz
- 下载模型文件(以DeepSeek-R1-Distill-Qwen-7B为例):
bash复制# 使用HuggingFace镜像加速下载
wget https://huggingface.co/TheBloke/DeepSeek-R1-Distill-Qwen-7B-GGUF/resolve/main/deepseek-r1-distill-qwen-7b.Q4_K_M.gguf
3.2 离线环境部署
- 传输文件到离线环境:
bash复制scp ollama-kylin.tgz root@offline-machine:/opt
scp deepseek-r1-distill-qwen-7b.Q4_K_M.gguf root@offline-machine:/opt/models
- 安装Ollama:
bash复制tar -C /usr/local -xzf /opt/ollama-kylin.tgz
- 创建系统服务:
bash复制cat > /etc/systemd/system/ollama.service <<EOF
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="OLLAMA_MODELS=/opt/models"
[Install]
WantedBy=multi-user.target
EOF
- 启动服务:
bash复制useradd -r -s /bin/false ollama
systemctl daemon-reload
systemctl enable --now ollama
3.3 模型加载与验证
- 创建Modelfile:
bash复制cat > /opt/models/Modelfile <<EOF
FROM /opt/models/deepseek-r1-distill-qwen-7b.Q4_K_M.gguf
EOF
- 导入模型:
bash复制ollama create deepseek-r1 -f /opt/models/Modelfile
- 验证部署:
bash复制ollama run deepseek-r1 "介绍一下银河麒麟操作系统"
4. 性能优化与问题排查
4.1 性能调优参数
在/etc/systemd/system/ollama.service中添加以下环境变量可提升性能:
ini复制Environment="OMP_NUM_THREADS=8" # 设置为CPU核心数
Environment="GOMP_CPU_AFFINITY=0-7" # CPU绑定
Environment="OLLAMA_KEEP_ALIVE=5m" # 保持模型加载状态
4.2 常见问题解决
-
启动报错"GLIBC版本过低":
- 解决方案:升级系统或使用静态编译版本的Ollama
-
模型加载内存不足:
bash复制# 调整swappiness sysctl vm.swappiness=10 # 使用量化程度更高的模型(如Q3_K_S) -
响应速度慢:
bash复制# 启用批处理 ollama run --num_ctx 2048 --num_batch 512 deepseek-r1
5. 进阶应用场景
5.1 RAG集成方案
- 安装向量数据库:
bash复制docker run -d -p 6333:6333 qdrant/qdrant
- 配置LangChain:
python复制from langchain.embeddings import HuggingFaceEmbeddings
from langchain.vectorstores import Qdrant
embeddings = HuggingFaceEmbeddings(model_name="BAAI/bge-small-zh")
vectorstore = Qdrant.from_documents(docs, embeddings, url="http://localhost:6333")
5.2 API服务化
使用FastAPI创建推理API:
python复制from fastapi import FastAPI
from ollama import Client
app = FastAPI()
client = Client(host='http://localhost:11434')
@app.post("/generate")
async def generate(prompt: str):
response = client.generate(model='deepseek-r1', prompt=prompt)
return {"response": response['response']}
6. 安全加固建议
- 访问控制:
bash复制# 配置防火墙
iptables -A INPUT -p tcp --dport 11434 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 11434 -j DROP
- 模型加密:
bash复制# 使用eCryptfs加密模型目录
apt install ecryptfs-utils
mount -t ecryptfs /opt/models /opt/models
- 审计日志:
bash复制# 记录所有模型访问
journalctl -u ollama -f > /var/log/ollama-access.log
在实际部署中,我们发现银河麒麟系统的SELinux策略可能会导致Ollama无法访问模型文件,可以通过以下命令临时解决:
bash复制chcon -R -t usr_t /opt/models
semanage fcontext -a -t usr_t "/opt/models(/.*)?"
restorecon -Rv /opt/models
对于需要长期运行的场景,建议配置监控和自动恢复机制:
bash复制# 监控脚本示例
#!/bin/bash
if ! pgrep -x "ollama" > /dev/null; then
systemctl restart ollama
echo "$(date): Ollama restarted" >> /var/log/ollama-monitor.log
fi
