走出大模型部署新手村!小明这样用魔搭×函数计算

💡 原文中文,约6500字,阅读约需16分钟。
📝

内容提要

本文介绍了魔搭 ModelScope 社区模型服务 SwingDeploy 的使用方法。开发者可以将模型从魔搭社区的模型库一键部署至阿里云函数计算,节约机器使用成本。使用魔搭的 SwingDeploy 一键部署模型到函数计算后,可以在函数计算控制台找到部署好的服务和函数。函数的调用是事件驱动的,可以通过魔搭平台提供的示例代码调用已部署好的模型。文章还介绍了如何调优模型的性能、如何定位模型问题以及如何实现异步调用效果。最后,文章提到了函数计算的其他注意事项和相关链接。

🔎

延伸解读

部署后资源模型:服务与函数的关系

一键部署后,函数计算平台会创建对应的服务和函数。服务是资源管理的一级概念,可配置日志、网络等,其下可包含多个函数;函数是调度和运行的基本单位,指定代码或镜像及运行规格。平台根据请求创建CPU/GPU容器实例,空闲时释放,因此默认无请求时无资源消耗,仅对请求处理部分计费。

冷启动与预留实例的权衡

首次调用模型可能因冷启动耗时较长,尤其是大模型文件初始化。函数计算提供按量和预留两种实例模式:按量实例根据请求自动创建,需等待冷启动;预留实例常驻,可消除冷启动延时,但需用户管理生命周期并承担常驻资源成本。可通过弹性管理配置预留实例数量,建议测试时预留1个GPU实例。

异步调用实现AIGC排队效果

对于StableDiffusion等AIGC生图场景,函数计算提供同步调用、异步调用和异步任务三种方式。异步调用会持久化请求并立即返回响应,保证至少执行一次;异步任务可追踪各阶段状态,实现更丰富的任务控制和可观测性。结合GPU使用,可轻松实现类似MidJourney的异步排队处理体验。

性能调优与问题定位要点

可通过配置SLS日志和监控指标定位模型或应用问题,也可登录实例进行命令行调试。资源规格可在函数配置中调整CPU、内存、显存等,GPU卡型切换可提升最大显存(T4最大16GB,A10最大24GB)。并发度设置影响批量推理性能:计算密集型建议保持默认1,支持批量聚合的可根据请求数量设置。注意GPU物理卡地域级别上限为10卡。

❓

Q&A

魔搭 SwingDeploy 一键部署模型到函数计算的具体操作步骤是什么?

在魔搭模型库列表页过滤支持快速部署的模型,进入模型详情页点击右上角部署按钮;或从首页左侧【模型服务】进入 SwingDeploy 页面。新建快速部署后配置模型版本、部署地域、部署卡型、部署显存等信息,确认无误后点击【一键部署】,整个过程一般持续 1-5 分钟,部署完成后服务状态变为【部署成功】。

一键部署后,函数计算平台上实际创建了哪些资源?

会在函数计算平台创建对应的服务和函数。服务是资源模型的一级概念,可包含多个函数,并配置日志采集、网络通道、存储扩展等,函数继承服务配置。具体生成一个服务及其下的两个函数:model_download_func 用于部署阶段将魔搭模型下载至用户 NAS;model_app_func 是基于 Flask + 魔搭模型的推理 API。

如何调用部署在函数计算上的模型?

函数的调用是事件驱动的,通过触发器触发。魔搭一键部署的函数默认配置了 HTTP 触发器,有 HTTP 请求即触发调用。可以使用魔搭平台提供的示例代码调用已部署的模型,示例代码中的 API_URL 就是函数计算为模型函数配置的 HTTP 触发器地址。也可以在函数计算控制台找到 model_app_func 函数,在“触发器管理”选项卡查看触发器详细信息。

模型首次调用耗时长、后续调用耗时短,如何优化?

这是因为函数实例空闲一段时间后会被平台回收,再次调用需要冷启动创建新实例。可以通过配置预留实例来消除冷启动延时。在函数详情的“弹性管理”选项卡配置弹性规则,设置最小实例数(即预留实例数)和最大实例数(控制按量实例上限)。例如预留 1 个 GPU 实例,预留实例就绪后,推理请求会优先分配至预留实例执行,从而规避冷启动。

如何实现类似 MidJourney 的异步调用效果?

函数计算提供同步调用、异步调用和异步任务三种能力。异步调用在接收请求后立即返回响应,请求被持久化并保证至少执行一次;异步任务可将请求保存到内部队列并可靠处理,支持追踪各阶段状态。将异步调用能力与 GPU 结合,可以轻松实现 AIGC 异步排队处理的良好用户体验。

模型或应用出现问题,如何定位和排查?

可以通过三种可观测手段定位:1. 配置 SLS 日志,在服务中配置日志项目和日志库,在函数详情“调用日志”选项卡查看函数、请求、容器实例维度的日志;2. 查看监控指标,通过控制台“监控大盘”或函数详情“监控指标”选项卡查看;3. 命令行调试,在函数详情“实例列表”选项卡使用“登录实例”功能进入实例进行交互调试,注意登录期间实例活跃会计费,会话空闲 10 分钟自动断开。

如何调整函数实例的资源规格,比如让模型跑在不同的 CPU/GPU 上?

在函数详情“函数配置”选项卡中,可以配置 CPU、磁盘、内存、显存等资源规格。对于 GPU 函数,还可以切换 GPU 卡型来提升单个函数实例最大可配置的显存大小(T4 最大 16GB,A10 最大 24GB)。

如何设置函数实例的并发度以优化批量推理性能?

函数实例的并发度指单个容器实例同时能处理的调用请求数。在编辑函数的“基础信息”过程中可以调整并发度。对于计算密集型推理应用,建议 GPU 函数实例并发度保持默认值 1;对于支持请求批量聚合的推理应用,建议根据能同时聚合的请求数量设置并发度,以便批量推理。注意 GPU 物理卡有地域级别上限(单个阿里云账号地域级别上限为 10 卡)。

🏷️

标签

➡️

继续阅读