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 模型的训练数据量约为其第一代的两倍,总计 13 万亿 Tokens(270 亿模型)和 8 万亿 Tokens(90 亿模型)的网页数据(主要是英语)、代码和数学数据。同时,相比较第一代,Gemma 2 的推理性能更高、效率更高,并在安全性方面取得了重大进步。
许可协议: Gemma 2 与第一代使用相同的许可证,这是一个允许再分发、微调、商业用途和衍生作品的宽松许可证。
性能优异: Gemma 2 27B 版本在同规模级别中性能最佳,甚至比两倍于其尺寸的机型更具竞争力。9B 版本的性能在同类产品中也处于领先地位,超过了 Llama 3 8B 和其他同规模的开放模型。
其他关于 Gemma 2 的介绍信息,可以参见 Google 官方博客:https://blog.google/technology/developers/google-gemma-2/
Google 重磅发布产品,我们肯定需要体验以下。今天,老牛同学就和大家一起,分别通过 2 种方式在个人笔记本电脑本地部署和体验 Gemma2-9B 大模型。
方式一:通过 Ollama 部署大模型
关于 Ollama 是什么以及它的使用方式,老牛同学前面的博文中有介绍,本文不在赘述,感兴趣的朋友可以看一下之前的博文。
Ollama 管理和维护 Gemma 2 比较简单,主要流程如下:
- 下载并安装 Ollama 软件(Windows/Linux/MacOS 均支持):https://ollama.com/download
- 通过 Ollama 下载并启动 Gemma 2 大模型:
ollama run gemma2:9b
模型文件大小为 5.4GB 左右,需要耐心等待模型下载完成。下载完成之后,Ollama 自动启动模型,就可以通过 Ollama 进行对话了:
如果觉得通过控制台的方式对话体验不好,可以部署 WebUI 的方式与模型对话。WebUI 的部署方式,可以参见老牛同学之前的博文:https://mp.weixin.qq.com/s/P_ufvz4MWVSqv_VM-rJp9w,主要部署步骤:
- 下载并安装 Node.js 工具:https://nodejs.org/zh-cn
- 下载
ollama-webui
工程代码:git clone https://github.com/ollama-webui/ollama-webui-lite ollama-webui
- 切换
ollama-webui
代码的目录:cd ollama-webui
- 设置 Node.js 工具包镜像源(下载提速):
npm config set registry http://mirrors.cloud.tencent.com/npm/
- 安装 Node.js 依赖的工具包:
npm install
- 最后,启动 Web 可视化界面:
npm run dev
然后,通过浏览器打开 WebUI 对话界面了:http://localhost:3000/
方式二:通过 GGUF 部署大模型
GGUF模型文件格式是为了快速推理和优化内存使用而设计的,支持更复杂的令牌化过程和特殊令牌处理,能更好地应对多样化的语言模型需求。GGUF就一个文件,也简化了模型交换和部署的过程,它对促进模型的普及和应用有着积极作用。
GGUF 模型文件列表:https://modelscope.cn/models/LLM-Research/gemma-2-9b-it-GGUF/files
GGUF 模型文件名称格式,如gemma-2-9b-it-Q5_K_M.gguf
等:
- it代表本模型是对基线模型进行了微调,用于更好地理解和生成遵循指令(instruction-following)的文本,以提供符合要求的响应
- Q4/Q5 等代表模型权重的量化位数(其中Q是Quantization的缩小,即量化),是一种模型压缩技术,用于减少模型大小,同时降低对计算资源的需求(特别是内存),但又尽量保持模型的性能;数字4或5则代表量化精度的位数(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
):
- 打开一个终端窗口,切换到 GGUF 文件所在目录:
cd Gemma2
- 切换 Python 虚拟环境:
conda activate PY3.12
- 安装 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)
最后一步: 我们使用 openai 库在个人电脑上快速搭建客户端。Python 客户端代码(Client.py
)如下:
- 我们使用OpenAI接口来与 Gemma 交互,上面启动模型的最后,我们看到服务端 IP 是本地,端口是8000
- 接着,我们使用 2 条信息对历史记录进行初始化:第一个条是系统信息,第二个条是要求模型自我介绍的用户提示,为了避免长篇大论,我这里限制了回答的长度和字数
- 接下来,通过
>
提示符等待用户(即我们)输入,输入bye
、quit
和exit
任意一个即代表退出客户端
# 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
恭喜你,第二种方式也部署成功了,我们可以愉快地与大模型进行对话了
如何系统的去学习AI大模型LLM ?
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
阶段1:AI大模型时代的基础理解
- 目标:了解AI大模型的基本概念、发展历程和核心原理。
- 内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践 - L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
- 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
- 内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例 - L2.2 Prompt框架
- L2.2.1 什么是Prompt
- L2.2.2 Prompt框架应用现状
- L2.2.3 基于GPTAS的Prompt框架
- L2.2.4 Prompt框架与Thought
- L2.2.5 Prompt框架与提示词 - L2.3 流水线工程
- L2.3.1 流水线工程的概念
- L2.3.2 流水线工程的优点
- L2.3.3 流水线工程的应用 - L2.4 总结与展望
- L2.1 API接口
阶段3:AI大模型应用架构实践
- 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
- 内容:
- L3.1 Agent模型框架
- L3.1.1 Agent模型框架的设计理念
- L3.1.2 Agent模型框架的核心组件
- L3.1.3 Agent模型框架的实现细节 - L3.2 MetaGPT
- L3.2.1 MetaGPT的基本概念
- L3.2.2 MetaGPT的工作原理
- L3.2.3 MetaGPT的应用场景 - L3.3 ChatGLM
- L3.3.1 ChatGLM的特点
- L3.3.2 ChatGLM的开发环境
- L3.3.3 ChatGLM的使用示例 - L3.4 LLAMA
- L3.4.1 LLAMA的特点
- L3.4.2 LLAMA的开发环境
- L3.4.3 LLAMA的使用示例 - L3.5 其他大模型介绍
- L3.1 Agent模型框架
阶段4:AI大模型私有化部署
- 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
- 内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
学习计划:
- 阶段1:1-2个月,建立AI大模型的基础知识体系。
- 阶段2:2-3个月,专注于API应用开发能力的提升。
- 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
- 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
全套 《LLM大模型入门+进阶学习资源包》↓↓↓ 获取~