【内网Tesla T4_16G为例】超详细部署安装ollama、加载uugf格式大模型qwen2、chatglm3及大模型的使用

前言

1. 因为是内网环境,所以文章中的安装过程,不贴实际安装过程的图片。

2. 因为是内网环境,所以所有的安装包都是先外网下载好,拷贝到内网执行的。下面所有安装包都是如此,不再赘述

3. 该服务器除系统盘60G之外,还有一个扩展盘100G,我们可以理解为windows电脑的D盘,我的所有安装包都会装在该盘,如果你只有一个盘,可以新建一个文件夹安装,不建议安装在系统盘的其他文件夹中

安装ollama

刚开始的时候没有太注意安装的方式,直接把ollama安装到了系统盘,这样会导致系统盘会大量被占用,所以下面的安装之前会先卸载原来安装的ollama,然后再安装。

卸载ollama

(1)停止并禁用服务

sudo systemctl stop ollama
sudo systemctl disable ollama

(2)删除服务文件和Ollama二进制文件

sudo rm /etc/systemd/system/ollama.service 
sudo rm $(which ollama)

(3)清理Ollama用户和组

sudo rm -r /usr/share/ollama
sudo userdel ollama
sudo groupdel ollama

开始安装ollama

(1)先下载到本地
我当时下的版本是v0.2.0的ollama-linux-amd64 (这本身就是一个可执行文件,可以直接使用)
,下载地址在这里https://github.com/ollama/ollama/releases,根据自己的处理器下载。将其拷贝到内网的某个目录,拷贝到内网机器就不说了,就是U盘。
(2)创建非系统盘的安装目录和模型存储目录

  • 选择一个合适的非系统盘路径,例如 /data/software/ollama,并在该路径下创建所需目录.
  • # 用于存放ollama-linux-amd64文件
    mkdir -p /data/software/ollama/bin
    # 用于存放执行的模型
    mkdir -p /data/software/ollama/models/ollama
    # 用于存放用户
    mkdir -p /data/software/ollama/ollama_u
    

    (3) 复制 ollama-linux-amd64 文件到安装目录

  • 将下载的文件复制到 bin 目录,并赋予可执行权限
  • # 这里拷贝过去的同时把ollama-linux-amd64名称改为了ollama
    cp /path/to/ollama-linux-amd64 /data/software/ollama/bin/ollama
    # 赋予权限
    chmod +x /data/software/ollama/bin/ollama
    

    (4)创建ollama用户

    sudo useradd -r -s /bin/false -m -d /data/software/ollama/ollama_u ollama
    # 想查询该用户的信息,使用以下两个命令
    id ollama
    getent passwd ollama
    

    (5)配置环境变量 (可选项)

  • 为了从任何命令行都能运行 ollama,可以将 ollama 的路径添加到环境变量 PATH 中。在你的 shell 配置文件中(例如 .bashrc 或 .zshrc),添加以下行:
  • # 打开这个文件
    nano ~/.bashrc
    # 把下面这句话放到文件中最下面一行,Ctrl+x,y,enter(这三步,退出,保存,确定)
    export PATH=/data/software/ollama/bin:$PATH
    

    (6)刷新环境变量(可选项)

  • 使新的环境变量生效
  • source ~/.bashrc 
    

    (7)修改存储位置及Host地址

  • 如果选择自动安装,安装程序会自动创建用户,并创建相应的服务配置文件,并启动服务。如果是手动安装,则需要自己创建配置文件。
  • Ollama模型默认存储在:
  • ~表示root目录
    macOS: ~/.ollama/models
    Linux: ~/.ollama/models
    Windows: C:\Users\<username>\.ollama\models
    
  • 我们使用手动配置,执行以下命令:
  • sudo vim /etc/systemd/system/ollama.service
    
  • 编辑文件内容命令为
  • [Unit]
    Description=Ollama Service
    After=network-online.target
    
    [Service]
    ExecStart=/data/software/ollama/bin/ollama serve
    User=ollama
    Group=ollama
    Restart=always
    RestartSec=3
    #Environment="PATH=/home/ps/anaconda3/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin" ,环境变量也可以在这配置
    Environment="OLLAMA_HOST=0.0.0.0:11434"
    Environment="OLLAMA_MODELS=/data/software/ollama/models/ollama"
    
    [Install]
    WantedBy=default.target
    

    因为需要从其他服务器访问ollama服务,所以需要将host设置成0.0.0.0。
    配置完之后,再加一步授权的动作

    cd /data/software/ollama/models
    # ollama:ollama: 表示用户 ollama 和组 ollama。这表示将目录的所有权赋予用户 ollama和组ollama。
    # ollama/: 指的是刚刚创建的 ollama 目录。
    sudo chown ollama:ollama ollama/ 
    

    (8)创建一个符号链接

    sudo ln -s /data/software/ollama/bin/ollama /usr/bin/ollama
    

    这条命令是在Linux系统中创建一个符号链接(symbolic link),具体解释如下:

  • sudo: 以超级用户(root)权限执行命令。
  • ln: 用于创建链接的命令。
  • -s: 表示创建一个符号链接(symbolic link),而不是硬链接(hard link)。
  • /data/software/ollama/bin/ollama: 这是源文件的路径,即你想要链接到的实际文件。
  • /usr/bin/ollama: 这是符号链接的目标路径,即你想要创建链接的地方。
  • 这条命令的作用是:

  • 在 /usr/bin/ 目录下创建一个名为 ollama 的符号链接,这个链接指向 /data/ollama/bin/ollama 文件。这样,当你在命令行中运行 ollama 命令时,系统会实际上执行 /data/ollama/bin/ollama 文件。
  • 它指向原始文件的位置,而不会占用额外的磁盘空间来存储文件内容。
  • (9)启动ollama

    # 这条命令告诉systemd重新读取所有服务单元的配置文件。
    sudo systemctl daemon-reload
    # 这条命令会在systemd的启动目标中创建一个符号链接,指向ollama服务的配置文件(ollama.service),从而在系统启动时自动启动该服务。
    sudo systemctl enable ollama
    sudo systemctl start ollama
    # 以下两种查看ollama是否安装成功
    ollama
    ollama --version
    

    (10)查看日志

  • 若您需要查看Ollama的运行日志,特别是在遇到问题需要调试时,可以使用以下命令:
  • journalctl -u ollama
    

    (11)下载模型
    因为是内网环境,所以还是要把模型在外网下载好,然后拷贝到内网中,不能连接国外网站的,可以到Hugging Face的国内镜像地址去下载,地址:https://hf-mirror.com/Qwen/Qwen2-7B-Instruct-GGUF/tree/main。
    我下载的是Qwen2-7B-Instruct-GGUF,精度是q8的,相当于int8。根据自己机器情况下载。
    (11)加载模型
    模型还是拷贝到内网去的,目录随便,不过不建议放在系统盘。
    建议一个模型新建一个文件夹,比如通义千问的你就建一个qwen2的文件夹,智谱清言的你就建一个chatglm3的文件夹。把模型拷贝进去。
    以下以qwen大模型为例,其他模型都一样,要保证Modelfile和模型源文件在一个文件夹里。
    其他关于Modelfile的配置可参考:https://github.com/ollama/ollama/blob/main/docs/modelfile.md

    # 进入模型所在目录
    cd /data/models/qwen2
    # 新建一个名字为Modelfile的文件
    touch Modelfile
    # 编辑文件
    vim Modelfile
    # 加入下面这段代码,这个是加载模型的命令,因为他们在同一个文件夹,可以这样写
    FROM ./qwen2-7b-instruct-q8_0.gguf
    # 保存退出之后,执行以下命令,加载模型,create后面是你自定义的模型名称
    ollama create qwen2-7b-q8 -f Modelfile
    # 执行之后,该模型会被加载到我们之前配置的模型地址中(/data/software/ollama/models/ollama)
    

    (12)本地运行模型

  • 执行下面的命令就可以聊天了
  • ollama run qwen2-7b-q8
    
  • 退出 Ctrl+d
    (13)API使用
    举个例子,地址应该替换成,你当前部署ollama的机器
  • from openai import OpenAI
    
    client = OpenAI(
        base_url='http://localhost:11434/v1/',
        # required but ignored
        api_key='qwen2-7b-q8',
    )
    
    chat_completion = client.chat.completions.create(
     
        messages=[#{'role': 'system', 'content': '你是一名牙科医生'},
                   {'role': 'user', 'content': '我最近牙比较疼,应该怎么办'}],
        model='qwen2-7b-q8',
    )
    content = chat_completion.choices[0].message.content
    

    具体使用可参考:
    https://github.com/ollama/ollama/blob/main/docs/api.md

    作者:热爱生活的猴子

    物联沃分享整理
    物联沃-IOTWORD物联网 » 【内网Tesla T4_16G为例】超详细部署安装ollama、加载uugf格式大模型qwen2、chatglm3及大模型的使用

    发表回复