welcom ! Handel home

2025年1月22日 星期三

Ollama 詳細介紹與應用

 Ollama 詳細介紹與應用

一、簡介

Ollama 是一個開源的本地大型語言模型(LLM)運行框架,旨在讓開發者和技術愛好者能更輕鬆地部署和使用各種 LLM 模型,而無需依賴雲端服務。它以簡便的操作、本地化的運行和強大的功能,在 AI 開發社群中迅速受到歡迎。正如多個來源所說,「Ollama 可以僅使用一行 command 就完成 LLM 的部署、API Service 的架設達到即開即用的成果,江湖人稱 LLM 界 Docker 的存在。」(Nero Un Chi Hin)。

二、主要特性與優點

  1. 本地運行: Ollama 的核心優勢在於其能在使用者自己的設備上運行模型,無需將數據傳輸至雲端,這大大提升了數據隱私和安全性。「Ollama 支援在自己的設備上載入模型,無需將數據上傳至雲端,確保數據隱私與安全。」(SJ)
  2. 跨平台支援: Ollama 支援 macOS、Linux 和 Windows 等主流作業系統,也提供 Docker 容器部署選項。「Ollama 支援 macOS、Linux 和 Windows 等主流操作系統」(Marconi Jiang)。
  3. 簡單易用: Ollama 的安裝和使用都非常簡單,多數操作可透過 CLI 完成,且提供 API 服務供程式呼叫。「Ollama 的操作非常簡單, 從下載 Ollama 到在 CLI (Command Line Interface) 下執行以下任何一個 ollama run llama3.2 (或其他 model)的指令, 整個步驟可以在 10 分鐘內完成。」(Marconi Jiang)
  4. 多種模型支援: Ollama 支援多種開源 LLM 模型,包括 Llama 3、Mistral、Gemma 等,使用者可以根據需求下載不同大小和功能的模型。「Ollama 是一個開源的大型語言模型平台, 允許使用者在本地端運行各種模型. 以下表格詳細列出 Ollama 可以支援的 models, 如 Llama 3 等。」(Marconi Jiang)。
  5. 客製化模型: 除了使用現有的模型,Ollama 也支援使用者自行建立模型,並可透過 Modelfile 設定模型參數和行為。「除了使用現有的模型,Ollama 也支援使用者自行建立模型」(Simon Liu)。
  6. API 服務: Ollama 提供 RESTful API 介面,讓開發者能輕鬆將 LLM 功能整合到自己的應用程式中。「提供簡單易用的 API 和工具,幫助開發者快速集成語言模型功能到他們的應用中。」(SJ)。

三、安裝與設定

  1. 安裝方式:
  • macOS: 從 GitHub Releases 下載 .dmg 檔案,解壓縮後移動到應用程式資料夾。
  • Linux: 使用 curl -fsSL https://ollama.com/install.sh | sh 命令安裝。
  • Docker: 使用 docker run 命令啟動容器,並映射 11434 端口和模型資料夾。例如使用 GPU 可以加上 --gpus=all 參數。「可以使用以下命令:docker run -d --gpus=all -v $HOME/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama」(Ollama安裝教學 - HackMD)
  1. 基本操作:
  • ollama serve:啟動 Ollama 服務。「啟動 Ollama 服務時,預設 API 服務會開啟在 http://0.0.0.0:11434」(SJ)。
  • ollama pull <model_name>:下載指定模型。「ollama pull llama3,沒有注明 size (:7b) 的話就會下載 default 那個 size」(夢想家)。
  • ollama run <model_name>:執行指定模型,進入對話模式。「ollama run gemma:2b,執行成功後會出現類似 terminal input 的樣式」(Nero Un Chi Hin)
  • ollama list:列出已下載的模型。「ollama list 列出可用的模型,概念與 Docker Image 一樣」(SJ)。
  • ollama rm <model_name>:移除指定模型。「ollama rm llama3 移除模型」(夢想家)。
  • ollama cp <model_name_1> <model_name_2>: 複製模型。「ollama cp llama3 my-model,複製模型」(夢想家)。
  • ollama show <model_name>:顯示模型資訊。「ollama show --modelfile gemma:2b,顯示模型檔案位置」(Nero Un Chi Hin)
  • ollama create <model_name> -f <Modelfile_path>:從 Modelfile 創建自訂模型。「ollama create "MyTranslator" -f ./Modelfile」(Ivon的部落格)。
  1. 模型儲存位置
  • 模型預設儲存在 ~/.ollama/models 目錄下。
  • 可透過環境變數 OLLAMA_MODELS 修改儲存路徑,如 Environment="OLLAMA_MODELS=/media/mydisk/models/" (imuslab)。

四、模型下載與使用

  1. Ollama Library: Ollama 官方網站提供了一個模型庫(https://ollama.com/library),使用者可從此處瀏覽並下載各種模型。
  • 熱門模型:Llama 3: Meta 的最新大型語言模型,有 3B, 8B, 70B 等不同參數大小的版本。「可以下載 llama3.2 模型,不指定版本的話預設是 3b 的模型」(SJ)。
  • Mistral: 由 Mistral AI 開發的開源模型,有 7B 版本。「FROM mistral:7b-instruct」 (Ivon的部落格)
  • Gemma: Google DeepMind 開發的模型,有 2B 和 7B 等版本。「ollama run gemma:2b,執行 Google Deep Mind gemma 模型」(Marconi Jiang)。
  • Phi 3: 微軟開發的小型語言模型,有 3.8B 和 14B 版本。「ollama run phi3,下載微軟出的「小」模型 phi3」(YWC 科技筆記)。
  • Code Llama: 用於程式碼生成的模型,有 7B 和 13B 等版本。「ollama pull codellama:7b,下載用於程式碼生成的模型」(夢想家)。
  1. 模型大小與記憶體需求: 運行模型需要一定的記憶體(RAM),通常 7B 模型需要 8GB RAM,13B 模型需要 16GB RAM,33B 模型需要 32GB RAM。「Note: 記憶體需求大約是如下, 要跑 7B 的模型, 需要 8GB 的 RAM. 16 GB 的 RAM 來跑 13B models, 跟 32 GB 跑 33B models.」(Marconi Jiang)。
  2. GGUF 模型
  • GGUF (GPT-Generated Unified Format) 是一種為大型語言模型設計的量化格式,能有效節省資源。「GGUF(GGML Universal Format)是由 llama.cpp 團隊開發的 GGML 的後續版本,專為大型語言模型設計的量化格式。」(hengshiousheu)
  • 可以從 HuggingFace 下載 GGUF 模型檔案。
  • 需要使用 Modelfile 將 GGUF 檔案導入 Ollama,才能在 Ollama 上運行。
  1. Modelfile 範例:FROM ./TAIDE-LX-7B-Chat.Q8_0.gguf
  2. TEMPLATE """[INST] {{ if .System }}<<SYS>>{{ .System }}<</SYS>>{{ end }}{{ .Prompt }} [/INST] """
  3. SYSTEM """你是一個來自台灣的AI助理,你的名字是 TAIDE,樂於以台灣人的立場幫助使用者,會用繁體中文回答問題"""
  • FROM 指定模型檔案位置。
  • TEMPLATE 定義 Prompt 的格式。
  • SYSTEM 設定模型的角色和行為。

五、API 介面與應用

  1. RESTful API: Ollama 提供 RESTful API,使用者可透過 curl 或其他 HTTP 客戶端與模型互動。
  • 生成文字: 使用 /api/generate 接口生成文字。例如:
  • curl http://localhost:11434/api/generate -d '{ "model": "mistral", "prompt":"Why is the sky blue?" }'
  • 對話: 使用 /api/chat 接口進行對話。例如:
  • curl http://localhost:11434/api/chat -d '{ "model": "mistral", "messages": [ { "role": "user", "content": "why is the sky blue?" } ] }'
  1. Python SDK: Ollama 提供 Python 函式庫,方便開發者在 Python 應用中整合 LLM 功能。
  • 使用 pip install ollama 安裝套件。
  • ollama.chat 可用於一來一往的對話。
  • ollama.generate 可用於單次文字生成。
  1. API 參數:
  • "model":指定要使用的模型名稱。
  • "prompt" 或 "messages":指定輸入的文字或對話訊息。
  • "stream": false:設定為 false 時,回覆將以單一 JSON 物件返回,而非串流。
  1. API 應用:
  • 本地化聊天介面: 結合 Open WebUI 等前端介面,建立本地化的聊天應用程式。「不想讓資料外洩怎麼辦:在本地用 Ollama 搭配 Open WebUI 做一個聊天界面吧!」(海狸大師)
  • RAG (檢索增強生成): 結合 LangChain 等工具,實作 RAG 應用,提升 LLM 回答的準確性和相關性。「之後有時間我們會整合 LangChain 實現 RAG 的解決方案。」(SJ)。「Ollama + RAG 安裝 pip 套件,pip3 install gradio pypdf chromadb langchain_ollama ollama pull nomic-embed-text」(Marconi Jiang)
  • 程式碼輔助: 整合 aider 等工具,輔助程式碼撰寫和註解。「看到 Linux 大神 jserv 讚嘆 aider 協助程式寫作, 以及 comment 的撰寫, 馬上來試。」(Marconi Jiang)

六、進階應用

  1. 自定義模型: 使用者可以根據自己的需求,使用 Hugging Face 的模型,並透過 GGUF 轉換和 Modelfile 設定,建立自定義的 LLM 模型。
  2. Web UI: 使用 Open WebUI 等工具,提供更方便的圖形化介面,讓使用者能輕鬆與 LLM 互動。
  3. 程式碼輔助: 整合 Aider 等程式碼輔助工具,讓 LLM 成為開發者的助手。

七、Ollama 的重要性

Ollama 作為一個開源、易用、本地化的 LLM 解決方案,在 AI 開發領域扮演著越來越重要的角色:

  • 隱私保護: 在本地運行模型,能有效保護使用者數據隱私。
  • 開發便利: 簡化 LLM 的部署和使用流程,降低技術門檻。
  • 開源生態: 促進開源 LLM 技術的發展和應用。
  • 應用廣泛: 可應用於多種場景,包括聊天機器人、RAG 應用、程式碼輔助等。

八、總結

Ollama 是一個強大且靈活的工具,使得本地運行大型語言模型變得更加簡單。它不僅適用於研究人員和開發者,也適合對 AI 有興趣的廣大使用者。透過 Ollama,我們可以探索本地 AI 開發的無限可能,並在保護隱私的前提下,充分利用 AI 的力量。

九、其他重點

  • 效能監控: 透過 API 呼叫可取得模型回覆時間、token 數量等數據,以評估系統效能。「從 Ollama API Documentation可以查到 Ollama API 的使用手冊。」(Marconi Jiang)
  • 多 GPU: Ollama 若偵測到多 GPU,會將模型載入至其中一個 GPU 中,以減少 PCI 傳輸。
  • 模型快取: 模型資料是 memory mapped 的,並會顯示在 file cache 中。
  • 模型移除: 模型快取時間(UNTIL) 到達後會從記憶體中卸載,可透過 ollama ps 觀察。可透過設定 keep_alive=-1 讓模型常駐記憶體。「 To preload a model and leave it in memory, curl $URL -d '{"model": "llama3", "keep_alive": -1}'」(夢想家)

十、參考資料

  • 各來源文章中引用的連結與相關資訊。

這份簡報文件涵蓋了您提供的所有來源中的主要主題、概念和重要事實,希望能幫助您更好地理解 Ollama。

沒有留言: