近年來AI技術快速普及,不只是雲端跑AI模型,在地端跑也越來越受到關注。因為在雲端跑會有隱私資安,成本和網路延遲等問題。Ollama的問世提供在地端跑AI模型的一個選擇。Ollama是一款開源工具。可以在MAC,LINUX和WINDOWS下載和執行。當然你也可以用Docker下載和執行。本篇文章主要講解模型的內部結構,Ollama一些常用的指令和環境變數的設定。
1.模型概念
一個模型是由許多不同的部分組成的,其中最大的一部分是權重檔(weight file)。這是一個由大量節點(nodes)構成的集合,而這些節點之間透過稱為權重(weights)與偏置(biases)的連結相互連接。這些權重與偏置的總和,通常被稱為參數(parameters)。

節點(node)通常代表一個概念,可能是一個單字或一個片語。在模型訓練的過程中,這些參數會以不同程度將各個概念連結在一起,有時彼此更接近,有時則稍微分離。
隨著模型持續訓練,兩個節點之間不會只有單一的權重,而是可能根據不同的上下文與節點功能,存在多種不同的權重組合。
因此,世界上大量的知識正是以這種方式被壓縮進一個相對小巧的檔案中。
這個檔案的大小取決於參數的表示方式。最初開發模型時,通常會使用16位元或32位元的浮點數(floating point numbers)。這些數值雖然非常大且精確,但如果將這些數值分組並壓縮,就可以在保留相當精度的同時,大幅減少檔案大小。
最常見的壓縮方式是使用 4 個位元(bit),這就是所謂的4-bit量化(4-bit quantization)。
2. Ollama CLI(指令)介紹
ollama -h(ollama -help): 取得所有一系列ollama指令
ollama create: 在 Ollama 中建立可用的新模型。在 Ollama 裡,一個模型是由多個部分組成的集合,包括大型的 GGUF 檔案(權重檔)、提示模板(template)、系統提示(system prompt),以及其他等等。
ollama show Phi3: 可以看到一些高階組態設定

ollama run phi3 –format json: 用來指示模型將輸出格式設定為 JSON 資料(JSON blob)
–keepalive > 0 用來強制模型在特定時間內卸載或載入
–verbose 顯示更詳細的執行資訊(詳細輸出模式)
ollama ls : 列出你本機已下載/已安裝的模型清單
ollama cp: 複製一個模型和幫它取一個新的名稱。這指令不是複製整個檔案,而是複製它的參照(reference)。所以這複製的模型可能只有500 bytes,而本體則有20G
ollama rm: 移除指定的檔案。但如果你刪除的是你複製出來的模型,它其實不會釋放太多空間,因為原始模型仍然存在。
ollama pull phi3: 這個指令會從Ollama的模型庫下載phi3模型。根據模型大小和你的網路速度,下載可能需要幾分鐘到數十分鐘不等。
ollama run phi3: 執行這個指令後,你會進入一個互動式的對話介面,可以直接開始與模型交談。輸入任何問題或指令,模型會即時回應。你也可以將兩個步驟合併。如果你直接執行 ollama run phi3 而模型尚未下載,Ollama 會自動先下載模型再啟動對話。
3. Ollama 環境變數(Environment Variables)
一般在本機執行 Ollama時,大多數情況下不需要特別設定環境變數。不過在某些特殊情境下,適當調整環境變數可以提升系統的彈性與效能。
例如:
- 客戶端(Client)與伺服器(Server)部署在不同機器上。
- 需要同時執行多個模型。
- 需要處理大量並發請求。
- 希望將前端與後端服務分離部署。
- 想提高模型的並行處理能力。
在這些情況下,就可以透過設定 Ollama 的環境變數來達成需求。以下介紹幾個常用的環境變數:
OLLAMA_HOST: 當 Ollama 伺服器運行於其他主機時,可透過此參數指定監聽的位址與連接埠,讓遠端客戶端能夠存取 Ollama 服務。
例如:
OLLAMA_HOST=0.0.0.0:11434
OLLAMA_KEEP_ALIVE: 用來設定模型在完成推論後,仍保留於記憶體中的時間。適當延長保留時間可避免模型頻繁載入,進而提升回應速度。
例如:
OLLAMA_KEEP_ALIVE=-1
表示模型將永久保留於記憶體中,直到 Ollama 服務關閉為止。
OLLAMA_MODELS: 指定模型檔案的儲存位置,用來取代系統預設的模型目錄。
例如:
OLLAMA_MODELS=D:\Ollama\Models
適合將大型模型儲存在容量較大的磁碟中。
OLLAMA_MAX_LOADED_MODES: 設定 Ollama 最多可同時載入多少個模型至記憶體中。如果經常需要切換不同模型,可適當提高此數值,以減少模型重新載入的時間。
OLLAMA_NUM_PARALLEL: 設定單一模型可同時處理的請求數量(Parallel Requests)。。
OLLAMA_MAX_QUEUE: 設定最多允許多少個請求在等待佇列(Queue)中排隊。當同時進入的請求超過系統可處理的數量時,新的請求會先進入佇列等待;若佇列已滿,則新的請求將被拒絕。
OLLAMA_DEBUG: Ollama 的除錯(Debug)模式開關。
啟用後,Ollama 會輸出更詳細的日誌(Log)資訊,例如:
- 模型載入過程
- GPU 偵測結果
- 記憶體使用狀況
- API 請求資訊
- 推論效能統計
此功能有助於排查模型載入失敗、效能異常或 GPU 未正常運作等問題。
例如:
OLLAMA_DEBUG=1
對於一般使用者而言,通常不需要特別調整 Ollama 的環境變數。但當系統規模擴大、需要多人共用服務、部署於不同主機,或希望提升模型並行處理能力時,善用上述環境變數能夠有效提升 Ollama 的效能與管理彈性。
4. 結尾
後續還會出Ollama相關文章例如介紹Embedding Model,如何更新Ollama等。希望本篇能給讀者對Ollama有基本的認知。