地端跑 LLM 必學!Ollama 完整指南:從模型底層邏輯到進階環境變數調校

近年來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有基本的認知。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *