ollama 本地安装部署

  • 良好的网络
  • 确认好 docker GPU支持
    • 本文使用 windows 部署,linux 请自行解决显卡驱动问题
    • 解决不了显卡驱动,请不要使用
  • 安装好 docker 不同系统自行解决
  • 下载 ollama
    • windows 的话 建议 C 盘大亿点点,后面会用到

创建一个目录 ollama , 用来保存下载模型,以及运行日志等文件

1
mkdir ollama

创建 ollama 容器 docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# copy right by sinlov at https://github.com/sinlov
# Licenses http://www.apache.org/licenses/LICENSE-2.0
# more info see https://docs.docker.com/compose/compose-file/ or https://docker.github.io/compose/compose-file/
networks:
  default:
    # Use a custom driver
    #driver: custom-driver-1
services:
  ollama-runner:
    container_name: "ollama-runner"
    image: ollama/ollama:0.1.33-rc5 # https://hub.docker.com/r/ollama/ollama/tags
    ports:
      - "11434:11434"
    volumes:
      - "./ollama:/root/.ollama"
    # https://docs.docker.com/compose/gpu-support/
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: 1
              capabilities: [gpu]
1
docker exec -it ollama-runner bash

注意:这个模式下,ollama 和 外部编排容器运行的是冲突的, 建议 ollama 自己管理自己的容器,不要外部掺和编排,所以请移除上面的容器安装运行方式,就是这么设定的,阿门

Windows上的Ollama将文件存储在几个不同的位置。你可以查看它们

使用 <cmd>+R 键入内容 :

  • explorer %LOCALAPPDATA%\Ollama 包含日志和下载的更新
    • app.log 包含来自GUI应用程序的日志
    • server.log 包含服务日志
    • upgrade.log 包含用于升级的日志输出
  • explorer %LOCALAPPDATA%\Programs\Ollama 包含二进制文件 (The installer adds this to your user PATH)
  • explorer %HOMEPATH%\.ollama 包含模型和配置
  • explorer %TEMP% 包含一个或多个 ollama* 目录中包含临时可执行文件

需要不小的 C 盘空间就是

windows 建议配置 环境变量

  • OLLAMA_KEEP_ALIVE 改为 30m 或者 60m 这样不用频繁载入模型

  • OLLAMA_MODELS 改为一个 大号的 SSD 固态盘

  • OLLAMA_ORIGINS 改为 http://127.0.0.1:*,http://localhost:*,http://172.17.0.1:*,http://host.docker.internal:*,http://192.168.50.0:* 这样可以远程访问

  • OLLAMA_HOST 可选,可以修改为 0.0.0.0:11434

这里在 windows powershell 环境下部署的, 因为好显卡在 windows,换其他环境请自己转换脚本

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$env:OLLAMA_HOST="0.0.0.0:11433" ;
$env:OLLAMA_MODELS="$((pwd).Path)\ollama" ;
$env:OLLAMA_KEEP_ALIVE="30m"
# 这里留空即可
$env:OLLAMA_ORIGINS=""
## 如果需要远程访问,需要配置跨域
# https://github.com/ollama/ollama/issues/300 有详细讨论
$env:OLLAMA_ORIGINS="http://127.0.0.1:*,http://localhost:*,http://172.17.0.1:*,http://host.docker.internal:*,http://192.168.50.0:*"

# ollama 启动!!!
ollama serve

这里说明一下,不同的 环境变量可以部署多套 ollama

  • OLLAMA 支持的环境变量和用途见 源码
  • OLLAMA_KEEP_ALIVE 修改这个时间,可以防止重复挂载模型,缺点是更占用资源
  • OLLAMA_HOST 定义当前运行 服务 host
  • OLLAMA_MODELS 模型文件存储位置,这个选项可以告别 windows 爆掉 C 盘的问题
  • OLLAMA_ORIGINS 跨域配置,这个需要点跨域知识,实在不会问生成式AI,大不了错几次

注意: ollama 是一组后台服务, 使用 大模型交互前端 需要另外的部署,这里演示的是 open-webui

  • docker-compose
    • environment
      • WEBUI_SECRET_KEY webui secret key 可以通过 openssl rand -hex 16 生成
      • OLLAMA_BASE_URL 这个根据实际情况配置
      • HF_ENDPOINT 可以加速模型下载
    • volumes
      • ./open-webui/data:/app/backend/data 这个为 当前 docker-compose.yml 文件相对目录存储数据
    • ports
      • 11435:8080 这个是 webUI 对外服务的 端口 设置 映射到 11435,如果端口占用可以跟换
      • network_mode: host 如果开启,就是 8080,并且修改 OLLAMA_BASE_URL
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
services:
  ollama-local-open-ui:
    container_name: "ollama-local-open-ui"
    image: ghcr.io/open-webui/open-webui:v0.3.21-ollama
    # image: ghcr.io/open-webui/open-webui:v0.3.21-cuda
    # image: ghcr.io/open-webui/open-webui:v0.3.21
    pull_policy: if_not_present
    environment: # https://docs.openwebui.com/getting-started/env-configuration/
      OLLAMA_BASE_URL: 'http://host.docker.internal:11434' # 这里需要注意,这个地址连不上,使用完整 IP address 即可
      HF_ENDPOINT: 'https://hf-mirror.com' # 从 https://hf-mirror.com 镜像,而不是https://huggfacing.co 官网下载所需的模型
      WEBUI_SECRET_KEY: 'e2ac9c8f3462a9831b238601b8546807' # webui secret key
      # PORT: '11435'
    # network_mode: host
    volumes:
      - "./open-webui/data:/app/backend/data"
    restart: unless-stopped # always on-failure:3 or unless-stopped default "no"
    logging:
      driver: json-file
      options:
        max-size: 2m

第一次需要注册账号

  • 设置,进入设置 Settings

    • 修改语言 General -> Language 修改为你需要的语言
  • 设置,进入 设置 -> 管理员设置

    • 外部链接 确认本地 ollama 链接 http://host.docker.internal:11434 可以正常使用
    • 也可以添加远程 ollama 链接

https://cdn.jsdelivr.net/gh/tailwoodencat/CDN@main/uPic/2024/09/17/9y9Idp-IGa5Ua.png

输入需要拉的模型

https://cdn.jsdelivr.net/gh/tailwoodencat/CDN@main/uPic/2024/09/17/TOdc0X-KAdbKD.png

ollame 本身是一个 管理大模型的工具

  • list列出已经安装的模型
  • pull 拉取模型
  • run run 除了拉取模型,还同时将模型对应的交互式控制台运行了起来,不建议这么做,限定死了启动方式
  • rm 移除本地下载的模型
  • ps查看当前硬件资源占用
  • serve 启动 大模型后台服务

额外说明

查找模型的链接

  • 模型格式 <name>:<num><arg>
    • name 为模型发布名称,后面 <num><arg> 多少 B 表示模型有 多少 十亿 参数
    • 参数规模规格为 B 十亿 M 百万 K 千
    • 参数越多,所需 显存 越大,30b 左右差不多需要 20G 专有显存推理
    • 参数多不代表准确,不过太小参数的 LLM 容易出现幻觉(瞎扯给结果)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
## 多模态模型,可以混和图文处理
ollama pull llava:13b
ollama pull llava:34b
ollama pull bakllava:7b

## 文本大模型,只针对文本处理
ollama pull qwen:14b
ollama pull qwen:32b
ollama pull qwen2:7b
ollama pull codeqwen:7b
ollama pull llama3:8b
ollama pull llama3.1:8b
# 70b 4090 24G 显存会不够必须集群跑
ollama pull llama3:70b

## 编码大模型
ollama pull codeqwen:7b
ollama pull codellama:7b
ollama pull codellama:13b
ollama pull codellama:34b
ollama pull starcoder2:3b
ollama pull starcoder2:7b
ollama pull starcoder2:15b

查找 模型 配置例子

1
2
3
4
# 先需要拉取
ollama pull llama3:8b

ollama show --modelfile llama3:8b

查询扩展 https://github.com/ollama/ollama?tab=readme-ov-file#extensions–plugins,其中推荐试用

  • Continue 代码助手,支持 vscode 和 JetBrains