智谱AI GLM4开源!支持多模态&长序列,魔搭推理、微调最佳实践来啦!

简介: GLM-4-9B是智谱AI推出的新一代预训练模型GLM-4系列的开源版本,它在多个数据集上的测试中表现出高绩效,包括语义理解、数学问题解决、推理和代码理解等方面。GLM-4-9B模型有四个变体:基础版GLM-4-9B(8K)、对话版GLM-4-9B-Chat(128K)、超长上下文版GLM-4-9B-Chat-1M(1M)和多模态版GLM-4V-9B-Chat(8K)。用户可以通过魔搭社区提供的链接体验这些模型,包括在CPU上运行的版本和支持vLLM推理的版本。

引言

GLM-4-9B 是智谱 AI 推出的最新一代预训练模型 GLM-4 系列中的开源版本。 在语义、数学、推理、代码和知识等多方面的数据集测评中,GLM-4-9B 及其人类偏好对齐的版本 GLM-4-9B-Chat 均表现出较高的性能。GLM-4-9B 模型具备了更强大的推理性能、更长的上下文处理能力、多语言、多模态和 All Tools 等突出能力。GLM-4-9B 系列模型包括:基础版本 GLM-4-9B(8K)、对话版本 GLM-4-9B-Chat(128K)、超长上下文版本 GLM-4-9B-Chat-1M(1M)和多模态版本 GLM-4V-9B-Chat(8K)。

image.png


如下为GLM-4-9B-Chat模型的经典任务评测结果:

image.png

在线体验

魔搭社区使用自研开源的推理加速框架DashInfer转换了模型格式,支持在CPU上运行,并搭建了体验链接,欢迎大家体验:

https://www.modelscope.cn/studios/dash-infer/GLM-4-Chat-DashInfer-Demo/summary?from=alizishequ__text


同时创空间体验也支持vLLM推理,体验链接:

https://www.modelscope.cn/studios/ZhipuAI/glm-4-9b-chat-vllm/summary?from=alizishequ__text


效果体验

语义创作:

image.png


数学:

<计算题>

image.png

<应用题>

image.png

推理:

image.png


模型链接及下载


GLM-4-9B-Chat

模型链接:

https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/summary


GLM-4-9B-Chat-1M

模型链接:

https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat-1m/summary


glm-4-9b

模型链接:

https://modelscope.cn/models/ZhipuAI/glm-4-9b/summary


glm-4v-9b

模型链接:

https://modelscope.cn/models/ZhipuAI/glm-4v-9b/summary



模型weights下载

from modelscope import snapshot_download
model_dir = snapshot_download("ZhipuAI/glm-4-9b-chat")

模型推理

使用Transformers

大语言模型推理代码

import torch
from modelscope import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained("ZhipuAI/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(
    "ZhipuAI/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))


显存占用:

image.png



多模态模型推理代码

import torch
from PIL import Image
from modelscope import AutoModelForCausalLM, AutoTokenizer
device = "cuda"
tokenizer = AutoTokenizer.from_pretrained("ZhipuAI/glm-4v-9b", trust_remote_code=True)
query = '这样图片里面有几朵花?'
image = Image.open("/mnt/workspace/玫瑰.jpeg").convert('RGB')
inputs = tokenizer.apply_chat_template([{"role": "user", "image": image, "content": "这样图片里面有几朵花?"}],
                                       add_generation_prompt=True, tokenize=True, return_tensors="pt",
                                       return_dict=True)  # chat mode
inputs = inputs.to(device)
model = AutoModelForCausalLM.from_pretrained(
    "ZhipuAI/glm-4v-9b",
    torch_dtype=torch.bfloat16,
    low_cpu_mem_usage=True,
    trust_remote_code=True
).to(device).eval()
gen_kwargs = {"max_length": 500, "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]))


显存占用

image.png

使用vLLM推理

from modelscope import AutoTokenizer
from vllm import LLM, SamplingParams
from modelscope import snapshot_download
# GLM-4-9B-Chat
max_model_len, tp_size = 131072, 1
model_name = snapshot_download("ZhipuAI/glm-4-9b-chat")
prompt = '你好'
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,
)
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([{'role': 'user', 'content': prompt}], add_generation_prompt=True)[0]
outputs = llm.generate(prompt_token_ids=[inputs], sampling_params=sampling_params)
generated_text = [output.outputs[0].text for output in outputs]
print(generated_text)

使用DashInfer CPU推理引擎

DashInfer格式模型:https://www.modelscope.cn/models/dash-infer/glm-4-9b-chat-DI/summary


python依赖:

pip install modelscope dashinfer jinja2 tabulate torch transformers

推理代码:

import copy
import random
from modelscope import snapshot_download
from dashinfer.helper import EngineHelper, ConfigManager
model_path = snapshot_download("dash-infer/glm-4-9b-chat-DI")
config_file = model_path + "/" + "di_config.json"
config = ConfigManager.get_config_from_json(config_file)
config["model_path"] = model_path
## init EngineHelper class
engine_helper = EngineHelper(config)
engine_helper.verbose = True
engine_helper.init_tokenizer(model_path)
## init engine
engine_helper.init_engine()
## prepare inputs and generation configs
user_input = "浙江的省会在哪"
prompt = "[gMASK] <sop> " + "<|user|>\n" + user_input + "<|assistant|>\n"
gen_cfg = copy.deepcopy(engine_helper.default_gen_cfg)
gen_cfg["seed"] = random.randint(0, 10000)
request_list = engine_helper.create_request([prompt], [gen_cfg])
## inference
engine_helper.process_one_request(request_list[0])
engine_helper.print_inference_result_all(request_list)
engine_helper.uninit_engine()

微调

ms-swift已支持了以上glm4系列大模型和多模态大模型的推理、微调、量化和openai接口部署。这里我们展示使用swift对glm-4v-9b的微调和微调后推理。

swift是魔搭社区官方提供的大模型与多模态大模型微调推理框架。


swift开源地址:https://github.com/modelscope/swift



swift对glm-4v-9b推理与微调的最佳实践可以查看:https://github.com/modelscope/swift/blob/main/docs/source/Multi-Modal/glm4v%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5.md


通常,多模态大模型微调会使用自定义数据集进行微调。在这里,我们将展示可直接运行的demo。我们使用 coco-mini-en-2 数据集进行微调,该数据集的任务是对图片内容进行描述。您可以在 modelscope 上找到该数据集:https://modelscope.cn/datasets/modelscope/coco_2014_caption/summary


在开始微调之前,请确保您的环境已准备妥当。

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


LoRA微调脚本如下所示。该脚本将只对语言和视觉模型的qkv进行lora微调,如果你想对所有linear层都进行微调,可以指定--lora_target_modules ALL。

# Experimental environment: A100
# 30GB GPU memory
CUDA_VISIBLE_DEVICES=0 swift sft \
    --model_id_or_path ZhipuAI/glm-4v-9b \
    --dataset coco-mini-en-2 \


如果要使用自定义数据集,只需按以下方式进行指定:

# val_dataset可选,如果不指定,则会从dataset中切出一部分数据集作为验证集
--dataset train.jsonl \
--val_dataset val.jsonl \


自定义数据集支持json和jsonl样式。glm-4v-9b支持多轮对话,但总的对话轮次中需包含一张图片,支持传入本地路径或URL。以下是自定义数据集的示例:

{"query": "55555", "response": "66666", "images": ["image_path"]}
{"query": "eeeee", "response": "fffff", "history": [], "images": ["image_path"]}
{"query": "EEEEE", "response": "FFFFF", "history": [["AAAAA", "BBBBB"], ["CCCCC", "DDDDD"]], "images": ["image_path"]}


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

CUDA_VISIBLE_DEVICES=0 swift infer \
    --ckpt_dir output/glm4v-9b-chat/vx-xxx/checkpoint-xxx \
    --load_dataset_config true \


你也可以选择merge lora并进行推理:

CUDA_VISIBLE_DEVICES=0 swift export \
    --ckpt_dir output/glm4v-9b-chat/vx-xxx/checkpoint-xxx \
    --merge_lora true
CUDA_VISIBLE_DEVICES=0 swift infer \
    --ckpt_dir output/glm4v-9b-chat/vx-xxx/checkpoint-xxx-merged \
    --load_dataset_config true


微调过程的loss可视化:(由于时间原因,这里只微调了400个steps)

image.png



微调后模型对验证集进行推理的示例:

image.png

[PROMPT][gMASK] <sop> <|user|> 
 <|begin_of_image|> <|endoftext|> <|end_of_image|> please describe the image. <|assistant|>[OUTPUT]A stuffed animal with a pink nose and black eyes is sitting on a bed. <|endoftext|>
[LABELS]A stuffed bear sitting on the pillow of a bed.
[IMAGES]['https://xingchen-data.oss-cn-zhangjiakou.aliyuncs.com/coco/2014/val2014/COCO_val2014_000000010395.jpg']


image.png

[PROMPT][gMASK] <sop> <|user|> 
 <|begin_of_image|> <|endoftext|> <|end_of_image|> please describe the image. <|assistant|>[OUTPUT]A giraffe is walking through a grassy field surrounded by trees. <|endoftext|>
[LABELS]A giraffe walks on the tundra tree-lined park.


点击链接👇直达原文

https://www.modelscope.cn/studios/dash-infer/GLM-4-Chat-DashInfer-Demo/summary?from=alizishequ__text


相关文章
|
5天前
|
机器学习/深度学习 人工智能 自然语言处理
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
CogAgent-9B 是智谱AI基于 GLM-4V-9B 训练的专用Agent任务模型,支持高分辨率图像处理和双语交互,能够预测并执行GUI操作,广泛应用于自动化任务。
39 12
CogAgent-9B:智谱 AI 开源 GLM-PC 的基座模型,专注于预测和执行 GUI 操作,可应用于自动化交互任务
|
1天前
|
人工智能 物联网
AI电影从这个LoRA开始:魔搭AIGC1月赛题公布&12月赛题获奖作品新鲜出炉
魔搭社区LoRA创意挑战赛月度赛第三期来啦! 1月赛题揭晓:电影风格模型训练大赛
|
3天前
|
人工智能 关系型数据库 分布式数据库
PolarDB-PG AI最佳实践3 :PolarDB AI多模态相似性搜索最佳实践
本文介绍了如何利用PolarDB结合多模态大模型(如CLIP)实现数据库内的多模态数据分析和查询。通过POLAR_AI插件,可以直接在数据库中调用AI模型服务,无需移动数据或额外的工具,简化了多模态数据的处理流程。具体应用场景包括图像识别与分类、图像到文本检索和基于文本的图像检索。文章详细说明了技术实现、配置建议、实战步骤及多模态检索示例,展示了如何在PolarDB中创建模型、生成embedding并进行相似性检索
|
3天前
|
SQL 人工智能 关系型数据库
PolarDB-PG AI最佳实践 2 :PolarDB AI X EAS实现自定义库内模型推理最佳实践
PolarDB通过POLAR_AI插件支持使用SQL调用AI/ML模型,无需专业AI知识或额外部署环境。结合阿里云EAS在线模型服务,可轻松部署自定义模型,在SQL中实现如文本翻译等功能。
|
5天前
|
存储 人工智能 运维
AI + 可观测最佳实践:让业务从“看见”到“洞察”
本文介绍了AI Ops的概念及其在提升系统运维效率、洞察力和可观测性方面的作用。主要内容分为三个部分:一是监控、观测与洞察的区别及挑战,强调了数据整合和语义对齐的重要性;二是AI与计算如何重塑可观测性,通过UModel数字图谱和多模态存储分析架构实现数据联通;三是最佳实践与未来展望,展示了阿里云AI Stack可观测解决方案的应用案例,并总结了可观测性的四个发展阶段,最终愿景是借助AI力量让每个人成为多领域的专家。
|
3天前
|
存储 数据采集 算法
构建AI数据管道:从数据到洞察的高效之旅最佳实践
本文探讨了大模型从数据处理、模型训练到推理的全流程解决方案,特别强调数据、算法和算力三大要素。在数据处理方面,介绍了多模态数据的高效清洗与存储优化;模型训练中,重点解决了大规模数据集和CheckPoint的高效管理;推理部分则通过P2P分布式加载等技术提升效率。案例展示了如何在云平台上实现高性能、低成本的数据处理与模型训练,确保业务场景下的最优表现。
|
3天前
|
人工智能 供应链 安全
面向高效大模型推理的软硬协同加速技术 多元化 AI 硬件引入评测体系
本文介绍了AI硬件评测体系的三大核心方面:统一评测标准、平台化与工具化、多维度数据消费链路。通过标准化评测流程,涵盖硬件性能、模型推理和训练性能,确保评测结果客观透明。平台化实现资源管理与任务调度,支持大规模周期性评测;工具化则应对紧急场景,快速适配并生成报告。最后,多维度数据消费链路将评测数据结构化保存,服务于综合通用、特定业务及专业性能分析等场景,帮助用户更好地理解和使用AI硬件。
|
2天前
|
人工智能 容灾 Serverless
AI推理新纪元,PAI全球化模型推理服务的创新与实践
本次分享主题为“AI推理新纪元,PAI全球化模型推理服务的创新与实践”,由阿里云高级产品经理李林杨主讲。内容涵盖生成式AI时代推理服务的变化与挑战、play IM核心引擎的优势及ES专属网关的应用。通过LM智能路由、多模态异步生成等技术,PAI平台实现了30%以上的成本降低和显著性能提升,确保全球客户的业务稳定运行并支持异地容灾,目前已覆盖16个地域,拥有10万张显卡的推理集群。
|
8天前
|
机器学习/深度学习 人工智能 自动驾驶
企业内训|AI大模型在汽车行业的前沿应用研修-某汽车集团
本课程是TsingtaoAI为某汽车集团高级项目经理设计研发,课程全面系统地解析AI的发展历程、技术基础及其在汽车行业的深度应用。通过深入浅出的理论讲解、丰富的行业案例分析以及实战项目训练,学员将全面掌握机器学习、深度学习、NLP与CV等核心技术,了解自动驾驶、智能制造、车联网与智能营销等关键应用场景,洞悉AI技术对企业战略布局的深远影响。
138 97
|
13天前
|
机器学习/深度学习 人工智能 物联网
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营
12月14日,由中国软件行业校园招聘与实习公共服务平台携手魔搭社区共同举办的AI赋能大学计划·大模型技术与产业趋势高校行AIGC项目实战营·湖南大学站圆满结营。
AI赋能大学计划·大模型技术与应用实战学生训练营——湖南大学站圆满结营