简介:本文详细介绍如何在无互联网连接的环境中离线安装Ollama框架并加载本地模型,涵盖环境准备、依赖管理、安装包获取、配置优化及模型加载全流程,适用于企业内网、隐私计算等场景。
在金融、医疗、政务等对数据安全要求极高的领域,或受限于网络环境的工业控制、边缘计算等场景,离线部署大型语言模型(LLM)框架已成为刚需。Ollama作为一款轻量级、可扩展的LLM运行环境,其离线部署能力可有效解决三大痛点:
典型应用场景包括:医院内网诊断系统、银行风控模型本地化部署、离岸钻井平台设备故障预测等。
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 4核(x86_64/ARM64) | 8核以上 |
| 内存 | 16GB | 32GB+(含8GB以上显存) |
| 存储 | 50GB可用空间 | 200GB+(SSD优先) |
| 网络 | 无需外网 | 千兆内网 |
在离线环境中需提前准备以下依赖包(以Ubuntu为例):
# 创建依赖目录并上传离线包mkdir -p ~/ollama_deps && cd ~/ollama_deps# 包含以下.deb包:# - libc6 (>=2.31)# - libstdc++6 (>=10)# - libgomp1 (>=4.9)# - libatomic1 (>=8.4.0)# - cuda-cudart-11-x(如需GPU支持)# 本地安装命令示例sudo dpkg -i *.deb
通过有网环境下载完整安装包:
# Linux示例(v0.1.15版本)wget https://ollama.com/download/linux/amd64/ollama-0.1.15-linux-amd64.tar.gz# 生成校验文件sha256sum ollama-*.tar.gz > ollama.sha256
将以下文件传输至离线环境:
ollama-*.tar.gz(主程序包)ollama.sha256(校验文件)models目录(如需预置模型)
# 1. 验证文件完整性sha256sum -c ollama.sha256# 2. 解压安装tar -xzf ollama-*.tar.gzsudo mv ollama /usr/local/bin/# 3. 创建服务用户(安全最佳实践)sudo useradd --system --no-create-home ollama# 4. 配置服务(systemd示例)sudo tee /etc/systemd/system/ollama.service <<EOF[Unit]Description=Ollama LLM ServiceAfter=network.target[Service]Type=simpleUser=ollamaExecStart=/usr/local/bin/ollama runRestart=on-failure[Install]WantedBy=multi-user.targetEOF# 5. 启动服务sudo systemctl daemon-reloadsudo systemctl enable --now ollama
# 检查服务状态systemctl status ollama# 执行健康检查curl -X GET http://localhost:11434# 应返回:{"version":"0.1.15","commit":"xxx"}
在有网环境下载模型文件(以llama3:8b为例):
# 使用Ollama官方命令生成模型包ollama pull llama3:8b --output llama3-8b.ollamapkg# 或手动构建模型目录mkdir -p ~/models/llama3-8b# 包含以下文件:# - model.bin(量化后的权重文件)# - config.json(模型配置)# - tokenizer.model(分词器)
将模型包传输至离线环境后执行:
# 安装模型包ollama create llama3-8b -f ./llama3-8b.ollamapkg# 或手动注册模型sudo mkdir -p /var/lib/ollama/models/llama3-8bsudo cp -r ~/models/llama3-8b/* /var/lib/ollama/models/llama3-8b/# 更新模型索引ollama serve --models-dir /var/lib/ollama/models
// 修改/etc/ollama/config.json{"gpu_layers": 40, // GPU加速层数"rope_scale": 1.0, // 注意力机制缩放"num_ctx": 2048, // 上下文窗口"embed_dim": 512 // 嵌入维度}
| 量化级别 | 内存占用 | 推理速度 | 精度损失 |
|---|---|---|---|
| Q4_K_M | 3.2GB | 基准1.0x | 2.1% |
| Q6_K | 4.7GB | 1.3x | 0.8% |
| FP16 | 9.4GB | 1.8x | 0% |
现象:libstdc++.so.6: version GLIBCXX_3.4.30 not found
解决:
ldd /usr/local/bin/ollama | grep "not found"
libstdc++6包并离线安装检查清单:
sudo chown -R ollama:ollama /var/lib/ollama/models
md5sum /var/lib/ollama/models/llama3-8b/model.bin
journalctl -u ollama -f
# 限制最大内存使用(示例:8GB)export OLLAMA_MAX_MEMORY=8G
# 确保CUDA驱动已安装nvidia-smi# 启动时指定GPUollama run llama3-8b --gpu 0
# Dockerfile示例FROM ubuntu:22.04RUN apt-get update && apt-get install -y \libc6 \libgomp1 \&& rm -rf /var/lib/apt/lists/*COPY ollama-0.1.15-linux-amd64.tar.gz /tmp/RUN tar -xzf /tmp/ollama-*.tar.gz -C /usr/local/bin/COPY models/ /var/lib/ollama/models/CMD ["ollama", "serve", "--models-dir", "/var/lib/ollama/models"]
graph TDA[管理节点] -->|RPC| B[Worker节点1]A -->|RPC| C[Worker节点2]B --> D[GPU1]C --> E[GPU2]A --> F[模型存储]F --> G[NAS存储]
通过本文所述方法,开发者可在完全离线的环境中构建安全、高效的LLM推理系统。实际部署案例显示,在金融行业反洗钱场景中,离线部署的Ollama系统将模型响应时间从云端调用的3.2秒缩短至本地运行的280毫秒,同时完全符合等保2.0三级要求。