在开发机中科学安装 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 平台安装命令:
curl -fsSL https://ollama.com/install.sh | sh官方的 Linux 平台手动安装指南。
# 此处仅贴出部分命令,省略了其他安装步骤
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 参数来验证这一重定向过程:
curl -L -v https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz从下面输出中可以发现,对 ollama.com 的请求经过 307 重定向到了 github.com。由于众所周知的原因,可能无法顺利地从 GitHub 下载数据:
(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.1、v0.13.0 等),可通过 --revision 参数切换。版本可能略滞后于官方最新版,但通常保持较新。更多信息请访问 ModelScope Ollama 仓库。
安装依赖工具:
shellsudo apt update && sudo apt install -y pciutils lshw zstd安装 ModelScope CLI 并下载 Ollama 安装包:
shellpip install modelscope -U modelscope download --model=modelscope/ollama-linux --local_dir ./ollama-linux --revision v0.14.1运行安装脚本:
shellcd ollama-linux chmod +x ollama-modelscope-install.sh ./ollama-modelscope-install.sh
安装完成后,即可使用 ollama 命令。
通过 GitHub 加速服务安装
当 ModelScope 不可用或无法访问时,可使用此方案。该方法通过第三方 GitHub 加速服务下载 Ollama 安装包。
注意
以下步骤使用了第三方提供的学术加速服务,用于在中国大陆加速访问 GitHub。平台并不提供这些加速服务,也不对其可靠性负责。详见第三方学术加速服务指南。
如果从旧版 Ollama 升级,需先删除旧版:
shellsudo rm -rf /usr/lib/ollama使用学术加速服务下载安装包。版本号可从 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"安装 Ollama:
shellsudo tar zxf ollama-linux-amd64.tgz -C /usr
自动化安装脚本参考
如果您希望编写自动化安装脚本,以下两个函数可供参考。由于智算云平台已预装 GPU 驱动,官方安装脚本中的大部分 GPU 检测和驱动安装逻辑在本平台上是多余的。
download_with_proxy() - 代理下载函数
由于 Ollama 的下载地址会 307 重定向到 GitHub,我们需要拦截重定向 URL 并通过加速服务下载。
# 代理下载函数
# 参数: $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 服务。
# 在容器环境中启动 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提示
您也可以使用 tmux 或 screen 在独立会话中运行 ollama serve,便于查看实时日志。
本地推理
执行 ollama run gemma2:2b,ollama 会直接下载模型,并运行本地推理服务。
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 端口转发功能,将开发机内网端口映射到本地电脑,从而实现从公网直接访问开发机内部服务。