掘金 后端 ( ) • 2024-04-28 13:26

Ollama是一个简明易用的本地大模型运行框架,可以一键启动启动并运行Llama 3、Mistral、Gemma和其他大型语言模型。

安装

MacOS,Windows用户直接在官网下载页下载安装包即可。Linux系统运行如下命令安装

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

使用

Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.
  • server 启动ollama服务
  • create 通过Modelfile文件创建一个模型
  • show 显示模型信息
  • run 本地启动模型,就可以在命令行进行模型推理了
  • pull 拉去模型
  • push 推送模型 类似docker镜像
  • list 列出本地已有的模型
  • cp 复制一个模型
  • rm 删除本地模型

运行:

ollama run llama3

如果模型不存在,会自动下载模型。

官方模型镜像库 https://ollama.com/library ,可以在这里找到你想要的模型

然后直接运行ollama run 模型名称 即可

以下是一些可以下载的示例模型:

Model Parameters Size Download Llama 3 8B 4.7GB ollama run llama3 Llama 3 70B 40GB ollama run llama3:70b Phi-3 3,8B 2.3GB ollama run phi3 Mistral 7B 4.1GB ollama run mistral Neural Chat 7B 4.1GB ollama run neural-chat Starling 7B 4.1GB ollama run starling-lm Code Llama 7B 3.8GB ollama run codellama Llama 2 Uncensored 7B 3.8GB ollama run llama2-uncensored LLaVA 7B 4.5GB ollama run llava Gemma 2B 1.4GB ollama run gemma:2b Gemma 7B 4.8GB ollama run gemma:7b Solar 10.7B 6.1GB ollama run solar

Note: 你应该至少有8gb的内存来运行7B型号,16gb的内存来运行13B型号,32gb的内存来运行33B型号。

用户界面

目前已经非常多开源界面支持ollama接口了,具体可以查看https://github.com/ollama/ollama?tab=readme-ov-file#community-integrations

我们选用https://openwebui.com/, 使用docker一键运行

docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

然后浏览器打开http://localhost:3000/,注册账号即可开启跟ChatGPT一样的界面进行聊天了

image.png

REST API

文本生成

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

对话模型

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

更多可以查看api文档

Ollama服务暴露给网络

设置环境变量OLLAMA_HOST=0.0.0.0,然后重启服务即可

在Linux环境下,Ollama默认作为systemd服务运行,因此需要修改ollama.service文件设置环境变量:

vim /etc/systemd/system/ollama.service

image.png

重载systemd并重启Ollama:

systemctl daemon-reload
systemctl restart ollama

自定义系统提示

创建一个Modelfile文件

from llama3  
  
PARAMETER temperature 1  
PARAMETER num_ctx 6000  
PARAMETER top_k 50  
PARAMETER top_p 0.95  
SYSTEM """  
尽你的最大可能和能力回答用户的问题。不要重复回答问题。语言要通顺流畅。不要出现刚说一句话,过一会又重复一遍的愚蠢行为。  
  
RULES:  
  
- Be precise, do not reply emoji.  
- Always response in Simplified Chinese, not English. or Grandma will be  very angry.  
"""

然后执行命令:ollama create llama3-chinese -f Modelfile

然后重新运行模型 ollama run llama3-chinese 即可