马上注册,让你轻松玩转程序园
您需要 登录 才可以下载或查看,没有账号?立即注册
x
谷歌几天前发布了Gemma 4,我终于重新爱上了这些模型。
在Gemma 2之后,我停止使用它们:我转向了Qwen,因为它为我提供了足够的上下文长度用于文档分析和智能体功能。
但现在,即使是小巧的Gemma-4-E2B也能做到一切。
我是一个"显卡穷人",所以我总是押注于具有出色能力的小语言模型。而Gemma 4是我的新选择!
在本文中,我将向你展示如何将旧电脑用作本地AI服务器:以及如何在Google AI Studio上免费测试更大的模型。
1、Gemma-4
Gemma-4是谷歌最新的开放权重模型家族,专注于更强的推理能力、智能体行为和多模态设备端使用。
主要新功能
高级推理和"思考"模式:Gemma-4可以进行逐步推理、多步规划,并针对智能体工作流进行优化(例如自主工具使用和工作流)。
长上下文窗口:小型E2B/E4B边缘模型支持高达128K token,26B/31B版本支持高达256K token,支持非常长的上下文任务。
多模态输入:所有模型都支持文本加图像(支持可变宽高比和多个token预算);E2B/E4B还原生支持音频,某些变体处理类似视频的序列。
更强的编码和函数调用:改进的编码基准测试加上内置的函数调用支持,让模型能够在智能体管道中调用工具和API,无需额外微调。
原生系统提示支持:4系列现在具有内置的system角色处理,使指令和行为控制更加一致且对开发者友好。在我看来,这是最伟大的功能(我一直在等待它)。
边缘优化的小型模型(E2B/E4B):高效的2B和4B有效参数模型,专为手机、树莓派和类似硬件设计,具有多模态推理和接近零延迟的离线执行能力。
Gemma-4是一个推理更快、上下文更长、多模态、支持智能体的模型家族,即使在移动设备和边缘设备上也能高效运行。
不同模型尺寸、目标用例和硬件
已经令人惊叹的gemma2-2b-it中主要缺失的功能是:上下文和系统消息。
在现代大语言模型使用中,智能体能力和结构化输出是相辅相成的,为此你需要系统消息和广泛的上下文长度。
gemma-2-2b-it
- 强大的聊天/指令遵循能力,针对小占用部署进行优化(例如端点、简单聊天机器人)。
- 纯文本到文本;没有原生多模态或高级"思考"模式;编码和数学能力弱于后代模型。
gemma-3n-E2B
- 专家混合式设计:总共 5B 参数但表现得像 2B 占用模型,针对设备端效率进行调整。
- 纯文本,但比 Gemma-2-2B 具有更好的推理和指令遵循能力,面向"设备端"但尚不支持多模态或智能体。
gemma-4-E2B
- 多模态:支持文本+图像(以及在更广泛的 Gemma-4 家族中支持类似音频或视频的行为),具有长上下文(例如 32K-128K 范围)。
- 专为高级推理("思考模式")、函数调用和手机/树莓派类设备上的智能体工作流设计。
我们可以轻松地在硬件上运行该家族的边缘模型,使用 llama.cpp。但如果你想尝试 26B/31B 版本,你可以选择 Google AI studio 上的免费 API 或 Playground……免费!
2、Google AI Studio 免费 API 和 Playground
谷歌提供了一个丰富的集成环境,可以直接在 Google AI Studio 上玩转谷歌模型(文本、音频、图像和视频)。
Google AI Studio
如果你有 Gmail 地址或 Google 账户,注册过程简单直接。
但你需要同意 Gemini API 附加服务条款:出于某些原因,你需要同意你*"是使用 Google AI Studio 和 Gemini API 进行专业或商业目的开发的开发者……"*
由你决定:我将其用于不涉及专有数据的个人项目(主要是搜索、比较和探索新主题)。
点击继续后……你就完成了。
你可以访问 Playground,在那里你可以立即开始聊天,切换模型(在我的情况下,我想测试 Gemma 4 的高端:31B 和 MoE)。你还可以设置思考深度(最小、高)。
你还可以生成 API 密钥以在许多应用程序(如 Perplexica、LMStudio、Opencode、Open Claude)中从你的 PC 使用模型。
免费层的 API 密钥允许你每天进行多达 1500 次调用!
速率限制都在这里。
具体来说,Gemma-4 模型基本上是免费的。
来源 稍后我将向你展示如何将本地 Perplexica 配置为强大的工具,使用 Gemma4-MoE 和免费 API 调用。 所以,创建你的第一个 API 密钥,并将其保存在安全的地方。我们很快就会使用它。
3、MiniPC 作为本地 AI 服务器
我有一台旧的 Beelink mini-PC,4 年前花了我 100 美元。这是一台低端电脑,配备英特尔第 6 代 CPU,没有独立 GPU,16GB 内存。而且 CPU 只有 4 个线程。
但是……我这台不再使用的 miniPC,即使运行 Gemma4-E4B 量化模型也能以不错的速度运行。
使用我的 GGUF Runner 和 Inspector 生成速度为 6 token/秒
想法很简单:
- 你可以使用旧笔记本电脑(装有 Linux 的旧 MacBook)或旧 PC
- 通过 WiFi 将其连接到本地网络
- 使用 llama.cpp 服务器和一些技巧运行模型
并获得一个远程、完全本地的 AI,不会降低你自己的工作电脑的速度。
4、在旧硬件上运行 Gemma-4-E4B超级简单。
1)你需要模型我建议你从 Hugging Face 上的 Unsloth Gemma 4 专用仓库 下载 GGUF 模型: - gemma-4-E4B-it-Q3_K_S.gguf 对应 4B 活跃参数
- gemma-4-E2B-it-Q4_K_M.gguf 对应 2B 活跃参数
下载到一个新的项目目录:我将其命名为 GoogleAIstudio。
2)你需要 llama.cpp获取 llama.cpp 的最新二进制文件。你可能已经拥有的旧版本不一定能工作。 以下是当我尝试使用 b8429 版本运行它时发生的情况……
llama.cpp 版本 b8429
gemma4 模型架构未知
获取最新版本!
在撰写本文时,b8705 是最后一个版本。
- Release b8705 · ggml-org/llama.cpp
我在 Windows 上,所以我下载了仅 CPU 的 X64 架构二进制文件: - llama-b8705-bin-win-cpu-x64.zip
将 ZIP 压缩包解压到同一目录(我的名为 GoogleAIstudio)。 在同一目录中打开终端并运行: .\llama-server.exe -m .\gemma-4-E4B-it-Q4_K_S.gguf -c 64000 -ngl 0 -ctk q4_0 -ctv q4_0 --mmap --temp 1.0 --top-p 0.95 --top-k 64 --port 8888 --host 0.0.0.0这里的关键参数是:
- --port 8888 这是 API 的监听端口
- --host 0.0.0.0 这里告诉将 API 暴露到网络。实际上你可以看到 Windows 正在询问你是否允许 llama-server.exe 访问网络(点击允许)
你需要知道旧电脑上的 IP 地址 就像我在上面小视频中所做的那样,打开一个新终端并运行此命令: ipconfig你将获得有关 PC 上所有网络适配器的信息,类似这样 无线局域网适配器 Wi-Fi 2:连接特定的 DNS 后缀 . : nexxtIPv6 地址. . . . . . . . . . . : 2001:b07:6440:da7b:3542:8fe1:62f7:1c9临时 IPv6 地址. . . . . . : 2001:b07:6440:da7b:205b:32ec:4099:deb3临时 IPv6 地址. . . . . . : 2001:b07:6440:da7b:4d8b:a209:4120:d0b5本地链接 IPv6 地址 . . . . . : fe80::eec7:e9e9:80cf:a71d%5IPv4 地址. . . . . . . . . . . : 192.168.1.75子网掩码 . . . . . . . . . . . : 255.255.255.0默认网关 . . . . . . . . . : fe80::5a76:acff:fe04:9220%5192.168.1.254我的 miniPC IP 地址是标记为"IPv4 地址"的那个:192.168.1.75。这是网络上 llama-server 的地址,API 暴露在 8888 端口…… http://192.168.1.75:88885、测试本地网络模型 —— 交互方式我创建了一个小 CLI 应用程序,让你立即了解这些模型有多好。另外,llama-cpp 的内置 Web 聊天已经可用。 你甚至可以从网络上的另一台计算机运行它(只需在浏览器中输入 IP:端口,在我的情况下是 http://192.168.1.75:8888) 对于 CLI 应用程序,我们需要一些库,最好全局安装。 打开终端并运行: pip install openai rich这个 CLI 应用程序能够从远程 llama-server 流式传输结果,并在终端中以 Markdown 格式渲染推理过程和最终输出。 5.1 导入我们需要 rich 来在终端中渲染 Markdown,以及 openai 库来处理 chat.completion 的 API 调用。 import sysimport timefrom openai import OpenAIfrom rich.console import Consolefrom rich.markdown import Markdownfrom rich.live import Livefrom rich.panel import Panelfrom rich.table import Table# 初始化 Rich 控制台console = Console()client = OpenAI( base_url="http://192.168.1.75:8888/v1", #根据你的 IP 调整 api_key="sk-no-key-required")请注意,base_url 必须根据你的网络设置和上一步发现的 IP 地址。 5.2 用户输入函数我想允许在终端中进行长文本复制/粘贴,所以我创建了一个函数来支持多行输入。输入仅在最后按 Ctrl+Z 和 Enter(在 Windows 上)或 Linux/mac 上的 Ctrl+D 后才被接受。 def get_multiline_input(): console.print("\n[bold cyan]User[/bold cyan] [dim](Ctrl+D/Z 发送, 'exit' 退出):[/dim]") contents = [] try: while True: line = sys.stdin.readline() if not line: break contents.append(line) except EOFError: pass return "".join(contents).strip()5.3 响应函数因为我们使用流式选项发送 API 调用,所以我们将几乎立即开始打印响应,保持一个小缓冲区以在终端中渲染 Markdown: def chat(): messages = [ {"role": "system", "content": "你是一个有用的助手。使用 Markdown 进行格式化。"} ] console.print(Panel.fit("[bold reverse] 本地大语言模型聊天 [/bold reverse]\n连接到 192.168.1.75:8888", border_style="green")) # 这里是主循环 while True: user_text = get_multiline_input() if user_text.lower() in ['exit', 'quit']: console.print("[yellow]正在关闭会话...[/yellow]") break if not user_text: continue messages.append({"role": "user", "content": user_text}) # 启动 KPI 计时器 try: start_time = time.time() ttft_time = None response = client.chat.completions.create( model="gemma", messages=messages, temperature=1.0, stream=True ) console.print("\n[bold magenta]助手:[/bold magenta]") # 我使用 rich.live 来渲染控制台 full_response = "" with Live(console=console, refresh_per_second=10, vertical_overflow="visible") as live: for chunk in response: # 捕获首 token 时间 if ttft_time is None: ttft_time = time.time() - start_time content = chunk.choices[0].delta.content if content: full_response += content live.update(Markdown(full_response)) total_time = time.time() - start_time # 在小表格中显示性能指标 stats_table = Table(show_header=False, box=None, padding=(0, 2)) stats_table.add_row( f"[dim]TTFT: {ttft_time:.2f}s[/dim]", f"[dim]总计: {total_time:.2f}s[/dim]", f"[dim]速度: {len(full_response.split()) / total_time:.1f} 词/秒[/dim]" ) console.print(stats_table) messages.append({"role": "assistant", "content": full_response}) except Exception as e: console.print(f"\n[bold red]错误:[/bold red] {e}")最后我们调用 Python 应用程序: if __name__ == "__main__": chat()我的文件名为 ATEST_remoteGemma4.py。要使用 Python 应用程序,请从终端运行: python .\ATEST_remoteGemma4.py这就是将要发生的事情……
你也可以在我的 GitHub 仓库中找到整个代码。 6、在Perplexica中使用它你可以在 CLI 应用程序中调用它,或者轻松将其连接到 LMStudio,甚至 Opencode(你的本地 AI 智能体堆栈)。 但今天我将向你展示如何将其与 Perplexica 一起使用,这是著名的 Perplexity 的本地版本。 当你的 vane/Perplexica 已经在运行(对我来说在 Docker 容器中),启动浏览器并点击 设置图标:
设置 > 模型 > 添加连接 现在我们想要 Gemini 连接(也适用于 GoogleAIstudio API),使用我们 5 分钟前创建的 API 密钥。
你会看到 Perplexica 已经扫描了所有可用模型:我高亮显示了 Gemma4 的模型。 记住检查哪些模型有免费层!!
目前,我只能看到 Gemma4 是免费的。 返回 Perplexica 主页,将模型切换到我们刚刚配置的新连接中的模型,然后运行你的查询
7、为什么 Gemma 4 是游戏规则改变者在我们结束之前,让我们看看从 Gemma 2 到 Gemma 4 的跳跃对"显卡穷人"来说为什么重要。 - 系统提示革命:在以前的版本中,你必须将指令"黑客攻击"到用户消息中。Gemma 4 的原生系统角色支持意味着模型实际上保持角色并更好地遵循约束,即使是小尺寸。
- 可呼吸的上下文:从旧的小型模型的狭窄 8K 上下文移动到 E2B/E4B 系列的128K改变了一切。你现在可以将整个技术文档 PDF 输入到 4 线程的 mini-PC 并获得有意义的答案。
- "思考"优势:新的推理模式适用于所有模型。即使是边缘模型现在也可以"暂停"并规划,这大大减少了复杂任务(如编码或逻辑谜题)期间的幻觉。
|