谷歌发布开源LLM Gemma,魔搭社区评测+最佳实践教程来啦!

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
交互式建模 PAI-DSW,5000CU*H 3个月
简介: Gemma是由Google推出的一系列轻量级、先进的开源模型,他们是基于 Google Gemini 模型的研究和技术而构建。

导读

Gemma是由Google推出的一系列轻量级、先进的开源模型,他们是基于 Google Gemini 模型的研究和技术而构建。它们是一系列text generation,decoder-only的大型语言模型,对英文的支持较好,具有模型权重开源、并提供预训练版本(base模型)和指令微调版本(chat模型)。本次Gemma开源提供了四个大型语言模型,提供了 2B 和 7B 两种参数规模的版本,每种都包含了预训练版本(base模型)和指令微调版本(chat模型)。

官方除了提供pytorch版本之外,也提供了GGUF版本,可在各类消费级硬件上运行,无需数据量化处理,并拥有高达 8K tokens 的处理能力,Gemma 7B模型的预训练数据高达6万亿Token,也证明了通过大量的高质量数据训练,可以大力出奇迹,小模型也可以持续提升取得好的效果。

那Gemma模型的能力怎么样呢?下面是Gemma模型的基础版本与其他开源模型在公开榜单的对比:

数据来源https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard

从榜单中可以看到,Gemma-7B模型超过了Mistral-7B模型,取得了一个很好的结果。

技术报告链接:

https://storage.googleapis.com/deepmind-media/gemma/gemma-report.pdf

开源代码链接:

https://github.com/google/gemma_pytorch

目前魔搭社区已经支持 Gemma的下载、推理、微调一站式体验,并提供对应最佳实践教程,欢迎感兴趣的开发者小伙伴们来玩!

我们体验了Gemma指令微调后的模型,初步总结的如下的优点和可提升点:

优点

可提升点

英文表现强,逻辑推理能力较强

中文表现力较弱,偶尔会出现codeswitch情况

数学和代码能力不错

窗口长度为8K,在长窗口场景,比如论文分析,小说续写上,窗口长度略小。

多轮效果不佳,可持续提升

prompt template暂时不支持system role

定量分析(以gemma-2b-it为例,在公开数据集,使用客观方式评测)

模型

能力项

数据集

平均得分

能力评价

gemma-2b-it

数学

GSM8K

0.15

对于2B大小的模型来说,在GSM8K上的表现比较不错

中文知识推理

C-Eval

0.3358

中文推理能力中等偏下,有些场景无法很好的完成指令跟随和知识推理

  • 备注:

总之,Gemma是非常好的基础模型,同时在中文和多轮上还有非常大的提升空间,期待社区开发者的积极反馈,同时期待中国开发者基于Gemma模型优化中文和多轮对话能力,在此基础上做出更好的模型。

Gemma模型体验

英文常识&推理问答能力,效果不错:

中文常识问答能力:

数学:确实不错,在四则运算和中文应用题解题上都能正确解答

四则运算

中文应用题

代码能力,试跑了2题,相对一般:

经典快排问题

最后输出排序结果不正确

代码执行结果,排序存在问题:

def quick_sort(arr, low, high):
    if low < high:
        partition_index = partition(arr, low, high)
        quick_sort(arr, low, partition_index - 1)
        quick_sort(arr, partition_index + 1, high)
def partition(arr, low, high):
    pivot_element = arr[high]
    i = low - 1
    for j in range(low, high):
        if arr[j] <= pivot_element:
            i += 1
    arr[i + 1], arr[high] = arr[high], arr[i + 1]
    return i + 1
# Example usage
arr = [5, 3, 8, 2, 4, 7, 1, 9]
quick_sort(arr, 0, len(arr) - 1)
print(arr)
# [1, 2, 3, 8, 5, 4, 7, 9]

用Java实现N皇后问题求解

测试该程序无法运行

多轮对话能力,比较一般:

环境配置与安装

  1. python 3.10及以上版本
  2. pytorch 1.12及以上版本,推荐2.0及以上版本
  3. 建议使用CUDA 11.4及以上
  4. transformers>=4.38.0

可以使用魔搭社区的免费算力:


Gemma模型链接和下载

Gemma模型系列现已在ModelScope社区开源,包括:

Gemma-2b:

https://modelscope.cn/models/AI-ModelScope/gemma-2b

Gemma-2b-it:

https://modelscope.cn/models/AI-ModelScope/gemma-2b-it

Gemma-7b:

https://modelscope.cn/models/AI-ModelScope/gemma-7b

Gemma-7b-it:

https://modelscope.cn/models/AI-ModelScope/gemma-7b-it

体验链接:

https://modelscope.cn/studios/AI-ModelScope/google-gemma-demo/summary

社区支持直接下载模型的repo:

from modelscope import snapshot_download
model_dir = snapshot_download("AI-ModelScope/gemma-7b-it")

Gemma模型推理

Gemma-7b-it推理代码:

需要使用tokenizer.apply_chat_template获取指令微调模型的prompt template:

from modelscope import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("AI-ModelScope/gemma-7b-it")
model = AutoModelForCausalLM.from_pretrained("AI-ModelScope/gemma-7b-it", torch_dtype = torch.bfloat16, device_map="auto")
input_text = "hello."
messages = [
    {"role": "user", "content": input_text}
]
text = tokenizer.apply_chat_template(
    messages,
    tokenize=False,
    add_generation_prompt=True
)
input_ids = tokenizer([text], return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids,max_new_tokens=256)
print(tokenizer.decode(outputs[0]))

资源消耗:

Gemma-2b-it

模型微调和微调后推理

我们使用SWIFT来对模型进行微调,SWIFT是魔搭社区官方提供的LLM&AIGC模型微调推理框架。

微调代码开源地址:

https://github.com/modelscope/swift

我们使用hc3-zh分类数据集进行微调. 任务是: 判断数据样本的回答来自human还是chatgpt.

环境准备:

git clone https://github.com/modelscope/swift.git
cd swift
pip install .[llm]

微调脚本: LoRA

# https://github.com/modelscope/swift/blob/main/examples/pytorch/llm/scripts/gemma_2b_instruct/lora
# Experimental environment: V100, A10, 3090
# 12GB GPU memory
CUDA_VISIBLE_DEVICES=0 \
swift sft \
    --model_id_or_path AI-ModelScope/gemma-2b-it \
    --sft_type lora \
    --tuner_backend swift \
    --template_type AUTO \
    --dtype AUTO \
    --output_dir output \
    --dataset hc3-zh \
    --train_dataset_sample 5000 \
    --num_train_epochs 1 \
    --max_length 2048 \
    --check_dataset_strategy warning \
    --lora_rank 8 \
    --lora_alpha 32 \
    --lora_dropout_p 0.05 \
    --lora_target_modules ALL \
    --gradient_checkpointing true \
    --batch_size 1 \
    --weight_decay 0.01 \
    --learning_rate 1e-4 \
    --gradient_accumulation_steps 16 \
    --max_grad_norm 0.5 \
    --warmup_ratio 0.1 \
    --eval_steps 100 \
    --save_steps 100 \
    --save_total_limit 2 \
    --logging_steps 10 \

训练过程也支持本地数据集,需要指定如下参数:

--custom_train_dataset_path xxx.jsonl \
--custom_val_dataset_path yyy.jsonl \

自定义数据集的格式可以参考:

https://github.com/modelscope/swift/blob/main/docs/source/LLM/%E8%87%AA%E5%AE%9A%E4%B9%89%E4%B8%8E%E6%8B%93%E5%B1%95.md#%E6%B3%A8%E5%86%8C%E6%95%B0%E6%8D%AE%E9%9B%86%E7%9A%84%E6%96%B9%E5%BC%8F

微调后推理脚本: (这里的ckpt_dir需要修改为训练生成的checkpoint文件夹)

# Experimental environment: V100, A10, 3090
CUDA_VISIBLE_DEVICES=0 \
swift infer \
    --ckpt_dir "output/gemma-2b-instruct/vx_xxx/checkpoint-xxx" \
    --load_dataset_config true \
    --max_length 2048 \
    --max_new_tokens 2048 \
    --temperature 0.1 \
    --top_p 0.7 \
    --repetition_penalty 1. \
    --do_sample true \

微调的可视化结果

训练准确率:

训练后生成样例:

[PROMPT]<bos><start_of_turn>user
Classification Task: Are the following responses from a human or from ChatGPT?
Question: 能帮忙解决一下吗
Answer: 当然,我很乐意帮助你解决问题。请提出你的问题,我会尽力给出最好的帮助。
Category: Human, ChatGPT
Output:<end_of_turn>
<start_of_turn>model
[OUTPUT]ChatGPT<end_of_turn>
[LABELS]ChatGPT
---------------------------------------------------
[PROMPT]<bos><start_of_turn>user
Classification Task: Are the following responses from a human or from ChatGPT?
Question: 请问哪样存钱好
Answer: 若需了解招商银行存款利率,可进入招行主页在网页右下侧“实时金融信息”下方选择“存款利率”查看。
Category: Human, ChatGPT
Output:<end_of_turn>
<start_of_turn>model
[OUTPUT]Human<end_of_turn>
[LABELS]Human

点击直达模型卡片:gemma-7b-it · 模型库 (modelscope.cn)

相关文章
可控细节的长文档摘要,探索开源LLM工具与实践
本文通过将文档分为几部分来解决这个问题,然后分段生成摘要。在对大语言模型进行多次查询后,可以重建完整的摘要。通过控制文本块的数量及其大小,我们最终可以控制输出中的细节级别。
|
29天前
|
算法 测试技术 AI芯片
CPU反超NPU,llama.cpp生成速度翻5倍!LLM端侧部署新范式T-MAC开源
【9月更文挑战第7天】微软研究院提出了一种名为T-MAC的创新方法,旨在解决大型语言模型在资源受限的边缘设备上高效部署的问题。T-MAC通过查表法在CPU上实现低比特LLM的高效推理,支持混合精度矩阵乘法,无需解量化。其通过位级查表实现统一且可扩展的解决方案,优化数据布局和重用率,显著提升了单线程和多线程下的mpGEMV及mpGEMM性能,并在端到端推理吞吐量和能效方面表现出色。然而,表量化和快速聚合技术可能引入近似和数值误差,影响模型准确性。论文详见:[链接](https://www.arxiv.org/pdf/2407.00088)。
64 10
|
3月前
|
人工智能 JSON 自然语言处理
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
【7月更文挑战第7天】国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
176 10
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
|
2月前
|
数据采集 人工智能 监控
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
Label-LLM 是一款专为大模型训练设计的多模态文本对话标注工具,支持团队协作,让标注工作变得简单高效。它不仅涵盖丰富的任务类型,如回答采集、偏好收集和内容评估等,还支持多模态数据标注,包括图像、视频和音频。Label-LLM具备预标注载入功能,能大幅提升工作效率,并提供全方位的任务管理与可视化分析,确保标注质量。快来体验这款强大的标注平台吧![部署文档](https://github.com/opendatalab/LabelLLM)
257 0
赌你一定想要!OpenDataLab首款大模型多模态标注平台Label-LLM正式开源
|
3月前
|
算法 API 数据中心
魔搭社区利用 NVIDIA TensorRT-LLM 加速开源大语言模型推理
魔搭社区于 2022 年 11 月初创建,首次在业界提出了 “模型即服务”( MaaS, Model as a Service)的理念。
|
3月前
|
编解码 文字识别 计算机视觉
寒武纪1号诞生:谢赛宁Yann LeCun团队发布最强开源多模态LLM
【7月更文挑战第10天】【寒武纪1号】- 谢赛宁、Yann LeCun团队发布开源多模态LLM,含8B至34B规模模型,创新空间视觉聚合器(SVA)提升视觉-语言集成,建立新基准CV-Bench及大规模训练数据集Cambrian-7M。在多模态任务中表现出色,尤其在高分辨率图像处理上,但面临高分辨率信息处理和部分视觉任务评估的局限。[链接](https://arxiv.org/pdf/2406.16860)
73 1
|
3月前
|
测试技术
谷歌DeepMind全新ToT基准:全面评估LLM时间推理能力
【7月更文挑战第10天】DeepMind的ToT基准测试了大型语言模型的时间推理能力,分为ToT-Semantic(合成数据,评估时间逻辑理解)和ToT-Arithmetic(真实数据,检查时间计算)。研究使用Claude-3-Sonnet、GPT-4和Gemini 1.5 Pro进行评估,发现模型在时间逻辑理解上表现各异,而时间计算上均较强。 Gemini 1.5 Pro在复杂问题上表现出色,而GPT-4在数学相关问题上较弱。[[1](https://arxiv.org/pdf/2406.09170)]
36 1
|
4月前
|
人工智能 自然语言处理 算法
LLM主流开源代表模型(二)
随着ChatGPT迅速火爆,引发了大模型的时代变革,国内外各大公司也快速跟进生成式AI市场,近百款大模型发布及应用。
|
2月前
|
人工智能 自然语言处理
公理训练让LLM学会因果推理:6700万参数模型比肩万亿参数级GPT-4
【8月更文挑战第3天】新论文提出“公理训练”法,使仅有6700万参数的语言模型掌握因果推理,性能媲美万亿级GPT-4。研究通过大量合成数据示例教授模型因果公理,实现有效推理并泛化至复杂图结构。尽管面临合成数据需求大及复杂关系处理限制,此法仍为语言模型的因果理解开辟新途径。[链接: https://arxiv.org/pdf/2407.07612]
54 1
|
17天前
|
存储 机器学习/深度学习 物联网
CGE:基于Causal LLM的Code Embedding模型
CodeFuse-CGE 项目在外滩大会展出,吸引众多技术与产品从业者的关注。“文搜代码”功能备受好评,模型表现令人期待。CodeFuse-CGE 采用大语言模型,通过 LoRA 微调提取文本与代码嵌入,实现在多个 NL2Code 基准测试中超越现有 SOTA 模型。现已开源 CGE-Large 与 CGE-Small 两种模型,欢迎访问 GitHub 页并支持本项目。[项目地址](https://github.com/codefuse-ai/CodeFuse-CGE)
42 1
下一篇
无影云桌面