LLM实战测试:ollama + gemma3

用Ollama 对 Gemma3多模态27B版本做功能、性能测试

谷歌刚刚推出的开放权重LLM:Gemma 3。它有四种大小,10亿、40亿、120亿和270亿个参数,有基础(预训练)和指令调优版本。Gemma 3 MultiModel人如其名,支持多模式!40亿、12亿和270亿参数模型可以处理图像和文本,而1B变体仅处理文本。

今天咱来试试看。

租的AutoDL的GPU服务器做的测试

•软件环境

PyTorch 2.5.1、Python 3.12(ubuntu22.04)、Cuda 12.1

•硬件环境

○GPU:RTX 4090(24GB) * 2

○CPU:64 vCPU Intel(R) Xeon(R) Gold 6430

○内存:480G(至少需要382G)

○硬盘:1.8T(实际使用需要380G左右)

默认认为你已经安装好了conda,如果还没安装的话,先搜索一下conda安装

conda create --prefix=/root/autodl-tmp/jacky/envs/vllm-gemma3 python==3.12.3
conda activate /root/autodl-tmp/jacky/envs/vllm-gemma3/
pip install vllm

Gemma3依赖一些Google新提供的transformers的接口,因此必须先更新一下transformers。

pip install git+https://github.com/huggingface/transformers@v4.49.0-Gemma-3

建议走一下github加速器:ghfast.top

pip install git+https://ghfast.top/https://github.com/huggingface/transformers@v4.49.0-Gemma-3
  • 下载保存路径

export HF_HOME=”/root/autodl-tmp/HF_download”

  • 科学上网代理

setproxy.py代码:

import subprocess
import os
result = subprocess.run('bash -c "source /etc/network_turbo && env | grep proxy"', shell=True, capture_output=True, text=True)
output = result.stdout
for line in output.splitlines():
    if '=' in line:
        var, value = line.split('=', 1)
        os.environ[var] = value

执行 python setproxy.py 设置代理环境变量

  • 国内镜像
export HF_ENDPOINT=https://hf-mirror.com

然后再下载:

huggingface-cli download --resume-download unsloth/gemma-3-27b-it-bnb-4bit --include "*"

共16个G多一点。慢慢来。

运行前请确保ollama服务已启动,若未启动的话,请在另一个命令行中先启动一下:

ollama serve

若ollama后台服务已经启动,则可以开始加载运行gemma3了

ollama run gemma3:27b

碰到的问题:this model is not supported

若是发现报错如下

Error: llama runner process has terminated:
this model is not supported by your version of Ollama.
You may need to upgrade

解决方案:升级ollama

curl -fsSL https://ollama.com/install.sh | sh

apt-get update
apt-get install pciutils build-essential cmake curl libcurl4-openssl-dev -y
git clone https://github.com/ggerganov/llama.cpp
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=ON -DGGML_CUDA=ON -DLLAMA_CURL=ON
cmake --build llama.cpp/build --config Release -j --clean-first --target llama-quantize llama-cli llama-gguf-split
cp llama.cpp/build/bin/llama-* llama.cpp
vllm serve unsloth/gemma-3-27b-it-bnb-4bit --max-model-len 5680

失败原因:vllm说,gemma3是什么鬼,我还不认识呐。这个模型太新了,vllm还不认识,所以不支持。暂放弃。

注:ollama使用的是11434端口

!/usr/bin/env bash

export DATA_DIR="$(pwd)/data"
export ENABLE_OLLAMA_API=False
export ENABLE_OPENAI_API=True
export OPENAI_API_KEY="dont_change_this_cuz_openai_is_the_mcdonalds_of_ai"
export OPENAI_API_BASE_URL="http://127.0.0.1:11434/v1" # <--- 需与ktransformers/llama.cpp的API配置匹配

export DEFAULT_MODELS="openai/foo/bar" # <--- 保留注释,此参数用于litellm接入

export WEBUI_AUTH=False
export DEFAULT_USER_ROLE="admin"
export HOST=127.0.0.1
export PORT=3000 # <--- open-webui网页服务端口
export ENABLE_TAGS_GENERATION=False
export ENABLE_AUTOCOMPLETE_GENERATION=False #或许目前需手动在界面禁用该功能???

export TITLE_GENERATION_PROMPT_TEMPLATE=""
open-webui serve \
--host $HOST \
--port $PORT

启用API转发

ssh -CNg -L 8080:127.0.0.1:8000 root@connect.nmb1.seetacloud.com -p 22305

启用Open WebUI转发

ssh -CNg -L 3000:127.0.0.1:3000 root@connect.nmb1.seetacloud.com -p 22305

测试Completion API

curl http://localhost:8000/v1/completions \
-H “Content-Type: application/json” \
-d ‘{
“model”: “Qwen/QwQ-32B-AWQ”,
“prompt”: “San Francisco is a”,
“max_tokens”: 7,
“temperature”: 0
}’

测试Chat Completion API

curl http://localhost:8000/v1/chat/completions \

-H "Content-Type: application/json" \
-d '{
    "model": "Qwen/QwQ-32B-AWQ",
    "messages": [
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who won the world series in 2020?"}
    ]
}'

在实际测试中发现这个版本的gemma3-27B虽然号称支持140种语言,但是无论我输入的问题是中文的,还是英文的,它给我的响应都是英文的,时间关系,暂未做进一步的探究。

但是它用一张4090跑起来,速度还是蛮快的,至少证明可用。不过近期各个大厂出都在拼命的出各种模型,咱暂时还没时间一个个来做非常深入的测试和验证。

感兴趣并且有时间的朋友可以来试试。

Leave a comment

Your email address will not be published. Required fields are marked *