fbpx

Ubuntu 安裝 ollama 在本地執行 Llama 3.2 推論模型與 API 服務

ollama

Ollama 介紹

Ollama 是一個專注於大語言模型(LLM, Large Language Models)應用的開源專案,旨在幫助開發者輕鬆部署和使用私有的大型語言模型,而無需依賴外部的雲端服務或外部 API,這些模型不僅僅只有包括 Meta Llama Model,也提供其他一些 Open LLM Model,像是 Llama 3.3, Phi 3, Mistral, Gemma 2。該專案的核心目的是提供高效、安全、可控的 LLM 推論環境建制。大致上有以下特性:

採用本地機器運行

Ollama 支援在自己的設備上載入模型,無需將數據上傳至雲端,確保數據隱私與安全。
通過優化模型運行效率,即使在資源有限的設備上也能流暢進行推論。

開源與可客製化

Ollama 是一個採用 MIT License 的開源專案,允許開發者根據自己的需求進行修改與擴展。開發者可以將其與其他應用整合,創建自定義的 AI 解決方案。

支援跨平台

提供針對多種操作系統(如 Windows、macOS 和 Linux)的支持,使其能夠適應不同的開發環境。

提供 API 開發與整合

提供簡單易用的 API 和工具,幫助開發者快速集成語言模型功能到他們的應用中。

隱私與安全性

由於所有運算都在本地完成,無需依賴外部伺服器,數據泄露的風險大大降低。

Ollama 的出現滿足了對數據敏感性高或對雲端依賴性有限的應用需求,如企業內部工具、教育應用或個人隱私保護需求。如果需要更深入的技術細節或具體的使用案例,可以參考該專案的官方文檔GitHub 頁面。

Ubuntu Linux 安裝 Ollama

Ubuntu 可透過官方標準 Script 進行安裝,方法如下:

sudo apt update -y
sudo apt install curl -y
sudo curl -fsSL https://ollama.com/install.sh | sh

啟動 Ollama 服務

由於我是在 Container 安裝,進入 Container 以後一樣執行 ollama server 就可以啟動服務,預設 API 服務會開啟在 http://0.0.0.0:11434 屬於大無敵的狀態,所以在 Public 機器上要記得注意防火牆問題,啟動畫面如下:

ollama server
ollama serve

Ollama pull 下載 llama 3.2 3b 模型

上面的服務不能關掉,然後另外執行 ollama pull llama3.2 就會下載模型了,需要 2GB 左右的磁碟空間,不指定版本的話預設是 3b 的模型,可以單用 CPU 執行,如果有 GPU 的話大約需要 4GB 的 VRAM 即可,下載完成後的畫面如下:

ollama pull llama3.2
ollama pull llame 3.2

完成以後也可以透過 ollama list 列出可用的模型,概念與 Docker Image 一樣,我們可以看到不指定版本的 llama3.2:latest 的 Hash 與 llama3.2:3b 是一樣的,如下:

ollama list
ollama list

透過 Web API 呼叫 Ollama LLM 推論

Ollama 可以直接透過 Web Server 指定 Model 進行推論,透過 CURL 呼叫如下:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "stream": false,
  "prompt":"你是一個童話故事專家的小姊姊,請用繁體中文講一個大野狼吃白雪公主的故事"
}'

也可以透過對話的方式進行

curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "stream": false,
  "messages": [
    {"role": "user", "content": "你是一個童話故事專家的小姊姊,請用繁體中文講一個大野狼吃白雪公主的故事"}
  ]
}'

測試回應如下:

但這個童話故事的 LLM 回應實在有點搞笑,我們就不多做討論了。

Ollama 執行 llama 3.2 3b 在 GPU 的耗用情況

實際我們透過 nvidia-smi 觀察 GPU VRAM 的耗用,大約 3.5GB 左右,實際的測試如果沒有 GPU 單靠 CPU 進行推論,速度會慢很多。之前有一篇文章透過 NVIDIA NIM 執行本地端的 Llama 3.2 Micro Service,整體透過 GPU 推論的速度都是可以接受的,有興趣也可以延伸閱讀。

今天先介紹到這裡,之後有時間我們會整合 LangChain 實現 RAG 的解決方案。敬請期待...