Google Colab 跑 Ollama:無 GPU 測試與 /api/chat 串流
Google Colab 可以用來快速測試 Linux 工具與本機 API,Ollama 也能在沒有 GPU 的環境以 CPU 載入模型。但這兩件事不代表它適合長期對外提供服務:Colab 的虛擬機會在閒置後刪除、最長存活時間與硬體資源會變動,而 CPU 推論的速度與可載入模型大小高度依賴當次記憶體與模型量化方式。
因此,把 Colab + Ollama 視為一次性的實驗、API 整合測試或串流客戶端除錯環境會比較準確。若需要穩定網址、持久模型、多人併發、存取控制或服務等級目標,應使用自己管理的 VM、容器平台或受管理推論服務。
開始前先了解三個限制
- Colab 是短暫執行環境。Google 說明指出,VM 會在閒置一段時間後刪除,且有服務強制的最長生命週期;可用 GPU、使用額度與其他限制都會隨時間和使用狀況變動。
- 無 GPU 代表模型在系統記憶體中推論。Ollama 的
ollama ps可顯示模型是 100% GPU、100% CPU 或混合載入。CPU 模式可作為功能驗證,但不要預設它會有互動式的低延遲。 - 本機 API 預設不等於公開 API。Ollama 預設綁定在
127.0.0.1:11434。這在 notebook 內測試是較好的預設值;若要讓外部瀏覽器或其他服務連入,必須額外處理身分驗證、TLS、允許來源、速率限制與存取紀錄。
適合的測試目標
在 Colab 上使用 Ollama,最值得驗證的是應用程式是否能正確呼叫 API、讀取串流、處理逾時、顯示錯誤,以及在模型載入或卸載時維持可理解的使用者體驗。不要把「剛好跑通一次」當成效能基準或可用性承諾。
開始時選擇體積較小、授權條件已確認的模型,並先查看可用記憶體、磁碟空間與網路狀態。模型下載和載入都會花時間;若執行環境重置,已下載模型通常也需要重新取得。
最小流程:先在本機驗證,再談串流
- 在 Linux 執行環境安裝並啟動 Ollama,確認服務程序正常運作。
- 拉取一個適合測試的模型,並用
ollama ps確認它是否落在 CPU、GPU 或混合記憶體。 - 只從同一個 runtime 對
127.0.0.1:11434發出請求,先確認模型、訊息格式與錯誤處理。 - 客戶端能正確接收串流後,再評估是否真的需要受保護的外部連線。
Linux 上的標準啟動概念是執行 ollama serve,而 API 端點則是本機 HTTP 服務。部署時應鎖定已測試的版本與模型名稱,並把下載、載入和第一次回覆的時間納入測試紀錄。
/api/chat 串流怎麼運作?
Ollama 的 POST /api/chat 需要模型名稱與訊息陣列;messages 中每一筆至少有角色與內容。官方 API 文件將 stream 的預設值列為 true,因此客戶端應逐行讀取回應片段,持續把 message.content 接到畫面上,直到收到 done: true。
curl http://127.0.0.1:11434/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "你的已下載模型",
"messages": [
{"role": "user", "content": "請用三點說明如何驗證 API 串流。"}
]
}'
串流回覆通常是多個 JSON 物件依序送達,而不是一段可以一次解析完的單一 JSON。前端或後端代理應處理空片段、連線中斷、非 2xx 回覆、done 訊號與取消操作;不要只把所有資料直接串接後當作成功。
在除錯或需要一次取得完整物件的情境,可以將請求中的 stream 設為 false。這有助於先確認訊息格式與錯誤處理,但不能取代對真實串流介面的測試。
記憶體、context 與併發要一起規畫
Ollama 的預設 context window 為 4096 token;增加 context 長度會提高記憶體需求。對 CPU 推論而言,選擇過大的模型、過長 context 或同時送入多個請求,都可能讓回覆非常慢或排隊。官方 FAQ 也說明,併發請求會使 context 配置隨平行數增加,記憶體不足時新請求會等待模型卸載或載入。
測試時應記錄模型載入時間、首個片段時間、完整回覆時間、prompt token、輸出 token、記憶體使用量與失敗原因。若只測一次短提示,很容易忽略長對話、重新載入或多使用者情境的問題。
實務原則:在短暫 Colab runtime 中,讓模型用完後儘快釋放或設定合理的 keep_alive;把模型、資料與 API 綁在本機測試邊界內。需要公開連線時,先建立經驗證的反向代理或服務層,而不是直接暴露未受保護的 Ollama 埠。
哪些情況不應使用 Colab 當 Ollama 主機?
- 需要固定網域、可靠重啟、持久模型快取或長時間背景工作。
- 會處理機密、個資、受版權保護內容或需符合組織資料治理要求的資料。
- 需要多人併發、API 金鑰、角色權限、稽核日誌、用量限制或生產監控。
- 要把 Agent 連到有副作用的工具、資料庫或內部系統。
這些情況通常更適合由自己管理的環境,以明確的身分驗證、網路分段、祕密管理、備份與觀測性來部署。Ollama 本機執行時,官方表示不會看到你的 prompts 或資料;但一旦改用雲端模型、代理、公開 tunnel 或第三方服務,資料流與責任邊界就會改變,必須重新評估。
常見問題
沒有 GPU 可以跑嗎?
可以把 CPU 模式當成功能測試選項。是否能順暢完成工作,取決於模型大小、量化、可用系統記憶體、context 長度與同時請求數;請以實測數據決定,而不是只看是否能成功啟動。
為什麼 Colab 每次重連都要重新下載或重新載入模型?
Colab runtime 是暫時 VM,閒置後或到達最大生命週期時會被刪除。把它當成持久主機會導致模型、程序與暫存資料不可預期地消失。
如何讓網頁前端取得串流?
先讓應用程式在受控環境中逐行處理 /api/chat 的串流回覆,再依你的認證與 CORS 設計建立後端代理。不要因為要測試前端,就直接把本機埠公開到任何人都能呼叫的網址。
結語
Colab + Ollama 很適合把本機模型 API、訊息格式與串流介面先跑通;它不適合作為不受管理的公開服務。從小模型、本機迴路測試、串流錯誤處理與資源紀錄開始,等需求明確後再遷移到可控的正式環境,會比追求「無 GPU 也永遠穩定」更可靠。














