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