Google 发布了最新的开源大模型 Gemma 2,本地快速部署和体验

news2025/1/11 6:55:31

Gemma 2 是 Google 最新发布的开源大语言模型。它有两种规模:90 亿(9B)参数和 270 亿(27B)参数,分别具有基础(预训练)和指令调优版本,拥有 8K Tokens 的上下文长度:

  • Gemma-2-9b: 90 亿参数基础模型版本
  • Gemma-2-9b-it: 90 亿参数基础模型的指令调优版本
  • Gemma-2-27B: 270 亿参数基础模型版本
  • Gemma-2-27B-it: 270 亿参数基础模型的指令调优版本

Gemma 2大模型
Gemma 2 模型的训练数据量约为其第一代的两倍,总计 13 万亿 Tokens(270 亿模型)和 8 万亿 Tokens(90 亿模型)的网页数据(主要是英语)、代码和数学数据。同时,相比较第一代,Gemma 2 的推理性能更高、效率更高,并在安全性方面取得了重大进步。

许可协议: Gemma 2 与第一代使用相同的许可证,这是一个允许再分发、微调、商业用途和衍生作品的宽松许可证。

性能优异: Gemma 2 27B 版本在同规模级别中性能最佳,甚至比两倍于其尺寸的机型更具竞争力。9B 版本的性能在同类产品中也处于领先地位,超过了 Llama 3 8B 和其他同规模的开放模型。

Gemma 2评测对比

其他关于 Gemma 2 的介绍信息,可以参见 Google 官方博客:https://blog.google/technology/developers/google-gemma-2/

Google 重磅发布产品,我们肯定需要体验以下。今天,老牛同学就和大家一起,分别通过 2 种方式在个人笔记本电脑本地部署和体验 Gemma2-9B 大模型。

方式一:通过 Ollama 部署大模型

关于 Ollama 是什么以及它的使用方式,老牛同学前面的博文中有介绍,本文不在赘述,感兴趣的朋友可以看一下之前的博文。

Ollama 管理和维护 Gemma 2 比较简单,主要流程如下:

  1. 下载并安装 Ollama 软件(Windows/Linux/MacOS 均支持):https://ollama.com/download
  2. 通过 Ollama 下载并启动 Gemma 2 大模型:
ollama run gemma2:9b

模型文件大小为 5.4GB 左右,需要耐心等待模型下载完成。下载完成之后,Ollama 自动启动模型,就可以通过 Ollama 进行对话了:

Gemma 2对话界面

如果觉得通过控制台的方式对话体验不好,可以部署 WebUI 的方式与模型对话。WebUI 的部署方式,可以参见老牛同学之前的博文:https://mp.weixin.qq.com/s/P_ufvz4MWVSqv_VM-rJp9w,主要部署步骤:

  1. 下载并安装 Node.js 工具:https://nodejs.org/zh-cn
  2. 下载ollama-webui工程代码:git clone https://github.com/ollama-webui/ollama-webui-lite ollama-webui
  3. 切换ollama-webui代码的目录:cd ollama-webui
  4. 设置 Node.js 工具包镜像源(下载提速):npm config set registry http://mirrors.cloud.tencent.com/npm/
  5. 安装 Node.js 依赖的工具包:npm install
  6. 最后,启动 Web 可视化界面:npm run dev

然后,通过浏览器打开 WebUI 对话界面了:http://localhost:3000/

WebUI对话界面示例

方式二:通过 GGUF 部署大模型

GGUF模型文件格式是为了快速推理和优化内存使用而设计的,支持更复杂的令牌化过程和特殊令牌处理,能更好地应对多样化的语言模型需求。GGUF就一个文件,也简化了模型交换和部署的过程,它对促进模型的普及和应用有着积极作用。

GGUF 模型文件列表:https://modelscope.cn/models/LLM-Research/gemma-2-9b-it-GGUF/files

GGUF 模型文件列表

GGUF 模型文件名称格式,如gemma-2-9b-it-Q5_K_M.gguf等:

  • it代表本模型是对基线模型进行了微调,用于更好地理解和生成遵循指令(instruction-following)的文本,以提供符合要求的响应

  • Q4/Q5 等代表模型权重的量化位数(其中QQuantization的缩小,即量化),是一种模型压缩技术,用于减少模型大小,同时降低对计算资源的需求(特别是内存),但又尽量保持模型的性能;数字45则代表量化精度的位数(Q4 是 4 位,Q5 是 5 位等),精度越高模型体积和内存使用也会越大,但仍然远小于未量化的基线模型

  • K_M/K_S代表了与注意力机制相关的特定配置,K_M 可能是指 Key 的 Mask,即用来屏蔽某些位置的键值对,防止它们在注意力计算中被考虑;而 K_S 可能是指 Key 的 Scale 或 Size,涉及到键向量缩放,这是在多头注意力机制中常见的操作,以稳定梯度

点击下载图标即可下载,由于文件较大,浏览器的下载容易过程容易终端,重试可继续下载(假设下载本地的文件名为:Gemma-2-9B-it-Q5_K_M.gguf):

  1. 打开一个终端窗口,切换到 GGUF 文件所在目录:cd Gemma2
  2. 切换 Python 虚拟环境:conda activate PY3.12
  3. 安装 Python 依赖包:
pip install llama-cpp-python
pip install openai
pip install uvicorn
pip install starlette
pip install fastapi
pip install sse_starlette
pip install starlette_context
pip install pydantic_settings

或者,我们也可以一把进行安装:pip install -r requirements.txt

# requirements.txt
llama-cpp-python
openai
uvicorn
starlette
fastapi
sse_starlette
starlette_context
pydantic_settings

最后,启动大模型:

# 启动Llama大模型
python -m llama_cpp.server --host 0.0.0.0 --model ./Gemma-2-9B-it-Q5_K_M.gguf --n_ctx 2048

模型启动命令中,n_ctx 2048代表单次回话最大 Token 数量。

启动成功,我们应该看到类似如下的信息:INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

Gemma 启动成功

最后一步: 我们使用 openai 库在个人电脑上快速搭建客户端。Python 客户端代码(Client.py)如下:

  1. 我们使用OpenAI接口来与 Gemma 交互,上面启动模型的最后,我们看到服务端 IP 是本地,端口是8000
  2. 接着,我们使用 2 条信息对历史记录进行初始化:第一个条是系统信息,第二个条是要求模型自我介绍的用户提示,为了避免长篇大论,我这里限制了回答的长度和字数
  3. 接下来,通过>提示符等待用户(即我们)输入,输入byequitexit任意一个即代表退出客户端
# Client.py
from openai import OpenAI

# 注意服务端端口,因为是本地,所以不需要api_key
client = OpenAI(base_url="http://localhost:8000/v1", api_key="EMPTY")

# 对话历史:设定系统角色是一个只能助理,同时提交“自我介绍”问题
history = [
    {"role": "system", "content": "你是一个智能助理,你的回答总是正确的、有用的和内容非常精简."},
    {"role": "user", "content": "请用中文进行自我介绍,要求不能超过5句话,总字数不超过100个字。"},
]
print("\033[92;1m")

# 首次自我介绍完毕,接下来是等代码我们的提示
while True:
    completion = client.chat.completions.create(
        model="local-model",
        messages=history,
        temperature=0.7,
        stream=True,
    )

    new_message = {"role": "assistant", "content": ""}

    for chunk in completion:
        if chunk.choices[0].delta.content:
            print(chunk.choices[0].delta.content, end="", flush=True)
            new_message["content"] += chunk.choices[0].delta.content

    history.append(new_message)
    print("\033[91;1m")

    userinput = input("> ")
    if userinput.lower() in ["bye", "quit", "exit"]: # 我们输入bye/quit/exit等均退出客户端
        print("\033[0mBYE BYE!")
        break

    history.append({"role": "user", "content": userinput})
    print("\033[92;1m")

我们打开一个 Terminal 终端,运行客户端:python Client.py

Gemma 对话

恭喜你,第二种方式也部署成功了,我们可以愉快地与大模型进行对话了,包括把大模型作为我们 Code Copilot 的底层模型,部署我们团队私有化的 Code Copilot 的底层模型,部署我们团队私有化的了:个人或团队私有化 Code Copilot 部署和使用教程

总结

以上是老牛同学和大家一起采用 2 种方式快速部署 Gemma 2 大模型,这 2 种方式是同样的方式,同样适用于其他大模型。

相对来说,Ollama 部署配置比较简单,目前常见的大模型均支持 Ollama 推理协议(包括:Qwen/Lllama/Phi 等大模型),推荐使用;同时,GGUF 部署方式仅需要依赖一个模型文件,使用 Llama.cpp 框架进行推理,依赖也少部署也很方便,同样推荐使用。如何抉择,就看我们自己喜好了!

Gemma 2 在内最近发布的开源大模型,可以看出当前大模型研究的趋势,即探索用更轻量级、更实用的模型来实现更强的性能,并确保易部署,以更好地满足不同用户的需求。老牛同学觉得未来低成本、定制化的垂直场景小模型将会越来越多,也会越来越受欢迎!


关注本公众号,我们共同学习交流进步 👇🏻👇🏻👇🏻

微信公众号:老牛同学

Phi-3 开源大模型

Phi-3 模型手机部署教程(微软发布的可与 GPT-3.5 媲美的小模型)

Qwen2-7B 开源大模型

Qwen2 阿里最强开源大模型(Qwen2-7B)本地部署、API 调用和 WebUI 对话机器人

Llama-3-8B 开源大模型

玩转 AI,笔记本电脑安装属于自己的 Llama 3 8B 大模型和对话客户端

一文彻底整明白,基于 Ollama 工具的 LLM 大语言模型 Web 可视化对话机器人部署指南

基于 Llama 3 搭建中文版(Llama3-Chinese-Chat)大模型对话聊天机器人

GLM-4-9B 开源大模型

本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验

ChatTTS 文本转语音模型

ChatTTS 开源文本转语音模型本地部署、API 使用和搭建 WebUI 界面

Stable Diffusion 3 文生图模型

Stable Diffusion 3 文生图“开源英雄”大模型本地部署和使用教程,轻松实现 AI 绘图自由

大模型应用实战

使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程

大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)

借助 AI 大模型,三分钟原创一部儿童故事短视频(附完整操作步骤)

高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能

Python 小游戏

AI 已来,我与 AI 一起用 Python 编写了一个消消乐小游戏

Python 游戏编程:一步步用 Python 打造经典贪吃蛇小游戏


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1889244.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gltf格式数据获取

之前写过两个文章,描述了三维模型怎样转换为gltf格式 SuperMap webgl 中使用的gltf模型制作方法_gltf 制作-CSDN博客 OBJ转GLTF格式步骤-CSDN博客 这两篇文章都可以将三维通用格式数据转换为gltf格式,但是过程都比较长,有的还需要安装开发…

Qt——升级系列(Level Eight):界面优化

目录 QSS 背景介绍 基本语法 QSS设置方式 指定控件样式设置 全局样式设置 从文件加载样式表 使用Qt Designer 编辑样式 选择器 选择器概况 子控件选择器 伪类选择器 样式属性 盒模型 控件样式示例 按钮 复选框、单选框 输入框 列表 菜单栏 登录界面 绘图 基本概念 绘制各种形…

探索哈希函数:数据完整性的守护者

引言 银行在处理数以百万计的交易时,如何确保每一笔交易都没有出错?快递公司如何跟踪成千上万的包裹,确保每个包裹在运输过程中没有丢失或被替换?医院和诊所为庞大的患者提供有效的医疗保健服务,如何确保每个患者的医疗…

Arthas实战(1)- 运行Arthas

1. 下载Arthas 下载到服务器: wget https://github.com/alibaba/arthas/releases/download/arthas-all-3.7.1/arthas-bin.zip解压 Arthas unzip arthas-bin.zip -d arthas删除压缩包 rm -f arthas-bin.zip 2. 启动Arthas 运行 Arthas java -jar arthas/arthas-bo…

vivado联合modelsim仿真

一. 编译Vivado仿真库 打开Vivado,Tools -> Compile Simulation Libraries 二. 设置仿真工具和库路径 因为新建工程的默认仿真工具是Vivado Simulator,所以要使用Modelsim仿真,每个新工程都要设置一次,方法如下: …

【测试】五子棋项目测试报告

目录 一、项目概述及测试目标 二、项目功能 三、测试类型 1)功能测试 ​编辑 2)自动化测试 四、测试总结 一、项目概述及测试目标 本项目是一个基于Web的五子棋实时对战应用,旨在提供用户之间的多人实时游戏体验。项目采用前…

阿里巴巴图标库iconfont的使用方式

文章目录 什么是 iconfong创建一个自己的项目如何使用Unicode 使用方法Font class 使用方式Symbol 使用方式还有一种使用方式 在线链接(不推荐,但可用于测试) 什么是 iconfong Iconfont 是一种图标字体服务。它将各种图标设计转换为字体格式…

pgrouting使用

pgRouting是一个为PostgreSQL和PostGIS提供路由功能的开源库,它支持复杂的图论算法,用于在地理网络中进行最短路径搜索。以下是pgRouting的一些应用实例。 注意事项: 1、路网表中的id、source、target必须是int类型,否则创建拓扑…

Docker(二):Docker image Docker Container

本文将介绍 Docker 映像和容器以及 docker 文件之间的差异与联系,本文还将解释如何以及何时使用它们。 什么是 Dockerfile? 它是一个简单的文本文件,包含命令或过程的集合。我们运行的这些命令和准则作用于配置为创建新的 Docker 镜像的基本…

【linux学习---1】点亮一个LED---驱动一个GPIO

文章目录 1、原理图找对应引脚2、IO复用3、IO配置4、GPIO配置5、GPIO时钟使能6、总结 1、原理图找对应引脚 从上图 可以看出, 蜂鸣器 接到了 BEEP 上, BEEP 就是 GPIO5_IO05 2、IO复用 查找IMX6UL参考手册 和 STM32一样,如果某个 IO 要作为…

[不可抗拒的吸引]韩漫日漫无删减完整版,免费在线观看漫画

[不可抗拒的吸引]韩漫日漫无删减完整版,免费在线观看漫画 不能多说,怕审-核不过,自己看图吧。 食用方法: https://blog.csdn.net/qq_42098517/article/details/140079915 https://gitee.com/zzwuweijun/manhua/blob/master/READ…

入门Axure:快速掌握原型设计技能

2002 年,维克托和马丁在旧金山湾区的一家初创公司工作,发现自己一再被软件开发生命周期的限制所困扰,而且产品团队在编写规范之前很难评估他们的解决方案,开发人员经常不理解(或不阅读)给出的规范&#xff…

springboot城市菜园共享系统00524

目 录 摘要 1 绪论 1.1 研究背景与意义 1.2 国内外研究现状和发展趋势 1.3论文结构与章节安排 2 城市菜园共享系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3 数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 2.3.…

Guitar Pro怎么把和弦图放在谱子上方 Guitar Pro怎么设置和弦

在音乐中,和弦是音乐的基本单位。而吉他和弦是指在吉他上按压弦与弹奏弦的组合,我们可以在乐谱中通过和弦图来表现吉他的按压点位,以及弹奏的弦。下面我们看看Guitar Pro怎么把和弦图放在谱子上方,Guitar Pro怎么设置和弦的相关内…

Python+pytest接口自动化之token关联登录的实现

在PC端登录公司的后台管理系统或在手机上登录某个APP时,经常会发现登录成功后,返回参数中会包含token,它的值为一段较长的字符串,而后续去请求的请求头中都需要带上这个token作为参数,否则就提示需要先登录。 这其实就…

【Python】从文本字符串中提取数字、电话号码、日期、网址的方法汇总(全!)

我们在做数据清洗的时候,有时候会遇到将一堆文本中提取我们需要的内容,最常见的是,从一大段文本中提取出数字、电话号码、日期、网址等。而在Python中,正则表达式re,则可以满足我们从文本中提取数字、电话号码和日期等…

测试Andrew NG的语言翻译Agent

我正在测试 Andrew Ng 的语言翻译 A​​I 代理系统及其在逆变换下的稳定性。 给定源语言的文本,我们应用翻译函数 f,然后应用 f 的逆。它应该是不变的: 但是,数学与语言翻译有什么关系? 在完美的系统中,从…

德翔海运核心盈利指标大幅下滑,大额分红56亿不缺钱仍募资补流

《港湾商业观察》黄懿 5月30日,航运公司德翔海运(TS Lines,下称“德翔海运”)再一次向港交所递交招股书,计划在主板挂牌上市,由摩根大通和招商证券国际担任联席保荐人。 据悉,2022年至2023年&…

【js】数组元素拼接、数组元素类型转换

一、数组元素拼接 二、数组元素类型转换 1、字符串数组 转换成 数字型数组 [1, 2, 3].map(Number) // [1,2,3] 2、数字型数组 转换成 字符串数组 [1, 2, 3].map(String) // [1, 2, 3]

Java语法 小白入门参考资料 数组

数组的基本概念 数组:可以看成是相同类型元素的一个集合。在内存中是一段连续的空间。 比如现实中的车库: 在java中,包含6个整形类型元素的数组,就相当于上图中连在一起的6个车位,从上图中可以看到: 数组…