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

本文涉及的产品
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
简介: 本文将以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

相关文章
|
9天前
|
存储 机器学习/深度学习 算法
​​LLM推理效率的范式转移:FlashAttention与PagedAttention正在重塑AI部署的未来​
本文深度解析FlashAttention与PagedAttention两大LLM推理优化技术:前者通过分块计算提升注意力效率,后者借助分页管理降低KV Cache内存开销。二者分别从计算与内存维度突破性能瓶颈,显著提升大模型推理速度与吞吐量,是当前高效LLM系统的核心基石。建议收藏细读。
116 0
|
5月前
|
人工智能 自然语言处理 测试技术
能够双向推理的LLM!Dream-7B:港大联合华为开源的扩散推理模型,能够同时考虑前后文信息
Dream-7B是由香港大学与华为诺亚方舟实验室联合研发的开源扩散大语言模型,采用独特的掩码扩散范式,在文本生成、数学推理和代码编写等任务中展现出卓越性能。
255 3
能够双向推理的LLM!Dream-7B:港大联合华为开源的扩散推理模型,能够同时考虑前后文信息
|
2月前
|
人工智能 自然语言处理 API
AI-Compass LLM推理框架+部署生态:整合vLLM、SGLang、LMDeploy等顶级加速框架,涵盖本地到云端全场景部署
AI-Compass LLM推理框架+部署生态:整合vLLM、SGLang、LMDeploy等顶级加速框架,涵盖本地到云端全场景部署
AI-Compass LLM推理框架+部署生态:整合vLLM、SGLang、LMDeploy等顶级加速框架,涵盖本地到云端全场景部署
|
3月前
|
机器学习/深度学习 人工智能 PyTorch
200行python代码实现从Bigram模型到LLM
本文从零基础出发,逐步实现了一个类似GPT的Transformer模型。首先通过Bigram模型生成诗词,接着加入Positional Encoding实现位置信息编码,再引入Single Head Self-Attention机制计算token间的关系,并扩展到Multi-Head Self-Attention以增强表现力。随后添加FeedForward、Block结构、残差连接(Residual Connection)、投影(Projection)、层归一化(Layer Normalization)及Dropout等组件,最终调整超参数完成一个6层、6头、384维度的“0.0155B”模型
198 11
200行python代码实现从Bigram模型到LLM
|
4月前
|
存储 JSON PyTorch
Multimodal LLM训练-模型文件\训练数据加载逻辑源码分析
Multimodal LLM训练-模型文件\训练数据加载逻辑源码分析
231 17
|
6月前
|
JSON 运维 Ubuntu
在Docker上部署Ollama+AnythingLLM完成本地LLM Agent部署
通过以上步骤,您可以成功在Docker上部署Ollama和AnythingLLM,实现本地LLM Agent的功能。在部署过程中,确保环境和配置正确,以避免不必要的问题。希望本文能够帮助您顺利完成部署,并在本地环境中高效地使用LLM模型。
1751 8
|
7月前
|
机器学习/深度学习 搜索推荐 异构计算
LLM模型添加自定义Token代码示例:为Llama 3.2模型添加思考与回答标记
本文将介绍如何为大型语言模型(LLM)添加自定义token并进行训练,使模型能够有效地利用这些新增token。以Llama 3.2模型为基础,实现了类似DeepSeek R1中think和answer标记功能的扩展方法,通过监督微调使模型学习使用这些标记进行推理过程与答案输出的区分
432 0
LLM模型添加自定义Token代码示例:为Llama 3.2模型添加思考与回答标记
|
5月前
|
机器学习/深度学习 存储 缓存
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
大型语言模型(LLM)的推理效率是AI领域的重要挑战。本文聚焦KV缓存技术,通过存储复用注意力机制中的Key和Value张量,减少冗余计算,显著提升推理效率。文章从理论到实践,详细解析KV缓存原理、实现与性能优势,并提供PyTorch代码示例。实验表明,该技术在长序列生成中可将推理时间降低近60%,为大模型优化提供了有效方案。
939 15
加速LLM大模型推理,KV缓存技术详解与PyTorch实现
|
2月前
|
弹性计算 关系型数据库 API
自建Dify平台与PAI EAS LLM大模型
本文介绍了如何使用阿里云计算巢(ECS)一键部署Dify,并在PAI EAS上搭建LLM、Embedding及重排序模型,实现知识库支持的RAG应用。内容涵盖Dify初始化、PAI模型部署、API配置及RAG知识检索设置。
自建Dify平台与PAI EAS LLM大模型
|
18天前
|
存储 缓存 负载均衡
LLM推理成本直降60%:PD分离在大模型商业化中的关键价值
在LLM推理中,Prefill(计算密集)与Decode(访存密集)阶段特性不同,分离计算可提升资源利用率。本文详解vLLM框架中的PD分离实现及局限,并分析Dynamo、Mooncake、SGLang等主流方案,探讨KV缓存、传输机制与调度策略,助力LLM推理优化。建议点赞收藏,便于后续查阅。
372 1

热门文章

最新文章