00:02
好呃,各位线上的朋友们,大家下午好啊,欢迎大家参加参加腾讯云中小企业在线学堂的系列直播活动,那我呢是CSN战略合作总监,开发者研究院的院长闫辉,同时也是本次活动的主持人。大家都知道中小企业在线学堂呢,是围绕中小企业的有需求,聚焦企业经营管理、应用工具、技术创新、安全底座四大需求场景,推出了系列的直播课程,全力呢帮助中小企业数字化升级。那今天这个会议的主题呢叫AI2.0时代,如何通过AIGC呢来打造?爆款的营销内容。那近期呢,生成是AI,像AIGC的应用引起了广泛的关注,并优先在新闻啊、广告啊、文学创作等多个领域实现了各种应用。那文字生成图片作为AGC的一个重要的分支,在2022年的下半年的迅速发展,其中的以stable diffion呢,Mid啊等等这样为代表的文生图的模型一出现就引爆了整个行业的热度,为内容创作和营销生产啊产生了变革式的影响。
01:12
那。如何基于腾讯云快速部署一个自己的文成图应用,提高营销的生产,打造爆款的内容,是我们今天这个会议呢探讨的重要的议题,本期呢我们将分享stable大模型背后的实验原理,快速部署SD模型的云原生的解决方案及相关的应用。那会议过程当中呢,如果大家有疑问,可以在问答区呢进行提问,我们的嘉宾还有专家呢实时将为大家做解答。那今天呢,我们先请出今天第一位讲师,腾讯云互联网行业技术专家刘远,刘远老师呢,有十年以上的互联网从业经验。啊,精通原生技术啊以及应用,拥有丰富的微服务大数据啊,机器学习开发和架构经验,今天分享的主题呢是staion的基本原理介绍啊,他将从sta Di的基本运行机制啊,以及Di的模块分析两方面开始讲解,那我们接下来欢迎刘源老师。
02:14
好。嗯,谢谢主持人,嗯,大家好,嗯,今天我的内容是给大家去讲解一下sta的一些基础原理,那么嗯,这一块我们会主要去看一些它的一个运行的流程,这里我们就不去一些数学的公式,因为本着多一个数学公式少一个的原则啊,我们这里去浅显的让大家对有一个呃理性的认识。那我们今天的内容会分成两个部分,第一个部分是我们看一下sta的一个内核,也就是我们个扩散模型它是怎么样去的,那第二部分的话,我们会基于扩散模型去讲一讲,如这个大热的模型,它在扩散模型上它有什么些。
03:16
那首先我们看一下stableus,它到底是一个什么东为了现一个什么目的,应该比较熟悉,我们用ble的话,一般会去做两个事情,第一个事情是说我们会去做的一个用,也就是说我们输入一段文字,这个给我生成一个图像,那这里的话,我们的指引式文本,也就它是一个我们的这个呃。向导去指导我们模型如何去生成,那第二块的话,大家可能用的也比较多一些,就是我们可以给一张图片,然后们对这个图片进行一些文字的描述,希望我们能把文这个图片里面内容进行一些修改,那这里的话,我们的这个引导不光有文本,还有图像。
04:04
对,那就是主的。那么us么义机器学习里面,我们的所有的过程都是去寻找这个事物本身的一个概率分布,然后我们使用模型去拟合这样的一个分布,使得它能够去生成我们一个目标的一个一个object,或者叫图片,啊在在这里。那么我们stableus的一个原理就是说我们的图片都是会去符合一定的这个规律分布的,那我们让stableus去学习这些的分布。当他训练完毕了以后,我们利用这个文本中去的一些语的信息,那么这些语信息它本身也是符合一定的分布的,那么我们最后会去生成和这个文本信息相匹配的一个图片,那么这就是的一个view的一个概述。
05:04
那么我们可以看到下面这张图,它是一个呃,比较高层的一个,去看是什么样子的架构。我们也看到它其实会有三个部分,一部分是我们左上角的这个蓝色部分,叫text code,它是将我们的这个文本信息去向量化的一个模型组件,那中间的这个部分就是我们的核心,也就是我们扩散过程的一个模型,叫us,那么它会使用的以及我们的一些采样器来去进行图片生成。那最后我们黄色的这个部分叫做image,那么它的作用主要是我们这个图片来进行一些扩大,那么稍后我会去讲解这三个部分,它们分别是什么样的一个作用。那这里为什么会有三个部分呢?可能多会比较奇么,是个模,是个组合的系,对,如果我们看过在也是一个比较大热的一个模型区的话,我们的我们看到多的文件么不同文夹实成了sta系。
06:12
所以刚才我们讲到了这样一个组合方式以后,其实会有几个问题出现,第一个就是我们刚才讲的这个分,那么我们首先需要让这个模型学会怎样去学习这个图片的分布,那么这我们第一大需要解决的问题就是我们去有一个生成图片的方法,那第二个部分是我们这个多模态连接方式,多模态,多模态指的就是说我们并不是只做这个文本或只做图片,而是我们希望有机的将文和图片进行联合起来。那么。这也是它中间的一个模块需要去处理的问题,就是说它个语信息的指导方法,那第三个的话是一个加速训练方式,因为我们不希望我们的一个推理或者过程会花掉我们几个月或者是说一年的时间,对吧?我们的推理时间也希望他们能尽快的输出我们需要的图片,那么一个加速训练的方法也是在我们的这个算法中需要解决的问题,我们来依次看一看这三个方法它具体解决什么问题。
07:12
首先我们看一下这个model运行机制,就是我们生片。那片要怎么去生成呢?我们其实会有比较的想法,就是首先我们给这个模一张净的片。我们每一步在上面去加上一些的,让这个图片它能够学会。加到图片的一个样子,那么一旦我们给他一个加上噪音的图片以后,他知道这个图片前什么样子的话,他就如何去。去掉这个我们附加的噪音了。那么在这训练完成了以后,我们可以给他一张完整的片,因为他在训练的时,他每一步都能够知道我这个片是如何一一的,那么当然可以从一张纯噪的片中去生还出来我们一张始的片,那么这个过程中,它也就是在一步一步学习我们噪音之前和之后的一个图片的分布。
08:11
所以程个前程,程清。说到这个器学习训练的话,那我们第一个需要准备的是我们这个练,那stable也是也是同样,我们先看一看是怎么样去准备它的训练的,那刚才有讲到我们是我们一个朴素的idea,是希望这个模型能够学习到噪之前的图片的样子,那我们现在先准备一张干净图片,往上面去加上不同的呃,噪音的声量。
09:00
这样我们可以得到加过噪音以后的这些图片,那我们把所有的训练集中的图片都依次这样进行,那我们就会得到两个东西,一个东西是我们干净的图片啊,三个东西,一张是我们净图片,另外一块我们加噪的图片,以及最后一个就是我们加上这个噪的一个一个一个数量级,那么当然我们在这个生成。的时候,其实不需要一步一步的去加入,而是我们可以使用这个重参数化的技巧。直接对。片进行某一个。OK,那我们得到了上一步的这个数据集以后,比如我们现在有一张加上声量为三的噪音的一张图片,我们现在把这张图片,我们的这个扩散模型,那这里我们。那原来他会告诉我们这一张图片里面到底有多大的一个一个噪音。
10:04
这是我们预测的一个噪音,那么因为我们刚才去做这个训练的生成的时候,我们也保留了这个等于三的一个噪音的一张图片,那我们对这两张图片进行对比以后,可以生成它的一个loss值,然后我们通过呃,我们的神经网络的一个反向传播去做一些梯度下降,去更新这个参数,逐步的进行迭代训练以后,那么我们使得。我们的扩散模型,也就我们这个噪音预测器,它的这个预测准确率越来越高,最后直到我们能够准确的预测出这张图片里面的噪音量,和我们这个一开始真正附加到上面的一个噪音量是完全一致的。那这就是我们的一个训练过程,这里我们可以看一下,嗯,从通过这个训练的生成,包括我们这个训练过程的一个详细的过流程,就是我们首先去抽出来一张这个原始图片,然后我们去选出一,因为我不需要从头开始去附加这个。我们在这。
11:16
最终去计算这个梯度。直到手里。这是我们的一个训练的过程。那我们训练好了一个这个噪音预测器以后,我们就可以啊,用它来帮我们这个生成图片了。那生成图片什么样子的呢?既然我们已经啊看到我们不停的往上面去附加这个噪音,那我们可不可以去有一张完片,然后向程当。那我们现在在推理的阶段就将一张。完整的这个纯噪音片给到这样的一个模型,让他从最后一个时刻T开始逐步的从这个噪音里面去,去掉噪,去还原出来我这个图片,我们这张图就是我们是一张纯噪的图片,过第一次测以后发现这里有些噪音。
12:11
那我们把这个噪音的这个数量从我们原始图片里面出来,我们就得到一张少一些噪音的一张图片,那们持续迭过程,最终我们就以还原出来这张片。那那除了这个,那刚才讲到的都是我们这个通过噪音生成图片,也就是我们这个图图对吧,那这里其实并没有这个文字设计在里面,那文字怎么来的呢?我们可以,因为因为所有的经济学训练,我们都会把论是图片或者文字都转化成我们的这个向量,就是数值的表示,那我们同样我们的文字也可以转换成个。然后去加入到这个模型里面去,作为一个附加条件,指导如何进行降噪。
13:01
对,这里就是一个大概的流程,那么我们所有以上这个,呃。练以及降噪的过程,我们都会使用这个网络结来进行进行处理,我们这边会大概的去看一看这网络的这个结啊,它其实是一个和der的一个一个结构,在的这个地方,我们进行这个下采样,然后在们进行上采样。然后不停的在这个,不断的在这个模型里面去捕获这个图片的一些特征。那另外的话,我们的包括我们这个文字的一些Ding的数据,我们会在同的这个模块间进行输入,那么在模,那么在层与层之间进行上下采样。最终去完成整体的这个训练过程。那最后我们可以先看看上面这张图,我们这边的一个输入会有三个,一个是我们这个噪声,是我们刚才训推理所说的我们这个噪声图片,完整的噪声图片,那么step去指导我们每一步到底应该是去掉什么样一个噪声。
14:08
一个。那我们可以看到,在我们这个推理代码里面也是一样的,如果我去载并完整去载,那我的。我们固定的一个度的一个纯片,我们的time step,那这里的话,它只是个简单的一个量,那我们会把它做一个位置编码去加入到我们的这个里面里面里面去,那最后一个是我们个它会使用这个注意力机制,将它channel里面的呃进行这个切分,做一个这个。这个切的操作。最终去加入到我们这个运算过程里。
15:01
系。接下来我们看一下这个。那么呃,这张图大家应该是比较熟悉啊,在网上也经常会看到这张这个sta的图,那中间的这一个绿色的框,其实就是刚才讲到的这个扩散过程的一个一个模块,那么看到上面的我们看到的上半部分的这个us process就是我们准备上面去附加。不同的音,然后让模型去学会它加之片的子,从而预出来它的一个音的过程,这是us的一个process,那下面的这个过程就是我们这个。推理的过程,我们准备了一张纯的图片,然后通过这个网络以后,最后我们能够出来一张。
16:02
真实的图片。OK,这是我们这个,那么我们看到这边还会有两个模块,一个是白色的框,一个是红色的框,这个是什么呢。这两个框其实就是stableusion相对于dius model的一个改进,那第一个部分,那它的一个两个大部分改进,一个是说它的一个条件控制机制,也就是说我们如何在这个过程中加入。文字的一个啊。这个inbedding对,刚才大刚才大家已经看到,就是我们把这个文字也会加到这个里面去呢,它是如何做到。那第二块的话,我们是。就是刚才我们一开始讲的是如何去为这个速度去提升,那么这里所有的这个训练和推理过程都会在浅空间里面进行,而不是像素空间,那这里也就是我们这个红色框的。一个工作。OK,我们首先看一下这个白色的这个框啊,就是它怎么去添加这个控制机制的,因为大家肯定比较比较疑惑,为什么我这个图片的生成过程中,我可以把这个文字也加进去,因为这个文字和图片它不是一个模态的,它怎么样能够呃让两者有机的融合起来呢?
17:14
那这里的话,我们会引入一个新的模型,叫做clip模型,也就是我们才看到框。那么模型也是一个经。独的text。我们的数据集会像上面这张图一样,我们会有一张图片,以及这个图片所对应的它的一些标签或者是文字的描述。那么它是一个完全相关的,也就是说我们这个文字是完全能够代表这个图的一个分布。那么接下来我们把这两个元素分别输到个模里,产生不同。
18:01
进似比。最后,Clip的参数能够输出两个in。在弦相似度上能够表示成为一个,也就是相关的。那这样的话。我们在进行sta的过程中的时候,我们输入一段文字,然后通过转为inedding以后,那么这个文字的inding其实它就相当于能够代表这个图像的背。对,这个不知道大家能不能理解。因为我在练的时候将这两之间的相关性进行一个融合,那么我在使用时候旦我提供了一个,相当于我就提供了一个这个image。使。
19:06
所以说这个过程中,它其实就有机的将我们的这个文字的这个我们这个图片进行了一个结合,使得他们能够相互进行。那么最后的话,我们,嗯,看一下这个,这个叫做变分编码器的它。我们。一开始这个。扩散模型它其实不是,呃,像现在这样的运行的,它是运行在一个像素的空空间里的,什么像素空间呢?就是我们所有的片它都是一个X的,那么我们的处理是直接对片进行处理,但是这样的理过程实在太慢了。那我们有一个更好的idea,就是说我们首先对这个图片进行降维,我们将图片空间拉到浅空间,然后进行刚才的无论是说我们这个过程还是说我们的过程,那么当它生成完毕了以后,那我们再将一一张浅空间的这个向量恢复成为我们像素空间的一个。
20:10
V左。然后变成一个低维的一个向量,然后再通过一个恢复为一个高维的向量。那么其实这个过程中,在实际中不光是使用E。所以说这里所以说我们可以看到最终的它其实是一个模块化的一个组成的一个方案,我们在中间可以替换任意的部分去达到一个更好的效果,或者说我们希望去定义这样整整体的一个的。那呃,我的对于关于这个介绍就到此结束,如果大家有什问题可以话框里面进行提,那下来把这个控制权交给主持人,谢谢。
21:14
好呃,非常感谢刘老师的精彩的分享啊,这里面很多技术我觉得讲的还是非常啊,容易理解的。好呃,各位观众如果有疑问啊,欢迎在问答区呢进行提问,嘉宾呢也实时为大家解答,接下来呢,我们请出今天第二位讲师啊,腾讯云通用SARS行业资深架构师刘宇,刘宇老师呢有17年的I从业经验,曾从事云原生、大数据、AI等方面的工作,目前呢聚焦在腾讯云泛互联网行业的通用SaaS赛道。底层基础设施架构的设计。下面我欢迎刘老师为大家带来分享基于stable的腾讯云原生的部署实践。
22:10
我们知道学好一个知识,其实一定要理论和实践相结合嘛,对吧,那刚才我们的同事刘刘老师呢,其实介绍了很多这个sta的一些理论知识,那接下来呢,我就给大家主要演示一下如何在这个腾讯上去部署咱们的这个stable的一个大模型。那今天呢,其实我主要是分四个部分来介绍吧,那第一个部分呢,就是我们先介绍一下,就是说如何使用腾讯云的这个容器平台t ke和我们的这个并行文件系统cfs去部署sta的大模型,其中呢,这个cfs呢是我们的行文件系统啊,它的主要作用呢,是存放我们的这个的这个模型文件啊,这个主要是用于是是一个存储的这么一个功能,那t ke呢,是我们的容器平台那添如T拟啊显存的啊,显卡的这种功能,就是我们叫QG,它可以把显卡的算力和显存进行分啊,这一部分呢是我是放在第二部分介绍,就是说如何使用QGPU提升推理的服务的并发性能。
23:25
对,那除此之外呢,我们还有这种叫云原生网关的这么一个啊pass托管服务,它可以在南北流量方向呢,进行一些很精细化的一些控制,包括一些更高级的一些功能啊,这一部分呢,我是放在第三部分进行介绍,那最后一部分也是腾讯其实啊最有特色的一个功能吧,就是我们针对这个呢做了一些优化啊,然后包括一些算子啊等等优化,我们把这个服务呢,是叫ta口,这个ta呢可以针对我们的一个大模型,无论是训练还是推理啊,都有一个很明显的加速效果,这一部分呢,我放在第四部分介绍。
24:01
OK。那接下来我们先做第一部分介绍,这也是最重要的一个部分,就是说我们如何先顺利的把我们的大模型部署起来。在实际的动手操作之前呢,我先简单介绍一下,就是我们的这个t ke的一个容器平台,因为刚才我看这个就是问有有有一些同事啊,也在问,就是我们的算力对吧,是如何收费的啊,那这里面其实就后面有可能会回答这个同事的一个问题啊,我们的TK呢,其实是分两种类型啊,第一种类型是叫托管集群,第二种类型呢,是叫service的这种集群方式啊,这两种集群的一个区别呢,就是说第一种集群呢,它是以这种传统的物理机的方式作为一个,所以说呢,它的计费方式呢,还是以虚机的方式,就是我们CM的方式进行收费啊,那后一种集群的方式呢,它其实底层它不是那种传统物理机了,它是一种轻量的虚拟机,所以说呢,它的计费方式就不太一样了,它是以这种pod的实际的使用的这个资源去去进行收费的。
25:03
啊,这是在计费上的一个区别,那除此之外呢,其实我们说我们传统那种第一种方式呢,它更常用的一个使用场景呢,就是说我们需要比如说有一些经常长期运行的一些任务,我们建议是放在这种就是t ke托管基金上的啊,因为他们有经常这种弹性的扩缩容嘛要求,这种就是我们的物理机需要长期稳定的一个运行这种场景,我们推荐使用第一种场景啊,那如果说你这个业务呢,有这种很明显的这种高峰和低谷低谷期,对吧,需要这种快速的这种扩缩容啊,这种场景的话,我们就是建议使用这种第二个的这种方式,因为它的弹性库存容时间是非常快的,能达到秒秒级别。对,那除此之外呢,其实我们看到还有第三种这个节点类型啊,是叫原生节点,这种节点类型呢,它其实。嗯,它的就是主要作用呢,是什么呢?就是说它可以提供一些啊的一些理念,就是说可以提供一些成本分析的啊,这么一个一个模型,然后可以对我们的这个实际的pod的一个request和limit值做一个推荐,对,然后主要是帮助我们做一个成本的节约啊。
26:18
OK,那计算这块说完之后呢,我再大概快速的说一下存储的这个方案啊,我们目前t ke支持的存储类型主要有三种啊,分别是块存储,然后CS文件并行文件系统,还有我们的对象存储cos,那其实每一个存储呢,其实它针对的使用场景也是不一样的,块存储主要是针对于我们比如说对这种延迟性呀,LS要求比较高的场景,那它的限制就是说我们每一个的,嗯,就是算力呢,只能挂载单独的一块存储,它不能共享,对那第二种文件类型呢,文件系统呢,它是一个定行文件系统嘛,所以说它的优势就是说可以让多个pod同时进行挂载。
27:00
啊,那最后一种对存储呢,其实就主要是适合于保存,我们一些比如说对延或者L的啊,这种场景,它的成本是最低的,对那在这个DEMO里面,我主要是使用第二种啊,就是CCFS这种运行文件系统去给大家做个演示。OK,首先呢,我们说呃,第一步就是最重要的,我们先要有一个算力的一个集群,对吧,所以说我们首先呢,要开启一个T的集群,这里面我也做了一个截图啊对,其实开启T集群的话是非常简单的,我们都有这种控制台去做操作啊,不需要你去用命令行去做啊,这里面需要注意的时候有就是我们需要注意的一个点吧,就是说我们选择这个我们的。节点的时候注意要选择啊,G那个GPU类型的这种计算节点啊,目前我选的是这个在英美达A10的显卡的这个GPU类型,PVV4,对,那另外一个需要注意的点就是说我们需要把我们的这个GPU的驱动啊,包括这些大的版本呀,这些都需要选上,它会自动的帮你去做一些软件的一个安装啊。
28:14
那还有一个锦上添花的一个点,就是说我们其实刚才也提到我们是支持这个QGP的,对吧,这个一个功能的,其实你要是想打开的话,建议就是在这里把这个勾,把这个选项打开,对这个其实使用起来就是非常啊非常简单,后面的话我们也会给大家做个演示。OK,那计算这块说完之后,我们再看看存储怎么去进行一个配置啊。存储的话,我们也是有控制台可以做那种cfs文件系统的一个配置,那这里的话,其实我们根据这个向导一步一步做就可以了,非常的简单,主要是需要注意的话,我们要选择和集群相同的这个VPC和子网对就可以了,保证它网络是互通的,那除此之外呢。
29:00
当你建完这个文件系统之后呢,它会有一个提示,告诉你怎么去在主机上去做那种挂载,对吧,挂载之后我们注意这个路径一定要,呃,就是我们要把这个localld这个径要改成你自己的这个路径啊,这里面的话我们是改成这个models这个目啊,所以说我们要把我们下载的这个模型文件放到这个目录下。好,那我们计算和存储现在都已经啊具备了,接下来我们就是看看怎么把这个存储挂载到这个T群上啊。首先呢,我们需要创建一个C类的这么一个,其实这概念是完全和我们这种一样。建完之后呢,我们就接着要建一个PV,对吧,PV其实也是和我们K8这种概念也是一样的,就是需要指定你刚才的这个storage class,同时呢,还要指定一个我们cfs的一个子目录,对这里需要注意一下。
30:01
那最后呢,有了有了PV之后呢,我们再建一个PVC就可以了,那PVC建PVC的时候需要注一下,需要指定之前建的这个class和PV的这个名字,把它选好就需要这三步。这个就可以了啊,OK,那基本上我们前期的准备工作都完成了,那接下来呢,我们就需要做一个真正的一个部署了,这里面呢,就是说我们需要在这个集群里面呢,我们的容器机制里面呢,需要部署一个susion的一个web这么一个一个应用吧,嗯,这里面其实也是,呃,根据向导一步一步做就可以了,首先呢,我们需要创建一个工能负载,就是我们的deployment对吧,然后这里面需要注意啊,选择我们的这个磁的外的镜像,这个镜像在我们的官方文档上都可以看到。第二步呢,就是需要选择我们刚才添加的这个数据卷,对吧?嗯。这点需要注意一下,就是我们在接下来选择这个啊GPU这个资源的时候,默认的话,如果说你没有开启这个虚拟。
31:06
那个显卡的话,我默认的话,每个pod只能使用一就是完整的一张GPU卡,那由于刚才我们开启qpu之后呢,这里面我可以看到啊,我可以把这个GPU设置整整点五块,就是说我可以只使用一半的这个GPU的资源啊,就是做我们的这个DEMO啊。然后把这一步做完之后呢,我们点击下一步,然后后面的话,它就会自动生成一个对应的service,同时呢,也会给我们建立一个公网的LB。然后这个服务呢,是通过这个7860端口进行访问的。好,那接下来我就跳转到这个页面里边,给大家看一眼。目前呢,就是我之前建立好的这么一个集群啊,然后里面有一个S的这么一个,它目前的这个的数量是一个,这个我之前都已经打开好了,同时呢,我们看一眼,它这个也会建立一个service,就是S对应的一个一个service,它会生成一个LB,就是我们的负载均衡对吧,然后它这里提供了一个我们的公网的访问入口,就是80.70.15.2。
32:12
我把这个地址。然后咱们打开一下看一下。打开之后呢,就是我们的这个的一个BU界面,接下来我们就做一个简单的DEMO吧,这里面我们先选择这个模型文件对吧,就是部署在cfs上的一个模型文件,然后接下来我们输入一些文本提示语,比如说我们要它输出一个猫的这么一个影像。然后输出生成多少张呢?这里面我们可以指定一个batch这么一个参数,比如说生成十张对吧。我们点击生成啊。大概需要十几秒,十十几秒的时间吧,就可以生成十张图片,对,那至此呢,基本上我们的这个第一个时间就已经完成了,就是其实可以看出来,就是在腾讯云上去部署这么一个一个大模型是非常容易的啊。
33:14
好,那接下来我们再做我们的第二个第二个DEMO,就是如何是通过这些QGPU去提升一个推理的一个并发性能。其实刚才也做了一个简单的介绍,这里面再再简单说一下,就是它的一个理论的一个一个架构吧,嗯,其实我们的QGP呢,是我们腾讯云推出的关于G共享的一个,它主要使用的场景就是说支持多个这个容器去共享我们的这个G,然后同时提供这个显存和算力的一个隔离,对我们可以从右边的这个图中可以看到啊,比如说我这个一台。啊虚机吧,它假设有八张GPU的,那如果说默认情况下,它最多可以只能提供八个用户,对吧?并发去进行问每个用户只能使用一张卡,使用我们的这个GQGP之后呢,他可以把这些物理显卡进行一个虚拟化,那这样的话,我每一个用户就可以使用N分之一的GPU的卡,这样的话其实就可以提升我的一个整个的一个并发性能。
34:17
这里面其实刚才也提到,我们使用这些QGP是非常简单的,只需要在控制台里面把这个选项打开就可以了啊。然后这里面我们把由于我们打开qpu嘛,所以说我们要把我们的并发再提升一倍吧,因为刚才是只有一个pod嘛,所以说这里面我要把它变成两个pod啊,但是呢,其实这里面又有一个潜在的问题了,就是说如果说我使用两个pod的话,那其实它会有一个轮询,用户进行访问的时候,他会对这个两套的隔一轮巡的访问,所以说这里面就有可能造成我这个页面有一部分图片显示不正常,类似于这种的。这么一个一个问题吧,所以说这里面我先留一个小小的一个悬念吧,然后后面我会告诉大家怎么去解决,那我先给大家大概演示一下。
35:06
刚才说的这个Q这个场景。这里是打开QP的一个选项的一个位置啊,这目前已经打开了,那接下来的话,我们要把我们的工作负载。改成,因为现在是一嘛,所以说我要改成两个对。为什么可以改成两个呢?因为刚才也提到了,这里面这个配置啊,我们是可以填,就是每一个pod,我实际只使用了0.5块卡,对吧,所以说我是可以改成两个的。我们试一下。把这个炮的数量变成两个,看能不能跑起来。这里面稍微需要等一下,OK,现在已经起来了,对吧,那接下来的话我们就模拟一下,比如说我两个用户。
36:03
同时对这个。咱们可进行访问的话,它是一个什么样子。同样的。也是十步OK,我这里面生成,然后在这边刚才这个也同时生成。这个其实它效果就是跟刚才我提到一样,会有一些文件对吧,会有冲突,所以说它会显示一些显示不出来的一些文件的这么一个一个问题吧。这个跑的比较慢,还在微对。OK,然后他先跑着,然后后面我们到时候再看一结果,接下来呢,其实我们就想说的是如何去解决这个问题,对吧,那这里呢,就引入到了我们这个API第三个实验了,就是如何使用这个云生的API去提供这个SD的服务。
37:03
原身份网关呢,是我们腾讯云的一个托管的API的网关,它是基于开源的这个啊去实现的,那它其实里面有很多这种高级的功能啊,可以来控制你这个整个流量的一个进出。除此之外呢,它还可以对接我们后台的这些啊,无论是云主机服务呀,还是容器服务等等这些服务平台都是可以完完美的进行一个兼容的。这里面就是我先简单给大家看一眼怎么去做那种配置,其实配置的话也非常简单,就是在我们这个控制台里面,按照向导的方式去建立这个原程网关就可以了,这里面可能需要注意一点啊,就是我们在选择这个后台服务的时候,要选择我们的这个刚才的部署的这个pod,就是S这个pod,这样的话呢,我这个网关就和我们的后台pod其实就关联起来。那如何解决刚才我说的这个问题呢?就是说如何让他每一个绘画都保持同一个session里面,对吧,避免刚才出现这些有些图片显示不正常的问题呢,其实就需要我们登录到这个云生网关的这个控的控制台里面啊,把我们的这个就是分配的策略呢,改成按照这个IP进行分配就可以了。
38:16
啊,就做这两步就可以解决我们刚才这个问题,那接下来呢,我们就看一眼这个。是进行如何配置的?这个就是我们这个云云神网关的一个页面。目前的话,我已经建立了一个远程网关了,对。在这里面啊。然后它可以提供我们的外网一个外网的一个访问的一个IP啊。就是公网的访问IP,一会儿我们就通过它进行一个访问。然后同时呢,我们可以进入到它的控制台内部啊,刚才说的去提供这种基于IP的这种啊人群的一个访问方式。OK,那接下来我们通过。
39:02
这个云网关我们再进行一个访问。可以看到啊,就是现在也已经能成功访问到了,那接下来其实我们做再做一个测试,比如说还是同样的操作啊。正常。这样的话,其实它就可以保证我同一个请求对吧,是落到同一个pod上的,就不会出现刚才说的这些把流量打载到不同的pod上,导致我这个图片显示不正确的这么一个问题,嗯。好,接下来可以看到这十张图片都可以正常显示完成了,其实这个就是我们原生网关其中一个很小的一个功能啊,还有很多这种高级的功能啊,如果说大家感兴趣的话,可以去我们的官方文档去查看。
40:08
好。那最后呢,我再快速介绍一下如何使用这种卡扣的这种方式呢,去做一个推理的一个加速啊。他其实刚刚我们之前的同事也介绍了,就是他其实一个目的呢,就是为了在我们这个SD里面有一个叫的这么一个部分呢,其实做了一些优化啊。那具体的操作部分呢,其实很简单,因为我们对这个通过对SE模型做优化之后呢,我们打包成一个镜像的方式也发布到我们的,然后首先呢,我们需要下载这个优化好后的这个模型文件到我们的一个并行文件系统里面来,然后呢,在我们创建这个pod的时候,一定要选择我们这个优化好的这的这个SD的模型。那实际呢,我们可以看到就是没有优化和优化之后的这个效果呢,其实还是很明显的,没有优化之前呢,大概需要16秒的时间进行推理,优化之后呢,大概需要11秒的时间啊。
41:12
那接下来我们就看一眼这个怎么去操作的。我先把之前的那个泡的数量改成一个。这是没有优化之前的那个pod是叫,那经过优化之后的这个pod是叫S。好的。稍微等一下。那启动好。然后这里面其实也先给大家看一眼吧,就是如何去访问这个新的这个SD。
42:02
这里面它会生成一个新的service嘛,对吧,然后也有一个公网的访问地址。我们通过这个地址进行访问。这还没有启动好。这个可能需要有一些时间吧。然后这里面其实我也做了一个一个沙盒吧,这里面其实嗯已经部署好了,就是我们非优化和优化之后的这么一个扣的文件啊,这里面我我我们也可以在这个控台里面去做一个测试的,因为可能时间有点超时,所以我们先在这里面去做吧。然后我们的图片生成数量要改成十对吧,然后我们跑一下看他需要多长时间,就是没有优化过的。然后底下优化过的这个我们也一样。把这个数量改成十。然后我们去跑一下。
43:10
这缓完之后我们看一眼,他这个时间目前是没有优化的,是20秒的时间啊。然后优化完之后的是15秒的时间,我们看可以看到大概节约了25%的时间啊,这个就是我们就是经过优化的一个加速推理的这么一个DEMO演示。好的,那我现在所有的介绍就已经完成了,那接下来我把控制权交给主持人。啊啊,非常感谢刘宇老师的精彩的分享啊,我也一直在听这个这个分享,让大家有一种冲动去亲自去用一用,试一试啊,那如果大家有一些疑问,或者一些一些技术方面的一些问答呢,可以也可以在提问去提出来,然后我们的嘉宾也随时为大家解答,那接下来呢,我们请出今天最后一位讲师啊呃,腾讯云通用SARS行业资深架构师孔博老师,那孔博老师呢,有十多年的云计算的行业从业经验,擅长云原生的架构,混合云架构,主要呢是为腾讯云SARS客户提供解决方案设计和落地的咨询,目前呢,也在关注AIG这些新技术的推广落地。
44:33
那我们欢迎刘孔博老师带来基于ta平台的SD推理加速实践的这样的一个主题分享,好吧?
45:00
经过刚才两位讲师的分享,相信大家对这个SD的这个基本原理和如何通过腾讯云技术去快速部署一个SD的一个服务啊,有了一定的了解。当然,腾讯云还推出了啊一站式的机器学习解决方案,台湾的平台。那能够大大降低我们使用SD的一个门槛,那接下来我主要啊跟大家讲解一下这个开放平台是如何啊去啊进行这个SD模型的一些部署的一些实战。那今天的分享我主要分为四个部分啊,一部分我可能会讲,我会讲一下这个我们的SD的一些应用场景,以及我们遇到的一些挑战,那针对这些挑战我们探平台是如何解决的,可能会分我们会分三个部分来进行讲解。呃,相信啊大家啊,或多或少啊,都开始在那个尝试我们的SD的一个模型,那SD的模型的这一个推出啊。呃,对于我们的这个,呃,图像的一些设计啊,呃,提供了更多的这个思路和一个啊更高的一个效率,那我们看到我们的一些客户啊,都在开始尝试啊,通过SD的一些基础模型啊,进行一些图像编辑和文字生成图像的一些应用,那对于有一些这个对于风格有要求的一些场景,我们在使用啊,Control net的一个控制模型。
46:23
来去做一些这个特定风格的一些场景,比如说像一些这个啊,模特图啊,Logo啊,或者一些特别像建筑行业的一些风格设计,那同时也会有一些啊,通过特定的一些文字去生成图像。那我们知道就是一些基础的这个模型。它其实很难,SD的一些基础模型,它很难在一些特定场景啊去做一些应用,那就会我们看到开源社区啊,其实了非常多的一些啊,训练出了非常多的一些模型,那同时其实我们再根据我们自己的业务场景,我们也会对这个呃,我们的这个呃模型进行微调,这样就会产生了非常多的一些模型版本,那对于这些毛病版本的一些管理,或者一些啊生命周期的管理,那我们会觉得。
47:11
会啊,其实一个工程量是会非常大的。那同时我们再看我们SD的基础模型,开源的模型生成一个啊。这个图像的时候,随着它的分辨率的提升啊,它的时间啊,耗时也会比较长,那有些客户用到这个control net它模型,它其实有的时候会长达这个几十秒的一个生成速度,那其实这样的话,对于这个业务上的体验就不是特别好。那最后一个呢,其实像我们在这个把我们的业务接到这个生产上去的时候,其实我们。其实很多这个SE的一些场景,都是很多营销的一些客户,他在做营销活动的时候,他其实没有办法精准的去预测这个。流量,那其实如果使用包年包月的一些机器啊,它其实会浪费比较多的成本,这时候呢,就是对这个GPU的弹性就会有一些比较强的一些诉求。
48:02
那针对带着这些挑战和这些问题呢,我们的团队呢,啊,就是。为呃,腾讯内部以及我们的优实验室啊,结合到了非常多的一些优质实战,然后我们把这些实战呢,其实会啊打造成了一个啊。啊,全托管的一个继续习的这个pass平台,那我们这个pass平台呢,底层其实啊,也是说基于我们腾讯底层的一些二次技术,像刚刚刘老师提到的一些PU技术啊,都有集成啊,同时我们也会把啊周边的一些原生的一些啊组建集到这个平台里去,那对于我们用户而言,我们看到的是一个啊。拓展的一个pass平台,我们在这个平台上呢,我们去对我们的模型啊进行管理,我们通过我们的一个简单的notebook就可以去做这个啊。以及训练任务的这些开发,以及这个啊模型啊,这一个推理的这个服务的一个部署。那么我们接下来我们就会简单的做一个介绍,我们如何通过我们台湾平台来一键部署我们的的这个模型服务。
49:08
那这个其实相对来说比较简单,其实只需要三步,那第一步呢,其实我们是会把我们的这个模型啊,上传到我们的一个对象存储里面去,那这个时候因为我们一般的这个模型啊,存储量可能都有几个G,所以说我们选择那个对象存储会相对来说合适一点。那我们如果说后续我们第一第一次的时候,我们会导入一个新的模型,当我们后面有一些版本更新,我们会把一些新的模型版本啊,或者是对现有模型的版本的一些更新,都会在这里一个入口进行操作。那导入好之后之后呢,我们就会生成一个模型出来,那我们第二步只需要将这个模型发布一个这个在线的一个服务啊,这里面会可以选择按量计费,或者是包年包月的一些资源。那经过几分钟的等待,我们就会快速的去看到我们能申请出一个在线的服务,那在这个过程中,我们底层会去调用我们的这个呃,GPU的一些资源,那这其实我们用户是不用特别去关心他是怎么去做的啊,其实我们就是非常简单的去看到我们这个服务就会在几分钟之内起来了,那这个起来之后呢,其实我们的SD模型啊,就可以完全可以用了。
50:18
那我们在我们这个在线服务里面,这个会有一个调用的一个过程,调用的一个选项,那我们点击这个选项,其实我们就可以快速的马上就可以体现出我们这个纹身图的这一个魅力。那我们在这个我们的这个框里面输入一个啊,这个提示词cuting withroom,那我们马上就可以看到,我们就会成一个右边的这个图片。那生成的这个图片呢,就是也。就上传到了我们一个对象上去了。那我们可以看到这个我们所有的这些操作都在我们的平台上去完成,那其实呃,对于我们的这个入门的同同学来说会非常的友好,那我们啊,在这个快速部署完之后呢,其实如果说我们要生成一个啊高分辨率的一个图片的话,其实我们的耗时是比较长的,那这个时候我们的台外的TC。
51:13
这个加速模块啊,就可以起到一个比较好的作用了,那早期其实我们T这个加速模块啊,其实在这个之前的这个CP场景啊,其实都有一些大量落地的一些经验。那有广泛的应用,那因为近期这个IG这个这认非常火,所以我们也把这个S的这个加速啊,放到我们的这个。平台里去了,那我们在这个使用这个,呃,做这个加速的是非常的一个方便,其实只要把我们上传好的模型啊。通过我们的这个模型优化的这一个组件啊,T-C这个组件啊。啊,来进行一个一键的这个模型优化。那是没优化好的模型啊,再去启动这个在线服务啊,就可以完成这个我们的这个优化的一个过程那。
52:07
接下来呢,我们就。简单讲在这个体验之前呢,我们先简单讲一下我们这个加速的一个基本原理的一个介绍。那我们都知道,我们一个这个。学习的这个这个算法,最终它在运算,呃,在推理的时候,它最终会生成一个这个图的这个运算,那我们会对这个图啊进行一些啊切分和优化,那生成一个新的架构。那这样会优化我们的这个这个结构,这样可以降低整个这个模型的一个复杂度和这个。计算的这个计算量。那针对于我们这个,呃,最原子的一些这个算子呢,我们也会根据我们会在这个我们的根据我们的一些硬件做一些深层次的优化,那这块呢,其实我们。会优化一些啊基础的算子,包括像我们这个SD里面的这些算子,我们会做一些针对性的优化,那优化的一些手段呢,可能有一些像常年折叠这样一些分段优化的一些策略啊,这里就不做特别详细的介绍了。
53:13
嗯。经过优化完之后呢,我们这个。如何使用它,其实我们这些优化的这些细节呢,其实对大家来说其实是屏蔽的,那我们在使用的时候是非常简单,只要我们把这个刚才比如说我们比如说我们这里上传了一个这个SD的一个啊net的一个。模型,那我们上传完之后,导入完之后呢,我们只要一键点。这个优化模型这么一个动作,那这边就会马上生成一个这个优化任务啊,这个优化任务在运行的时候,其实我们就会对底层的一些算子啊进行一些替换。那一般的话,一般十分钟左右啊,这个优化任务就完成了。优化任务完成之后呢,我们可以看到这个其实会有一个优化报告这里面。
54:03
的一个优化报告呢,其实会告诉你啊,我这个优化完之后,我们的加速是一个什么样的一个效果,比如说我们这个SD的一个模型,我们的加速比可能是在一般可能会在四点几,那可能根据不同的模型啊,可能会有不同的这个加速比,那这个是相对于这个这个32的这个加速的这个效果。那我们把这个优化好的模型呢?这里直接保存到我们的这个模型仓库啊。保存完之后呢,其实我们就是把在里面会看到一个优化后的一个模型列表,在这个列表里面,我在。重新发布一个服务啊。发布完之后呢,其实我们啊跟刚才一样,就是我们在这个服务调用的时候啊,呃,服务调用的那个按钮按下去之后,我们就可以去去直接体验。那这里呢,我呃也我们这边也对这个的这个呃模型进行了简单的一些评测,那我们看到如果说是在没有使用加速的时候呢,一个合的这个FP。
55:09
16的这样的一个精度基本上需要六秒,那经过我们T加速之后呢,基本上是在三秒就可以完成一个这个图像的一个生成。那这边右边是我的这个生成的一个效果。那有了这个加速之后呢,其实我们可能同学就会迫不及待的去啊去啊。去在我们的平台上做一个服务,那其实我们平台呢,就是我们在一个服务上传到呃生产之后,其实我们现在说的这个叫model的这个概念,那其实对于一个服务来讲,他还要去完成很多这个生命周期的一些管理,比如说这个。灰度发布啊,这个这个滚动更新啊等等。包括这个扩松,那这一套东西呢,其实在我们的台湾平台上啊,其实都都完全去集成好了,其实我们可以像之前我们使用这种box这个在线服务一样啊,去使用我们的这个模型服务。
56:06
那保证我们这个整个这个服务啊,在线上的一个稳定。那这里呢,去简单去介绍一下这个其实在平台上如何去做一个扩的弹性的这个服务。那我们弹性一般会分为这个两种,一种是说我们可以预到,比如说我们每天的这个,呃,高峰的这个,比如业务高峰的一个时间啊,比如说我这里啊。啊,每天早上九点到,比如说下午十点是我们的一个业务高峰,那比如说我在高峰这个期间,我们需要比如说啊五个实例来完成,对吧,那我们这样做一个简单的一个配置啊,就可以达到我们这样需要的一个效果。那如果说像如果是晚就四点钟之后啊,只需要一个实例,这个就默认是一个实例,这里用到一个实例对吧。非常简单,那还有一种是说我们有些对这个流量的预测,是啊,其实没有这个比较明确的这个时间点的这种,那我们其实可以去基于这个啊,我们的这些业务指标来进行这个扩容。
57:12
我们这里呢,支持CPU及我们的S等,当然其实咱们也可以加一些一些自定义的一些指标来去更精确的去完成这个的这个能力,但是我们这个底层其实也是基于我们的容器技术来做的,刚才我们老师也做了一些演示。嗯。刘宇老师也做了一些演示,那我们这个。整体我们把这个SD,我们在SD的能力啊,都做了一些简单一个介绍啊,相信大家有些简单的了解。那我们也是最后也是这个预祝我们大家在这个呃,ATC这个商业化的这块快速呢,能够通过这个腾讯的一些技术啊,快速的去占领市场,那我这边的一个分享呢,总体的分享呢,就到此结束啊,我们接下来把这个控制权再交给我们的主持人,感谢大家的一个时间啊,谢谢,嗯。
58:09
啊呃,非常感谢孔波老师的精彩的分享,其实刚才呢,我整个看完三位老师讲的都非常的精彩啊,大家从一些的基术的基本原理,以及在云原生的部署实践,以及基于腾讯云更整合的这样的一个平台的来实现这样的一个推理加速的主题,为我们分享了SD。这种大模型背后的实验原理啊,快速部署啊,以及真实的行业的解决方案,其实我是觉得说对于我们在座的啊,观众也好,或者说听众也好,就是如果你是一个想学习者,那可能呃,我们讲原理的东西对大家来讲是非常有价值的,如果你自己是一个亲自一个动手者,你希望亲自去体验一下S大模型的部署,那你的第二,第二位老师讲的呢,就非常的好,告诉你怎么去部署。但如果大家事实上希望通过SD去做一个项目,对内也好,对外也好,去提供一个服务,其实刚才孔老师谈的整个台湾的平台,把很多底层的东西都已经做好了,而且啊在性能啊,能力啊,服务上都做的更好。所以我想今天这个议题其实是从最基本的基础知识,到自己的原生的部署,以及整体的这样的一个对外服务的平台都给大家提提供了,所以呢,也希望这今天的三位老师的演讲给大家一些启发,帮大家去打造。
59:34
自己的一些呃创新的应用或者是一些爆款的营销内容,时间过得也非常的快,本期呢,腾讯云中小企业的在线学堂的直播活动呢,就到此就圆满结束,呃,再次感谢大家的关注和参与,我们下次活动呢,再见好,谢谢大家。
我来说两句