挑战 Qwen 3.5:Gemma 4 私有部署与文本、图像、视频、音频处理及思考模式、工具调用全教程

Gemma-2-9B私有部署实战:轻量高效替代Qwen3.5 大语言模型私有化部署的核心诉求是可控、低延迟与易维护,而非单纯追求参数规模或SOTA分数。Gemma-2作为Google推出的高性能开源模型,在9B级别上通过原生AWQ量化支持、vLLM深度兼容、OpenAI-style工具调用协议及模块化解耦的Modality Adapter设计,显著优化了显存占用、首token延迟与多模态扩展性。相比Qwen3.5-32B在T4单卡上的高资源消耗与封闭架构,Gemma-2-9B更适配企业内网无外网、需等保合规、强调服务稳定性的私有AI场景,已成为轻量级多模态Agent落 阅读详情

随着多模态和智能体能力逐渐成为大模型的标配,如何在本地环境中高效部署正在成为越来越多开发者关注的重点。近期,Gemma 4 正式发布,模型能力对标 Qwen 3.5,在推理能力、多模态支持以及工具调用等方面都有明显提升。

以下为 Gemma 4 不同型号的简要介绍:

模型上下文能力多模态理解
Gemma 4 E2B128K思考模式,工具调用文本、图像、视频、音频
Gemma 4 E4B128K思考模式,工具调用文本、图像、视频、音频
Gemma 4 31B256K思考模式,工具调用文本、图像、视频
Gemma 4 26B A4B256K思考模式,工具调用文本、图像、视频

Gemma 4 在设计上更加全面:原生支持文本、图像、音频甚至视频输入,并具备思考模式、工具调用、结构化输出等能力,可以直接用于构建智能体工作流。这也意味着,单一模型即可完整实现一套接近生产形态的 AI 能力。

本文将基于 GPUStack,在本地环境中完整部署 Gemma 4 模型,并逐步测试其各项能力,包括文本生成、图像理解、音频与视频处理、思考模式(thinking)、以及工具调用(tool calling)等。同时,也会结合实际部署过程,介绍在推理后端、模型配置以及多模态支持方面需要注意的关键点。

如果你希望在本地搭建一套具备多模态与智能体能力的大模型环境,这篇文章可以作为一个完整的实践参考。

GPUStack 安装与集群初始化

GPUStack 是一个开源 GPU 集群管理与 AI 模型服务平台,旨在高效部署 AI 模型。它可以配置并编排多种推理引擎——如 vLLM、SGLang、TensorRT-LLM,甚至自定义引擎——以在 GPU 集群上实现最佳性能。核心功能包括多 GPU 集群管理、可插拔推理引擎架构、Day 0 模型支持、性能优化配置(低延迟/高吞吐)、以及企业级运维能力,如故障恢复、负载均衡、监控与权限管理。

在开始部署 Gemma 4 之前,首先需要完成 GPUStack 控制面的安装,并将 NVIDIA GPU 节点纳入管理。

准备容器环境

GPUStack 以容器方式运行,因此需要提前准备好容器运行环境(如 Docker、Podman 或 Kubernetes)。本文以 Docker 为例进行说明。

在各节点上安装 Docker,确保服务已正常启动:

docker info

启动 GPUStack Server

GPUStack Server 无需依赖 GPU,可运行在普通 CPU 节点上,也可运行在 GPU 节点。本文以一台双卡 NVIDIA 4090 48G 节点为实验环境,在该节点上启动 GPUStack Server 容器:

sudo docker run -d --name gpustack \
  --restart unless-stopped \
  -p 80:80 \
  --volume gpustack-data:/var/lib/gpustack \
  swr.cn-south-1.myhuaweicloud.com/gpustack/gpustack:v2.1.1 \
  --debug --bootstrap-password GPUStack@123

关键参数说明:

  • -p 80:80:用于对外暴露 Web 控制台端口;如需修改为其他端口(例如 9999),可调整为 -p 9999:80。
  • –volume:持久化平台数据(包括模型服务、计量数据、API Key 等)
  • –bootstrap-password:初始化 admin 用户密码
  • –debug:开启调试日志,便于排查问题

容器启动后,可以通过日志确认服务是否正常运行:

docker logs -f gpustack

访问控制台并初始化

打开浏览器访问:http://<Server 主机 IP>:80

使用默认账号登录:

  • 用户名:admin
  • 密码:GPUStack@123

登录后,首先创建一个 Docker 类型的集群,用于统一管理后续接入的 GPU 节点。

image-20260404155239420

添加 NVIDIA GPU Worker 节点

在集群创建完成后,可以接入 NVIDIA GPU 节点。

在添加节点之前,先完成基础环境检查。

(1)驱动版本检查

在目标节点上执行以下命令:

nvidia-smi

该命令会显示当前安装的 NVIDIA 驱动版本。请确认驱动版本 ≥ 575,以保证对 Gemma 4 模型的兼容性和稳定性。

(2)Nvidia Container Toolkit 检查

执行以下命令检查 Docker 是否正确配置了 Nvidia Container Toolkit:

sudo docker info 2>/dev/null | grep -q "Runtime.*nvidia" && echo "Nvidia Container Toolkit OK" || (echo "Nvidia Container Toolkit not configured"; exit 1)
  • 该命令会从 docker info 输出中查找是否存在 nvidia 运行时配置。
  • 如果输出 “Nvidia Container Toolkit OK”,说明 Docker 已正确配置,可在容器中访问 GPU。
  • 如果输出 “Nvidia Container Toolkit not configured”,则说明未正确配置,需要安装并启用 Nvidia Container Toolkit,否则推理容器无法使用 GPU 资源。
(3)接入 Worker 节点

在 GPUStack 控制台中,选择添加节点(Worker),并复制系统生成的接入命令,在目标节点执行。

image-20260404154936516

该命令本质上会启动一个 Worker 容器,并自动注册到 Server。

(4)验证 Worker 状态

节点接入后,可以在节点上查看容器日志:

docker logs -f gpustack

同时,在 GPUStack 控制台中也可以看到节点状态是否为 Ready。

至此,GPUStack 的控制面已成功部署,NVIDIA GPU 节点也顺利接入集群,并能够正常采集 GPU 名称、索引、厂商信息、温度、利用率及显存使用等指标。接下来即可在该环境中部署具体的推理服务。

image-20260404155349407

添加自定义 vLLM 和 SGLang 版本

GPUStack 支持可插拔的推理引擎架构,允许自定义推理后端及其版本,用于引入 GPUStack 未内置的 vLLM / SGLang / MindIE 版本,或接入其他自定义推理引擎镜像。

以 vLLM 最新发布的 v0.19.0 和 SGLang 最新发布的 v0.5.10 为例。

vLLM

在推理后端菜单,编辑 vLLM,在版本配置中选择添加版本,添加一个新的 vLLM 版本,指向 vLLM 官方镜像:

配置值
版本0.19.0
镜像名称vllm/vllm-openai:v0.19.0
框架CUDA
覆盖镜像入口命令(ENTRYPOINT)vllm serve
执行命令{{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name {{model_name}}

自定义添加 vLLM 0.19.0 配置如图所示:

image-20260404091212999

SGLang

在推理后端菜单,编辑 SGLang,在版本配置中选择添加版本,添加一个新的 SGLang 版本,指向 SGLang 官方镜像:

配置值
版本0.5.10
镜像名称lmsysorg/sglang:v0.5.10
框架CUDA
覆盖镜像入口命令(ENTRYPOINT)sglang serve
执行命令–model-path {{model_path}} --host {{worker_ip}} --port {{port}}

自定义添加 SGLang 0.5.10 配置如图所示:

image-20260406224602742

注意:

  1. GPUStack 会自动调用主机容器运行时拉取容器镜像,需要确保 Worker 节点可访问 Docker Hub,或者提前拉取好并重新 tag,并按需修改 UI 配置中的镜像地址;
  2. 保持执行命令中的 {{}} 不变,此为模板化配置。

也可以切换到 YAML 模式,直接使用以下的 YAML 导入:

vLLM

backend_name: vLLM
version_configs:
  0.19.0-custom:
    image_name: vllm/vllm-openai:v0.19.0
    entrypoint: vllm serve
    run_command: >-
      {{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name
      {{model_name}}
    env: {}
    custom_framework: cuda

SGLang

backend_name: SGLang
version_configs:
  0.5.10-custom:
    image_name: lmsysorg/sglang:v0.5.10
    entrypoint: sglang serve
    run_command: '--model-path {{model_path}} --host {{worker_ip}} --port {{port}}'
    env: {}
    custom_framework: cuda

注意:如果当前已经有其它自定义版本,需要将其它自定义版本一同添加在 version_configs 中一起导入。

image-20260404091554773

截止目前(2026.4.6), SGLang 对 Gemm4 的支持代码还未合并,以下使用 vLLM 来运行 Gemma 4。

由于运行 Gemma 4 需要 transformers 5.5.0 以及 vllm[audio] 依赖,建议自行构建支持 Gemma 4 的镜像。参考 Dockerfile 如下:

FROM vllm/vllm-openai:v0.19.0
RUN uv pip install --system vllm[audio] \
  && uv pip install --system transformers==5.5.0

构建 vllm/vllm-openai:v0.19.0-gemma4 镜像:

docker build -t vllm/vllm-openai:v0.19.0-gemma4 .

然后,在推理后端菜单中编辑 vLLM,切换到 YAML 模式,直接导入以下 YAML。该配置中声明了两个版本:官方的 0.19.0 版本,以及上方构建的 0.19.0-gemma4 版本。请确保用于部署 Gemma 4 的节点上已提前存在对应镜像:

backend_name: vLLM
version_configs:
  0.19.0-custom:
    image_name: vllm/vllm-openai:v0.19.0
    entrypoint: vllm serve
    run_command: >-
      {{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name
      {{model_name}}
    env: {}
    custom_framework: cuda
  0.19.0-gemma4-custom:
    image_name: vllm/vllm-openai:v0.19.0-gemma4
    entrypoint: vllm serve
    run_command: >-
      {{model_path}} --host {{worker_ip}} --port {{port}} --served-model-name
      {{model_name}}
    env: {}
    custom_framework: cuda

成功导入后,点击 vLLM 卡片或编辑 vLLM ,查看两个自定义版本配置如下:

image-20260404161202006

image-20260404150129051

部署 Gemma4 模型

vLLM 已提供关于 Gemma4 模型的部署与使用教程,详情可参考:

https://docs.vllm.ai/projects/recipes/en/latest/Google/Gemma4.html

以下将介绍在 GPUStack 上部署 Gemma4 模型的配置流程。

  1. 在在线环境下,可直接通过 HuggingFace 或 ModelScope 搜索 Gemma4 模型并进行部署,具体步骤参考下方。

  2. 在离线环境中,需要提前下载好模型权重,并将其分发到所有 Worker 节点,同时挂载到对应的 Worker 容器中。随后,在 GPUStack 控制台 - 模型文件菜单中,选择添加模型文件 - 本地路径,填写对应的模型权重路径。需要注意,这里填写的应为容器内路径,例如:

image-20260404092651530

以下测试在 2 块 4090 48GB GPU 环境下进行。

联网环境:在 GPUStack 控制台 - 部署菜单下,选择 部署模型 → ModelScope,直接搜索 Gemma4 模型进行部署。

离线环境:可从 GPUStack 控制台 - 模型文件菜单中,选择已添加的 Gemma4 模型进行部署。

以 google/gemma-4-31B-it 模型为例(it 为指令微调版本):

  • 后端:选择 vLLM
  • 版本:选择前面自定义添加的 0.19.0-gemma4-custom

使用以下后端参数启动,后端参数支持单行或多行形式(注意 --tensor-parallel-size 2 已设置双卡张量并行,请确保有两块 GPU 可分配;其它环境请根据实际情况调整并行策略):

--tensor-parallel-size 2 --max-model-len 32768 --gpu-memory-utilization 0.9 --enable-auto-tool-choice --reasoning-parser gemma4 --tool-call-parser gemma4  --async-scheduling --limit-mm-per-prompt '{"image": 4, "video": 1, "audio": 1}'

对于不同型号的显存建议如下:

  • 31B / 26B 模型:建议至少 80GB 显存
  • E2B / E4B 模型:建议至少 24GB 显存

image-20260404151825539

部署其它 Gemma 4 型号的流程与前面介绍的 31B 模型类似,包括选择 vLLM 后端、指定自定义版本、配置启动参数和并行策略等,此处不再赘述。

如果 NVIDIA 驱动版本 > 575,由于镜像中内置的 CUDA 版本为 12.9,可能会出现驱动版本与 CUDA 版本不匹配的提示。

说明:

  • 这是因为检查到当前驱动版本高于容器镜像内 CUDA 12.9 的预期驱动版本,但 CUDA 向上兼容更高版本的驱动。
  • 因此,这种提示可以忽略,直接选择仍然提交进行部署即可,模型仍能正常运行。

等待模型启动时,可以在操作中点击查看日志,实时观察 vLLM 的启动过程:

image-20260404160907974

当模型实例状态显示为 Running 时,说明模型已经成功启动,可以进行后续的文本、图像、音频、视频以及工具调用等功能测试。

模型能力测试

试验场

文本生成

Gemma 4 31B

image-20260404110901660

Gemma 4 26B A4B

image-20260404161506506

图像理解

Gemma 4 31B

image-20260404111021734

Gemma 4 26B A4B

image-20260404161654250

API 调用

在 GPUStack 控制台 - 路由菜单中,选择对应模型,点击操作 → API 接入信息,即可查看模型 API 的调用说明:

image-20260404114607960

  • 接入地址:统一通过 GPUStack 的认证 API 入口访问。
  • 模型名称:调用时在请求中填写对应的 model。
  • API 密钥:用于身份认证和权限校验。可按指引跳转到API 密钥管理页面创建 API Key,并可设置访问控制,仅允许访问指定模型。

image-20260404114721299

在试验场右上角点击查看代码,即可根据当前输入和参数设置,动态生成调用该模型的示例代码:

image-20260404114823610

音频识别

仅 Gemma 4 E4B 和 Gemma 4 E2B 模型支持音频识别(注意根据实际环境修改 URL、Bearer token 和 model):

curl http://192.168.50.16/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer gpustack_0dd6f29690c7da2d_40d4a9ede6b5592209b5288b10b325f2" \
-d '{
  "seed": null,
  "stop": null,
  "temperature": 1,
  "top_p": 1,
  "max_tokens": 4096,
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "model": "gemma-4-e4b-it",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "input_audio",
          "input_audio": {
            "data": "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qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqpMQU1FMy4xMDCqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxHwAAANIAAAAAKqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq//NkxAAAAANIAAAAAExBTUVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//NkxHwAAANIAAAAAFVVVVVVVVVMQU1FMy4xMDBVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV//NkxHwAAANIAAAAAFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
            "format": "mp3"
          }
        }
      ]
    },
    {
      "role": "user",
      "content": "Provide a verbatim, word-for-word transcription of the audio."
    }
  ]
}' | jq
视频理解

安装 OpenAI 依赖:

pip install openai

创建测试 Python 脚本:

vim video_understanding.py

填写以下内容(注意根据实际环境修改 base_url、api_key 和 model)。示例中使用的视频来源于 Hugging Face,请确保运行环境可以正常访问 Hugging Face:

from openai import OpenAI

client = OpenAI(
    base_url="http://192.168.50.16/v1",
    api_key="gpustack_02d1d03b2f1e73d1_9488d69fce3119d86bab20396e34984c"
)

response = client.chat.completions.create(
    model="gemma-4-31b-it",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "video_url",
                    "video_url": {"url": "https://huggingface.co/datasets/merve/vlm_test_images/resolve/main/concert.mp4"}
                },
                {
                    "type": "text",
                    "text": "Summarize what happens in this video."
                }
            ]
        }
    ],
    max_tokens=1024
)

print(response.choices[0].message.content)

测试:

python video_understanding.py

image-20260404142750148

思考模式

cURL 可以通过 "chat_template_kwargs": {"enable_thinking": true} 开启思考,示例如下(注意修改 URL,Bearer token 和 model):

curl http://192.168.50.16/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer gpustack_3d545327e9b81d66_9ed17ad891348c4e1d6a7f62e75aa34b" \
-d '{
  "max_tokens": 16384,
  "model": "gemma-4-31b-it",
  "messages": [
    {
      "role": "user",
      "content": "鸡兔同笼问题,40个头,130只脚,分别有几只鸡和兔子?"
    }
  ],
  "chat_template_kwargs": {"enable_thinking": true}
}' | jq

注意:Gemma4 思考模式的思维链采用额外的标记 thought\n 表示,而不是放在 vLLM 返回的 “reasoning” 字段中。

image-20260404122125684

工具调用

安装 OpenAI 依赖:

pip install openai

创建测试 Python 脚本:

vim toolcalling.py

填写以下内容(注意根据实际环境修改 base_url、api_key 以及两处 model 参数):

from openai import OpenAI
import json

client = OpenAI(
    base_url="http://192.168.50.16/v1",
    api_key="gpustack_3d545327e9b81d66_9ed17ad891348c4e1d6a7f62e75aa34b"
)

# Define tools
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Get the current weather for a location",
            "parameters": {
                "type": "object",
                "properties": {
                    "location": {
                        "type": "string",
                        "description": "City name, e.g. 'San Francisco, CA'"
                    },
                    "unit": {
                        "type": "string",
                        "enum": ["celsius", "fahrenheit"],
                        "description": "Temperature unit"
                    }
                },
                "required": ["location"]
            }
        }
    }
]

# Step 1: Send user message with tools
response = client.chat.completions.create(
    model="gemma-4-31b-it",
    messages=[
        {"role": "user", "content": "What is the weather in Tokyo today?"}
    ],
    tools=tools,
    max_tokens=1024
)

message = response.choices[0].message

# Step 2: Process tool calls
if message.tool_calls:
    tool_call = message.tool_calls[0]
    print(f"Tool: {tool_call.function.name}")
    print(f"Args: {tool_call.function.arguments}")
    
    # Step 3: Feed back tool result and get final answer
    response = client.chat.completions.create(
        model="gemma-4-31b-it",
        messages=[
            {"role": "user", "content": "What is the weather in Tokyo today?"},
            message,  # assistant's tool call message
            {
                "role": "tool",
                "tool_call_id": tool_call.id,
                "content": json.dumps({"temperature": 22, "condition": "Partly cloudy", "unit": "celsius"})
            }
        ],
        tools=tools,
        max_tokens=1024
    )

    print(f"\nFinal answer: {response.choices[0].message.content}")

测试:

python toolcalling.py

image-20260404123511958

更多关于 Gemma 4 模型的用法,请参考:https://docs.vllm.ai/projects/recipes/en/latest/Google/Gemma4.html

总结

GPUStack 采用可插拔的推理引擎架构,将平台与具体推理引擎解耦。当有新模型发布且依赖特定版本或定制推理环境时,可以直接通过接入对应的引擎镜像或自定义后端来完成部署,而不需要等待平台侧适配或升级。

这样做的好处是,在实际使用中可以更灵活地应对模型和引擎版本的变化。一方面可以更快验证和上线新模型,另一方面也避免了不同模型之间因运行环境不一致带来的冲突问题,使整体部署和运维更加可控。

如果希望进一步了解 GPUStack 的功能和使用方式,可以参考以下资源:

  • 项目仓库:https://github.com/gpustack/gpustack
  • 官方文档:https://docs.gpustack.ai/latest/overview/

image-20260404112334023

加入 GPUStack 社区

GPUStack 社区聚焦 AI 基础设施与大模型实践。

社区中持续分享真实环境下的部署经验、问题排查案例,以及推理引擎、算力管理和系统架构相关讨论。

欢迎扫码加入 GPUStack 社区,与更多关注 AI Infra 与大模型推理实践的伙伴一起交流、学习与分享。

9f0c1539a0477e224fb65e7eeecbb4b6

若群聊已满或二维码失效,请访问以下页面查看最新群二维码:
https://github.com/gpustack/gpustack/blob/main/docs/assets/wechat-group-qrcode.jpg

Gemma 4私有部署指南:轻量多模态模型在24GB显存设备上的工程实践 多模态大模型正从云端走向边缘,但Qwen 3.5-VL等强模型受限于高显存(>26GB)与部署复杂度,难以落地中小场景。其核心原理在于视觉编码器与语言模型的协同推理,技术价值体现在低资源下的结构化输出、工具链编排与可审计思考路径。典型应用场景包括医疗影像分析、AI漫剧生成、遥感图像处理等对数据隐私与实时性要求高的领域。本文聚焦Gemma 4——一个基于Gemma 2底座融合Qwen 3.5多模态能力的非官方但高度工程化的轻量级方案,详解其LoRA+Adapter Fusion微调、ReAct思考模式、MCP 阅读详情

相关推荐

Gemma 4本地多模态智能体部署与工具调用实战

多模态大模型正从‘能看图’迈向‘可执行’的工程化拐点。其核心在于统一语义空间下的跨模态对齐与原生工具调用能力,而非简单拼接视觉编码器。Gemma 4通过共享RoPE位置编码与轻量ViT-L/14视觉编码器,在单卡RTX 4090上实现低延迟、高精度的文本-图像联合推理,并原生支持OpenAPI Schema驱动的function calling。这种架构收敛性使其成为私有化部署智能体的理想底座,适用于工业文档解析、会议纪要生成、视频异常识别等需数据不出域、逻辑可编程的真实业务场景。

alexhill2009的博客 515

在DGX-Spark上多模态模型gemma-4-31B-it vLLM部署

显存优化fp8量化 + 70% 显存限制 + 分块预填充,适合大模型部署性能优化:前缀缓存 + SafeTensors 格式,提升重复查询和加载速度功能特性:支持工具调用(Tool Calling)和思维链解析,适配 Gemma 4 原生能力长上下文:26万 token 支持,适合长文档处理。

weixin_69334636的博客 2372

Gemma 4与Qwen 3.5架构差异:端侧推理与云端吞吐的工程哲学对决

Transformer架构是大模型的基础范式,但其实际部署效能高度依赖硬件约束与工程取舍。Gemma 4聚焦端侧低显存、低延迟场景,通过混合注意力、DualRoPE和PLE嵌入等设计,在8GB内存设备上实现多模态闭环;Qwen 3.5则面向云端高并发长文本处理,采用Gated DeltaNet线性注意力与熵正则化MoE,在千卡集群中保障确定性吞吐与显存稳定性。二者差异本质不是参数规模或性能高低,而是对‘物理边界’(如Adreno共享内存上限、H100 Tensor Core对齐要求)的不同响应策略。理解这些

hck341204的专栏 596

本地部署大模型全指南:从 Ollama 到 vLLM,性能差距有多大?

Google 在 Hugging Face 发布了 Gemma-4 31B, 5 天内下载量突破 67 万次。几乎同时,阿里的 Qwen3.5 27B 也以日均 50 万次的下载量霸榜。

pythonhy的博客 955

llama.cpp多模态模型本地部署:视频理解与音频处理实战指南

这类工具最值得先看的不是功能列表,而是能不能在普通环境里稳定跑起来。llama.cpp 最近支持了视频和音频输入,这意味着你可以在本地用 CPU 或普通 GPU 跑多模态模型,直接处理视频、音频内容,而不需要依赖云端 API 或高端显卡。 但很多人一看到“支持视频输入”就急着去试,结果卡在环境、依赖或输入格式上。我更建议把第一次测试拆成三步:确认模型能力、准备最小可运行环境、跑通单条任务再试批量。下面按实际落地顺序拆一遍。 1. 先确认它到底解决的是视频理解、音频转写还是多模态问答问题 llama.cpp

weixin_34414196的博客 448

Gemma4、Qwen3、GLM-5开源大模型落地实操指南

大语言模型(LLM)的选型与部署已从参数比拼进入工程深水区。理解MoE架构的动态路由机制、多模态原生对齐原理、中文语法与逻辑链双轨建模,是实现低延迟、高稳定、可验证推理的技术前提。Gemma4通过动态门控优化显存-吞吐权衡,Qwen3将工具调用与视觉编码深度耦合进token层,GLM-5则以依存句法树和自验证逻辑链强化中文语义可信度。这些能力直接决定RAG系统OOM风险、客服对话CSAT提升、金融合规文本解析准确率等关键业务指标。本文聚焦三款主流开源模型在Tokenizer适配、量化格式兼容、推理参数调优及

Envisage123 444

单卡 48GB 实测:Gemma 4 26B A4B、Gemma 4 31B、gpt-oss-20b 三模型部署与并发对比

Gemma 4 和 gpt-oss-20b 都是 2026 年最热的开源模型,但"能不能跑"和"跑得怎么样"是两回事。本文基于同一台服务器、同系列 48GB 显卡的真实测试数据,从部署踩坑、显存占用、长上下文并发吞吐、冷热启动差异等维度做了一次完整的横向对比。所有数据均来自实测,不依赖官方 benchmark 推断。

weixin_41338279的博客 2069

Gemma 4开源模型:多模态+Agent+端侧部署一体化落地实践

多模态大模型是指能统一处理文本、图像、音频等异构数据的AI系统,其核心在于跨模态语义对齐与联合推理。Gemma 4通过Unified Semantic Projector(USP)实现模态无关的隐空间映射,结合原生Agent支持和端侧可部署架构,突破了传统方案中模型拼接、协议合规、硬件适配三大瓶颈。它不仅支持函数调用内化、结构化输出硬约束和可控思考模式,更在树莓派、Jetson、H100等多级设备上验证了低功耗、高稳定、长上下文的实际能力。作为Apache 2.0许可的全栈可用模型,Gemma 4正推动本地

weixin_34245082的博客 458

【大模型】Gemma4在ROCm和vLLM部署

Google DeepMind推出的Gemma4是一款高效开源大模型系列,主打参数效率,能在本地设备(如手机、电脑)上高效运行。相比前代Gemma3,Gemma4在速度、功耗、数学和编程能力上均有显著提升。它提供多个版本,从轻量级到高性能旗舰,满足不同需求。测试环境采用AMD显卡和ROCm平台进行推理部署,云端服务提供免费测试资源。部署步骤包括环境准备、模型下载和vLLM服务启动,最终实现与Gemma4的对话交互。后续还可进行微调以优化模型性能。

qq_40734883的博客 321

医学影像处理实战:用SimpleITK将CT数据重采样到统一尺寸(附完整代码)

本文针对医学影像分析中多源CT数据尺寸不一致导致深度学习模型训练失败的问题,提供了基于SimpleITK的实战解决方案。通过深入解析图像尺寸与间距的关系,详细阐述了如何通过调整体素间距进行重采样,而非简单补零,从而在保持图像物理尺寸不变的前提下,将数据统一到固定尺寸,确保输入网络的3D数据空间对齐且解剖信息准确。

weixin_29062671的博客 269

SAP FI模块实操:用F-28和F-32搞定客户回款与手动清账,别再让未清项报表一团糟

本文详细解析了SAP FI模块中F-28和F-32事务代码在客户回款与手动清账中的实操应用,帮助财务人员高效管理未清项报表。通过标准清账六步法和手动清账实战技巧,解决因操作不规范导致的账务混乱问题,提升应收账款管理效率。

weixin_30292843的博客 451

Gemma-4-31B-it到底强在哪:从 vLLM 启动到 OpenCode 接入,我把整条链路跑通了

Gemma-4-31B-it到底强在哪:从 vLLM 启动到 OpenCode 接入,我把整条链路跑通了

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

西电计科数据库系统期末复习笔记

本人西电19计科,数据库系统98,这是复习期间整理的笔记,基本涵盖了课程全部重点,有需要的学弟学妹可以在复习的时候参考一下。

Polaris的博客 8593

2026 大模型双雄对决:Qwen3.6 vs Gemma 4 深度解析

维度Qwen3.6Gemma 4综合性能⭐⭐⭐⭐⭐⭐⭐⭐中文能力⭐⭐⭐⭐⭐⭐⭐⭐开源友好⭐⭐⭐⭐⭐⭐⭐部署灵活⭐⭐⭐⭐⭐⭐⭐⭐⭐多模态⭐⭐⭐⭐⭐⭐⭐⭐⭐代码能力⭐⭐⭐⭐⭐⭐⭐⭐如果你的项目需要中文优化和多模态能力,选择Qwen3.6如果你的项目需要完全开源和本地部署,选择Gemma 4如果预算充足,可以两者结合使用,发挥各自优势。

vantasy的博客 2932

【QNX+Android虚拟化方案】01 - 芯片介绍

【QNX+Android虚拟化方案】01 - 芯片介绍

|~~~热爱生活、努力学习的小伙汁~~~| 2944

如何使用Python爬取并保存网页上的所有附件

爬虫(Crawler)是一种自动化程序,它通过模拟人工访问网页并下载网页上的数据或文件,常用于数据采集和分析。爬虫通常以“爬取”的形式自动浏览和提取网页中的各种信息。本文详细介绍了如何使用Python爬取并保存网页中的附件文件,涵盖了网页解析、文件下载、多线程与异步优化等内容。希望通过本文的讲解,能够帮助你理解并掌握附件爬取的技巧。在实际应用中,爬虫开发不仅需要解决技术问题,还要遵守网络道德和法律法规,避免不当使用爬虫造成负面影响。

2201_76125261的博客 965

Gemma 4私有化部署与多模态处理实战指南

大语言模型(LLM)的私有化部署是当前AI领域的重要实践,尤其在数据隐私敏感的行业如医疗和金融中尤为重要。通过本地部署,开发者可以完全掌控模型运行环境,灵活调整参数配置。Gemma 4作为新一代开源模型,以其高效的硬件资源利用率和强大的多模态处理能力脱颖而出。本文以Gemma 4为例,详细介绍了从环境准备、模型部署到多模态处理(文本、图像、音频、视频)的全流程实战,并对比了其与Qwen 3.5的性能差异。私有化部署不仅提升了数据安全性,还优化了模型推理速度,适合个人开发者和小型团队快速上手。

weixin_28678151的博客 56

数据处理和分析之数据聚类:层次聚类(Hierarchical Clustering):单链接层次聚类方法

单链接层次聚类(Single-Linkage Hierarchical Clustering)是凝聚型层次聚类的一种,它基于数据点之间的最小距离来定义聚类间的相似性。在单链接层次聚类中,两个聚类之间的距离定义为这两个聚类中任意两个数据点之间的最短距离。这种聚类方法倾向于形成链状或线性的聚类,因为聚类的边界是由最远的数据点决定的,而不是聚类的平均或中心位置。单链接层次聚类通过计算簇间最近点的距离来决定簇的合并,这种方法简单直观,但可能导致簇的形状不规则,尤其是在数据点分布不均匀的情况下。

2401_87715305的博客 1442

10个CVRR模型家族横向对比:为什么选择Gemma4-12B-CVRR(Qwen2.5-VL / Gemma3 / InternVL3选型指南)

Gemma4-12B-CVRR 是 CVRR(Causal Visual Recurrent Reasoning,因果视觉循环推理)模型家族的一员:它在 Gemma 4 12B 视觉语言基座之上,加入了一个"必须依赖视觉推理状态才能作答"的循环机制。本文横向对比 Qwen2.5-VL、Gemma3、Gemma4、InternVL3 共 10 个 CVRR 模型,并给出选型建议与快速上手步骤。 #

gitblog_00851的博客 519

学Simulink--基于高比例可再生能源渗透的复杂电网建模场景实例:新能源高渗透下传统同步机主导系统的动态响应建模

摘要:本文详细介绍使用MATLAB/Simulink构建高比例可再生能源渗透的电网系统模型。主要内容包括:系统结构设计(新能源发电、同步发电机、电网等模块)、详细建模步骤(从创建项目到集成各模块)、关键控制算法实现(如MPPT和调速器控制)以及仿真分析。通过该模型可研究新能源高渗透率下传统同步机系统的动态响应特性,为电力系统稳定性分析提供有效工具。文章包含示例代码和典型仿真结果,展示了频率、电压等关键参数的稳定性表现。

xiaoheshang_123的博客 86

Android oom_adj 更新原理(一)

通过之前的两篇博文《lmkd 机制详解》和《lmkd中adj score的算法剖析》中,根据计算出来的 min_score_adj 选择大于该值的 oom_adj 的进程进行 kill 处理。oom_adj 随着应用状态的不同其值也是伴随着变化的。本文将通过源码剖析 oom_adj 更新的原理。

私房菜 2652

MLX-VLM多模态革命:如何用单一模型处理图像、音频和视频

**MLX-VLM** 是一款革命性的多模态AI工具,专为在Mac设备上高效运行视觉语言模型和全模态模型而设计。这个强大的开源项目让开发者和AI爱好者能够在本地轻松处理图像、音频和视频内容,无需依赖云端服务,真正实现了**多模态AI的本地化部署**。 ## 🚀 MLX-VLM是什么?为什么它如此重要? MLX-VLM是一个基于Apple MLX框架的视觉语言模型推理和微调工具包。它支持最新的

gitblog_00461的博客 890

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

为什么选择Gemma-4-26B-A4B-it-mxfp4:与其他视觉语言模型的终极对比分析

在当今AI快速发展的时代,视觉语言模型已经成为人工智能领域的重要突破。面对众多选择,Gemma-4-26B-A4B-it-mxfp4凭借其独特的技术优势脱颖而出。本文将为您深入分析这款模型与其他主流视觉语言模型的关键差异,帮助您做出明智的选择。💡 ## Gemma-4-26B-A4B-it-mxfp4的核心优势 ### 1. 高效的4位MXFP4量化技术 Gemma-4-26B-A4B-i

gitblog_01123的博客 774

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

RPCS3 存档迁移:3 步搬通实机与模拟器

PS3 实机存档和 RPCS3 里的存档本质是同一批普通文件文件夹,区别只在物理位置和管理入口。这套流程覆盖两个方向:A 路是实机 → 模拟器,把实机存档搬进 RPCS3;B 路是模拟器 → 实机,把模拟器产出的进度带回 PS3。两条路共用同一套命名与字段规则,全程不需要改动游戏数据,也不涉及解密。 | 你想做的事 | 你属于 | | --- | --- | | 把实机里的存档搬进 RPCS3

gitblog_00020的博客 430

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Ventoy 启动界面主题定制教程:5 分钟自定义背景、配色、字体与菜单

Ventoy 是一款可启动 U 盘引导方案,ISO 拷入 U 盘即可直接引导安装,但默认启动界面固定不变。本文带你完成一套完整的 Ventoy 主题定制:换主题、改菜单配色、换背景图、替换字体、调整菜单框,完成后开机画面完全按你的风格呈现。全程约 5 分钟,不需要重装 U 盘。 [![Ventoy 启动界面菜单与功能按键示意](https://raw.gitcode.com/GitHub_Tre

gitblog_01004的博客 737

Gemma-4-12B-it-assistant vs 其他AI模型:终极性能对比与选择指南

在选择AI助手模型时,Gemma-4-12B-it-assistant凭借其卓越的多模态能力和高效的推理性能脱颖而出。这款由Google DeepMind开发的120亿参数开源模型,在文本生成、代码编写、图像理解和音频处理等方面都展现出强大的竞争力。本文将为您详细对比Gemma-4-12B-it-assistant与其他主流AI模型的性能差异,并提供实用的选择建议,帮助您找到最适合项目需求的AI助

gitblog_01162的博客 693
上一篇: vLLM Ascend 是最优解吗?基于 mis-tei 实现昇腾上的高性能 Embedding/Reranker 模型推理
下一篇: vLLM 新参数 performance-mode 能带来多大提升?Qwen3.5 实测告诉你答案
GPUStack
博客等级 码龄2年 150粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值