googlecolab一键部署vLLM+ 无审查版gemma4 31B 大模型,高性能,秒回复
极速部署 Gemma 4 31B 大模型:vLLM + Cloudflare 隧道 + Cherry Studio 完整指南
无需昂贵 GPU,Colab 免费额度就能跑!本文带你一步步搭建一个私有的、无审查的 31B 大模型 API。
背景
最近 Google 开源的 Gemma 4 系列模型表现亮眼,而社区很快放出了更强大的 Gemma 4 31B(Hugging Face 上有社区微调版本),并且通过 GGUF 量化,我们可以用较低的显存运行这个庞大的模型。
本文将展示如何利用 vLLM(高性能推理引擎)在 Google Colab 上加载 TrevorJS/gemma-4-31B-it-uncensored-GGUF 的 Q8_0 量化版本,并通过 Cloudflare Tunnel 将本地 API 暴露到公网,最后接入 Cherry Studio 等客户端使用。
整个过程全自动,一键运行,适合想要快速体验大模型能力的朋友。
准备工作
- Google Colab 账号(最好有 Pro/Pro+ 以获得更好的 GPU,如 A100/L4)
- 一点耐心:根据你选择的脚本,首次下载量不同:
Windows 脚本(GGUF 量化版):下载约 32GB,耗时约半天到一天(视网络而定)。
Linux / macOS 脚本(原生多模态版):下载约 112GB,建议使用高速网络或 Colab Pro+(A100 环境),耗时可能超过一天。
win一键部署脚本
在 Colab 中新建一个 Notebook,选择运行时类型为 GPU(高内存),然后粘贴以下代码并执行:
# ==========================================
# 【vLLM 极速引擎】明牌前台启动版
# 模型:Gemma-4-31B-it-uncensored-GGUF (Q8_0)
# ==========================================
import os
import subprocess
import time
import re
print("📦 1. 正在安装基础环境 (首次运行约需 1-2 分钟)...")
!pip install -q vllm cloudflared
# 替换成你自己的 HF Token(如模型需要授权)
os.environ["HF_TOKEN"] = "hf_你的token"
MODEL_NAME = "TrevorJS/gemma-4-31B-it-uncensored-GGUF"
PORT = "8000"
print("\n🔗 2. 正在后台启动 Cloudflare 纯净隧道...")
!wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x cloudflared-linux-amd64
cf_process = subprocess.Popen(
["./cloudflared-linux-amd64", "tunnel", "--url", f"http://127.0.0.1:{PORT}"],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT
)
api_url = None
for _ in range(30):
line = cf_process.stdout.readline().decode('utf-8')
match = re.search(r'https://[a-zA-Z0-9-]+\.trycloudflare\.com', line)
if match:
api_url = match.group(0)
break
if api_url:
print(f"\n" + "🚀"*20)
print(f"🔥 【你的 vLLM API 地址已生成】: {api_url}/v1")
print(f"👉 请先把这个地址复制填入 Cherry Studio,但【先不要发消息】!")
print(f"👉 必须死死盯着最下方的日志,等待出现 'Uvicorn running' 才算彻底就绪!")
print("🚀"*20 + "\n")
else:
print("❌ 隧道启动失败。")
print("⏳ 3. 正在前台启动 vLLM 引擎,请观看下方进度条...\n")
!python -m vllm.entrypoints.openai.api_server \
--model {MODEL_NAME} \
--quantization gguf \
--max-model-len 16000 \
--gpu-memory-utilization 0.9 \
--port {PORT}
⚠️ 注意:上述代码中的
HF_TOKEN请替换为你自己的 token。如果你没有,可以去 huggingface.co/settings/tokens 免费创建一个。
linux和mac一键部署脚本
# =============================================================================
# 【vLLM 极速引擎】Gemma-4-E4B-it-uncensored 全自动版
# 模型: TrevorJS/gemma-4-E4B-it-uncensored (原生多模态 E4B)
# 功能: 文本 + 图像 + 视频 + 音频输入,OpenAI 兼容 API + Cloudflare Tunnel
# 作者: AI Assistant
# 版本: 4.0 (生产级全自动)
# =============================================================================
import os
import subprocess
import re
import time
import sys
import signal
import threading
from typing import Optional
# ========== 默认参数定制区 ==========
HF_TOKEN = "hf_你的token" # 替换为你的 Hugging Face Token
MODEL_NAME = "TrevorJS/gemma-4-E4B-it-uncensored"
PORT = "8000" # 服务端口
MAX_MODEL_LEN = 8192 # 最大上下文长度:
# - 显存 < 32G → 4096
# - 显存 >= 40G → 8192 (推荐)
# - 官方支持最大 128K 但极高显存消耗
GPU_MEMORY_UTILIZATION = 0.9 # GPU 显存利用率 (0.7 ~ 0.95)
TENSOR_PARALLEL_SIZE = 1 # 张量并行度:
# - 单卡 = 1
# - 双卡 = 2 (需 Colab 双 GPU 环境)
# ====================================
# ---------- 全局标志 ----------
vllm_ready = False # vLLM 启动完成标志
cf_url_printed = False # 公网地址输出标志
print("=" * 60)
print("🚀 vLLM + Gemma-4-E4B-it-uncensored 全自动部署启动")
print("=" * 60)
print("\n📦 步骤 1/4: 安装基础环境依赖 ...")
!pip install -q --upgrade pip
!pip install -q vllm cloudflared transformers
print("✅ 基础环境安装完成")
# 设置环境变量
if HF_TOKEN != "hf_你的token":
os.environ["HF_TOKEN"] = HF_TOKEN
print(f"🔑 HuggingFace Token 已配置: {HF_TOKEN[:10]}...")
else:
print("⚠️ 未配置 HF_TOKEN,请修改脚本顶部的 HF_TOKEN 变量")
print(" 获取方法: https://huggingface.co/settings/tokens")
print(f"📦 模型名称: {MODEL_NAME}")
print(f"🔌 端口: {PORT}")
print(f"📏 最大上下文长度: {MAX_MODEL_LEN}")
print(f"💾 GPU 显存利用率: {GPU_MEMORY_UTILIZATION}")
print("\n🔗 步骤 2/4: 启动 Cloudflare Tunnel 公网透传 ...")
# 下载 cloudflared
!wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64
!chmod +x cloudflared-linux-amd64
# 启动隧道进程
cf_process = subprocess.Popen(
["./cloudflared-linux-amd64", "tunnel", "--url", f"http://127.0.0.1:{PORT}"],
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
bufsize=1, universal_newlines=True
)
# 获取隧道公网地址(带超时重试循环)
api_url: Optional[str] = None
max_attempts = 20 # 最多 20 次尝试(约 10 秒)
for attempt in range(max_attempts):
line = cf_process.stdout.readline()
if not line:
time.sleep(0.5)
continue
match = re.search(r'https://[a-zA-Z0-9-]+\.trycloudflare\.com', line)
if match:
api_url = match.group(0)
break
if api_url:
print(f"✅ Cloudflare Tunnel 已启动")
else:
print("⚠️ 隧道地址获取超时,将在 vLLM 启动后继续重试...")
def monitor_vllm_output(process):
"""监控 vLLM 输出,检测启动完成标志"""
global vllm_ready
for line in iter(process.stdout.readline, ''):
if not line:
break
line_str = line.strip() if isinstance(line, str) else line.decode('utf-8').strip()
if line_str:
print(line_str)
# 检测启动完成标志
if ("Uvicorn running on" in line_str or
"Application startup complete" in line_str or
"INFO: Started server process" in line_str):
vllm_ready = True
print("\n⏳ 步骤 3/4: 启动 vLLM 引擎(耗时较长,请耐心等待)...")
print("📥 首次运行将自动下载模型文件(约 112GB),请保持网络稳定")
print("💡 建议使用 Colab Pro+ A100 80G 环境以最快速度完成下载\n")
# 使用 vllm serve 命令启动服务
vllm_command = [
"vllm", "serve", MODEL_NAME,
"--port", PORT,
"--trust-remote-code",
"--dtype", "auto",
"--max-model-len", str(MAX_MODEL_LEN),
"--gpu-memory-utilization", str(GPU_MEMORY_UTILIZATION),
"--tensor-parallel-size", str(TENSOR_PARALLEL_SIZE),
]
# 启动 vLLM 进程
vllm_process = subprocess.Popen(
vllm_command,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
bufsize=1,
universal_newlines=True
)
# 启动监控线程
monitor_thread = threading.Thread(target=monitor_vllm_output, args=(vllm_process,), daemon=True)
monitor_thread.start()
# 等待 vLLM 完全启动
wait_count = 0
while not vllm_ready:
time.sleep(2)
wait_count += 1
if wait_count % 10 == 0: # 每 20 秒打印一次等待提示
print(f"⏳ 等待 vLLM 启动... ({wait_count*2} 秒)")
if not api_url and wait_count >= 5:
# 如果还没获取到隧道地址,再尝试读取一次
line = cf_process.stdout.readline()
if line:
match = re.search(r'https://[a-zA-Z0-9-]+\.trycloudflare\.com', line)
if match and match.group(0):
api_url = match.group(0)
if api_url:
print(f"🔗 Cloudflare Tunnel 地址已更新: {api_url}")
# 如果还是没有,提示手动检索日志
elif wait_count == 10:
print("💡 提示: 隧道地址可能在下方 Cloudflare 日志中,请手动查找 'trycloudflare.com' 链接")
if wait_count > 60:
print("⚠️ vLLM 启动超时,请检查 GPU 资源或网络连接")
break
print("\n" + "=" * 60)
print("✅ 步骤 4/4: 部署完成!")
print("=" * 60)
# 最终输出公网地址
print(f"\n🚀 **你的 vLLM API 地址已生成**: {api_url}/v1")
print("\n📋 客户端配置指南:")
print(f" • API 地址: {api_url}/v1")
print(" • API Key: 任意填写即可(如 'EMPTY')")
print(" • 模型名称: TrevorJS/gemma-4-E4B-it-uncensored")
print("\n💡 支持的客户端:Cherry Studio / Open WebUI / AnythingLLM / 任意 OpenAI SDK")
print("\n🎬 功能说明:")
print(" • 原生多模态支持:文本 + 图像 + 视频 + 音频输入")
print(" • OpenAI 兼容 API:无缝接入各类工具生态")
print(f" • 上下文窗口: {MAX_MODEL_LEN} tokens(可在脚本顶部调整)")
print("\n" + "=" * 60)
print("✨ 服务正在运行中,关闭 Colab 笔记本即停止服务")
print("=" * 60)
# 保持前台运行,持续打印中间日志便于监控
print("\n📡 [实时日志] 以下为未捕获的实时输出流,请持续关注...\n")
while True:
try:
# 通过读取前台已输出的最后几行来作为保活输出,降低资源消耗
time.sleep(30)
print("💚 服务运行中... (每 30 秒保活输出一次)")
except KeyboardInterrupt:
print("\n🛑 收到中断信号,正在关闭服务...")
vllm_process.terminate()
cf_process.terminate()
break
代码解析
1. 安装依赖
vllm:支持 GGUF 量化的高性能推理引擎。cloudflared:Cloudflare 的隧道工具,用于内网穿透。
2. 启动 Cloudflare 隧道
- 下载
cloudflared二进制文件。 - 后台运行一个子进程,将本地的
8000端口映射到一个公网*.trycloudflare.com域名。 - 通过正则提取出生成的隧道 URL。
3. 前台启动 vLLM 服务器
--model:指定 Hugging Face 模型仓库。--quantization gguf:告诉 vLLM 使用 GGUF 量化格式(否则会尝试加载全精度,导致 OOM)。--max-model-len 16000:最大上下文长度,根据显存调整(Q8_0 下 16k 约需 20GB+ 显存)。--gpu-memory-utilization 0.9:使用 90% 显存,留一点余量。--port 8000:与隧道端口一致。
接入 Cherry Studio
- 等待 Colab 输出中出现
Uvicorn running on http://0.0.0.0:8000字样,说明 vLLM 完全启动。 - 复制之前生成的 Cloudflare 隧道地址(例如
https://xxxx.trycloudflare.com/v1)。 - 打开 Cherry Studio(或任何 OpenAI API 兼容客户端):
- 添加新模型,API 地址填写隧道地址。
- API Key 可以随便填(vLLM 默认不校验)。
- 模型名称填写
TrevorJS/gemma-4-31B-it-uncensored-GGUF。
- 开始对话!注意:免费隧道带宽有限,但足够个人使用。
性能与注意事项
- 显存占用:Q8_0 量化的 31B 模型大约需要 31GB 显存(8-bit)。Colab Pro+ 的 A100 40G/80G 或 L4 24G(可能勉强,可降为 Q4_K_M 或降低
max-model-len)。免费版 T4 16G 无法运行此模型,建议换用 7B 模型。 - 速度:A100 上约 20~30 tokens/s,足够流畅。
- 隧道有效期:Cloudflare 免费隧道每次启动域名随机,且约 1~2 小时后可能失效。如需长期使用,可配置自己的域名和固定隧道。
- Colab 超时:免费 Colab 约 12 小时会断开,Pro 稍长。建议保持页面活跃或使用自动重连脚本。
常见问题
Q: 出现 ValueError: This model is not supported by gguf 怎么办?
A: 确保 vLLm 版本 >= 0.6.0,且模型仓库确实包含 GGUF 文件。本例使用的仓库已测试通过。
Q: 提示 CUDA out of memory
A: 降低 --max-model-len 到 8192 或 4096,或者将 --gpu-memory-utilization 降到 0.8。如果依然 OOM,说明显存不足,请换用更小的模型(如 gemma-2-9b-it-GGUF)。
Q: 隧道启动成功但 Cherry Studio 连不上
A: 检查 vLLM 是否完全启动(看到 Uvicorn running)。另外 Cloudflare 隧道可能需要几秒才能生效,等待 30 秒再试。
Q: 如何更换模型?
A: 修改 MODEL_NAME 为你想要的 GGUF 模型仓库,例如 second-state/Phi-3-mini-4k-instruct-GGUF。确保仓库内有 *.gguf 文件,且 vLLM 支持该架构。
Q: 脚本使用不了,googlecolab会员费没钱,google都登不上,下载一天太长了
A: 呵呵,作者不拉人屎,当你打开这篇文章,自动判断你为人傻钱多,有耐心,会编程,爬墙。一句话总结:凡事要思考你自己的原因,而不是怨天怨地怨空气。
浙公网安备 33010602011771号