# Ollama Spot Launcher：低成本临时 GPU 实例一键启动本地大模型推理环境

> 通过 AWS EC2 Spot 实例以极低成本启动临时 GPU 环境，自动部署 Ollama 和 Open WebUI，适合需要弹性扩展的 AI 推理场景，支持模型缓存持久化以加速后续启动。

- 板块: [Openclaw Llm](https://www.zingnex.cn/forum/board/openclaw-llm)
- 发布时间: 2026-06-03T01:42:35.000Z
- 最近活动: 2026-06-03T01:54:58.186Z
- 热度: 163.8
- 关键词: AWS, EC2, Spot, Ollama, GPU, 大模型, 推理, Open WebUI, 成本优化, 自动化部署
- 页面链接: https://www.zingnex.cn/forum/thread/ollama-spot-launcher-gpu
- Canonical: https://www.zingnex.cn/forum/thread/ollama-spot-launcher-gpu
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者：** masterq1
- **来源平台：** GitHub
- **原始标题：** ollama-spot-launcher
- **原始链接：** https://github.com/masterq1/ollama-spot-launcher
- **发布时间：** 2026年6月

## 项目概述

Ollama Spot Launcher 是一个实用的 AWS 基础设施工具，旨在帮助用户以最低成本快速启动临时 GPU 实例来运行本地大语言模型。它充分利用 AWS EC2 Spot 实例的价格优势（通常比按需实例便宜 70-90%），结合 Ollama 的模型服务和 Open WebUI 的友好界面，为开发者和研究者提供了一种经济高效的弹性 AI 推理方案。

该项目的核心理念是"按需启动、用完即停"：当你需要 GPU 算力时快速拉起环境，任务完成后释放实例，同时将模型缓存保留在 EBS 卷上，下次启动时可跳过重复下载，实现分钟级就绪。

## 核心组件与工作流程

### 主要文件

| 文件 | 作用 |
|------|------|
| launch_qwen_spot.sh | 本地启动脚本，提交 Spot/按需实例请求，等待模型就绪通知 |
| ec2_userdata.sh | 实例启动脚本，自动安装 Ollama、拉取模型、启动 WebUI |
| launch.env.example | 配置模板，需复制为 launch.env 并填写账户信息 |

### 完整工作流程

1. **启动阶段**：本地脚本渲染用户数据脚本，注入 webhook 密钥和密钥对信息，提交 Spot 或按需实例请求
2. **实例初始化**：EC2 启动后自动执行用户数据脚本，安装 Ollama、拉取指定模型（默认 Qwen3-32B）、启动 Open WebUI
3. **状态回调**：实例通过 webhook 向本地发送状态更新（booting → ollama_ready → model_ready）
4. **本地就绪**：本地脚本监听 webhook，收到 model_ready 后打印 Ollama API 地址和 WebUI 地址
5. **使用阶段**：用户可通过 API 或浏览器访问服务，执行推理任务
6. **自动终止**：实例默认在启动后约 55 分钟自动关闭，避免产生意外费用

## 功能特性详解

### Spot 实例价格优化

项目充分利用 AWS Spot 实例的竞价机制，通过 Spot Placement Score API 评估各可用区的容量和价格，帮助用户选择最优的启动位置。同时支持设置最高出价限制，避免价格飙升时产生意外成本。

### 模型缓存持久化

默认配置下，EBS 卷在实例终止后会被保留。这意味着拉取的大模型文件（通常数 GB 到数十 GB）会被保存下来，下次启动新实例时只需挂载该卷即可立即使用，无需重复下载，显著缩短启动时间。

### 自动可用区选择

通过 `--auto-az` 参数，脚本会自动选择同一 VPC 中 Spot Placement Score 最高的可用区，无需手动配置多可用区的子网信息，简化了跨区部署的复杂度。

### Open WebUI 集成

除 Ollama API 外，实例还自动部署 Open WebUI（Docker 运行），提供浏览器友好的聊天界面。用户可以直接在网页上与模型交互，无需编写代码或使用命令行工具。

### 灵活的实例配置

支持通过环境变量调整：

- 实例类型（默认 g5.xlarge，可升级至 g5.12xlarge 等）
- Spot 最高出价和等待超时
- EBS 卷大小、类型、IOPS、吞吐量
- Webhook 端口和等待超时
- IAM 角色、通知邮箱、SNS 主题

## 部署与使用

### 前置准备

1. 配置 AWS CLI 并确保有创建 EC2 实例的权限
2. 准备 SSH 密钥对、安全组、子网 ID
3. 确认已订阅所需的 AMI

### 初始化配置

```bash
# 复制配置模板
cp launch.env.example launch.env

# 编辑配置，填写账户信息
$EDITOR launch.env
```

配置内容包括密钥对、子网、安全组、AMI、通知邮箱、webhook 地址等。

### 一次性 AWS 资源创建

```bash
# 创建 IAM 角色、实例配置文件、SNS 主题和邮件订阅
./launch_qwen_spot.sh --setup
```

执行后需确认邮件订阅，才能接收启动通知。

### Spot 可用性检查

```bash
# 检查当前 Spot 可用性和价格
./launch_qwen_spot.sh --check-spot
./launch_qwen_spot.sh --check-spot --region us-east-2
```

该命令会按 Spot Placement Score 排序显示各可用区的容量评分和当前价格，帮助决策最佳启动区域。

### 启动实例

```bash
# 默认 Spot 实例，us-east-1
./launch_qwen_spot.sh

# 按需实例
./launch_qwen_spot.sh --ondemand

# 其他区域
./launch_qwen_spot.sh --region us-east-2

# 自动选择最佳可用区
./launch_qwen_spot.sh --auto-az
```

### 使用模型

启动成功后，脚本会输出：

- Ollama API 地址：`http://<public-ip>:11434`
- Open WebUI 地址：`http://<public-ip>:3000`

可直接在浏览器访问 WebUI，或配置 API 客户端：

```bash
export OLLAMA_API_BASE=http://<public-ip>:11434
aider --model ollama/tax-qwen
```

## 成本优化策略

### Spot vs 按需

- **Spot 实例**：价格通常为按需的 10-30%，适合可中断任务
- **按需实例**：价格稳定，适合需要保证可用性的场景

### 自动终止机制

实例默认在启动后约 55 分钟自动关闭，防止用户忘记手动终止而产生持续费用。可根据需要调整此时间。

### EBS 卷保留策略

- 保留模式（默认）：实例终止后保留 EBS 卷，下次启动挂载现有卷，跳过模型下载
- 删除模式：实例终止时删除 EBS 卷，适合单次使用场景

## 安全与注意事项

### WebUI 认证

默认配置中 Open WebUI 的认证被禁用（`WEBUI_AUTH=False`），这对于临时单用户实例是可接受的。但不应长期暴露此类无认证服务。

### 安全组配置

确保正确配置安全组规则，仅开放必要的端口（Ollama 11434、WebUI 3000、Webhook 监听端口），并限制源 IP 范围。

### 敏感信息保护

- `launch.env`、`last_launch.txt`、`.pem` 密钥文件已被 Git 忽略
- 不要将真实配置和密钥提交到版本控制
- Webhook 使用共享密钥进行认证，防止未授权回调

## 适用场景

该工具特别适合以下使用场景：

- **开发测试**：临时需要 GPU 环境验证模型效果
- **批量推理**：处理大量数据，任务完成后立即释放资源
- **成本敏感项目**：预算有限但需要偶尔使用大模型推理
- **弹性扩展**：高峰期临时扩容，平时保持低成本
- **学习实验**：初学者想体验大模型部署，但不想购买硬件或长期租赁云资源

## 总结

Ollama Spot Launcher 通过巧妙结合 AWS Spot 实例的价格优势和自动化部署脚本，为个人开发者和中小团队提供了一种经济高效的 GPU 推理方案。其"按需启动、缓存复用、自动终止"的设计理念，在保证功能完整性的同时最大程度降低了使用成本，是云原生 AI 工作流的一个优秀实践案例。
