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

作者:拓山

前文介绍了魔搭 ModelScope 社区模型服务 SwingDeploy 服务。开发者可以将模型从魔搭社区的模型库一键部署至阿里云函数计算,当选择模型并部署时,系统会选择对应的机器配置。按需使用可以在根据工作负载动态的减少资源,节约机器使用成本。5分钟完成从开源模型至模型推理 API 服务的生产转换……好,优势前文已经介绍过了。

那么,到底怎么应该怎么开始使用,本文将带小明(纯纯的小白)走出新手村,体验魔搭社区的一键部署服务 SwingDeploy ,对小明的种种疑惑进行解答。开始!

0.小明如何在魔搭社区一键部署开源模型?

魔搭开源社区当前只有热门开源模型支持一键部署(可支持部署的模型列表紧密扩充中),小明可以在模型库列表页面,过滤支持快速部署的SwingDeploy的模型列表,然后点击进模型详情页,其中模型详情页的右上角包含有部署按钮,可以进行快速部署 SwingDeploy 。
截屏2024-01-05 13.49.48.png
模型列表页:过滤支持模型部署的模型列表
截屏2024-01-05 13.50.18.png

模型详情页:右上快速部署

另外,小明可以切换至首页,通过左侧【模型服务】进入模型部署服务 SwingDeploy 页面。
image.png
在新建快速部署 SwingDeploy 后,小明可以针对模型部署信息进行配置,包括必要的部署模型版本、部署地域、部署卡型、部署显存等。
image.png
当小明点击确认快速配置无误后,通过点击【一键部署】按钮,从而进入部署过程;整个过程一般持续1-5分钟,当部署完成后,可以看到服务状态切换为【部署成功】。
image.png

小明在魔搭一键部署模型到FC后,实际在FC部署了什么?

当小明将魔搭开源模型一键部署 SwingDeploy 到阿里云函数计算FC后,实际上是在阿里云函数计算FC 平台创建了对应的服务与函数;服务和函数是阿里云函数计算资源模型中的一级概念:

  • 服务:
    • 一个服务中可以包含多个函数。
    • 在服务级别上可以配置日志采集、网络通道、存储扩展等,服务中的所有函数继承服务中的这些配置。
  • 函数:
    • 函数是调度与运行的基本单位,是平台用户业务逻辑的所在,其中指明了代码/容器镜像,配置了CPU/内存/显存/GPU的运行规格等。

函数计算平台在收到该函数的推理请求调用后,会根据服务和函数的配置来创建对应的CPU/GPU容器实例。函数实例处理完请求后,再由平台将响应返回给用户。对应的CPU/GPU容器实例空闲一段时间没有处理调用请求后,函数计算平台会将其释放。所以**默认情况下,空闲未使用的服务/函数没有资源消耗,函数计算仅对请求处理部分计费。 **

使用魔搭的“模型服务”SwingDeploy一键部署模型到函数计算后,可以在部署列表中看到“服务名称”,使用服务名称可以到函数计算控制台相应地域的服务列表找到部署好的服务和函数

image.png
在函数计算控制台的服务与函数页面,搜索指定的服务
image.png

用户通过魔搭一键部署模型后,在函数计算会对应生成的一个服务与其下的两个函数:

  • model_download_func作用:用于部署阶段将魔搭模型下载至用户NAS内。
  • model_app_func作用:基于Flask + 魔搭模型的推理API,具体源码可见链接。

image.png

小明如何调用部署在 FC 的模型?

函数的调用是事件驱动的,我们定义一组规则,事件源产生的事件若匹配这些规则,就会触发函数的调用执行。这些规则的定义在函数计算中由“触发器”承载。具体到魔搭一键部署的函数,我们默认为其配置了一个HTTP触发器,若有相应的HTTP请求发生,即会触发函数的调用,详见函数计算平台HTTP触发器的使用文档。

小明可以通过魔搭平台提供的示例代码调用已部署好的模型。
截屏2024-01-05 13.53.37.png
魔搭示例代码中API_URL中的HTTP URL,就是函数计算为每个魔搭模型函数配置的HTTP触发器。可以通过FC控制台,找到对应的魔搭服务下的model_app_func函数,通过查看函数详情页的“触发器管理”选项卡,查看更为详细的触发器信息。
image.png

小明发现部署在FC的模型首次调用耗时长,后续调用耗时短,如何调优。

如上所说,函数如果长时间空闲(没有调用发生),平台会通过回收函数实例来释放资源。函数计算平台在收到一个调用请求后,会判断当前是否有空闲的函数实例可供使用,如果没有,则需要新创建一个函数实例来服务该请求,这个过程称之为冷启动。

如果函数实例初始化时间耗时较长,那么服务该实例上发生的初次调用的时延也会增加,例如,初始化较大的模型文件(ChatGLM-6B模型文件15GB)。

为了应对上述场景,函数实例按照弹性规则,可以分为按量和预留两种模式。上述根据请求量弹出的实例我们称为按量实例。与之对应的,可以为函数配置弹性规则,增加预留模式的实例。预留实例由函数计算平台预先创建,属于常驻资源,可用于平缓突发请求产生的时延毛刺。

FC按量模式与预留模式的差异:

  • FC按量模式为通过请求自动触发实例的创建,首次发起调用时,需要等待实例冷启动。如果您希望消除冷启动延时的影响,可以通过配置FC预留模式来解决。
  • FC预留模式是将函数实例的分配和释放交由您管理,当配置预留函数实例后,预留的函数实例将会常驻,直到您主动将其释放。

在控制台中,可以在函数详情的“弹性管理”选项卡配置弹性规则。如下图示例,最小实例数即预留实例数,最大实例数与最小实例数之差即按量实例数的上限(避免弹出资源太多,控制成本上限)。弹性管理的配置方法详见文档

例如:可以通过如下操作指导,预留指定数量的GPU实例(测试目的:一般建议预留1个GPU实例)。
image.png

  • 切换至函数的弹性管理Tab页

image.png

  • 设置函数的LATEST版本,至少预留1个GPU实例

image.png

  • 查看当前预留实例数量,是否满足目标预留实例数量。(上图表明完成指定数量的GPU实例预留)
  • 当预留实例就绪后,推理请求调用会被优先分配至该预留实例上执行,从而规避按量场景下的冷启动。
    • 小明可以通过请求级别的日志观测,来查看请求是由按量实例服务、还是预留实例服务。
    • image.png
    • image.png

截屏2023-08-15 下午5.30.56.png

  • 通过删除弹性规则,可以删除对应预留实例。
  • 注意:预留实例的生命周期,完全由小明全权负责。

小明想实现类似MidJourney异步调用效果,应该如何做呢?

类似于 StableDiffusion 的 AIGC 生图场景,Midjourney 提供了非常好的异步队列效果,基于函数计算如何实现呢?

函数计算同时提供同步调用、异步调用、异步任务三种处理能力。

  • 同步调用:
    • 当您同步调用一个函数时,事件将直接触发函数,函数计算会运行该函数并等待响应。当函数调用完成后,函数计算会将执行结果直接返回给您,例如返回结果、执行摘要和日志输出。
    • 详细文档:链接。
  • 异步调用:
    • 函数计算系统接收异步调用请求后,将请求持久化后会立即返回响应,而不是等待请求执行完成后再返回。函数计算保证请求至少执行一次。
    • 详细文档:链接。
  • 异步任务:
    • 当您对函数发起异步调用时,相关请求会被持久化保存到函数计算内部队列中,然后被可靠地处理。如果您想追踪并保存异步调用各个阶段的状态,实现更丰富的任务控制和可观测能力,可以选择开启任务模式处理异步请求。
    • 详细文档:链接。

image.png
当函数计算的异步调用能力与GPU相较合时(详细文档:链接),小明可以很轻松的实现AIGC异步排队处理的良好用户体验。

小明发现模型/应用有问题,如何定位?

a.可观测:配置 SLS 日志

SLS 是阿里云提供的日志类数据一站式服务。我们可以通过在函数对应的服务中配置 SLS 日志项目和日志库,函数实例执行过程中的输出就可以记录到配置的日志库中。之后可以通过函数计算控制台、 SLS 的控制台都可以对这些内容进行查看。

函数计算服务配置日志的详细内容,请见文档。以下给出简要步骤。

  1. 在服务配置中确认日志功能已启用

image.png

  1. 在函数详情中,“调用日志”选项卡查看函数维度的日志、请求维度的日志、容器实例维度的日志。

image.png
image.png

b. 可观测:如何查看监控

函数计算平台记录了多个层次的监控指标,我们可以通过控制台进行查询。

一方面,我们可以通过控制台左侧“高级功能”、“监控大盘”进入,在大盘页面下方依次选择服务名称、函数名称,查看不同层次的监控汇总信息。有关监控指标详细信息请见文档
image.png

另一方面,我们可以在函数详情“监控指标”选项卡中,直接对函数自身相关的指标进行查看。
image.png
最后,我们可以在函数详情"调用日志"选项卡中,查看函数运行的相关日志。
image.png

c. 可观测:如何命令行调试

我们也可以通过函数计算控制台函数详情的“实例列表”选项卡,使用“登录实例”功能进入到函数实例里面,通过直接的交互对执行环境、函数行为进行调试。
image.png
如果当前“实例列表”为空,可以通过测试调用触发函数计算平台新弹出一个实例。
截屏2023-07-03 上午9.42.25.png
登陆 GPU 实例后,小明就可以执行相关的 shell 命令了#
Tips:需要注意的是,登录实例的过程中,函数实例处于活跃状态,和调用函数采用相同的计量规则。为避免忘记关闭会话而意外产生费用,通过控制台进行命令行操作时,会话默认会在空闲10分钟之后断开连接。如有需要,可以通过执行例如top来进行保活。

小明想让模型跑在不同的 CPU/GPU 上,在 FC 上应如何设置呢?

如果我们通过监控指标发现函数实例的资源使用较为饱和或者空闲,可以在“函数配置”选项卡上,对函数的资源规格进行配置,包括CPU/磁盘/内存/显存等。

特别地,对于GPU函数,我们可以通过切换GPU卡型,还提升单个函数实例最大可配置的显存大小(T4最大16GB,A10最大24GB)。关于GPU函数的更多信息,可见文档。

  1. 查看函数当前配置

image.png

  1. 编辑函数基础信息

image.png

小明调优后的模型可以批量推理,在FC上应该如何设置呢?

函数计算平台在收到一个推理调用请求后,会判断现有函数容器实例的并发度是否够用,决定是否将该推理调用请求转发给现有函数容器实例来处理,还是新弹出一个函数容器实例处理该请求。
单个函数容器实例同时能处理的调用请求数为函数实例的并发度。如果应用本身能够同时处理多个请求,相比默认的1并发度,可以减少函数的冷启动次数。
建议根据不同应用场景的需要,选择不同的并发度配置。

  • 计算密集型的推理应用:建议GPU函数实例的并发度保持默认值1。
  • 支持请求批量聚合的推理应用:建议GPU函数实例的并发度根据能同时聚合的推理请求数量进行设置,以便批量推理。

我们可以在编辑函数的“基础信息”过程中,调整函数实例的并发度。
image.png

特别地,对于GPU函数,默认情况下,无论Tesla系列T4卡型、还是Ampere系列A10卡型的GPU实例,单个阿里云账号地域级别的GPU物理卡上限为10卡(示例请见文档)。在高并发场景下,如您有更高的物理卡需求,请加入钉钉用户群(钉钉群号:11721331)申请。

小明完成了函数计算新手村课程,对小明还要其它嘱咐嘛?

  • GPU实例FAQ
  • GPU函数镜像使用说明
  • GPU应用场景使用说明

更多内容关注 Serverless 微信公众号(ID:serverlessdevs),汇集 Serverless 技术最全内容,定期举办 Serverless 活动、直播,用户最佳实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/755691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++多长时间会被Python或者其他语言取代?

c多长时间会被Python或者其他语言取代? 如果不考虑市场因素,C#今天就可以取代C。 自.NET跨平台至今,C能做的工作,C#都能做了,且性能差别不大。 在C最有优势的嵌入式UI方面,C#可以拿出Avalonia替代QT。用 …

9.16单词拆分(LC139-M)

算法: 这道题可以用回溯,但是可能会超时 可以用背包问题解决: 物品:单词 背包:字符串: 单词能否组成字符串s,就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词,就…

M4芯片和核心板应用于工业网关解决方案

在工业级应用中,M4芯片和核心板凭借其丰富的接口和强大的性能及高性价比特点,已经成为众多工业设备中的首选。本文将从M4芯片和核心板的特点、应用场景、以及其在工业级网关中的应用等方面进行详细阐述。 一、M4芯片和核心板的特点 M4芯片和核心板以其…

nfs介绍与配置

NFS 1. nfs简介 nfs特点 NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服…

camelot pdf提取表格实践(记录)

参考: 巧用Python的camelot库批量提取PDF发票信息 关于文本pdf的表格抽取 AttributeError: module ‘camelot‘ has no attribute ‘read_pdf‘及类似问题解决办法 camelot 参数 https://blog.csdn.net/INTSIG/article/details/123000010 报错解决: Mod…

美团大规模KV存储挑战与架构实践

KV 存储作为美团一项重要的在线存储服务,承载了在线服务每天万亿级的请求量,并且保持着 99.995% 的服务可用性。在 DataFunSummit 2023 数据基础架构峰会上,我们分享了《美团大规模 KV 存储挑战与架构实践》,本文为演讲内容的整理…

探讨NLP对行业大量数据信息抽取的技术实现

在本文中,为了实现高效的信息抽取,我们采用了一个自主研发的多模态AI的大模型NLP平台。 这个平台的使用过程分为以下几个步骤: 数据收集:我们收集了与项目相关的100条数据样本,这些样本涵盖了各种商品描述&#xff0c…

Go web 基础相关知识

Go web Web工作方式 浏览器本身是一个客户端,当你输入URL的时候,首先浏览器会去请求DNS服务器,通过DNS获取相应的域名对应的IP,然后通过IP地址找到IP对应的服务器后,要求建立TCP连接,等浏览器发送完HTTP …

软考 网工 每日学习打卡 2024/3/18

学习内容 第8章 网络安全 本章主要讲解网络安全方面的基础知识和应用技术。针对考试应该掌握诸如数据加密、报文认 证、数字签名等基本理论,在此基础上深入理解网络安全协议的工作原理,并能够针对具体的 网络系统设计和实现简单的安全解决方案。 本章共有…

【Apache ShenYu源码】看看贡献者如何实现支持提醒通知设计

相信大家碰到源码时经常无从下手🙃,不知道从哪开始阅读,面对大量代码晕头转向,索性就读不下去了,又浪费了一次提升自己的机会😭。 我认为有一种方法,可以解决大家的困扰!那就是通过阅…

基于Spring Boot框架的学生作业管理系统

摘 要 快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生…

从零开始学习在VUE3中使用canvas(二):fillStyle(填充样式)

一、fillStyle概念 在canvas中我们可以用fillStyle定义接下来的图像的样式&#xff0c;默认为黑色#000。 我们可以使用纯色、渐变、和纹理&#xff08;例如图片&#xff09;进行填充&#xff0c;来达到自己想要的效果。 二、代码 <template><div class"canva…

nginx 报Too many open files

nginx 异常报 Too many open files 上周时&#xff0c;nginx已经报 Too many open files 当时把 配置文件调整最大连接65535了&#xff0c;reload 重新加载nginx后不报错了。 cat /proc/14921/limits |grep "Max open file" * soft nofile 65535 * hard nof…

Softing TDX——设计模板

| 高质量的设计模板——减少开发诊断仪所需的工作量 现今&#xff0c;用户对诊断仪的界面和操作理念提出了更高的要求。一个直观的用户界面既能减少用户熟悉诊断仪的时间&#xff0c;又能减少在日常工作中进行诊断任务的时间。然而&#xff0c;创建一个精巧又独立于平台的诊断…

【黑马程序员】Python高阶

文章目录 闭包定义nonlocal关键字作用优缺点优点缺点 装饰器装饰器闭包写法 设计模式单例模式工厂模式优点代码示例 多线程基本概念threading模块 网络编程服务端开发socketsocket服务端编程 客户端开发 正则表达式正则的三个基础方法matchsearchfindAll 元字符匹配单字符匹配数…

代码随想录算法训练营第二十五天|● 216.组合总和III ● 17.电话号码的字母组合(JS写法)

216 组合总和Ⅲ 题目链接/文章讲解&#xff1a;https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1wg411873x 方法一&#xff1a;自己写的 自己写的&#xff0c;本题和77很像&#xf…

Redis数据结构对象之集合对象和有序集合对象

集合对象 集合对象的编码可以是intset或者hashtable. 概述 intset编码的集合对象使用整数集合作为底层实现&#xff0c;集合对象包含的所有元素都被保存在整数集合里面。 另一方面&#xff0c;hashtable编码的集合对象使用字典作为底层实现&#xff0c;字典的每个键都是一个…

web部署 四 限制

案例: 1/设置其下载速度限制:1000000010m&#xff0c;10000001m&#xff0c;2分别查看下载速率是否发生变化。 2/限制连接数&#xff0c;同时下载5个文件。查看第6个是否能正常访问。使用命令符:netstat-n&#xff0c;查看活动链接&#xff0c; 正常情况下我们的下载速度 我们…

遥感深度学习:CNN-LSTM模型用于NDVI的预测(Pytorch代码深度剖析)

代码上传至Github库&#xff1a;https://github.com/ChaoQiezi/CNN-LSTM-model-is-used-to-predict-NDVI 01 前言 这是一次完整的关于时空遥感影像预测相关的深度学习项目&#xff0c;后续有时间更新后续部分。 通过这次项目&#xff0c;你可以了解&#xff1a; pytroch的模…

石油炼化5G智能制造工厂数字孪生可视化平台,推进行业数字化转型

石油炼化5G智能制造工厂数字孪生可视化平台&#xff0c;推进行业数字化转型。在石油炼化行业&#xff0c;5G智能制造工厂数字孪生可视化平台的出现&#xff0c;为行业的数字化转型注入了新的活力。石油炼化行业作为传统工业的重要领域&#xff0c;面临着资源紧张、环境压力、安…