内容介绍:
一、使用函数计算部署stable diffusion
二、使用函数计算部署大模型
三、使用函数计算部署语音生成模型
本节讲解如何在serverless上执行AI应用。
一、使用函数计算部署stable diffusion
首先通过函数计算来部署ComfyUI进行文生图的操作,按照左侧提示进行账号资源绑定。云资源可以点击官网进行领取试用额度,进行本节操作。准备开始实验确认开始实验。
需要领取试用额度,如果是新用户,可以领取180元免费额度试用资源包,进入函数计算资源控制台。
右上角返回函数计算2.0,目前是函数计算3.0。点击应用,点击创建应用,选择人工智能标签页,选择流程式AI图片生成ComfyUI。
此次已经默认一些参数,默认部署在上海。内置模型可以选择sd1.5或者黏土风格,点击创建应用。
确认当前收费项,同意并继续部署。等待部署完成。
部署完成后点击访问域名即可访问ComfyUI页面,首次加载比较慢。每次实例启动较慢需要加载模型。
进入页面后点击右侧按钮即可开始出图。
图片已生成,通过修改提示词可以生成其他图片。参照云起实验室文档可以生成黏土风格的图片或其他更多的图片形式。
以上实验是使用函数计算部署stable diffusion。实验手册后续是挂载nas生成自己的模型,从网上找一些自己喜欢的风格,找一些插件来完成更高端的操作,更自由的处理一些图片。如果对AI绘画感兴趣可以在serverless的应用平台点击人工智能分类找到Stable diffusion,这两个绘画平台都是支持非常好的平台。comfyUI热度即将超过Stable diffusion,所以这次选择comfyUI进行实操。
费用默认规格下是t4显卡16g显存,大概是0.0025费用。部署成功的页面会显示费用使用时间。如果十分钟不使用页面会自动关闭。这个价格相比于其它stable diffusion或comfyUI场景的形式按量收费更便宜。
如果模型加载卡住可以点击右侧展示队列刷新重新出图,因为模型第一次加载需要整个加载到显存中,速度比较慢,页面可能会卡住。Serverless有请求时才会分配计算资源,如果网断开,就会认为没有请求,从而中断实例,即使后续会立即连接,但是中断会导致加载模型会存在问题。
如果后续不使用可以删掉应用,不使用不会计费。
点击右上角删除应用按钮,我已确认删除应用的风险,删除应用及所选资源。
二、使用函数计算部署大模型
接下来使用函数计算部署大模型。先进入函数计算控制台。
点击应用,点击创建应用,选择人工智能ollama,点击立即创建。
默认部署在上海,可以选择更小的模型通义千问0.5B。需要部署两个应用,一个用来做大语言模型的ollama和帮助做规划的openweb UI。通过命令行进行操作提案生成效果会比较差。openweb UI在加载时会加载起模型,0.5B的模型相对较小,启动速度更快。后续如果有正式使用模型的需要可以考虑将模型换成更大规格的模型,加载速度会比较慢,在体验阶段我们选用小模型,加载速度快。
点击创建应用,等待部署完成。
部署完成后可以在函数资源信息跳转到函数详情页面。
点击配置,点击触发器可以获得能访问的公网地址,点击复制,返回到刚才的页面,进入应用,点击创建应用,选择openweb UI。
输入刚才得到的ollama地址,点击创建应用。
部署完成后点击可以访问的域名进入openweb UI页面。
进入模型后选择模型,与模型进行会话。
以上就是第二个实验。如果大家想玩别的模型,ollama有接口,可以去ollama平台查看想玩的模型进行下载,也可以在openweb UI进行会话。查看ollama的官方文档可以直接下载,通过刚才公网触发器的地址来调用ollama的接口即可。也可以在openweb UI点击设置,可视化下载一些模型。
到目前部署了两个应用,如果需要删除则需要删除两个应用。会话完成后需要删除资源,返回刚才的页面。
点击右上角的删除应用,此处部署了两个应用,都需要删除。
返回应用详情页面。
展示刚才部署的ollama,点击删除应用。
三、使用函数计算部署语音生成模型
最后一个实验使用函数计算部署语音生成模型,与上述相同,进入函数计算控制台。
点击应用,点击创建应用。
选择人工智能,选择语音克隆生成,点击立即创建。
点击创建应用。
点击已知当前收费项,同意并继续部署。
部署完成后,点击域名,等待页面加载完成。
进入页面后,输入需要生成的文本,点击合成语音,播放音频。以上就是第三个实验,该实验可以赋予更长的文字,也可以训练自己的声音训练成语音生成模型。
在部署时除了需要创建的函数计算的函数外,还自动分了一个nas。因为此处的镜像模型本身有限制,所以会把一些文件存放到nas中,如果后续不需要,除了删除函数外,也要删除nas的资源。在应用详情页有资源列表,可以看到函数和nas两个资源,将nas也删除即可。
输入一段语音,将语音转换成文字,再进行匹配这种操作可以实现。分为几步,此处没有现成的模板,但有一些开源代码可以进行参考。
第一步是进行语音转文字,modelscope、huggingface等有一些现成的模型,可以部署在函数计算上,modelscope上有一个一键部署的功能,可以调用接口将语音文件转换成文字,通过modelscope的pipeline或huggingface的pipeline都可实现。转换成文字后需要与数据源进行匹配。文本匹配需要的算法例如高端的操作通过大模型做rag,这种情况下就可以将自定义的数据源和匹配的文字都给大模型,大模型查看是否匹配成功,将数据结构告知大模型如何返回。如果想用一个简单的文字匹配可以考虑先分词,再文本匹配,但如果有两个句子意思本身相似,写法不同就会导致无法匹配,具体看匹配的要求。
场景:今天拜访某某客户,推荐某某产品,希望把客户产品的字符匹配提取出。该场景很适合大模型,对于一些好一点的模型max,可以将这句话贴给它,接着将语音转换成文字输入,就可以进行识别,有一定的推理能力。
先部署一个语音转文字的大模型,modelscope上都有,转完后将接口传给千问这种大模型,将要求提供给大模型,大模型就可以理解我们的需求,再提供转换后的文字,就可以按照需求进行返回结果。通过api调用千问模型时可以预知一些system、user提示词,可以进行指定,先告知大模型要求,例如需要模拟一些今天拜访客户A,即使没有提问问题,但可以直接在user处输入该行。此时大模型不一定按照我们需要的回答进行回答,但我们可以写明我们希望的回答,加一行system返回值例如product是A这种json字符串,提前写明需要的输入和输出,再调用api,大模型就会按照会话上下文返回我们希望的json格式。定制化json字段只要上下文描述的足够清楚,就可以按照我们的需要进行返回。
大模型本身的知识不够,需要我们进行增强。rag的原理就是通过各种方式将上下文提供给大模型,例如现在有一些冷门的名字在一个文本中,我们可以直接将该文本提供给大模型:下面将会提供一些名词,这些名词代表的是一些产品。就可以直接输入,如果文本较大,一次输入费用会较高。可以先进行一些匹配,匹配完后再往上输入。例如现在有一串语音转文字后的文本,可以将文本先进行一些分词,分词先与数据库进行匹配,查看匹配,再让大模型进行判断是否是一个产品,因为同一个名词在不同的语境下含义不同,这些都属于rag的标准使用场景。
钉钉机器人是调用API,有一个outgoing模式。通过艾特机器人,机器人会将发送的信息通过outgoing传到服务器上,只需要在服务器上做一个转发即可,还可以通过函数计算进行转发,提供公网的endpoint。收到钉钉机器人的请求后通过API或大模型调出图的工具,按照它们的API进行传输图片,钉钉机器人会返回webhook,之后我们将响应值调到webhook上返回到群里,是一个接口的调用。可以查看钉钉的文档outgoing模式。如果是企业机器人会有更完善的outgoing机制,个人版outgoing存在一些限制。
Web端鉴权比较麻烦。上述部署的三个应用都没有加鉴权,域名放到网上可以被他人使用,直接进入资源进行出图或推理。comfyUI有一些插件可以做鉴权,其他产品可以考虑使用vpc访问或其它形式,如果不需要也可以进行删除。
下面是删除的步骤:回到刚才的页面
点击删除应用,此处是在函数计算的平台上进行删除,所以只会删除函数。该页面往下拉有资源管理,资源管理中有一个nas,可以点击nas跳转到资源控制台,在控制台上点击删除即可。确定要删,把nas删掉。
实验结束。