ARTICLE DETAIL

资讯详情

深耕商务建站与企业官网运营的一线实战洞察。

Ubuntu内网离线部署Ollama与llama3.1-70B模型实战指南

Ubuntu内网离线部署Ollama与llama3.1-70B模型实战指南 简介本资源面向需要在 Ubuntu 环境下离线部署大模型的开发者与运维人员提供 ollama-v0.3.12 的完整离线安装与模型部署方案解决无外网或网络受限场景下的安装难题。包内共 24 个文件以 19 张 png 操作截图、2 份 md 说明文档为主另含 1 个 sh 安装脚本、1 个 Modelfile 模型定义文件与 1 个 txt 使用指南压缩包约 2.91MB体积轻便便于携带。文档详细讲解离线安装步骤并给出使用 Ollama 离线部署 llama3.1-70b 模型的完整示例DeepSeek 等模型同样适用配套脚本可直接执行安装Modelfile 则用于模型导入配置。目前已有 601 人学习下载适合希望快速搭建本地推理环境、减少踩坑成本的读者参考。1. 内网机器上跑起 70B这套 ollama-v0.3.12 离线包到底解决了什么上周帮一个做工业质检的团队处理部署问题他们的训练服务器在厂区内网物理隔离连 apt 源都连不上但业务侧又要求把 llama3.1-70b 跑起来做缺陷报告的自动生成。这种场景下ollama官方那行curl -fsSL https://ollama.com/install.sh | sh直接废掉——不是脚本有问题是机器根本出不去。这套ollama-v0.3.12 离线安装脚本与示例ubuntu就是冲着这个痛点来的它把 Ubuntu 下的离线安装步骤、一个可执行的安装脚本、以及用Modelfile离线部署 llama3.1-70b 的完整示例打包在一起DeepSeek 系列模型同样适用。适合谁手里有隔离网段、有 GPU 但没外网、又不想从源码编译折腾依赖的运维和算法工程师。它不解决模型效果问题只解决「怎么把 ollama 和模型塞进一台没有互联网的 Ubuntu 机器并让它跑起来」。2. 拆开压缩包文件清单与离线安装的前置判断2.1 资源里到底有什么各自对应哪一步拿到压缩包先别急着解压执行把文件按用途分个类后面排错时能快速定位。这份资源的结构其实很清晰分四块文件类型用途ollama-v0.3.12 离线安装指南ubuntu.md文档完整离线安装步骤含依赖处理ollama_v0.3.12_offline_install.sh脚本实际执行安装的 shell 脚本ollama离线安装脚本使用指南.txt文档脚本的参数、执行方式和注意事项使用 Ollama 离线部署 llama3.1-70b 模型示例.md文档模型侧离线部署流程llama-3.1-70b.Modelfile配置导入模型时用的 Modelfile1.png~19.png截图各步骤的界面/终端参考关键点在于安装脚本和模型部署是两件事。脚本负责把 ollama 二进制和 systemd 服务装好Modelfile负责把已经下载好的模型权重导入 ollama。很多人翻车就翻在把这两步混在一起以为脚本跑完模型就自动有了。2.2 离线安装的底层逻辑为什么不能直接拷二进制ollama 在 Ubuntu 上的安装官方脚本做的事远不止下载一个二进制。它会检测架构、拉取对应版本的ollama可执行文件、创建ollama用户和用户组、写 systemd unit、配置环境变量。离线场景下这些动作必须由脚本手动补齐否则你会遇到「二进制能跑但systemctl start ollama失败」这种玄学问题。先确认目标机器的架构这决定了你拿到的二进制对不对# 查看系统架构x86_64 对应 amd64aarch64 对应 arm64 uname -m # 查看 Ubuntu 版本脚本对 20.04/22.04/24.04 的处理略有差异 lsb_release -a # 确认是否有 NVIDIA 显卡及驱动决定后续 GPU 加速是否可用 nvidia-smiuname -m输出x86_64说明是常规服务器架构aarch64则是 ARM 平台比如某些国产化服务器或开发板两者需要的 ollama 二进制不同。nvidia-smi能正常输出说明驱动就绪如果报command not found那 GPU 加速这条路暂时走不通只能先跑 CPU 推理——70B 模型在 CPU 上基本没有实用价值这点要提前和业务方对齐预期。提示离线机器上如果nvidia-smi缺失不要试图在离线环境装显卡驱动依赖链太长。常见做法是在有网的同类机器上把驱动和 CUDA 依赖一并准备好或者干脆换一台驱动正常的机器。2.3 依赖检查那些脚本不会替你装的东西安装脚本能处理 ollama 自身的部署但系统级依赖它管不了。Ubuntu 最小化安装的机器上以下几样经常缺失缺一个脚本就可能中途失败# 检查关键依赖是否齐全 for pkg in curl tar gzip systemd; do dpkg -l | grep -q ^ii $pkg echo $pkg OK || echo $pkg MISSING done # 检查 ollama 默认监听端口 11434 是否被占用 ss -tlnp | grep 11434curl和tar是脚本解压和校验时用的systemd决定能否注册成服务。端口检查容易被忽略——如果 11434 被别的进程占了ollama 服务启动后会静默失败日志里只报address already in use不熟悉的会以为是安装没成功。这些依赖如果缺失需要在有网的机器上用apt-get download把 deb 包下下来再拷进离线机器dpkg -i安装这一步没有捷径。3. 跑通安装脚本从解压到 systemd 服务拉起3.1 脚本执行前的目录规划与权限把压缩包传到离线机器后建议放在一个固定路径比如/opt/ollama-offline避免散落在 home 目录里后面找不到。解压后先给脚本执行权限但别急着sudo ./xxx.sh一把梭先看一眼脚本头部确认它引用的二进制路径和你解压出来的实际路径一致。# 创建统一目录并解压 mkdir -p /opt/ollama-offline cd /opt/ollama-offline unzip ollama-v0.3.12\ 离线安装指南ubuntu.zip # 赋予脚本执行权限 chmod x ollama_v0.3.12_offline_install.sh # 查看脚本前 30 行确认路径和变量定义 head -n 30 ollama_v0.3.12_offline_install.shhead这一步不是形式主义。离线脚本常见的写法是把二进制路径写死成相对路径如果你解压的目录层级和作者预期的不一样脚本会报No such file or directory。看到脚本里类似OLLAMA_BIN./ollama这种相对路径就确保你在脚本所在目录执行如果是绝对路径确认那个路径下确实有文件。3.2 执行安装脚本与关键参数脚本的使用方式在ollama离线安装脚本使用指南.txt里有说明通常支持指定安装目录和是否启用 GPU。下面是一个典型的执行方式# 以 root 执行指定安装到 /usr/local启用 GPU 支持 sudo ./ollama_v0.3.12_offline_install.sh \ --install-dir /usr/local \ --enable-gpu \ --user ollama参数含义需要对照指南确认--install-dir决定二进制落点默认可能是/usr/local/bin--enable-gpu会额外配置OLLAMA_GPU_DRIVER相关环境变量--user指定服务运行账户。如果脚本不支持这些参数不同版本脚本差异大就按指南里的默认方式执行别自己臆造参数——传了不认识的参数脚本可能直接忽略也可能报错退出两种都不好排查。执行过程中重点观察三类输出二进制拷贝是否成功、systemd unit 是否写入/etc/systemd/system/ollama.service、服务是否active (running)。任何一步失败脚本一般会打印错误行号记下来去对应位置看。3.3 验证服务状态与 API 连通性脚本跑完不等于服务可用。按顺序验证# 1. 查看服务状态确认 active (running) systemctl status ollama # 2. 查看监听端口 ss -tlnp | grep 11434 # 3. 调用 API 确认响应 curl http://127.0.0.1:11434/api/tags # 4. 查看服务日志排查隐藏错误 journalctl -u ollama -n 50 --no-pager/api/tags返回{models:[]}是正常的说明服务活着但还没导入模型。如果curl报Connection refused回去看systemctl status大概率是服务没起来如果服务是active但端口没监听检查ollama.service里的ExecStart路径对不对。journalctl是排查 ollama 问题的黑匣子GPU 相关的报错比如CUDA error、no compatible GPUs都会在这里出现。注意如果日志里出现ollama serve 段错误优先怀疑二进制架构不匹配或 glibc 版本过低。用ldd $(which ollama)看动态库依赖是否有not found。4. 离线导入 llama3.1-70bModelfile 与模型权重的配合4.1 Modelfile 的结构与关键指令llama-3.1-70b.Modelfile是导入模型的核心。它不包含权重只描述「权重在哪、用什么模板、默认参数是什么」。一个典型的 Modelfile 长这样FROM /opt/models/llama-3.1-70b-instruct.Q4_K_M.gguf PARAMETER temperature 0.7 PARAMETER num_ctx 8192 PARAMETER num_gpu 999 TEMPLATE {{ if .System }}|start_header_id|system|end_header_id| {{ .System }}|eot_id|{{ end }}{{ if .Prompt }}|start_header_id|user|end_header_id| {{ .Prompt }}|eot_id|{{ end }}|start_header_id|assistant|end_header_id| SYSTEM You are a helpful assistant.FROM指向 GGUF 权重文件的绝对路径这是离线部署最容易出错的地方——路径写错ollama create直接报找不到文件。num_gpu 999表示尽可能把所有层放到 GPU70B 模型即使量化后也需要相当显存具体能放多少层取决于你的卡。TEMPLATE必须和 llama3.1 的对话格式匹配用错模板会导致模型输出乱码或不停重复。4.2 导入模型与显存边界权重文件需要提前准备好放在 Modelfile 里FROM指定的路径。导入命令很简单# 在 Modelfile 所在目录执行模型命名为 llama3.1:70b ollama create llama3.1:70b -f llama-3.1-70b.Modelfile # 查看已导入模型 ollama list # 试跑观察显存占用和首 token 延迟 ollama run llama3.1:70b 用一句话说明什么是缺陷检测ollama create会把 GGUF 权重按 ollama 的格式重新组织这一步耗时取决于磁盘 IO70B 的量化模型动辄几十 GB慢是正常的。ollama list能看到模型说明导入成功。试跑时用nvidia-smi -l 1另开一个终端盯显存如果显存爆了ollama 会自动回退部分层到 CPU速度断崖式下跌——这就是为什么num_gpu不能盲目设大要按实际显存留出余量。4.3 70B 模型的资源账先算清楚再动手70B 模型不是随便一台机器能扛的。以 Q4_K_M 量化为例权重大约 40GB 出头加上 KV cache 和上下文开销实际显存需求会更高。下面这张表帮你快速判断机器够不够量化等级权重体积约最低显存建议适用场景Q4_K_M40 GB48 GB单卡 A6000 / 双卡 3090Q5_K_M48 GB56 GB双卡 4090Q8_070 GB80 GBA100 80GFP16140 GB160 GB多卡 A100如果显存不够要么换更小的量化版本要么接受 CPU 回退带来的速度损失。DeepSeek 系列模型同理只是权重格式和 Modelfile 里的 TEMPLATE 需要换成对应模型的对话模板不能直接套用 llama 的。5. 避坑与排查离线部署里最容易翻车的五件事5.1 现象脚本执行报Permission denied原因通常是脚本没有执行权限或者所在分区挂载时带了noexec选项。先chmod x如果还不行用mount | grep $(df . | tail -1 | awk {print $1})看挂载参数有noexec就换到/opt或/tmp下执行。5.2 现象服务启动后立即退出日志报user ollama not found脚本创建用户那一步失败了常见于已经存在同名用户但属组不对或者/etc/passwd只读。手动补useradd -r -s /bin/false ollama然后systemctl daemon-reload systemctl restart ollama。5.3 现象ollama create卡住不动或报unexpected EOF多半是 GGUF 文件不完整传输过程中断了。用md5sum对比源文件和目标文件的哈希不一致就重新传。离线环境传大文件建议用rsync --partial支持断点续传别用 scp 一把梭。5.4 现象模型能跑但输出全是重复的 tokenTEMPLATE 和模型不匹配。llama3.1 用的是|start_header_id|这套特殊 token如果你套了 llama2 的[INST]模板模型会懵。核对 Modelfile 里的 TEMPLATE 是否和模型官方一致DeepSeek 模型要用它自己的模板。5.5 现象GPU 利用率始终为 0推理极慢nvidia-smi能看到进程但 GPU 利用率上不去检查ollama.service里是否设置了OLLAMA_GPU_DRIVER以及运行用户是否有访问/dev/nvidia*的权限。常见做法是把 ollama 用户加入video组usermod -aG video ollama然后重启服务。6. 进阶把离线部署做成可复用的交付流程单次装好不算本事能把这套流程固化成可重复交付的脚本才有价值。我一般会做三件事。第一把安装脚本、Modelfile、依赖 deb 包、权重文件按固定目录结构组织写一个manifest.txt记录每个文件的 md5交付前跑一遍校验。第二把ollama create和验证命令包成一个deploy_model.sh参数化模型名和 Modelfile 路径避免每次手敲。第三在ollama.service里显式加上EnvironmentOLLAMA_MODELS/opt/ollama-models把模型存储从默认的/usr/share/ollama/.ollama挪到独立分区防止系统盘被几十 GB 权重撑爆。# 交付前的完整性校验脚本片段 while read -r hash file; do actual$(md5sum $file | awk {print $1}) [ $hash $actual ] echo OK $file || echo FAIL $file done manifest.txt这套流程跑顺之后换一台机器从解压到模型可用基本能控制在半小时内前提是权重文件已经随包带过去。最后说个血泪经验离线环境里最贵的不是安装时间是来回拷文件的物理时间。第一次交付前我一定会在有网机器上把整个流程完整走一遍确认每个文件路径、每个参数都对再打包进隔离网段。从那以后我每次做离线部署都强制先在有网环境做一次全流程演练宁可多花一小时也不在客户现场对着报错干瞪眼。希望帮到你。本文还有配套的精品资源点击获取
返回列表
PREV
查看更多资讯
NEXT
返回资讯列表