魔搭社区LLM模型部署实践 —— 以ChatGLM3为例

本文涉及的产品
交互式建模 PAI-DSW,每月250计算时 3个月
模型训练 PAI-DLC,100CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 本文将以ChatGLM3-6B为例,介绍在魔搭社区如何部署LLM

本文将以ChatGLM3-6B为例,介绍在魔搭社区如何部署LLM,主要包括如下内容:

  • SwingDeploy - 云端部署,实现零代码一键部署
  • 多端部署 - MAC个人笔记本,CPU服务器
  • 定制化模型部署 - 微调后部署

SwingDeploy - 云端部署,零代码一键部署

魔搭社区SwingDeploy链接:https://modelscope.cn/my/modelService/deploy

魔搭社区SwingDeploy支持将模型从魔搭社区的模型库一键部署至用户阿里云账号的云资源上,并根据模型资源要求为您自动推荐最佳部署配置。一键即可零代码创建模型部署任务,并通过API方式调用心仪的模型,进行实时推理! 当前魔搭社区已经支持SwingDeploy已接入阿里云FunctionCompute(FC)、PAI-EAS两类可用于模型部署推理的云资源。

使用SwingDeploy服务可以将模型部署在云端功能强大的GPU上,云端负责服务,扩展,保护和监控模型服务,可以免于运维和管理云上算力等基础设施。当选择模型并部署时,系统会选择对应的机器配置。按需使用可以在根据工作负载动态的减少资源,节约机器使用成本。

选择SwingDeploy部署模型,选择模型,如智谱AI提供的ChatGLM3,系统会自动匹配该模型最新的版本,以及推荐的部署资源规格。

4d73dcf0-7b7f-4467-822c-51271754bb44[1].png

点击一键部署,系统将从社区拉取模型,并打包成镜像部署到指定配置的实例,根据模型大小和实例类型,部署通常几分钟内能完成。

另外除了在ModelScope上能设置基础的部署配置以外,部署完成以后,也点击计算资源名称(以EAS为例),进入云资源管理页面,进行更多的操作,比如指定并发数量,支持扩缩容策略,配置高速链接等。

88edf7a6-3b4e-4c64-86a9-f76b3173c96f[1].png

服务状态显示“部署成功”后,点击立即使用,可以复制Python代码直接进行服务的调用。

24f85a4f-6df7-4784-86f6-3da801b25f97[1].png

粘贴立即使用代码,进入魔搭免费算力PAI-DSW,选择CPU类型,粘贴示例代码,测试部署模型的推理效果。

e4c24ee8-e75e-4b39-98b4-25b5bf1d8678[1].png

多端部署-以ChatGLM3+个人Mac电脑为例

魔搭社区和Xinference合作,提供了模型GGML的部署方式,以ChatGLM3为例。

Xinference支持大语言模型,语音识别模型,多模态模型的部署,简化了部署流程,通过一行命令完成模型的部署工作。并支持众多前沿的大语言模型,结合GGML技术,支持多端部署。Xinference的合作文章具体可以参考这篇文章 魔搭+Xinference 平台:CPU,GPU,Mac-M1多端大模型部署

caf9c61c-bda3-4378-b8eb-cb5f931c9526[1].png

ChatGLM3使用的模型为GGML格式,模型链接:

https://modelscope.cn/models/Xorbits/chatglm3-ggml/summary

使用方式:

首先在mac上预装Xinference:

pip install xinference[ggml]>=0.4.3

然后本地开启Xinference的实例:

xinference -p 9997

运行如下Python代码,验证模型推理效果

from xinference.client import Client
client = Client("http://localhost:9997")
model_uid = client.launch_model(
    model_name="chatglm3",
    model_format="ggmlv3", 
    model_size_in_billions=6,
    quantization="q4_0",
    )
model = client.get_model(model_uid)
chat_history = []
prompt = "最大的动物是什么?"
model.chat(
    prompt,
    chat_history,
    generate_config={"max_tokens": 1024}
)

以ChatGLM3为例,在个人Mac电脑上load模型到完成推理验证,仅需要10s:

Mac电脑配置:

61db248c-c2b4-470d-8b72-4e260b92f033[1].png

推理示例:

042952d8-bf9b-4bf7-8cce-d23f65030e2e[1].png

定制化模型部署 - 微调后命令行部署

结合魔搭微调框架SWIFT,可以实现定制化模型部署。

目前SWIFT支持VLLM框架,chatglm.cpp,Xinference等推理框架,具体可以参考文档:https://github.com/modelscope/swift/blob/main/docs/source/GetStarted/Deployment.md

本文以ChatGLM3模型+chatglm.cpp为例:

chatglm.cpp的github地址是:https://github.com/li-plus/chatglm.cpp

首先初始化对应repo:

git clone --recursive https://github.com/li-plus/chatglm.cpp.git && cd chatglm.cpp
python3 -m pip install torch tabulate tqdm transformers accelerate sentencepiece
cmake -B build
cmake --build build -j --config Release

如果SWIFT训练的是LoRA模型,需要将LoRA weights合并到原始模型中去:

# 先将文件夹cd到swift根目录中
python tools/merge_lora_weights_to_model.py --model_id_or_path /dir/to/your/base/model --model_revision master --ckpt_dir /dir/to/your/lora/model

合并后的模型会输出到{ckpt_dir}-merged文件夹中。

之后将上述合并后的{ckpt_dir}-merged的模型weights转为cpp支持的bin文件:

# 先将文件夹cd到chatglm.cpp根目录中
python3 chatglm_cpp/convert.py -i {ckpt_dir}-merged -t q4_0 -o chatglm-ggml.bin

chatglm.cpp支持以各种精度转换模型,详情请参考:https://github.com/li-plus/chatglm.cpp#getting-started

之后就可以拉起模型推理:

./build/bin/main -m chatglm-ggml.bin -i
# 以下对话为使用agent数据集训练后的效果
# Prompt   > how are you?
# ChatGLM3 > <|startofthink|>```JSON
# {"api_name": "greeting", "apimongo_instance": "ddb1e34-0406-42a3-a547a220a2", "parameters": {"text": "how are # you?"}}}
# ```<|endofthink|>
#
# I'm an AI assistant and I can only respond to text input. I don't have the ability to respond to audio or # video input.

之后启动xinference:

xinference -p 9997

在浏览器界面上选择Register Model选项卡,添加chatglm.cpp章节中转换成功的ggml模型:

image.png


注意:

  • 模型能力选择Chat

之后再Launch Model中搜索刚刚创建的模型名称,点击火箭标识运行即可使用。

调用可以使用如下代码:

from xinference.client import Client
client = Client("http://localhost:9997")
model_uid = client.launch_model(model_name="custom-chatglm")
model = client.get_model(model_uid)
chat_history = []
prompt = "What is the largest animal?"
model.chat(
    prompt,
    chat_history,
    generate_config={"max_tokens": 1024}
)
# {'id': 'chatcmpl-df3c2c28-f8bc-4e79-9c99-2ae3950fd459', 'object': 'chat.completion', 'created': 1699367362, 'model': '021c2b74-7d7a-11ee-b1aa-ead073d837c1', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': "According to records kept by the Guinness World Records, the largest animal in the world is the Blue Whale, specifically, the Right and Left Whales, which were both caught off the coast of Newfoundland. The two whales measured a length of 105.63 meters, or approximately 346 feet long, and had a corresponding body weight of 203,980 pounds, or approximately 101 tons. It's important to note that this was an extremely rare event and the whales that size don't commonly occur."}, 'finish_reason': None}], 'usage': {'prompt_tokens': -1, 'completion_tokens': -1, 'total_tokens': -1}}

希望本文提供的三种部署方式,可以满足大部分用户的需求,同时魔搭社区正在开发将推理加速框架和SwingDeploy做融合,持续给开发者们提供更好更丰富的模型部署体验!

直达链接:https://modelscope.cn/models/Xorbits/chatglm3-ggml/summary

相关文章
|
18天前
|
数据采集 自然语言处理 供应链
LLM安全新威胁:为什么几百个毒样本就能破坏整个模型
数据投毒通过在训练数据中植入恶意样本,将后门永久嵌入大模型,仅需数百份毒样本即可触发数据泄露、越狱等行为,防御需结合溯源、聚类分析与自动化检测。
148 2
LLM安全新威胁:为什么几百个毒样本就能破坏整个模型
|
1月前
|
存储 人工智能 数据中心
138_绿色计算:碳排放优化 - 估算部署的碳足迹与LLM环境友好型部署最佳实践
随着大语言模型(LLM)在各个行业的广泛应用,其计算需求和环境影响正日益受到关注。根据最新研究,训练一个大型LLM模型可能产生数百吨二氧化碳当量的排放,这相当于普通家庭几十年的碳足迹。在全球气候变化和可持续发展的背景下,如何优化LLM部署的碳足迹,实现环境友好型AI应用,已成为行业面临的重要挑战。
|
1月前
|
人工智能 自然语言处理 TensorFlow
134_边缘推理:TensorFlow Lite - 优化移动端LLM部署技术详解与实战指南
在人工智能与移动计算深度融合的今天,将大语言模型(LLM)部署到移动端和边缘设备已成为行业发展的重要趋势。TensorFlow Lite作为专为移动和嵌入式设备优化的轻量级推理框架,为开发者提供了将复杂AI模型转换为高效、低功耗边缘计算解决方案的强大工具。随着移动设备硬件性能的不断提升和模型压缩技术的快速发展,2025年的移动端LLM部署已不再是遥远的愿景,而是正在成为现实的技术实践。
|
22天前
|
缓存 物联网 PyTorch
使用TensorRT LLM构建和运行Qwen模型
本文档介绍如何在单GPU和单节点多GPU上使用TensorRT LLM构建和运行Qwen模型,涵盖模型转换、引擎构建、量化推理及LoRA微调等操作,并提供详细的代码示例与支持矩阵。
247 2
|
1月前
|
机器学习/深度学习 缓存 监控
139_剪枝优化:稀疏模型压缩 - 分析结构化剪枝的独特速度提升与LLM部署加速实践
随着大语言模型(LLM)规模的不断增长,模型参数量已从最初的数亿扩展到数千亿甚至万亿级别。这种规模的模型在推理过程中面临着巨大的计算和内存挑战,即使在最先进的硬件上也难以高效部署。剪枝优化作为一种有效的模型压缩技术,通过移除冗余或不重要的参数,在保持模型性能的同时显著减少计算资源需求。
|
1月前
|
Kubernetes Cloud Native 异构计算
133_云端扩展:Kubernetes scaling - 设置自动缩放的阈值与LLM部署最佳实践
在大语言模型(LLM)部署的时代,如何高效地管理计算资源、应对动态负载并优化成本,成为了每个AI工程师必须面对的挑战。随着LLM应用的普及,用户请求模式变得日益复杂且难以预测,传统的静态资源配置方式已无法满足需求。Kubernetes作为云原生时代的容器编排平台,其强大的自动扩展能力为LLM部署提供了理想的解决方案。
|
7月前
|
机器学习/深度学习 存储 缓存
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
大型语言模型(LLM)的推理效率是AI领域的重要挑战。本文聚焦KV缓存技术,通过存储复用注意力机制中的Key和Value张量,减少冗余计算,显著提升推理效率。文章从理论到实践,详细解析KV缓存原理、实现与性能优势,并提供PyTorch代码示例。实验表明,该技术在长序列生成中可将推理时间降低近60%,为大模型优化提供了有效方案。
1284 15
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
|
4月前
|
弹性计算 关系型数据库 API
自建Dify平台与PAI EAS LLM大模型
本文介绍了如何使用阿里云计算巢(ECS)一键部署Dify,并在PAI EAS上搭建LLM、Embedding及重排序模型,实现知识库支持的RAG应用。内容涵盖Dify初始化、PAI模型部署、API配置及RAG知识检索设置。
自建Dify平台与PAI EAS LLM大模型
|
1月前
|
监控 安全 Docker
10_大模型开发环境:从零搭建你的LLM应用平台
在2025年,大语言模型(LLM)已经成为AI应用开发的核心基础设施。无论是企业级应用、科研项目还是个人创新,拥有一个高效、稳定、可扩展的LLM开发环境都至关重要。
|
1月前
|
人工智能 监控 安全
06_LLM安全与伦理:部署大模型的防护指南
随着大型语言模型(LLM)在各行业的广泛应用,其安全风险和伦理问题日益凸显。2025年,全球LLM市场规模已超过6400亿美元,年复合增长率达30.4%,但与之相伴的是安全威胁的复杂化和伦理挑战的多元化

热门文章

最新文章