網(wǎng)離線部署Ollama與llama3.1-70B模型實戰(zhàn)指南)
簡介本資源面向需要在 Ubuntu 環(huán)境下離線部署大模型的開發(fā)者與運維人員提供 ollama-v0.3.12 的完整離線安裝與模型部署方案解決無外網(wǎng)或網(wǎng)絡(luò)受限場景下的安裝難題。包內(nèi)共 24 個文件以 19 張 png 操作截圖、2 份 md 說明文檔為主另含 1 個 sh 安裝腳本、1 個 Modelfile 模型定義文件與 1 個 txt 使用指南壓縮包約 2.91MB體積輕便便于攜帶。文檔詳細講解離線安裝步驟并給出使用 Ollama 離線部署 llama3.1-70b 模型的完整示例DeepSeek 等模型同樣適用配套腳本可直接執(zhí)行安裝Modelfile 則用于模型導入配置。目前已有 601 人學習下載適合希望快速搭建本地推理環(huán)境、減少踩坑成本的讀者參考。1. 內(nèi)網(wǎng)機器上跑起 70B這套 ollama-v0.3.12 離線包到底解決了什么上周幫一個做工業(yè)質(zhì)檢的團隊處理部署問題他們的訓練服務(wù)器在廠區(qū)內(nèi)網(wǎng)物理隔離連 apt 源都連不上但業(yè)務(wù)側(cè)又要求把 llama3.1-70b 跑起來做缺陷報告的自動生成。這種場景下ollama官方那行curl -fsSL https://ollama.com/install.sh | sh直接廢掉——不是腳本有問題是機器根本出不去。這套ollama-v0.3.12 離線安裝腳本與示例ubuntu就是沖著這個痛點來的它把 Ubuntu 下的離線安裝步驟、一個可執(zhí)行的安裝腳本、以及用Modelfile離線部署 llama3.1-70b 的完整示例打包在一起DeepSeek 系列模型同樣適用。適合誰手里有隔離網(wǎng)段、有 GPU 但沒外網(wǎng)、又不想從源碼編譯折騰依賴的運維和算法工程師。它不解決模型效果問題只解決「怎么把 ollama 和模型塞進一臺沒有互聯(lián)網(wǎng)的 Ubuntu 機器并讓它跑起來」。2. 拆開壓縮包文件清單與離線安裝的前置判斷2.1 資源里到底有什么各自對應(yīng)哪一步拿到壓縮包先別急著解壓執(zhí)行把文件按用途分個類后面排錯時能快速定位。這份資源的結(jié)構(gòu)其實很清晰分四塊文件類型用途ollama-v0.3.12 離線安裝指南ubuntu.md文檔完整離線安裝步驟含依賴處理ollama_v0.3.12_offline_install.sh腳本實際執(zhí)行安裝的 shell 腳本ollama離線安裝腳本使用指南.txt文檔腳本的參數(shù)、執(zhí)行方式和注意事項使用 Ollama 離線部署 llama3.1-70b 模型示例.md文檔模型側(cè)離線部署流程llama-3.1-70b.Modelfile配置導入模型時用的 Modelfile1.png~19.png截圖各步驟的界面/終端參考關(guān)鍵點在于安裝腳本和模型部署是兩件事。腳本負責把 ollama 二進制和 systemd 服務(wù)裝好Modelfile負責把已經(jīng)下載好的模型權(quán)重導入 ollama。很多人翻車就翻在把這兩步混在一起以為腳本跑完模型就自動有了。2.2 離線安裝的底層邏輯為什么不能直接拷二進制ollama 在 Ubuntu 上的安裝官方腳本做的事遠不止下載一個二進制。它會檢測架構(gòu)、拉取對應(yīng)版本的ollama可執(zhí)行文件、創(chuàng)建ollama用戶和用戶組、寫 systemd unit、配置環(huán)境變量。離線場景下這些動作必須由腳本手動補齊否則你會遇到「二進制能跑但systemctl start ollama失敗」這種玄學問題。先確認目標機器的架構(gòu)這決定了你拿到的二進制對不對# 查看系統(tǒng)架構(gòu)x86_64 對應(yīng) amd64aarch64 對應(yīng) arm64 uname -m # 查看 Ubuntu 版本腳本對 20.04/22.04/24.04 的處理略有差異 lsb_release -a # 確認是否有 NVIDIA 顯卡及驅(qū)動決定后續(xù) GPU 加速是否可用 nvidia-smiuname -m輸出x86_64說明是常規(guī)服務(wù)器架構(gòu)aarch64則是 ARM 平臺比如某些國產(chǎn)化服務(wù)器或開發(fā)板兩者需要的 ollama 二進制不同。nvidia-smi能正常輸出說明驅(qū)動就緒如果報command not found那 GPU 加速這條路暫時走不通只能先跑 CPU 推理——70B 模型在 CPU 上基本沒有實用價值這點要提前和業(yè)務(wù)方對齊預(yù)期。提示離線機器上如果nvidia-smi缺失不要試圖在離線環(huán)境裝顯卡驅(qū)動依賴鏈太長。常見做法是在有網(wǎng)的同類機器上把驅(qū)動和 CUDA 依賴一并準備好或者干脆換一臺驅(qū)動正常的機器。2.3 依賴檢查那些腳本不會替你裝的東西安裝腳本能處理 ollama 自身的部署但系統(tǒng)級依賴它管不了。Ubuntu 最小化安裝的機器上以下幾樣經(jīng)常缺失缺一個腳本就可能中途失敗# 檢查關(guān)鍵依賴是否齊全 for pkg in curl tar gzip systemd; do dpkg -l | grep -q ^ii $pkg echo $pkg OK || echo $pkg MISSING done # 檢查 ollama 默認監(jiān)聽端口 11434 是否被占用 ss -tlnp | grep 11434curl和tar是腳本解壓和校驗時用的systemd決定能否注冊成服務(wù)。端口檢查容易被忽略——如果 11434 被別的進程占了ollama 服務(wù)啟動后會靜默失敗日志里只報address already in use不熟悉的會以為是安裝沒成功。這些依賴如果缺失需要在有網(wǎng)的機器上用apt-get download把 deb 包下下來再拷進離線機器dpkg -i安裝這一步?jīng)]有捷徑。3. 跑通安裝腳本從解壓到 systemd 服務(wù)拉起3.1 腳本執(zhí)行前的目錄規(guī)劃與權(quán)限把壓縮包傳到離線機器后建議放在一個固定路徑比如/opt/ollama-offline避免散落在 home 目錄里后面找不到。解壓后先給腳本執(zhí)行權(quán)限但別急著sudo ./xxx.sh一把梭先看一眼腳本頭部確認它引用的二進制路徑和你解壓出來的實際路徑一致。# 創(chuàng)建統(tǒng)一目錄并解壓 mkdir -p /opt/ollama-offline cd /opt/ollama-offline unzip ollama-v0.3.12\ 離線安裝指南ubuntu.zip # 賦予腳本執(zhí)行權(quán)限 chmod x ollama_v0.3.12_offline_install.sh # 查看腳本前 30 行確認路徑和變量定義 head -n 30 ollama_v0.3.12_offline_install.shhead這一步不是形式主義。離線腳本常見的寫法是把二進制路徑寫死成相對路徑如果你解壓的目錄層級和作者預(yù)期的不一樣腳本會報No such file or directory??吹侥_本里類似OLLAMA_BIN./ollama這種相對路徑就確保你在腳本所在目錄執(zhí)行如果是絕對路徑確認那個路徑下確實有文件。3.2 執(zhí)行安裝腳本與關(guān)鍵參數(shù)腳本的使用方式在ollama離線安裝腳本使用指南.txt里有說明通常支持指定安裝目錄和是否啟用 GPU。下面是一個典型的執(zhí)行方式# 以 root 執(zhí)行指定安裝到 /usr/local啟用 GPU 支持 sudo ./ollama_v0.3.12_offline_install.sh \ --install-dir /usr/local \ --enable-gpu \ --user ollama參數(shù)含義需要對照指南確認--install-dir決定二進制落點默認可能是/usr/local/bin--enable-gpu會額外配置OLLAMA_GPU_DRIVER相關(guān)環(huán)境變量--user指定服務(wù)運行賬戶。如果腳本不支持這些參數(shù)不同版本腳本差異大就按指南里的默認方式執(zhí)行別自己臆造參數(shù)——傳了不認識的參數(shù)腳本可能直接忽略也可能報錯退出兩種都不好排查。執(zhí)行過程中重點觀察三類輸出二進制拷貝是否成功、systemd unit 是否寫入/etc/systemd/system/ollama.service、服務(wù)是否active (running)。任何一步失敗腳本一般會打印錯誤行號記下來去對應(yīng)位置看。3.3 驗證服務(wù)狀態(tài)與 API 連通性腳本跑完不等于服務(wù)可用。按順序驗證# 1. 查看服務(wù)狀態(tài)確認 active (running) systemctl status ollama # 2. 查看監(jiān)聽端口 ss -tlnp | grep 11434 # 3. 調(diào)用 API 確認響應(yīng) curl http://127.0.0.1:11434/api/tags # 4. 查看服務(wù)日志排查隱藏錯誤 journalctl -u ollama -n 50 --no-pager/api/tags返回{models:[]}是正常的說明服務(wù)活著但還沒導入模型。如果curl報Connection refused回去看systemctl status大概率是服務(wù)沒起來如果服務(wù)是active但端口沒監(jiān)聽檢查ollama.service里的ExecStart路徑對不對。journalctl是排查 ollama 問題的黑匣子GPU 相關(guān)的報錯比如CUDA error、no compatible GPUs都會在這里出現(xiàn)。注意如果日志里出現(xiàn)ollama serve 段錯誤優(yōu)先懷疑二進制架構(gòu)不匹配或 glibc 版本過低。用ldd $(which ollama)看動態(tài)庫依賴是否有not found。4. 離線導入 llama3.1-70bModelfile 與模型權(quán)重的配合4.1 Modelfile 的結(jié)構(gòu)與關(guān)鍵指令llama-3.1-70b.Modelfile是導入模型的核心。它不包含權(quán)重只描述「權(quán)重在哪、用什么模板、默認參數(shù)是什么」。一個典型的 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 權(quán)重文件的絕對路徑這是離線部署最容易出錯的地方——路徑寫錯ollama create直接報找不到文件。num_gpu 999表示盡可能把所有層放到 GPU70B 模型即使量化后也需要相當顯存具體能放多少層取決于你的卡。TEMPLATE必須和 llama3.1 的對話格式匹配用錯模板會導致模型輸出亂碼或不停重復。4.2 導入模型與顯存邊界權(quán)重文件需要提前準備好放在 Modelfile 里FROM指定的路徑。導入命令很簡單# 在 Modelfile 所在目錄執(zhí)行模型命名為 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 權(quán)重按 ollama 的格式重新組織這一步耗時取決于磁盤 IO70B 的量化模型動輒幾十 GB慢是正常的。ollama list能看到模型說明導入成功。試跑時用nvidia-smi -l 1另開一個終端盯顯存如果顯存爆了ollama 會自動回退部分層到 CPU速度斷崖式下跌——這就是為什么num_gpu不能盲目設(shè)大要按實際顯存留出余量。4.3 70B 模型的資源賬先算清楚再動手70B 模型不是隨便一臺機器能扛的。以 Q4_K_M 量化為例權(quán)重大約 40GB 出頭加上 KV cache 和上下文開銷實際顯存需求會更高。下面這張表幫你快速判斷機器夠不夠量化等級權(quán)重體積約最低顯存建議適用場景Q4_K_M40 GB48 GB單卡 A6000 / 雙卡 3090Q5_K_M48 GB56 GB雙卡 4090Q8_070 GB80 GBA100 80GFP16140 GB160 GB多卡 A100如果顯存不夠要么換更小的量化版本要么接受 CPU 回退帶來的速度損失。DeepSeek 系列模型同理只是權(quán)重格式和 Modelfile 里的 TEMPLATE 需要換成對應(yīng)模型的對話模板不能直接套用 llama 的。5. 避坑與排查離線部署里最容易翻車的五件事5.1 現(xiàn)象腳本執(zhí)行報Permission denied原因通常是腳本沒有執(zhí)行權(quán)限或者所在分區(qū)掛載時帶了noexec選項。先chmod x如果還不行用mount | grep $(df . | tail -1 | awk {print $1})看掛載參數(shù)有noexec就換到/opt或/tmp下執(zhí)行。5.2 現(xiàn)象服務(wù)啟動后立即退出日志報user ollama not found腳本創(chuàng)建用戶那一步失敗了常見于已經(jīng)存在同名用戶但屬組不對或者/etc/passwd只讀。手動補useradd -r -s /bin/false ollama然后systemctl daemon-reload systemctl restart ollama。5.3 現(xiàn)象ollama create卡住不動或報unexpected EOF多半是 GGUF 文件不完整傳輸過程中斷了。用md5sum對比源文件和目標文件的哈希不一致就重新傳。離線環(huán)境傳大文件建議用rsync --partial支持斷點續(xù)傳別用 scp 一把梭。5.4 現(xiàn)象模型能跑但輸出全是重復的 tokenTEMPLATE 和模型不匹配。llama3.1 用的是|start_header_id|這套特殊 token如果你套了 llama2 的[INST]模板模型會懵。核對 Modelfile 里的 TEMPLATE 是否和模型官方一致DeepSeek 模型要用它自己的模板。5.5 現(xiàn)象GPU 利用率始終為 0推理極慢nvidia-smi能看到進程但 GPU 利用率上不去檢查ollama.service里是否設(shè)置了OLLAMA_GPU_DRIVER以及運行用戶是否有訪問/dev/nvidia*的權(quán)限。常見做法是把 ollama 用戶加入video組usermod -aG video ollama然后重啟服務(wù)。6. 進階把離線部署做成可復用的交付流程單次裝好不算本事能把這套流程固化成可重復交付的腳本才有價值。我一般會做三件事。第一把安裝腳本、Modelfile、依賴 deb 包、權(quán)重文件按固定目錄結(jié)構(gòu)組織寫一個manifest.txt記錄每個文件的 md5交付前跑一遍校驗。第二把ollama create和驗證命令包成一個deploy_model.sh參數(shù)化模型名和 Modelfile 路徑避免每次手敲。第三在ollama.service里顯式加上EnvironmentOLLAMA_MODELS/opt/ollama-models把模型存儲從默認的/usr/share/ollama/.ollama挪到獨立分區(qū)防止系統(tǒng)盤被幾十 GB 權(quán)重撐爆。# 交付前的完整性校驗?zāi)_本片段 while read -r hash file; do actual$(md5sum $file | awk {print $1}) [ $hash $actual ] echo OK $file || echo FAIL $file done manifest.txt這套流程跑順之后換一臺機器從解壓到模型可用基本能控制在半小時內(nèi)前提是權(quán)重文件已經(jīng)隨包帶過去。最后說個血淚經(jīng)驗離線環(huán)境里最貴的不是安裝時間是來回拷文件的物理時間。第一次交付前我一定會在有網(wǎng)機器上把整個流程完整走一遍確認每個文件路徑、每個參數(shù)都對再打包進隔離網(wǎng)段。從那以后我每次做離線部署都強制先在有網(wǎng)環(huán)境做一次全流程演練寧可多花一小時也不在客戶現(xiàn)場對著報錯干瞪眼。希望幫到你。本文還有配套的精品資源點擊獲取