Ollama+OpenWebUI本地部署大模型
- 前言
- Ollama使用
- Ollama安裝
- Ollama修改配置
- Ollama 拉取遠程大模型
- Ollama 構建本地大模型
- Ollama 運行本地模型:
- 命令行交互
- Api調用
- Web 端調用
- 總結
前言
Ollama是一個開源項目,用于在本地計算機上運行大型語言模型(LLMs)的工具,它的底層是使用Docker,所以支持類似Docker的構建方式,大模型就是它的鏡像。它支持多種模型格式,包括但不限于GGUF,允許用戶在沒有高性能GPU或不希望使用云服務的情況下,利用個人計算機的資源來執行復雜的語言任務。
Ollama使用
Ollama安裝
根據自己的平臺選擇下載對應的工具,下載地址
右擊使用管理員權限安裝,成功后會彈出下面框。
輸入ollama list 可以查看本地有哪些模型
ollama list
想要查看支持哪些模型,可以點擊官網中央倉庫,支持的模型很多。
Ollama支持的參數:
Usage:ollama [flags]ollama [command]Available Commands:serve Start ollamacreate Create a model from a Modelfileshow Show information for a modelrun Run a modelpull Pull a model from a registrypush Push a model to a registrylist List modelscp Copy a modelrm Remove a modelhelp Help about any commandFlags:-h, --help help for ollama-v, --version Show version information
Ollama修改配置
在拉取Ollama 大模型之前,需要修改Ollma兩個配置,直接在電腦環境變量中添加以下兩個系統變量,一個是方便局域網法訪問,一個是避免C盤被占用過大:
- OLLAMA_HOST:修改為0.0.0.0:11434,以便局域網訪問
- OLLAMA_MODELS:默認為C盤,需要修改為其他磁盤。
退出重登Ollama,重新打開PowelShell窗口,輸入本機的ip,返回running即為修改Ip成功 :
Ollama 拉取遠程大模型
ollama pull以及ollama run都可以拉取大模型,run拉取后會直接運行大模型
ollama run codellama:7b
注意
:可能會遇到以下類似的問題,大部分是網絡環境問題。多試幾次或者切換代理網絡即可。
Error: pull model manifest: Get "https://registry.ollama.ai/v2/library/codellama/manifests/7b": dial tcp: lookup registry.ollama.ai: no such host
Ollama 構建本地大模型
Ollama除了可以使用官方自帶的模型,也可以使用我們已經量化好的gguf模型。在模型所在位置,新建個Modelfile,內容如下:
FROM ./llama-2-7b-chat.Q4_K_M.gguf# set prompt template
TEMPLATE """[INST] <<SYS>>{{ .System }}<</SYS>>{{ .Prompt }} [/INST]
"""# set parameters
PARAMETER stop "[INST]"
PARAMETER stop "[/INST]"
PARAMETER stop "<<SYS>>"
PARAMETER stop "<</SYS>>"# set system message
SYSTEM """
You are a helpful assistant.
"""
使用PowerShell,切換到模型目錄下,執行以下命令,構建模型
ollama create my-model2 -f .\Modelfile
創建成功后:
ollama list
Ollama 下載的模型默認情況下都是經過量化的,如果要使用未經量化的模型,可以在 huggingface(Hugging Face 起初是NLP機器學習服務商,開源了非常出名的自然語言處理應用構建的 transformers 庫。隨著大模型流行,Hugging Face轉向了機器學習的社區服務,類似于代碼服務的github) 下載指定的模型,并使用上述方式進行運行。
Ollama 運行本地模型:
命令行交互
ollama run my-model2
Api調用
Ollama run之后就可以直接使用api接口調用,調用方式POST:
url:
http://127.0.0.1:11434/api/generate
請求體,修改成你執行的model:
{"model": "codellama:7b","prompt": "Why is the sky blue?","format": "json","stream": false
}
返回數據:
{"model": "codellama:7b","created_at": "2024-05-18T08:05:25.3502395Z","response": "{\n\"The sky appears blue because of a phenomenon called Rayleigh scattering, which occurs when sunlight interacts with the Earth's atmosphere. When light travels through a medium, such as air or water, it encounters particles that can scatter it in different directions. In the case of the Earth's atmosphere, the tiny molecules of gases, such as nitrogen and oxygen, scatter shorter wavelengths of light (like blue and violet) more than longer wavelengths (like red and orange). This is known as the Rayleigh scattering effect.\"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n","done": false
}
Web 端調用
Ollama 如果想要在Web端使用,需要借助OpenWebUI 這個工具。OpenWebUI 是一個為大型語言模型(LLM)設計的開源Web界面,它提供了一個用戶友好的交互方式來管理和運行這些模型。OpenWebUI 可以與不同的LLM運行程序集成,包括但不限于Ollama和OpenAI兼容的API
推薦使用docker 啟動OpenWebUI,如果你的Ollama與OpenWebUI部署在同一服務器上,則使用以下命令
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name ollama-web --restart always ghcr.io/open-webui/open-webui:main
如果不是在同一機器,則加個參數OLLAMA_BASE_URL
docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=http://10.11.24.27 -v open-webui:/app/backend/data --name ollama-web --restart always ghcr.io/open-webui/open-webui:main
啟動后輸入
http://localhost:3000/或者http://10.11.24.27:3000/會跳轉到如下頁面
點擊注冊,注冊信息可以隨意寫,注冊后跳轉到該頁面
選擇模型后可以開始對話
OpenWebUI 也支持下載模型,點擊setting 頁面,輸入模型qwen:0.5b
成功后會有提示
切換到qwen:0.5b問答。
整體來說OpenWebUI用起來會比較方便。
總結
Ollama極大簡化了大模型私有部署步驟,使得大模型運行像Docker一樣簡單方便。Ollama 還提供Api的方式,集成Langchain等應用也就方便了很多,結合OpenWebUI可以體驗類似ChatGpt的交互,方便使用。