在 AIStudio 镜像中心使用 Dockerfile 自助构建最新版 vLLM 镜像在 AIStudio 镜像中心使用 Dockerfile 自助构建最新版 vLLM 镜像 ,无需访问 DockerHub立即构建
Skip to content
回到全部文章

在开发机中科学安装 Ollama

Ollama 是一个专为本地开发和快速原型设计打造的轻量级大语言模型(LLM)运行工具。它以极简的配置和卓越的易用性著称,旨在帮助开发者在本地环境中轻松运行和管理如 Llama 3 等主流开源模型。虽然在处理大规模高并发的生产级负载时,vLLM 等专用推理引擎表现更为出色,但 Ollama 凭借其对单用户场景的优化和开箱即用的特性,成为了个人开发者进行实验、调试以及构建 AI 应用原型的理想起点。

由于 Ollama 官方安装脚本下载会从 ollama.com 重定向到 GitHub,在国内网络环境下可能无法访问。 本文提供适用于智算云平台的安装方案:

方案适用场景推荐程度
通过 ModelScope 安装无需代理,国内直连,带一键安装脚本⭐⭐⭐ 推荐
通过 GitHub 加速服务安装ModelScope 不可用时的备选方案备选
自动化脚本参考仅供开发者编写自定义部署脚本时参考,普通用户请忽略按需使用

环境信息

  • 开发机使用 Ubuntu 22.04 为基础镜像:cr.infini-ai.com/infini-ai/ubuntu:22.04-20240429

硬件支持

Ollama 仅支持 Nvidia、AMD Radeon、Metal(Apple GPUs)。详见 Ollama Hardware Support

为何 Ollama 官方安装方式会失效

提示

如果您只想快速安装 Ollama,可跳过本节,直接前往 科学安装 Ollama

如果您已在开发机内自行安装可靠的代理服务,可使用 Ollama 官方安装方式。

官方 Linux 平台安装命令:

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

官方的 Linux 平台手动安装指南

shell
# 此处仅贴出部分命令,省略了其他安装步骤
curl -fsSL https://ollama.com/download/ollama-linux-amd64.tgz \
    | sudo tar zx -C /usr

虽然 Ollama 官方安装命令中的下载地址指向 ollama.com,但实际上服务器会返回 307 Temporary Redirect 状态码,将请求重定向至 github.com 的 Release 下载链接。因此,在限制访问 GitHub 的网络环境中,即使看似访问的是官网地址,下载也会失败。

我们可以通过在 CURL 命令中添加 -v 参数来验证这一重定向过程:

shell
curl -L -v https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz

从下面输出中可以发现,对 ollama.com 的请求经过 307 重定向到了 github.com。由于众所周知的原因,可能无法顺利地从 GitHub 下载数据:

shell
(base) yinghaozhao@YinghaodeMacBook-Air ~ % curl -L -v https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 34.120.132.20:443...
* Connected to ollama.com (34.120.132.20) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
} [315 bytes data]
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* (304) (IN), TLS handshake, Unknown (8):
{ [15 bytes data]
* (304) (IN), TLS handshake, Certificate (11):
{ [4052 bytes data]
* (304) (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* (304) (IN), TLS handshake, Finished (20):
{ [36 bytes data]
* (304) (OUT), TLS handshake, Finished (20):
} [36 bytes data]
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=ollama.com
*  start date: Aug 16 08:01:55 2024 GMT
*  expire date: Nov 14 08:56:29 2024 GMT
*  subjectAltName: host "ollama.com" matched cert's "ollama.com"
*  issuer: C=US; O=Google Trust Services; CN=WR3
*  SSL certificate verify ok.
* using HTTP/2
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0* [HTTP/2] [1] OPENED stream for https://ollama.com/download/ollama-linux-amd64.tgz
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: ollama.com]
* [HTTP/2] [1] [:path: /download/ollama-linux-amd64.tgz]
* [HTTP/2] [1] [user-agent: curl/8.4.0]
* [HTTP/2] [1] [accept: */*]
> GET /download/ollama-linux-amd64.tgz HTTP/2
> Host: ollama.com
> User-Agent: curl/8.4.0
> Accept: */*
> 
< HTTP/2 307 
< content-type: text/html; charset=utf-8
< location: https://github.com/ollama/ollama/releases/download/v0.3.12/ollama-linux-amd64.tgz
< referrer-policy: same-origin
< set-cookie: aid=d397e7ab-aca8-4b02-9ea5-d28a532f2e8f; Path=/; HttpOnly
< x-frame-options: DENY
< date: Wed, 09 Oct 2024 06:55:43 GMT
< content-length: 117
< via: 1.1 google
< alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000
< 
* Ignoring the response-body
{ [117 bytes data]
100   117  100   117    0     0    171      0 --:--:-- --:--:-- --:--:--   171
* Connection #0 to host ollama.com left intact
* Issue another request to this URL: 'https://github.com/ollama/ollama/releases/download/v0.3.12/ollama-linux-amd64.tgz'
*   Trying 20.205.243.166:443...

科学安装 Ollama

下面按照推荐顺序介绍三种安装方案。绝大多数用户应该选择「ModelScope 安装」方案,它是最稳定、最快速的方式。

通过 ModelScope 安装(推荐)

ModelScope 提供了 Ollama 的国内镜像,下载后无需网络即可完成安装,是最稳定可靠的安装方式。

提示

ModelScope 提供多个 Ollama 版本(如 v0.14.1v0.13.0 等),可通过 --revision 参数切换。版本可能略滞后于官方最新版,但通常保持较新。更多信息请访问 ModelScope Ollama 仓库

  1. 安装依赖工具:

    shell
    sudo apt update && sudo apt install -y pciutils lshw zstd
  2. 安装 ModelScope CLI 并下载 Ollama 安装包:

    shell
    pip install modelscope -U
    modelscope download --model=modelscope/ollama-linux --local_dir ./ollama-linux --revision v0.14.1
  3. 运行安装脚本:

    shell
    cd ollama-linux
    chmod +x ollama-modelscope-install.sh
    ./ollama-modelscope-install.sh

安装完成后,即可使用 ollama 命令。

通过 GitHub 加速服务安装

当 ModelScope 不可用或无法访问时,可使用此方案。该方法通过第三方 GitHub 加速服务下载 Ollama 安装包。

注意

以下步骤使用了第三方提供的学术加速服务,用于在中国大陆加速访问 GitHub。平台并不提供这些加速服务,也不对其可靠性负责。详见第三方学术加速服务指南

  1. 如果从旧版 Ollama 升级,需先删除旧版:

    shell
    sudo rm -rf /usr/lib/ollama
  2. 使用学术加速服务下载安装包。版本号可从 Ollama Releases 页面获取。

    shell
    # 加速服务一:ghfast.top
    wget -c "https://ghfast.top/https://github.com/ollama/ollama/releases/download/v0.14.1/ollama-linux-amd64.tgz"
    # 加速服务二:gh-proxy.org
    wget -c "https://gh-proxy.org/https://github.com/ollama/ollama/releases/download/v0.14.1/ollama-linux-amd64.tgz"
  3. 安装 Ollama:

    shell
    sudo tar zxf ollama-linux-amd64.tgz -C /usr

自动化安装脚本参考

如果您希望编写自动化安装脚本,以下两个函数可供参考。由于智算云平台已预装 GPU 驱动,官方安装脚本中的大部分 GPU 检测和驱动安装逻辑在本平台上是多余的。

download_with_proxy() - 代理下载函数

由于 Ollama 的下载地址会 307 重定向到 GitHub,我们需要拦截重定向 URL 并通过加速服务下载。

shell
# 代理下载函数
# 参数: $1 = Ollama 官方下载 URL, $2 = 本地保存路径
# 原理: 先获取 307 重定向后的 GitHub URL,再通过加速服务下载
download_with_proxy() {
    local url="$1"
    local output_file="$2"
    
    # 发送 HEAD 请求获取重定向后的 GitHub URL
    local github_url=$(curl -s -I "$url" | grep -i Location | awk '{print $2}' | tr -d '\r')
    
    # 拼接加速服务地址(可替换为其他加速服务)
    local proxy_url="https://gh-proxy.org/$github_url"
    
    # 下载重试逻辑
    local max_retries=3
    local retry_count=0

    while [ $retry_count -lt $max_retries ]; do
        if curl -L --http1.1 "$proxy_url" -o "$output_file"; then
            return 0
        else
            retry_count=$((retry_count + 1))
            echo "Download failed. Retrying in 5 seconds... (Attempt $retry_count of $max_retries)"
            sleep 5
        fi
    done

    echo "Download failed after $max_retries attempts."
    return 1
}

# 使用示例
download_with_proxy "https://ollama.com/download/ollama-linux-amd64.tgz" "/tmp/ollama.tgz"

提示

如果 gh-proxy.org 不可用,可尝试替换为 ghfast.top 或其他学术加速服务

start_ollama() - 容器环境启动函数

智算云平台的开发机运行在容器环境中,systemctl 不可用。因此需要使用 nohup 在后台直接启动 Ollama 服务。

shell
# 在容器环境中启动 Ollama 服务
# 说明: 由于容器内无 systemd,使用 nohup 后台运行
start_ollama() {
    local BINDIR="/usr/local/bin"
    
    if [ -f "$BINDIR/ollama" ]; then
        echo "Starting Ollama..."
        nohup $BINDIR/ollama serve > /var/log/ollama.log 2>&1 &
        PID=$!
        echo "Ollama started with PID $PID"
        echo "Logs available at /var/log/ollama.log"
    else
        echo "Error: Ollama binary not found at $BINDIR/ollama"
        return 1
    fi
}

# 使用示例
start_ollama

提示

您也可以使用 tmuxscreen 在独立会话中运行 ollama serve,便于查看实时日志。

本地推理

执行 ollama run gemma2:2b,ollama 会直接下载模型,并运行本地推理服务。

shell
root@is-c76hhq6otrme4ygb-devmachine-0:~# ollama run gemma2:2b
pulling manifest 
pulling 7462734796d6... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.6 GB                         
pulling e0a42594d802... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  358 B                         
pulling 097a36493f71... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 8.4 KB                         
pulling 2490e7468436... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   65 B                         
pulling e18ad7af7efb... 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  487 B                         
verifying sha256 digest 
writing manifest 
success 
>>> who are you?
I am Gemma, an open-weights AI assistant. I'm a large language model created by the Gemma team at Google DeepMind.

注意

如果 ollama 服务未启动,您可以使用 tmux 工具新开会话,执行 ollama serve 运行 Ollama 推理服务。回到原来的会话,执行 ollama run gemma2:2b 即可。

资源与支持

  • 公网访问开发机内 HTTP 服务:在使用过程中,可能会遇到需要从公网访问开发机内部服务的情况(例如推理 API 服务、带 UI 的服务等),但是暂时开发机仅提供了云平台内网访问地址,无法直接从公网访问。这时,您可以利用开发机提供的 SSH 服务和 SSH 端口转发功能,将开发机内网端口映射到本地电脑,从而实现从公网直接访问开发机内部服务。
找不到想要的答案?
让 AI 助手为您解答