IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    docker运行ollama本地大模型(web访问)

    chancel发表于 2024-03-07 00:00:00
    love 0
    <![CDATA[

    ollama是一款用于本地运行大语言模型的工具,原来运行大语言模型步骤如下:

    1. 安装好nvidia相关的驱动和docker环境
    2. 在huggingface.co拉取合适的仓库
    3. 在docker中按照仓库的相关指引安装依赖和运行语言模型
    4. 在CLI中与大语言模型聊天
    5. 调试Web端接口后在网页端与大语言模型聊天

    相较于这些繁琐且需要具备一定运维基础的操作,ollama提供了一种开箱即用的方法:

    1. 安装好nvidia相关的驱动和docker环境
    2. 运行ollama的docker容器,并指定具体模型名称即可与之在web端畅聊

    ollama将自动帮助你完成安装模型、运行模型、调整参数乃至于搭配对应的web端,一步实现与大语言模型聊天

    下面将实践如何安装使用ollama

    1. 准备

    服务器的配置如下

    • 系统:Ubuntu2204
    • CPU:I7-13700k
    • 内存:128G
    • 显卡:Nvidia A40 48G

    以下操作均基于以上配置进行

    1.1. 安装nvidia驱动

    在Ubuntu2204下安装CUDA,可以参考Nvidia官方文档

    • https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
    • https://developer.nvidia.com/cuda-downloads

    首先检查nvidia硬件情况,确保硬件正常接入系统

    Bash
    lspci | grep -i nvidia
    

    确保gcc已安装

    Bash
    gcc --version
    

    然后访问 developer.nvidia.com ,并根据情况选择操作系统,之后页面会给出安装命令,ubuntu2204安装方法如下:

    Bash
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
    sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
    wget https://developer.download.nvidia.com/compute/cuda/12.1.1/local_installers/cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
    sudo dpkg -i cuda-repo-ubuntu2204-12-1-local_12.1.1-530.30.02-1_amd64.deb
    sudo cp /var/cuda-repo-ubuntu2204-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
    sudo apt-get update
    sudo apt-get -y install cuda
    

    最后验证安装结果

    Bash
    sudo nvidia-smi
    

    如正常输出显卡驱动版本号即没有问题

    1.2. 安装docker

    此次运行需要docker以及docker-compose,在Ubuntu2204上安装如下

    Bash
    sudo apt update
    sudo apt install docker.io docker-compose
    sudo systemctl start docker
    sudo systemctl enable docker
    

    如果所在服务器是国内,在拉取镜像的时候会特别慢,此时可以借助科学代理来加速拉取网站

    Bash
    export http_proxy=http://localhost:8080
    export https_proxy=http://localhost:8080
    
    sudo docker pull hello-world
    

    2. 运行

    ollama官网:ollama.com

    此次运行是包括web端的一起运行,所以使用docker-compose打包一起运行以下容器:

    • ollama/ollama:latest
    • open-webui:latest

    2.1. git仓库

    首先克隆仓库:https://github.com/open-webui/open-webui.git

    克隆后进入仓库目录,并修改docker-compose.yml文件,修改如下:

    YAML
    version: '3.8'
    
    services:
      ollama:
        ...
        # gpu运行需增加runtime和environment
        runtime: nvidia
        environment:
          NVIDIA_VISIBLE_DEVICES: all
        ...
    
      open-webui:
        ...
    
    volumes:
      ...
    

    此处会遇到一个问题,容器运行后访问 http://localhost:18080 ,登录后会白屏3分钟才加载成功,非常影响用户体验

    猜测是网络加载问题,经过排查发现是该容器默认会请求 api.openai.com 以获取模型列表

    由于服务器是在国内,国内的网络访问openai是众所周知的问题,所以访问超时之后,才会显示聊天界面

    如果你的网络访问 openai 的服务也会有问题,请在docker-compose.yml加入如下修改:

    YAML
    version: '3.8'
    
    services:
      ollama:
        ...
    
      open-webui:
        ...
        environment:
          ...
          # 加入自定义可以访问的 openai 地址取代原有的open api地址
          - 'OPENAI_API_BASE_URL=https://[your_agent_domain]/v1'
        ...
    
    volumes:
      ...
    

    2.2. 运行容器

    修改docker-compose.yml文件结束后,尝试启动容器

    Bash
    sudo docker-compose up
    

    稍微等待几分钟,当日志中出现open-webui加载成功后就可以访问,界面应如下:

    在等待期间,我们可以进入ollama容器中,拉取需要的大模型,目前官网支持的大模型列表:

    • gemma
    • llama2
    • mistral
    • mixtral
    • llava
    • ...

    更多模型可以参考官方手册:https://ollama.com/library

    进入容器方法如下

    Bash
    sudo docker exec -it [your_container_id] /bin/bash
    

    拉取指定的大语言模型

    Bash
    ollama pull gemma:7b
    

    拉取后无需重启,只需刷新网页即可看到大语言模型的选项

    2.3. 聊天测试

    第一次需要注册,第一个注册的用户即是管理员,注册后登入主系统就可以开始聊天了,测试如下

    3. 尾语

    ollama很好的降低了大语言模型的部署难度,以较低的时间成本试验各大语言模型,目前的缺点是支持的大语言模型算不上丰富,期待后续更新

    参考文献

    • https://ollama.com/
    • https://hub.docker.com/r/ollama/ollama
    • https://sspai.com/post/85193



沪ICP备19023445号-2号
友情链接