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

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 打造经典贪吃蛇小游戏


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Akamai+Noname强强联合 | API安全再加强

最近,Akamai正式完成了对Noname Security的收购。本文我们将向大家介绍,经过本次收购后,Akamai在保护API安全性方面的后续计划和未来愿景。 Noname Security是市场上领先的API安全供应商之一,此次收购将让Akamai能更好地满足日益增…

【C语言】extern 关键字

在C语言中,extern关键字用于声明一个变量或函数是定义在另一个文件中的。它使得在多个文件之间共享变量或函数成为可能。extern关键字常见于大型项目中,通常用于声明全局变量或函数,这些变量或函数的定义位于其他文件中。 基本用法 变量声明…

智能语音门锁:置入NV170D语音芯片ic 打造便捷生活新体验

一、智能门锁语音芯片开发背景 随着科技的飞速发展,传统门锁的局限性日益凸显,无法满足现代人对高效、安全生活的需求。在这样的时代背景下,智能门锁应运而生,它不仅继承了传统门锁的基本功能,更通过融入先进的科技元素…

YOLOv8改进 | 卷积模块 | SAConv可切换空洞卷积

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

市场规模5万亿,护理员缺口550万,商业护理企业如何解决服务供给难题?

干货抢先看 1. 据统计,我国失能、半失能老人数量约4400万,商业护理服务市场规模达5万亿。然而,当前养老护理员缺口巨大,人员的供需不匹配是很多养老服务企业需要克服的难题。 2. 当前居家护理服务的主要市场参与者分为两类&…

儿童无语言是否等同于自闭症?全面解析与认识自闭症

在探讨自闭症与儿童语言发展之间的关系时,我们首先需要明确的是,自闭症并非单一由语言缺失所定义,而是一个复杂的神经发育障碍,其核心特征包括社交互动和沟通能力的显著受损,以及重复、刻板的行为模式、兴趣或活动。 …

基于SpringBoot高校体育运动会管理系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…

【HICE】基于httpd下的web服务器搭建

1.下载httpd: dnf install httpd -y 2.进入httpd中: cd /etc/httpd cd conf.d 3.编辑一个新的vhost.conf 4.重启httpd服务 systemctl restart httpd 5.关闭防火墙 systemctl stop firewalld setenforce 0 6.文本写入(网页编辑&…

第6章:结构化开发方法

第6章:结构化开发方法 系统设计基本原理 1、抽象 抽象是一种设计技术,重点说明一个实体的本质方面,而忽略或者掩盖不是很重要或非本质的方面。 模块化 模块化是指将一个待开发的软件分解成若干个小的、简单的部分一模块,每个模…

尝试修改苍穹外卖为”李小罗餐厅“

学习苍穹外卖后,将其修改为自己所需要的项目,也是对苍穹外卖项目的加深理解 对项目之间的连接等关系进一步清晰,那么便开始吧 d1_开始修改 修改名字为”李小罗餐厅“ src\views\login\index.vue src\router.ts 结果展示 修改进来之后的展示…

从0到1手写vue源码

模版引擎 数组join法(字符串) es6反引号法(模版字符串换行) mustache (小胡子) 引入mustache 模版引擎的使用 mustache.render(templatestr,data)

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

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

ctfshow sql注入

开启其他注入 web221 limit注入 给出查询语句 以及过滤逻辑为空 获取数据库名即可 limit 用于控制返回结果行数 limit后面似乎只能跟PROCEDURE ANALYSE( ) 函数了 PROCEDURE ANALYSE( ) 函数用于分析查询结果的函数 参数是用来控制函数的 这个参数的位置 可以放入报错函数 原…

centos7.9 python3环境(virtualenv)搭建及所遇错误

人望山,鱼窥荷,真正喜欢想要的,没有一样可以轻易得到。 目录 # 1. 解决版本冲突问题--建议不要跳过(一定要查看软链接是否链接正确) # 2. python3(virtualenv)环境搭建 # 3. virtualenv常用命令 # 4. 所遇错误解析 ## 4.1 遇到 No modul…

关于python编程从入门到实践书中的外星人项目的 if event.key == pygame.K_q: sys.exit()失败问题

按q没有退出程序。原因是输入法中英文问题。 本人默认输入法是搜狗,其他的输入法如微软拼音等都行,但是注意运行的时候切换为英文。千万记得运行时不是中,而是英,按q才能退出

【数据结构】堆栈

目录 一、堆栈的基本概念 1.1 堆栈定义 1.2 堆栈操作 1.3 堆栈应用 二、顺序栈 2.1 定义 2.2 操作 2.3 C语言实现 三、共享栈 3.1 定义 3.2 操作 3.3 C语言实现 四、链式栈 4.1 定义 4.2 操作 4.3 C语言实现 五、总结 堆栈(Stack)重要的数据结构,它…

Python--线程基础

相关概念 线程是"轻量级进程",是计算机中CPU进行任务调度的最小单位。 线程属于进程的一部分,一个线程只能属于一个进程,而一个进程可以有多个线程,且至少有一个线程。 每个进程开始的创建的时候,都会随之创建一个主线程。 进程负责分配和隔离资源(CPU, 内存…

机器学习辅助的乙醇浓度检测

目录 1.为什么要机器学习 2. 神经网络一般组成 3.BP神经网络工作过程 4.评价指标 5.实操代码 1.为什么要用机器学习 人工分析大量的谐振模式,建立各种WGM的响应与未知目标之间的关系,是一个很大的挑战。机器学习(ML)能够自行识别全谱的全部特征。作为…

【Python】Python中的常量与变量

常量与变量 导读一、新建项目二、常量2.1 字面常量2.2 特殊常量 三、变量3.1 变量的定义3.2 变量的命名3.2.1 关键字 结语 导读 大家好,很高兴又和大家见面啦!!! 在上一篇内容中我们详细介绍了Python环境的搭建过程,…

《代号鸢》国服,能否推动国乙市场重新洗牌?

灵犀互娱《如鸢》顺利拿到版号,再次搅浑了国乙市场这潭水。 六月份游戏版号审批公布后,灵犀互娱运营的《如鸢》引起了关注,这个与《代号鸢》原名《三国志如鸢》雷同的名字,竟然让《代号鸢》玩家大面积破防了。 其实目前关于《如…