Ollama – 本地端運行的LLM服務

Ollama 介紹

Ollama 是一個開源軟體,讓使用者可以在自己的硬體上運行、創建和分享大型語言模型 (LLM) 服務。它提供了一個易於使用的平台,讓用戶無需複雜的設定即可利用 LLM 的功能。

Ollama 的主要優點包括:

  • 本地端運行: Ollama 允許用戶在本地端運行 LLM,這可以保護敏感數據隱私,並降低對網路連接的依賴性。
  • 易於使用: Ollama 提供了命令行介面 (CLI) 和 Python SDK,使 Ollama 易於設置、使用和自定義。
  • 彈性: Ollama 支持多種 LLM 模型,包括 Llama 2 和 Mistral。它還允許用戶從其他格式導入模型並設置運行參數。
  • 可擴展: Ollama 是一個開源項目,鼓勵用戶貢獻和擴展其功能。

Ollama 可用於各種任務,包括:

  • 文字生成: Ollama 可以生成文字、翻譯語言、編寫不同類型的創意內容,並以信息豐富的方式回答您的問題。
  • 文字處理: Ollama 可以用於各種文字處理任務,例如摘要、問答和情感分析。
  • 代碼生成: Ollama 可以生成代碼、翻譯程式碼並以信息豐富的方式回答您的編碼問題。

Ollama的優點

Ollama與LM Studio相似,都是可以於本地端運行、比較多個大語言模型的工具,並且也都是開源軟體

功能 Ollama LM Studio
原生功能集基本豐富
用戶界面可使用Command line豐富易操作的視窗介面
開源性
支持的操作系統 Windows、macOS、Linux Windows、macOS
擴展性可使用API的方式呼叫較偏向本地端應用程式面
Ollama與LM Studio的比較

Ollama本身其實是完全可以使用command line去執行的服務,因為這樣的特性,Ollama非常容易可以與其他的服務集成,因為它可以變成一個API的服務,讓其他服務去用API的方式來呼叫這個地端模型,也因此,我們會可以在伺服器上面,利用Ollama,使我們的線上服務串接到多個不同的地端LLM模型

以下為一個使用curl來呼叫地端模型的範例

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "messages": [
    { "role": "user", "content": "why is the sky blue?" }
  ]
}'

安裝Ollama

curl -fsSL https://ollama.com/install.sh | sh

使用Ollama

用下面的指令來使用Llama3模型

ollama run llama3

設定大語言模型的腳色及回覆指導

Ollama 庫中的模型可以通過提示進行自定義。例如,要自定義 llama3 模型:

ollama pull llama3

建立 Modelfile :

FROM llama3

# set the temperature to 1 [higher is more creative, lower is more coherent]
PARAMETER temperature 1

# set the system message
SYSTEM """
You are Mario from Super Mario Bros. Answer as Mario, the assistant, only.
"""

接下來,創建並運行模型:

ollama create mario -f ./Modelfile
ollama run mario
>>> hi
Hello! It's your friend Mario.

ollama create 用於從 Modelfile 建立模型。

ollama create mymodel -f ./Modelfile

刪除模型

ollama rm llama3

複製模型

ollama cp llama3 my-model

啟動 Ollama

ollama serve 當您想要在不運行桌面應用程式的情況下啟動 Ollama 時使用。

關閉Ollama

systemctl stop ollama

重新啟動Ollama

sudo systemctl restart ollama

API 應用程式介面

生成完成: 使用提供的模型為給定提示生成回應。這是一個流式處理終結點,因此將有一系列回應。最終回應物件將包括來自請求的統計資訊和其他數據。

產生要求(流式處理)

POST /api/chat

呼叫範例

curl http://localhost:11434/api/chat -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?"
}'

回應範例

{
  "model": "llama3",
  "created_at": "2023-08-04T08:52:19.385406455-07:00",
  "response": "The",
  "done": false
}

要求(無流式處理)

Request 請求

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?"
}'

Response 回應

返回 JSON 物件流:

{
  "model": "llama3",
  "created_at": "2023-08-04T08:52:19.385406455-07:00",
  "response": "The",
  "done": false
}

可使用的模型列表

ModelParametersSizeDownload
Llama 38B4.7GBollama run llama3
Llama 370B40GBollama run llama3:70b
Phi 3 Mini3.8B2.3GBollama run phi3
Phi 3 Medium14B7.9GBollama run phi3:medium
Gemma 29B5.5GBollama run gemma2
Gemma 227B16GBollama run gemma2:27b
Mistral7B4.1GBollama run mistral
Moondream 21.4B829MBollama run moondream
Neural Chat7B4.1GBollama run neural-chat
Starling7B4.1GBollama run starling-lm
Code Llama7B3.8GBollama run codellama
Llama 2 Uncensored7B3.8GBollama run llama2-uncensored
LLaVA7B4.5GBollama run llava
Solar10.7B6.1GBollama run solar

17年資歷女工程師,專精於動畫、影像辨識以及即時串流程式開發。經常組織活動,邀請優秀的女性分享她們的技術專長,並在眾多場合分享自己的技術知識,也活躍於非營利組織,辦理活動來支持特殊兒及其家庭。期待用技術改變世界。