当前位置:   article > 正文

大模型 GLM-4-9B 开源,模型表现超越!!!

大模型 GLM-4-9B 开源,模型表现超越!!!

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中, GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出超越 Llama-3-8B 的卓越性能。

还推出了支持 1M 上下文长度(约 200 万中文字符)的 GLM-4-9B-Chat-1M 模型和基于 GLM-4-9B 的多模态模型 GLM-4V-9B。GLM-4V-9B 具备 1120 * 1120 高分辨率下的中英双语多轮对话能力,在中英文综合能力、感知推理、文字识别、图表理解等多方面多模态评测中,GLM-4V-9B 表现出超越 GPT-4-turbo-2024-04-09、Gemini 1.0 Pro、Qwen-VL-Max 和 Claude 3 Opus 的卓越性能。
图片
Github:https://github.com/THUDM/GLM-4

huggingface:https://huggingface.co/collections/THUDM/glm-4-665fcf188c414b03c2f7e3b7

技术交流&资料

技术要学会分享、交流,不建议闭门造车。一个人可以走的很快、一堆人可以走的更远。

成立了GLM大模型技术交流群,相关资料、技术交流&答疑,均可加我们的交流群获取,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友。

方式①、微信搜索公众号:机器学习社区,后台回复:加群
方式②、添加微信号:mlc2040,备注:来自CSDN + 技术交流

精选

快速调用 GLM-4-9B-Chat 语言模型

import torch
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"

tokenizer = AutoTokenizer.from_pretrained("THUDM/glm-4-9b-chat", trust_remote_code=True)

query = "你好"

inputs = tokenizer.apply_chat_template([{"role": "user", "content": query}],
                                       add_generation_prompt=True,
                                       tokenize=True,
                                       return_tensors="pt",
                                       return_dict=True
                                       )

inputs = inputs.to(device)
model = AutoModelForCausalLM.from_pretrained(
    "THUDM/glm-4-9b-chat",
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    trust_remote_code=True
).to(device).eval()

gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 1}
with torch.no_grad():
    outputs = model.generate(**inputs, **gen_kwargs)
    outputs = outputs[:, inputs['input_ids'].shape[1]:]
    print(tokenizer.decode(outputs[0], skip_special_tokens=True))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

使用 vLLM 后端进行推理

from transformers import AutoTokenizer
from vllm import LLM, SamplingParams

# GLM-4-9B-Chat-1M
# max_model_len, tp_size = 1048576, 4

# GLM-4-9B-Chat
from transformers import AutoTokenizer
from vllm import LLM, SamplingParams

# 如果遇见 OOM 现象,建议减少max_model_len,或者增加tp_size
max_model_len, tp_size = 131072, 1
model_name = "THUDM/glm-4-9b-chat"
prompt = [{"role": "user", "content": "你好"}]

tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)
llm = LLM(
    model=model_name,
    tensor_parallel_size=tp_size,
    max_model_len=max_model_len,
    trust_remote_code=True,
    enforce_eager=True,
    # GLM-4-9B-Chat-1M 如果遇见 OOM 现象,建议开启下述参数
    # enable_chunked_prefill=True,
    # max_num_batched_tokens=8192
)
stop_token_ids = [151329, 151336, 151338]
sampling_params = SamplingParams(temperature=0.95, max_tokens=1024, stop_token_ids=stop_token_ids)

inputs = tokenizer.apply_chat_template(prompt, tokenize=False, add_generation_prompt=True)
outputs = llm.generate(prompts=inputs, sampling_params=sampling_params)

print(outputs[0].outputs[0].text)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33

使用 transformers 后端进行推理

import torch
from PIL import Image
from transformers import AutoModelForCausalLM, AutoTokenizer

device = "cuda"

tokenizer = AutoTokenizer.from_pretrained("THUDM/glm-4v-9b", trust_remote_code=True)

query = '描述这张图片'
image = Image.open("your image").convert('RGB')
inputs = tokenizer.apply_chat_template([{"role": "user", "image": image, "content": query}],
                                       add_generation_prompt=True, tokenize=True, return_tensors="pt",
                                       return_dict=True)  # chat mode

inputs = inputs.to(device)
model = AutoModelForCausalLM.from_pretrained(
    "THUDM/glm-4v-9b",
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    trust_remote_code=True
).to(device).eval()

gen_kwargs = {"max_length": 2500, "do_sample": True, "top_k": 1}
with torch.no_grad():
    outputs = model.generate(**inputs, **gen_kwargs)
    outputs = outputs[:, inputs['input_ids'].shape[1]:]
    print(tokenizer.decode(outputs[0]))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

基础能力

基于强大的预训练基座,GLM-4-9B 的模型中英文综合性能相比 ChatGLM3-6B 提升了 40%,尤其是在中文对齐能力 AlignBench,指令遵从 IFeval,工程代码 Natural Code Bench 方面都取得了非常显著的提升。对比训练量更多的 Llama 3 8B 模型也没有逊色,英文方面有小幅领先,中文学科方面更是有着高达 50% 的提升。

图片

长文本能力

GLM-4-9B 模型的上下文从 128K 扩展到了 1M tokens,这意味着模型能同时处理 200 万字的输入,大概相当于 2 本红楼梦或者 125 篇论文的长度。

图片

GLM-4-9B-Chat-1M 模型在 1M 的上下文长度下进行了“大海捞针”实验,展现出了出色的无损处理能力。

图片

多语言能力

GLM-4-9B 支持包括汉语、英语、俄语、西班牙语、德语、法语、意大利语、葡萄牙语、波兰语、日语、荷兰语、阿拉伯语、土耳其语、捷克语、越南语、波斯语、匈牙利语、希腊语、罗马尼亚语、瑞典语、乌克兰语、芬兰语、韩语、丹麦语、保加利亚语和挪威语在内的 26 种语言。

为了提升性能,我们将 tokenizer 的词表大小从 65k 扩充到了 150k,这一改进使得编码效率提高了 30%。在多语言能力方面,我们在六个不同的多语言理解和生成数据集上进行了测试,结果显示 GLM-4-9B-Chat 显著超越 Llama-3-8B-Instruct。具体评测结果如下:

图片

Function Call 能力

ChatGLM3-6B 模型的函数调用一直广受各大开发者喜爱。GLM-4-9B 模型的函数调用能力更是迎来了巨大的升级,相比上一代提升了 40%,在 Berkeley Function-Calling Leaderboard 上,GLM-4-9B 模型的 Function Call 能力与 GPT-4 不相上下。

图片

All Tools 能力

“All Tools”即模型能够理解和使用一系列外部工具(比如代码执行、联网浏览、画图、文件操作、数据库查询、API 调用等)来辅助回答问题或完成任务。

在 1 月 16 日的 Zhipu DevDay 上,GLM-4 模型全线升级了 All Tools 能力,模型可以智能调用网页浏览器、代码解释器、CogView 来完成用户的复杂请求。

图片

多模态能力

在强化文本能力的同时,我们首次推出了基于GLM基座的开源多模态模型GLM-4V-9B。这一模型采用了与CogVLM2相似的架构设计,能够处理高达1120 x 1120分辨率的输入,并通过降采样技术有效减少了token的开销。为了减小部署与计算开销,GLM-4V-9B没有引入额外的视觉专家模块,采用了直接混合文本和图片数据的方式进行训练,在保持文本性能的同时提升多模态能力。

图片

在性能方面,GLM-4V-9B模型展现了显著的优势。尽管其参数量仅为13B,但它成功地超越了许多参数量更大的开源模型。在众多任务中,GLM-4V-9B的性能与GPT-4V不相上下。

图片

以下两个 demo 展示了 GLM-4-9B 多模态能力。

图片

在第一个示例中,我们要求模型识别一件T恤上的公式印花。模型准确地识别出这是麦克斯韦方程组,并且当我们进一步追问关于麦克斯韦方程组的细节时,模型能够依靠其文本处理能力给出回答。这一过程证明了我们在引入多模态功能的同时,并未牺牲模型的文本处理能力。

图片

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/983631
推荐阅读
相关标签
  

闽ICP备14008679号