在氣隙環境中部署 Ollama 處理企業資料
在完全沒有外網的環境裡部署 Ollama:模型的準備與轉運、離線安裝、GPU 設定、模型選型,以及過程中大機率會踩到的幾個坑。
Ollama 的正常工作流程假設有網路訪問:ollama pull mistral 從倉庫下載模型權重。在氣隔環境中,沒有網路。沒有倉庫訪問,沒有依賴項下載,沒有遙測回傳。運行所需的一切必須通過批准的流程物理轉移。
這是國防、情報、關鍵基礎設施和高安全性金融環境中資料準備專案的現實。在您的筆記型電腦上使用 ollama run 有效的 AI 輔助標記工作流程,在目標機器從未見過網路的情況下需要不同的部署路徑。
本指南涵蓋完整的氣隔 Ollama 部署工作流程:從連接網路的機器上準備模型到在隔離目標上的驗證操作。
前置條件
在開始轉移過程之前,在氣隔目標機器上確認以下內容:
作業系統:Linux(Ubuntu 22.04/24.04、RHEL 8/9、Rocky Linux)或 Windows 10/11。macOS 可以,但在企業氣隔環境中不常見。
GPU 驅動程式:NVIDIA 驅動程式必須已在目 標上安裝並運行。運行 nvidia-smi 進行驗證。如果未安裝 GPU 驅動程式,那是一個獨立的(通常很痛苦的)離線安裝過程——NVIDIA 驅動程式包有自己的依賴項鏈。
CUDA 工具包:GPU 推理所需。必須與驅動程式版本匹配。通過 nvcc --version 或檢查 /usr/local/cuda/version.txt 進行驗證。
磁碟空間:Ollama 的模型儲存默認為 ~/.ollama/models。7B Q4 模型約 4 GB。14B Q4 模型約 8 GB。如果您要維護多個模型和量化變體,預算 50-100 GB 用於模型儲存。
批准的轉移媒體:USB 磁碟機、光學媒體,或設施的資訊轉移政策允許的任何媒體。某些環境需要帶寫保護或加密的特定媒體類型。
第一步:在連接網路的機器上準備模型
在可以訪問網路的機器上(您的開發工作站或指定的預備機器):
安裝 Ollama
curl -fsSL https://ollama.ai/install.sh | sh拉取目標模型
拉取您需要的每個模型和量化變體。轉移後您無法拉取額外的模型。
# 核心標記模型
ollama pull mistral:7b-instruct-v0.3-q4_K_M
ollama pull mistral:7b-instruct-v0.3-q8_0
ollama pull qwen2.5:14b-instruct-q4_K_M
ollama pull qwen2.5:14b-instruct-q5_K_M
# 用於輕量任務的較小模型
ollama pull phi3:3.8b-mini-instruct-4k-q4_K_M
# 嵌入模型(如果需要用於去重複/相似性)
ollama pull nomic-embed-text驗證模型工作
對每個模型運行測試推理,確認它們正確載入和生成:
ollama run mistral:7b-instruct-v0.3-q4_K_M "Classify this text as positive or negative: The product arrived on time."定位模型文件
Ollama 將模型 blob 儲存在其模型目錄中:
# 默認位置
# Linux: ~/.ollama/models
# macOS: ~/.ollama/models
# Windows: C:\Users\<user>\.ollama\models
ls ~/.ollama/models/manifests/registry.ollama.ai/library/
ls ~/.ollama/models/blobs/manifests 目錄包含元資料(將模型名稱映射到 blob 雜湊值的 JSON 文件)。blobs 目錄包含實際的模型權重和配置文件。
第二步:打包以供轉移
選項 A:複製整個 Ollama 目錄
最簡單的方法——將完整的 ~/.ollama 目錄複製到轉移媒體。
# 計算總大小
du -sh ~/.ollama/models
# 複製到轉移媒體(例如加密的 USB 磁碟機)
cp -r ~/.ollama/models /media/transfer-drive/ollama-models/優點:保證包含一切——清單、blob 和元資料。 缺點:包含所有模型,即使是目標上可能不需要的模型。如果您已拉取許多模型,可能會非常大。
選項 B :選擇性模型導出
對於有嚴格轉移大小限制的環境,只導出您需要的模型。
# 創建一個乾淨的導出目錄
mkdir -p /media/transfer-drive/ollama-export
# 複製特定模型的清單
for model in mistral qwen2.5 phi3 nomic-embed-text; do
cp -r ~/.ollama/models/manifests/registry.ollama.ai/library/$model \
/media/transfer-drive/ollama-export/manifests/registry.ollama.ai/library/
done
# 讀取清單以識別所需的 blob,然後複製這些 blob
# (每個清單引用 blob SHA256 雜湊值)這更複雜,但產生更小的轉移包。建議採用腳本化方法,以避免遺漏清單引用的 blob。
選項 C:直接使用 GGUF 文件(llama.cpp 備用)
如果 Ollama 目錄複製方法無法清潔工作,直接從 HuggingFace 下載 GGUF 文件,並計劃在目標上使用 llama.cpp:
# 下載 GGUF 文件
wget https://huggingface.co/TheBloke/Mistral-7B-Instruct-v0.3-GGUF/resolve/main/mistral-7b-instruct-v0.3.Q4_K_M.ggufGGUF 文件是自包含的——單個文件包含模型權重、分詞器和配置。這是氣隔部署最可移植的格式。
準備 Ollama 二進制文件
同時轉移 Ollama 二進制文件:
# 為目標作業系統/架構下載 Ollama 二進制文件
# Linux x86_64:
curl -L https://ollama.ai/download/ollama-linux-amd64 -o ollama
chmod +x ollama
# 複製到轉移媒體
cp ollama /media/transfer-drive/ollama-binary/計算和記錄校驗和
驗證轉移完整性:
sha256sum /media/transfer-drive/ollama-binary/ollama > /media/transfer-drive/checksums.txt
find /media/transfer-drive/ollama-models/ -type f -exec sha256sum {} + >> /media/transfer-drive/checksums.txt第三步:轉移到氣隔機器
此步驟遵循您組織的資訊轉移政策。常見模式:
- USB 磁碟機:將文件複製到批准的 USB 磁碟機。某些環境需要加密磁碟機或已通過資料二極管掃描的磁碟機。
- 光學媒體:燒錄到 DVD 或藍光光碟。只讀媒體有時因安全原因而優先考慮——接收系統無法寫入它。
- 資料二極管轉移:某些高安全環境使用硬體資料二極管,允許從低安全到高安全網路的單向資料轉移。
無論機制如何,轉移後驗證校驗和:
sha256sum -c checksums.txt任何校驗和不匹配意味著文件在轉移過程中損壞。不要繼續使用損壞的模型文件——它們要麼無法載入,要麼產生不正確的輸出。
第四步:在目標機器上安裝和配置
安裝 Ollama 二進制文件
# 將二進制文件複製到系統路徑
sudo cp /media/transfer/ollama-binary/ollama /usr/local/bin/
sudo chmod +x /usr/local/bin/ollama設置模型目錄
# 如果使用選項 A(完整目錄複製):
mkdir -p ~/.ollama
cp -r /media/transfer/ollama-models ~/.ollama/models
# 驗證 Ollama 可以看到模型
ollama list預期輸出應顯示所有轉移的模型及其大小。
配置環境
# 防止 Ollama 嘗試任何網路訪問
export OLLAMA_HOST=127.0.0.1:11434
export OLLAMA_ORIGINS=*
# 可選:自訂模型儲存位置
export OLLAMA_MODELS=/path/to/custom/model/directory
# 對於有多個 GPU 的系統,指定使用哪個
export CUDA_VISIBLE_DEVICES=0
# 設置並行請求數
export OLLAMA_NUM_PARALLEL=2啟動和驗證
# 啟動 Ollama 伺服器
ollama serve &
# 驗證模型載入並運行
ollama run mistral:7b-instruct-v0.3-q4_K_M "Respond with 'OK' if you are working."如果模型載入並生成回應,部署就成功了。
資料準備任務的模型選擇
對於氣隔環境,模型選擇需要更多考量,因為部署後您無法輕易更換模型。提前轉移正確的模型。
分類和標記
主要:Mistral 7B Instruct 或 Llama 3.1 8B Instruct 的 Q4_K_M。快速,在二元和多類別分類上準確。處理大多數文件分類任務。
備用:同一模型的 Q8_0,如果 Q4 不足則提高準確性。轉移兩種量化版本以備選擇。
實體提取
主要:Qwen 2.5 14B Instruct 的 Q4_K_M 或 Q5_K_M。較大的模型在從複雜文件中提取特定實體(姓名、日期、金額、法律引用)方面提供更好的準確性。
合成資料生成
主要:Qwen 2.5 14B Instruct 的 Q5_K_M。生成品質比分類更受益於更高的量化。
輕量任務
主要:Phi-3 Mini 3.8B 的 Q4_K_M。用於簡單的二元分類、格式偵測或語言識別,7B 模型過於強大而 3.8B 模型運行更快。
推薦的轉移包
對於通用資料準備部署,轉移:
| 模型 | 量化 | 大小 | 用途 |
|---|---|---|---|
| Mistral 7B Instruct v0.3 | Q4_K_M | 約 4 GB | 主要分類/標記 |
| Mistral 7B Instruct v0.3 | Q8_0 | 約 7.5 GB | 高準確性備用 |
| Qwen 2.5 14B Instruct | Q4_K_M | 約 8 GB | 實體提取、生成 |
| Qwen 2.5 14B Instruct | Q5_K_M | 約 10 GB | 高品質生成 |
| Phi-3 Mini 3.8B | Q4_K_M | 約 2.3 GB | 輕量任務 |
| nomic-embed-text | 默認 | 約 275 MB | 嵌入(去重複/相似性) |
| 合計 | 約 32 GB |
此包可以放在單個 64 GB USB 磁碟機上,還有 Ollama 二進制文件和文件的空間。
運營考量
無網路時的模型更新
當發布一個改善標記準確性的新模型版本時,更新周期是:
- 在連接網路的預備機器上拉取新模型
- 在代表性測試資料上驗證它有效
- 通過批准的流程 轉移
- 在氣隔機器上安裝
- 對保留測試集進行驗證,確認改善
此周期根據組織的轉移審批流程需要數天到數週。為此計劃。不要承諾在氣隔環境中快速模型迭代。
管理多個模型版本
在目標機器上保留以前的模型版本,直到新版本通過驗證。磁碟空間成本相對於部署在您特定任務上表現更差的模型的風險來說微不足道。
# Ollama 通過標籤處理版本控制
# 兩個版本共存
ollama list
# mistral:7b-instruct-v0.3-q4_K_M 4.1 GB
# mistral:7b-instruct-v0.2-q4_K_M 4.0 GBGPU 記憶體管理
Ollama 在第一次請求時將模型載入 GPU 記憶體,並保持在那裡。在 VRAM 有限、服務多種模型大小的機器上:
# 設置空閒模型卸載的超時(分鐘)
export OLLAMA_KEEP_ALIVE=5m使用 5 分鐘的保持活躍,在 7B 和 14B 模型之間切換,在上一個模型被淘汰後需要約 10-15 秒(模型載入時間)。
常見故障模式
缺少 CUDA 庫
症狀:Ollama 啟動但推理在 CPU 上運行(極慢)或因 CUDA 錯誤失敗。
原因:未安裝 CUDA 工具包或 cuDNN 庫,或安裝版本與 GPU 驅動程式不匹配。
修復:驗證 nvidia-smi 顯示 GPU。驗證 nvcc --version 顯示 CUDA 工具包。確保 CUDA 工具包版本與安裝的驅動程式版本兼容。NVIDIA 維護兼容性矩陣。
轉移過程中模型權重損壞
症狀:模型無法載入,出現關於無效 GGUF 標頭或張量形狀不匹配的神秘錯誤。
原因:文件在轉移過程中損壞——不完整的複製、USB 媒體上的壞扇區或轉移中斷。
修復:對照原始文件比較校驗和。重新轉移損壞的文件。
VRAM 不足
症狀:模型部分載入,然後因記憶體不足錯誤崩潰。
原因:模型(包括配置的上下文視窗的 KV 快取)不適合 GPU VRAM。
修復:使用較小的模型或較低的量化。或將 OLLAMA_NUM_PARALLEL 減少到 1(減少並發上下文視窗)。或縮小上下文視窗大小 。
Ollama 找不到模型
症狀:ollama list 顯示沒有模型,儘管文件存在於磁碟上。
原因:模型目錄結構不符合 Ollama 的預期。清單引用的 blob 雜湊值必須存在於 blobs 目錄中。
修復:確保 ~/.ollama/models/ 下的目錄結構完整:manifests/registry.ollama.ai/library/<model-name>/<tag> 必須指向 blobs/sha256-<hash> 中的 blob。
啟動時的 DNS/網路錯誤
症狀:Ollama 日誌顯示 DNS 解析失敗或連接超時。
原因:Ollama 嘗試檢查更新或解析其倉庫主機名。
修復:設置 OLLAMA_HOST=127.0.0.1:11434 並確保未設置代理環境變數(unset http_proxy https_proxy HTTP_PROXY HTTPS_PROXY)。Ollama 應該在沒有網路訪問的情況下運行,但過時的代理配置可能會導致延遲啟動的超時。
與資料準備工具的整合
Ollama 在 localhost:11434 上公開與 OpenAI 相容的 API。任何可以調用 OpenAI API 的工具都可以通過更改基礎 URL 指向 Ollama。
Ertas Data Suite 原生與 Ollama 和 llama.cpp 整合。在氣隔部署中,應用程式偵測到在 localhost 上運行的 Ollama,並在標記介面中呈現可用的模型。用戶選擇模型,為其標記方案配置提示範本,並開始 AI 輔助標注——所有這些都不需要任何網路連接。
原生桌面架構意味著資料準備工具本身也不需要網路訪問。沒有要聯繫的授權伺服器,沒有要發送的遙測,沒有要針對其進行驗證的雲端服務。整個技術棧——應用程式、推理後端和資料——在單個氣隔機器上運行。
部署清單
在宣佈氣隔部署可運行之前:
-
nvidia-smi顯示正確的 GPU -
ollama list顯示所有預期的模型 - 每個模型成功運行推理
- 推理期間 GPU 利用率大於 0%(確認是 GPU 而非 CPU 執行)
- 推理速度符合預期(7B Q4 在消費者 GPU 上約 30-60 tok/s)
- Ollama 日誌中沒有網路錯誤
- 所有轉移文件的校驗和已驗證
- 針對預備環境中的已知良好範例驗證模型輸出
在專案團隊到達之前把這些搞定。在氣隔保密機房中調試 GPU 驅動程式不是任何人想要花費計費時間的方式。
Ship AI that runs on your users' devices.
Free plan with 30 credits/mo, no card required. Paid plans from $10/mo USD.