Ollama 环境安装:Ollama 在 Linux 系统下的安装及设置

Ollama 现已在 Linux 上提供了正式安装版本,让您能够体验拉取、运行和创建大型语言模型。Linux 上的 Ollama 包括内置 GPU 加速、完整模型库访问权限以及包括 OpenAI 兼容性的 Ollama API 。

Linux 显卡驱动

Nvidia 支持

  1. 在 NVIDIA 驱动官网寻找符合对应平台和 GPU 型号的显卡驱动,Linux 64 下载后应该是 .run 后缀的文件。将该文件上传到服务器上。

  2. 将上传的 .run 文件赋予可执行权限。

注意更改文件名

sudo chmod a+x NVIDIA-Linux-x86_64-XXXXXX.run

  1. 安装驱动。

注意更改文件名

sudo ./NVIDIA-Linux-x86_64-XXXXXX.run -no-x-check -no-nouveau-check -no-opengl-files

上述命令的含义: -no-x-check 为安装驱动时关闭 X 服务。 -no-nouveau-check 为安装驱动时禁用 Nouveau。 -no-opengl-files 为只安装驱动文件,不安装 OpenGL 文件。
  1. 安装过程中会出现多个询问的交互界面。

WARNING: nvidia-installer was forced to guess the X library path ‘/usr/lib’ and X module path ‘/usr/lib/xorg/modules’; these paths were not queryable from the system. If X fails to find the NVIDIA X driver module, please install the pkg-config utility and the X.Org SDK/development package for your distribution and reinstall the driver.

选择 OK


The distribution-provided pre-install script failed! Are you sure you want to continue?

选择 YES


Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?

选择 NO


问题忘记复制了。
选项是:install without signing


Install NVIDIA’s 32-bit compatibility libraries?

选择 NO


Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up.

选择 YES

Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 535.113.01) is now complete.

选择 OK

  1. 重启服务器。

sudo reboot

  1. 检查驱动是否安装成功。

nvidia-smi

Linux 核心升级问题

在上述驱动安装完成一段时间后,某天发现使用 nvidia-smi 出现报错:

NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.

经查询后得知,当 Linux 核心升级后,原本的 Nvidia 驱动将不可用,需要按照上述流程去官网下载并重装一次最新驱动。

该问题仅在用 .run 文件手动安装 Nvidia 驱动时才会出现。如果是用包管理器安装的驱动则不会,但我实在不想折腾这个了。

网上找到的一种解决办法是安装 Dynamic Kernel Module Support (DKMS) 框架来自动重新编译和安装内核模块。但由于上面光是安装 Nvidia 驱动就费了太多时间和精力,我没有决心去花太大力气解决此事。因此采用一个粗暴的办法,即禁用 Linux 自动升级核心。具体步骤如下:

可以先查询一下当前的内核版本:

uname -r

  1. 关闭定期任务。首先打开 10periodic 文件:

sudo vim /etc/apt/apt.conf.d/10periodic

将文件内容后面的数字全部改成 0:

APT::Periodic::Update-Package-Lists “0”;
APT::Periodic::Download-Upgradeable-Packages “0”;
APT::Periodic::AutocleanInterval “0”;

再打开 20auto-upgrades 文件:

sudo vim /etc/apt/apt.conf.d/20auto-upgrades

执行相同操作:

APT::Periodic::Update-Package-Lists “0”;
APT::Periodic::Unattended-Upgrade “0”;

  1. 完成上述操作后重启服务器。

AMD Radeon GPU 支持

虽然 AMD 已将 amdgpu 驱动程序贡献给官方 Linux 内核源代码,但版本较旧,可能不支持所有 ROCm 功能。我们建议您从 https://www.amd.com/en/support/linux-drivers 安装最新的驱动程序,以便为您的 Radeon GPU 提供最佳支持。

安装 CUDA 驱动程序(可选 - 适用于 Nvidia GPU)

访问 Nvidia 官方 CUDA 驱动下载界面,根据系统寻找合适的CUDA驱动并安装。

下载地址:https://developer.nvidia.com/cuda-downloads

以我的 Ubuntu 22.04 x86_64 系统为例

基础安装程序

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.6.0/local_installers/cuda-repo-ubuntu2204-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-6-local_12.6.0-560.28.03-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-6-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-6

驱动程序安装程序

以下两种情况,选择一个选项

  • 要安装开放内核模块风格:
sudo apt-get install -y nvidia-open
  • 要安装旧版内核模块版本:
sudo apt-get install -y cuda-drivers

驱动程序检测

通过运行以下命令来验证驱动程序是否已安装,该命令将打印有关 GPU 的详细信息:

nvidia-smi

安装 ROCm(可选 - 适用于 Radeon GPU)

访问 AMD 官方 ROCm 驱动下载界面,根据系统寻找合适的 ROCm 驱动并安装。

下载地址:https://rocm.docs.amd.com/projects/install-on-linux/en/latest/install/quick-start.html

以我的 Ubuntu 22.04 x86_64 系统为例

在开始之前,您应该确认内核版本符合ROCm 系统要求。

驱动程序安装程序

sudo apt update
sudo apt install "linux-headers-$(uname -r)" "linux-modules-extra-$(uname -r)"
sudo usermod -a -G render,video $LOGNAME # Add the current user to the render and video groups
wget https://repo.radeon.com/amdgpu-install/6.2/ubuntu/jammy/amdgpu-install_6.2.60200-1_all.deb
sudo apt install ./amdgpu-install_6.2.60200-1_all.deb
sudo apt update
sudo apt install amdgpu-dkms rocm

再次,确认安装好了 ROCm v6。

下载安装

自动安装

要开始使用 Linux 中的 Ollama:

  • 在 Linux 上,执行 Ollama 自动安装脚本
    curl -fsSL https://ollama.com/install.sh | sh
  • 等待安装脚本执行完成
  • 安装后,打开您喜欢的终端并运行ollama run llama3以运行模型

手动安装

下载 Ollama 二进制文件

Ollama 以独立二进制文件的形式分发。将其下载到 PATH 中的目录中:

sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
## 如果网络较慢,建议手动下载后上传到服务器
sudo chmod +x /usr/bin/ollama

添加 Ollama 作为启动服务(推荐)

为 Ollama 创建用户:

sudo useradd -r -s /bin/false -m -d /usr/share/ollama ollama

创建服务文件:sudo vi /etc/systemd/system/ollama.service

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
Environment="OLLAMA_ORIGINS=*"
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3

[Install]
WantedBy=default.target

按Esc,按:wq

Environment=”OLLAMA_ORIGINS=*” 这一行表示使用systemctl启动服务并希望实现跨域请求时,需要添加的环境变量。确保添加这个环境变量,否则之后的沉浸式翻译插件会出现403错误。

然后启动服务:

sudo systemctl daemon-reload
sudo systemctl enable ollama
sudo systemctl start ollama

个人建议(可选):关闭 Ollama 服务开机自启动。Ollama 开机自启动一直挂着会占用380M左右的显存。

# 关闭Ollama 服务开机自启动
sudo systemctl disable ollama

每次想启动时候,手动运行

# 启动Ollama服务
sudo systemctl start ollama

更新安装

通过再次运行安装脚本来更新 ollama:

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

或者通过下载 ollama 二进制文件:

sudo curl -L https://ollama.com/download/ollama-linux-amd64 -o /usr/bin/ollama
sudo chmod +x /usr/bin/ollama

安装特定版本

通过在安装脚本中,使用OLLAMA_VERSION环境变量来安装特定版本的 Ollama,包括预发布版本。您可以在发布页面中找到版本号。

例如:

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

查看日志

要查看作为启动服务运行的 Ollama 的日志,请运行:

journalctl -e -u ollama

卸载

删除 ollama 服务

sudo systemctl stop ollama
sudo systemctl disable ollama
sudo rm /etc/systemd/system/ollama.service

从 bin 目录中删除 ollama 二进制文件(/usr/local/bin、/usr/bin或/bin)

sudo rm $(which ollama)

删除下载的模型和 Ollama 服务用户和组

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

环境设置

在 Ollama 中,环境变量赋予了我们调整和定制这个强大工具的能力。就像一位指挥家调整乐队的每一件乐器,通过精心设置这些环境变量,我们可以让Ollama完美地适应我们的需求,奏出最和谐的数据交响曲。

可以设置的环境变量有哪些?

  • OLLAMA_HOST:设置网络监听端口。当我们设置OLLAMA_HOST0.0.0.0时,就相当于开放端口,可以让人意外部网络访问。
  • OLLAMA_MODELS:设置模型的存储路径。当我们设置OLLAMA_MODELS=E:\Ollama\models,就相当于给模型们在E盘建了一个仓库,让它们远离C盘。
  • OLLAMA_KEEP_ALIVE: 它决定了我们的模型们可以在内存里的存活时间。设置 OLLAMA_KEEP_ALIVE=24h,就好比给模型们装上了一块超大容量电池,让它们可以连续工作24小时,时刻待命。
  • OLLAMA_PORT:用来修改ollama的默认端口,默认是11434,可以在这里改为你想要的端口。
  • OLLAMA_NUM_PARALLEL:限制了Ollama可以同时加载的模型数量。
  • OLLAMA_MAX_LOADED_MODELS:可以确保系统资源得到合理分配。

环境变量的设置看似简单,但却是驾驭 Ollama 的关键。它们让 Ollama 从一个普通的工具,变成了我们可以随心调教的得力助手。

在 Linux 上设置环境变量

如果 Ollama 作为 systemd 服务运行,则应修改 /etc/systemd/system/ollama.service 来设置环境变量。

这里我们以OLLAMA_HOSTOLLAMA_MODELS两个环境变量为例,开放外部端口访问自定义模型存储路径

  • 1、编辑 Ollama 服务定义文件。
    sudo vi /etc/systemd/system/ollama.service
  • 2、对于每个环境变量,只需在[Service]下面添加一行Environment配置。设置OLLAMA_HOSTOLLAMA_MODELS两个环境变量,可参考如下配置
    [Service]
    Environment="OLLAMA_ORIGINS=*"
    Environment="OLLAMA_HOST=0.0.0.0:11434"
    Environment="OLLAMA_MODELS=/www/ollama/models"
  • 3、按Esc,按:wq ,重新更新服务配置
    # 刷新配置
    sudo systemctl daemon-reload
    # 重启ollama
    sudo systemctl restart ollama
    # 查看一下重启后的ollama运行状态
    sudo systemctl status ollama
验证 Ollama 环境变量是否有效
  • 1、拉取一个本地没有的模型,例:ollama pull qwen2:0.5b,等待拉取成功。
  • 2、进入 /www/ollama/models 目录,查看刚拉取的新模型已经存在
  • 3、使用 ollama run qwen2:0.5b 命令运行模型并进行对话
  • 4、Ollama 默认使用 11434 端口,如果你的主机开启了防火墙,则需要放开端口
    • iptablessudo iptables -A INPUT -p tcp --dport 11434 -j ACCEPT
    • firewall-cmd : sudo firewall-cmd --permanent --add-port=11434/tcp
    • ufwsudo ufw allow 11434/tcp
  • 5、 通过http在局域网中访问了:http://192.168.1.XX:11434 ,可以看到:Ollama is running

参考资料:

https://zhuanlan.zhihu.com/p/680288880
https://github.com/ollama/ollama/blob/main/docs/README.md
https://github.com/ollama/ollama/blob/main/docs/linux.md
https://github.com/ollama/ollama/tree/main
https://ollama.com/library/qwen:14b

作者:Jeebiz  创建时间:2024-06-11 23:38
最后编辑:Jeebiz  更新时间:2024-11-21 01:00