大模型infra实战|上百个Lora动态部署
朋友说他遇到了一个大模型技术难题,请我吃顿饭看看,能不能帮我解决下。行,一听技术难题我就来劲了。见了面后,直接问我,你这啥场景啊,100个lora。说来话长,我们做角色扮演的,最早写写prompt,通过遵循指令定义人设,日子也勉强过的下去。你这不挺好的么,干嘛老想部署自己的模型,现在基座都这么强了。这种方法天花板不高,也不安全,特别是在一些非知名人物的设定上,有自己的人设语料微调的小模型效果更好。
朋友说他遇到了一个大模型技术难题,请我吃顿饭看看,能不能帮我解决下。
行,一听技术难题我就来劲了。
见了面后,直接问我,有没有办法高效部署和管理100个lora模型?
你这啥场景啊,100个lora。
说来话长,我们做角色扮演的,最早写写prompt,通过遵循指令定义人设,日子也勉强过的下去。
你这不挺好的么,干嘛老想部署自己的模型,现在基座都这么强了。
这种方法天花板不高,也不安全,特别是在一些非知名人物的设定上,有自己的人设语料微调的小模型效果更好。
我们还有一些嘴毒的吐槽角色,和大模型无害对齐的方向完全相反,微调是必要的。
现在成了困扰我们团队的难题了,本来也是小团队,好不容易弄了几张微调的卡,现在部署也成了大问题。
作为一个熟练的vllm调包侠,对这个问题还是有一点研究的。现在的vllm支持多lora加载。我给你个脚本你研究研究看看能不能满足你的需求。
from vllm import LLM, SamplingParams from vllm.lora.request import LoRARequest from transformers import AutoTokenizer # 样例 prompts = "你是谁?" # 设置生成所需参数 sampling_params = SamplingParams(temperature=0.7, top_p=0.8, top_k=50, max_tokens=2048) lora_request1 = LoRARequest("self_adapter_v1", 1, lora_local_path="output_dir_qwen2.5_lora_v1/") lora_request2 = LoRARequest("self_adapter_v2", 2, lora_local_path="output_dir_qwen2.5_lora_v2/") # 创建模型 llm = LLM(model="Qwen2.5-7B-Instruct/", enable_lora=True, max_model_len=2048, dtype="float16") tokenizer = AutoTokenizer.from_pretrained("Qwen2.5-7B-Instruct/") # 通过prompts构造prompt_token_ids temp_prompts = [tokenizer.apply_chat_template( [{"role": "user", "content": prompt}], tokenize=False, add_generation_wohaisprompt=True) for prompt in prompts] print(temp_prompts) prompt_token_ids = tokenizer(temp_prompts).input_ids # 注意,generate可以直接使用prompts,但直接使用prompts时,默认直接使用tokenizer.encode,没有拼接chat_template print("加载角色孙悟空Lora1进行模型推理:") # 调用generate时,请求调用lora参数 outputs = llm.generate(sampling_params=sampling_params, prompt_token_ids=prompt_token_ids, lora_request=lora_request1) print(outputs) # 输出结果 for i, (prompt, output) in enumerate(zip(prompts, outputs)): generated_text = output.outputs[0].text print("prompt: {}, output: {}".format(prompt, generated_text)) print("加载角色猪八戒Lora2进行模型推理:") # 调用generate时,请求调用lora参数 outputs = llm.generate(sampling_params=sampling_params, prompt_token_ids=prompt_token_ids, lora_request=lora_request2) print(outputs) # 输出结果 for i, (prompt, output) in enumerate(zip(prompts, outputs)): generated_text = output.outputs[0].text print("prompt: {}, output: {}".format(prompt, generated_text)) print("不加载任何角色的Qwen底座Lora进行模型推理:") # 调用generate时,请求调用lora参数 outputs = llm.generate(sampling_params=sampling_params, prompt_token_ids=prompt_token_ids) print(outputs) # 输出结果 for i, (prompt, output) in enumerate(zip(prompts, outputs)): generated_text = output.outputs[0].text print("prompt: {}, output: {}".format(prompt, generated_text))
这样就实现了一个底座加载两个不同的角色lora,用户请求对应的角色就load对应的lora权重去推理。
加载角色孙悟空Lora1进行模型推理: prompt: 你是谁?, output: 我是齐天大圣孙悟空,我会七十二般变化。 加载角色猪八戒Lora1进行模型推理: prompt: 你是谁?, output: 我是天蓬元帅猪八戒,俺老猪会三十六般变化。 不加载任何角色的Qwen底座Lora进行模型推理: prompt: 你是谁?, output: 我是Qwen,由阿里云开发的语言模型。我是一个人工智能助手,可以回答问题、创作文字、提供信息、娱乐、教育等。如果您有任何问题或需要帮助,请随时告诉我,我会尽力为您提供支持。
哥们看了看说,摇摇头说,我们这个场景,没有你想的那么简单。
更大的问题是用户的需求是长尾分布的,100多个模型里,可能请求量前5个模型占了90%的请求总量。
长尾的用户的粘性很高,50%的留存,都是忠实用户,直接砍掉服务10%的那95个模型,挺不对起用户的。不砍的话一个场景留一个模型,对我们成本也翻了好几倍。
一边知道自己微调确实效果好,一边又是比较高自部署的成本。
我想了下,咱们来算一笔账,用vllm 部署100个角色扮演模型,假设模型用的是7-8B的话,放下模型的显存需要14到16GB,再考虑推理文本的负载,一般用24GB的卡型。
100张24GB的卡型,配上内存,我看了下国内某云这种推理资源的费用,一个月也得几十万块的费用。对一个几个人的创业团队来讲,卡的费用已经是不小的开支了。
另外,部署上,一个比较熟练的大模型工程师还好,会思考如何在100个实例上高效部署,用统一管理的docker,通过脚本自动按照ip的hash拉取对应的lora 权重。如果是不熟练的朋友,可能真的会在100个机器上挨个安装vllm,然后手动加载启动。
这些还都是表面的算力,人力成本,就像刚才朋友说的,长尾问题一样,更多隐形的成本还没算进去。
100个微调模型,采用传统合并部署方式。假设基模相同,每1次部署会加载1次基础模型,会重复加载99次。若基模加载需2分钟,推理显存14GB,则总部署时长多出3+个小时,额外增加1300+GB显存开销。
100个微调模型,仅有10%模型调用量高,剩下90%模型调用量低。采用1卡部署1模的模式,既无法保证高调用的响应速度,还让30%+算力出现闲置。每台4090按1万元(包月)计,每月浪费接近4万元。
假设这100个微调模型效果不佳,优化后,需花2个算法1个工作日重新部署,约占模型迭代周期工作量10%。
这些账仔细算算,就觉得哥们的问题还真的是一个问题。
看来也没有免费的午餐了,去找我无问芯穹搞部署平台的哥们,打听打听。
无问芯穹的哥们在听我讲这个问题的时候,就一直在笑,我说你笑啥,他回了一句:这都不是事。
别说100个了,就算1000个都轻松搞定,你关心的部署成本,人力成本,负载均衡,全都打包可以解决。
我甩给你个链接你去试试吧,简直是给你的需求量身定做。
具体操作文档:https://docs.infini-ai.com/gen-studio/serving/create.html
我仔细看了看,这不就是一个多lora部署平台吗?用起来还挺简单的,跟着文档走就行。
第一步,创建模型服务,上传模型。

第二步,创建部署任务,选择来源我的模型。

第三步,体验模型服务 模型服务部署成功后,进入在线状态,此时可通过 GenStudio 体验中心直接体验,并提供公网可访问的 API 服务。

在模型服务列表中,点击任意条目右侧的详情按钮,切换调用说明标签,可查看该模型服务的调用地址和调用示例。

可以用curl测试自己部署的模型:
curl "https://cloud.infini-ai.com/maas/deployment/mif-damenkp32lcout5v/chat/completions" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_KEY" \ -d '{ "messages": [ { "role": "system", "content": "You are a helpful assistant." }, { "role": "user", "content": "你是谁" } ] }'
大多可以上传模型进行推理的平台,一般都是必须上传整个模型文件的。有的平台虽然支持Lora微调,但由于基模都是自己的闭源模型,推理即使是Lora模块推理的,但我们也没有办法自定义上传Lora模块。无问芯穹这个推理平台的设计也确实蛮有意思的。
还有它的计费规则也蛮有意思的,模型部署并不收费,具体费用按照模型的调用量(Tokens)进行收费,也就是说前期不需要自己搞算力、显卡资源啥的。
给你机器给你卡部署模型,还按照token收费,太适合这种模型零散需求长尾的场景了。我把占了总需求量的90%的少数几个模型自己部署,剩下90个模型扔到他们平台上,按token量计费,简直是大善人啊!
试了下完全没问题,我就跟请我吃饭的哥们交差了,过了两天哥们发来感谢微信说,这个东西帮他大忙了,直接每个月省了接近几十万块的成本。

我也问无问芯穹的朋友要了试用链接,有这个需求的朋友可以试试:https://infinigence.feishu.cn/share/base/form/shrcn6lARShCYpA93tNjilHIQnh
如何学习AI大模型 ?
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】🆓
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
👉1.大模型入门学习思维导图👈
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
对于从来没有接触过AI大模型的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(全套教程文末领取哈)
👉2.AGI大模型配套视频👈
很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,每个章节都是当前板块的精华浓缩。


👉3.大模型实际应用报告合集👈
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。(全套教程文末领取哈)

👉4.大模型落地应用案例PPT👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。(全套教程文末领取哈)

👉5.大模型经典学习电子书👈
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。(全套教程文末领取哈)

👉6.大模型面试题&答案👈
截至目前大模型已经超过200个,在大模型纵横的时代,不仅大模型技术越来越卷,就连大模型相关的岗位和面试也开始越来越卷了。为了让大家更容易上车大模型算法赛道,我总结了大模型常考的面试题。(全套教程文末领取哈)

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习
CSDN粉丝独家福利
这份完整版的 AI 大模型学习资料已经上传CSDN,朋友们如果需要可以扫描下方二维码&点击下方CSDN官方认证链接免费领取 【保证100%免费】
读者福利: 👉👉CSDN大礼包:《最新AI大模型学习资源包》免费分享 👈👈
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)