首页 > 其他分享 >Google 发布了最新的开源大模型 Gemma 2,本地快速部署和体验

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

时间:2024-07-02 23:19:51浏览次数:18  
标签:Google 部署 Gemma 开源 install Ollama 模型

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


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

标签:Google,部署,Gemma,开源,install,Ollama,模型
From: https://www.cnblogs.com/obullxl/p/18280727/NTopic2024070201

相关文章

  • 使用开源ntfy消息推送服务发布通知实现全平台接收通知
    说明:ntfy源代码:https://github.com/binwiederhier/ntfy.git官方未编译Windows版本,本人编译最新版本:(链接:https://pan.baidu.com/s/1pMsfqNb5FKHawTLUBTgjQA?pwd=f84u提取码:f84u)服务部署系统:WindowsServer2019或其他Windows系统简介ntfy是一个开源的消息通知服务,旨在简化消......
  • 开源语音转文本 Speech-to-Text 大模型实战之Whisper篇
    前言随着深度学习技术的不断发展,语音转文本(Speech-to-Text,STT)技术取得了显著的进步。开源社区涌现了许多高效的STT大模型,为开发者提供了强大的工具。本文将以OpenAI推出的Whisper模型为例,详细介绍如何使用该模型进行语音转文本的实战应用,从模型简介、环境搭建、数据准备到模型......
  • 超越所有SOTA达11%!媲美全监督方法 | UC伯克利开源UnSAM
    文章链接:https://arxiv.org/pdf/2406.20081github链接:https://github.com/frank-xwang/UnSAMSAM代表了计算机视觉领域,特别是图像分割领域的重大进步。对于需要详细分析和理解复杂视觉场景(如自动驾驶、医学成像和环境监控)的应用特别有价值。SAM的今天和大家一起学习的......
  • Google常用搜索语法
    1.常用内容搜索语法1、intitle:搜索网页标题中包含有特定字符的网页。例如输入“intitle:后台”,这样网页标题中带有c后台的网页都会被搜索出来。2、intext:搜索网页正文内容中的指定字符,例如输入“intext:后台管理”。这个语法类似我们平时在某些网站中使用的“文章内容搜索......
  • Next Terminal 一款简单开源轻量级堡垒机,Next Terminal使用详解-(值得收藏)
    1.安装部署:NextTerminal一款简单开源轻量级堡垒机,宝塔Docker安装部署教程一、NextTerminal介绍前沿:NextTerminal是一款开源的轻量级堡垒机与交互审计系统,旨在提供一个集中的、安全的远程访问解决方案,适用于管理不同协议下的服务器与设备。它通过一个统一的Web界......
  • 宝塔安装部署 ModstartCMS 一款开源内容管理系统的CMS-(值得收藏)
    一、ModstartCMS的简介ModStartCMS是一款基于Laravel框架的开源内容管理系统(CMS),它设计的目标是为了简化Web应用程序的开发流程。这个系统强调模块化开发,提供了丰富的模块和模板库,使得开发者能够迅速搭建功能全面的网站或后台管理系统。ModStart遵循Apache2.0开源协议,不仅......
  • 微软预计年底实现实时语音界面;硅基智能开源 AI 数字人交互平台 Duix丨 RTE 开发者日报
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • CentOS 7基于开源项目制作openssh9.8p1 rpm二进制包修复安全漏洞CVE-2024-6387 ——
    2024年7月1日,官方发布openssh9.8版本,修复了安全漏洞CVE-2024-6387。此处主要基于开源项目https://github.com/boypt/openssh-rpms.git制作,之前也有写过类似的文章,这里就不再赘述。CentOS5/6/7基于开源项目制作openssh9.6p1rpm包——筑梦之路_centos6openssh9.6rpm-CSD......
  • 最新uniapp壹牛数藏/NFT数字艺术藏品/开源无加密
    最新uniapp壹牛数藏/NFT数字艺术藏品/开源无加密下载地址:https://www.662p.com/3088/29710相比之前的版本,这个版本新增了不少功能,也修复了一些地方。1.平台新增用户找回密码功能2.平台新增短信注册(实名制功能)3.平台新增主图后台添加功能4.平台修复相关问题,系统高效运行1、H5端与......
  • GGTalk 开源即时通讯系统源码剖析之:聊天消息防错漏机制
    继上篇《GGTalk开源即时通讯系统源码剖析之:客户端全局缓存及本地存储》GGTalk客户端的全局缓存以及客户端的本地持久化存储。接下来我们将介绍GGTalk的聊天消息防错漏机制。GGTalkV8.0 对消息的可靠性,即消息的不丢失和不重复做了一系列优化处理,以保证不会错漏消息。这篇文......