魔搭社区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

相关文章
|
1月前
|
数据采集 人工智能
LLM2LLM:LLM2LLM:用 LLM 来增强 LLM !通过教师模型合成数据,增强学生模型的训练数据集
LLM2LLM 是一种创新的迭代数据增强技术,通过教师模型生成合成数据,显著提升大语言模型在数据稀缺任务中的性能。
211 90
LLM2LLM:LLM2LLM:用 LLM 来增强 LLM !通过教师模型合成数据,增强学生模型的训练数据集
|
2天前
|
机器学习/深度学习 人工智能 测试技术
仅7B的模型数学推理能力完虐70B?MIT哈佛推出行动思维链COAT让LLM实现自我反思并探索新策略
Satori 是由 MIT 和哈佛大学等机构联合推出的 7B 参数大型语言模型,专注于提升推理能力,具备强大的自回归搜索和自我纠错功能。
54 6
仅7B的模型数学推理能力完虐70B?MIT哈佛推出行动思维链COAT让LLM实现自我反思并探索新策略
|
8天前
|
存储 Kubernetes 测试技术
企业级LLM推理部署新范式:基于ACK的DeepSeek蒸馏模型生产环境落地指南
本教程演示如何在ACK中使用vLLM框架快速部署DeepSeek R1模型推理服务。
|
22天前
|
自然语言处理 算法 JavaScript
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
多LLM摘要框架通过生成和评估两个步骤处理长文档,支持集中式和分散式两种策略。每个LLM独立生成文本摘要,集中式方法由单一LLM评估并选择最佳摘要,而分散式方法则由多个LLM共同评估,达成共识。论文提出两阶段流程:先分块摘要,再汇总生成最终摘要。实验结果显示,多LLM框架显著优于单LLM基准,性能提升最高达3倍,且仅需少量LLM和一轮生成评估即可获得显著效果。
56 10
面向长文本的多模型协作摘要架构:多LLM文本摘要方法
|
1月前
|
人工智能 数据可视化 开发者
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
FlowiseAI 是一款开源的低代码工具,通过拖拽可视化组件,用户可以快速构建自定义的 LLM 应用程序,支持多模型集成和记忆功能。
112 14
FlowiseAI:34K Star!集成多种模型和100+组件的 LLM 应用低代码开发平台,拖拽组件轻松构建程序
|
9天前
|
机器学习/深度学习 存储 人工智能
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
MNN-LLM App 是阿里巴巴基于 MNN-LLM 框架开发的 Android 应用,支持多模态交互、多种主流模型选择、离线运行及性能优化。
761 14
MNN-LLM App:在手机上离线运行大模型,阿里巴巴开源基于 MNN-LLM 框架开发的手机 AI 助手应用
|
4月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
130 2
|
4月前
|
机器学习/深度学习 数据采集 人工智能
文档智能 & RAG 让AI大模型更懂业务 —— 阿里云LLM知识库解决方案评测
随着数字化转型的深入,企业对文档管理和知识提取的需求日益增长。阿里云推出的文档智能 & RAG(Retrieval-Augmented Generation)解决方案,通过高效的内容清洗、向量化处理、精准的问答召回和灵活的Prompt设计,帮助企业构建强大的LLM知识库,显著提升企业级文档管理的效率和准确性。
|
23天前
|
自然语言处理
Nature:人类亲吻难题彻底难倒LLM,所有大模型全部失败!LLM根本不会推理,只是工具
近期,《自然》杂志发表的研究显示,所有大型语言模型(LLM)在解释特定情境下人类亲吻行为时均失败。尽管LLM在语言处理和文本生成上表现出色,但在理解和推理复杂人类行为方面存在显著限制,表明其缺乏对人类情感、社会及文化背景的深入理解。专家认为LLM更像是工具而非智能体,虽在客户服务、内容创作等领域有价值,但在复杂推理和理解方面仍显不足。
79 37
|
23天前
|
Linux Docker 异构计算
基于Dify +Ollama+ Qwen2 完成本地 LLM 大模型应用实战
尼恩,一位拥有40年经验的老架构师,通过其丰富的行业经验和深入的技术研究,为读者提供了一套系统化、全面化的LLM大模型学习圣经。这套学习资料不仅帮助许多从业者成功转型,还助力多位工程师获得了高薪工作机会。

热门文章

最新文章