粉丝74获赞195

好,今天我们来学习一下 triton inference server 这个技术。 the media 公司作为当今世界显卡的旗舰公司呢,他还会开发一些的系列的工具来卖更好的卖他们的显卡, 那么 try time inference server 就是其中的一种。一般情况下,我们有一个 人工智能的模型,积极学习的模型之后呢,我们会用 python 会去提起来这个模型,或者把它转换成其他的格式,像 toyscript or next 等其他的格式去运行这样的一个模型。 但是有了这个 try to inference server 之后呢,他就可以 骑起来自所支持这种这些格式的这些模型,然后会贡献出来 attp 接口, grpc 接口,然后来服务来布,等于说是一个部署的容器,然后来部署和运行这些模型。 而且由于它是 mvd 公司开发的,所以它声称能够加强对它显卡的利用和加强性能,提高性能。 那它其实提高性能的原理是什么呢?就是这是它的一个架构图。 try time infern server 其实就是一个阿金制程序,他会去在运行的时候需要指定模型所在的位置 目录,然后把这个模型启动起来,暴露两个接口, a t t p 和 g r p c 用于给客户端去调用,那么他内部呢,会对收到的请求就是推理的请求,去进行一些编排,进行一些调度, 然后重合,重合能够更最大程度的利用显卡和发挥它的最大性能。 目前我发现它只能用在单机上面,然后再配合 try to 的其他服务,什么 management service, 它可能可以使用在多机的推理上面, 所以这样的一个框框就是这个 try time in friends server 这个 r 禁止程序, 然后他会利用这个本机所能够看到的显卡,然后去做一个推理的服务,这些显卡需要跑多少个模型,模型需要用到多少个显卡,都是可以通过配置文件去配置的。 那么为了安装这样的一个二斤制程序,我们可以用它官方所推荐的 contend 的部署方式,就是多克容器的部署方式, 在它官方 try time in friend server, the get up 仓库里面有一个 server 的小仓库, server 就是这个小仓库了,那它启动的方式呢?最简单的方式就是使用容器,这也是它 推荐的方式。多可容器,那么使用的方式非常简单,他可以先下载几个视力的模型,就是通过拷贝 get clone 这个 server, the reports three, 然后到这个目录下面去下载这些模型, 然后就跑起来一个这样子的容器,这个容器会利用本届 house 的所拥有的显卡,像这里的话是一块显卡,我就用一块显卡,你也可以写个哦,就是使用所有的显卡,然后他的容器镜像就是这个, 然后跑到这个容器镜箱里面,之后呢,他的这个二禁止程序要去刷一趟 server, 去指定一个目录,这个目录下面有这些个模型所所在的这些模型的这个结构, 然后他就可以运行出来,运出来之后呢,就相当于这样,他会停在这样的一个界面,就是说是启动成功了, 然后它会暴露 g r, b, c 的接口, a, t, d, p, e 的接口,还有一个 magic 词,看它的那些呃监控数据的接口, 这个地方显示的就是你模型所启动的模型是有哪些,这个是名字,这是版本,模型的版本,这是状态。 然后这边呢他就会用在另外一个容器叫做 try time server, 这个后面有一个杠 s d k 就表示客户端容器,在这个客户端容器里面去反 问这个 server 所起的 a t p s 的接口,那么他用的这个 image client 呢?也是 triton 的那个客户端,所以才能够访问 triton 的 server, 然后这边是指定的模型的名字并发度,然后这是一些那个 china serve 访问这个呃推理请求的一些参数,这个是 这个图片在就是这个模型的作用是分析这个图片里面有哪些东西,就可以分析到有啊,茶杯,有咖啡杯 这样子的一些东西,那我就呃学习了一下这个拍上作为客户的的后端,就我们前面所说到,他支持了很多种模型的 格式,也支持很多种,由于由于不同的模型它是通过不同的引擎去启动,所以它也支持很多不同的 back in, 在他们这里叫做 back in, 就是这一块,在这个 server 内部它会支持很多的引擎,叫做 bacon。 那么有自定义的引擎啊,自定义就是还不知道是怎么样去运作,但是有支持 pitouch 一些常用的引擎, tensor flow, 还有我们最常用的就是 python 了,因为 python 会在呃积极学习里面用的比较多,所以有一种 back end 叫做 python 的 back end, python 的 back end 就可以到它的这个 官网 get up 仓库找到。它有一个叫 python bacon 的的紫 rape, 在这个紫 rape 里面有一些司令, 我们就通过模仿这个子 rapper 的一些视力去运行一下这样的一个小模型。 所谓模型就是无非就是一些程序,一些代码。所以在这个紫 ripper 里面,按照它模型的结构是要有一个目录, 这个目录的名字就是模型的名字。比方说 config 点,这个是他的配置文件,配置文件这里要指明他的模型的名字叫什么,他的 bacon, 也就是他的引擎是什么?拍场是用的最多的引擎。 我个人认为,因为假如我们不用这些个框架,我们用拍上代码写画,启动一个模型,也是就也是拍上,所以拍上就是作为 back in, 然后在这个配置文件里面还有一些 input 和 output, 就是输入是什么样的东西的格式,输出是什么样的格式。 最后有一个 instance group, 用来指明这个模型要跑到 cpu 上面还是 gpu 上面,要跑到一块 gpu 上面还是两块 gpu 上面。 这个这个文件是一个客户端文件,并不和,并不用和模型部署,这两个模型文件部署在一块,那么 model 点 p y 是它固定格式,必须叫做 model 点 p y, 然后是用来写这个模型启动的拍上代码是什么样子的。按照这个结构呢,我就创建了一个,创建了一个目录, 这个目录叫做叫做 s d, 所以我的模型的名字也叫 s d, 这个目录叫做 sd 里面。之后呢,这个目录里面结构就是这个样子,这个目录这也是个目录,叫做一,一就是版本的意思,比方说我有个版本二,我就写个二, 然后二是作为目录名,然后这个是所有的版本的模型,就是这个模型,该模型所有版本的配置 文件结构大概就是这样,然后模型的启动 model 点 p y 文件,在这个版本的目录下面,比方说 在这个版本一目录下面有个 model 点 py 文件好了, 我们就可以用这个骑起来这个 ppp, 不用关心,这个 ppp 只不过是我用来放存放 model repository 的一个目录, 也就是说随便一个什么样的目录,他下面只要有这些符合他格式的目录,就是子目录,像 s d 这种,这些子目录就是一个一个的模型,而这个所谓的 moderate pose 腿的目录是无所谓的,这样就可以骑起来,启动起来之后 前面目录不对,所以现在我们是要找到 model reporter 下面点 p p p, 这样就会启启动起来,启动起来可以看到我现在有一个模型叫 s d 版本是一号,它是 ready 的, 然后他会暴露这三个接口,监控接口, gipc, atp, 这个时候我们就可以想办法去调用的,然后这边用他的客户端文件,我写的一个客户端文件去调用, 然后他就能够正常的调用成功。那么来看一下他这些个 cf 端,就是这个 model 点 py 文件,那么客户端就这个 c 点 py 文件,它里面的内容是这样子的。在 model 点 py 文件,我这个名字不是很对,但是这个内容是这个内容 我们需要定义输入输出,然后定义这个模型所要处理的逻辑,所以就开始要按照他的格式定义一个叫 triton python model 的东西,这样他才会启用 python 的 back and 去做运行。 这个就是它有三个方法,说实话 as cute 还有 finalize 最后结束的时候就是一些清理,这边只是简单打印,那么最重要 的就是 execute 了, execute 呢,会从输入参数里面拿到 这个输入请求与快手词里面拿到这个输入请求叫做 q 的输入请求,然后把 q 的这个输入参数 转成,拿出来之后呢,它是啊 tense 的格式,这个 tense 的格式是 mvd 二所定义的,这个 tense 格式不是 torch 的 tense 格式。 这个天使格式呢,有个还是男派的方法,可以转成我们经常使用的男派数据格式,数据数数据序列的格式, 这个数据序列里面可是我就拿到了真正的一个字符串,然后我这个字符串就可以做一些运输 算,比方说我再加一点东西,加点乱七八糟的字,不串加到后面,然后就会形成最后的输出。输出的时候,由于我做运算的时候是使用安排的格式,所以我输出的时候按照他的规范必须要转成他的天使格式,就把他这个 数,把这个安排的格式又转成 tens 格式,扔到他的推底返回里面 inference response 里面, 扔到这个东西里面之后,就可以再按照他的格式再又返回到 responses 汇总里面。客户端呢,就是需要去根据他的格式去进行调用。客户端首先就是 atp inference service several client 这个 ip 和端口就是我们这边启动的时候所展现的这个 ip 和端口就是 atp 的话是八千端口,所以这里是八千。 这边我就随便输入弄了一个 hello 这个输入,由于也是要遵从他的格式,所以我们首先可以用南派得到一个南 hello 的这个制服创的南派输组, 南派数组必须要扩充一,扩充一个维度,就是就是在第一个维度,在第一个序列里面扩充第一个维度是用于存放这个 bit 起的时候的一些参数,这在他的官方文档里面有说明, 就是指的是假如你输入参数,它这个矩阵的格式,是啊,只有一个维度,第一个维度的量级是 the shape 是十六, 那么他你在给他输入的时候,他这个输入参数就要前面要多一个负一,这个负一是他为了准备放一些 batch size 的,就是你的 p 处理有 size 多少个,多少个 e, p 里面有多少个东西。 所以我们需要在原始的数据格式 ship 下面的前面最前面加上一个维度,也就是说我这个时候的数组的 输入参数维度是一中括号一,现在加了一个维度就是一一,那么第一个维度写负一的话,就是随便多少数字自适自动适应。 然后我们需要定义一个 input, 也就是他的输入变量,输入变量的参数呢,需要加入 这样的一个,这个这一行是加入他的格式,按照他的官方说明,假如我们输入参数是字符串,那么按照他的这边的格式 api trita api 的格式是 bites, 然后它 shift 就是我们这个现在已经添加到这个维度,也就是一一 这样子的维度是 shape, 然后再把这个数据加进来,数据加进来这样子的话,我这个 hello 所代表的数字表示就到了他的这个音谱尺变量里面, input 变量再用和 output 变量去一起扔给这个模型,这个模型只要指定它的模型名字,就是我们不熟的时候的 s, d, 那它就可以得到返回啦。 得到返回是很多个返,其实是 responses, 然后就会得到一个,在可以调一个 get response, 得到一个返回,这一个参数的值就是 第一行这一句话,这一行就可以告诉我们,他会告诉我们这个模型我现在调的模型是什么,版本,是什么,它的 output 有哪几个? 所以我熬的 pro 词有一个叫 a 的,有一个叫 a r 的,都是 tense 的格式,然后他们在 a, p, i 这边的格式的名字叫做 party 词,因为我传的是字不串,他现在的 sha 不是一,因为我传我指定的时候就是一, 就是这样子的。然后我们要得到具体的,因为我这边设定的有两个返回,一个叫 a, 一个叫 a r, 所以我为了得到每一个的具体的值,我就需要 a r 的安排一下,就 把这个总请求总总返回数据,进行一个二字安排,转成安排格式,转成安排的格式之后,他就会转成一个安排的格式的输出,然后给我打印出来, 那么它是一个是这个,一个是这个,这个呢?前面的 hello 就是我输入的参数加进去的, 在模型的这个 server 端就是 model m, p, y 这里就可以看到这个是我的输入值。输入值呢,从输入的 input 里面先从 tense 转成 nampai, napa, 又拿到具体的数值字符串, 然后具体的是注册串是由于是 bite 的格式,所以我就把它转成是均的格式,是均的格式就 就可以和是均的格式进行加法,把它 concating it 在一起,形成一个新的字母,算加 hello r, r s, d, 所以就是一个这样的格式。 这样的格式之后呢,我们要组织它的返回数据,返回数据也是一样,它会要转成,需要转成 tensor 格式,那么就需要把它把这个安排格式放到 这个安排格式,要先转成他这边的这个这个格式,这个格式就是 tense 的格式。在 tense, tense and video tense 的格式, and video tense 的格式是就是从配置文件里 你们去拿,所以我们再来看一下配置文件是怎样子的定义,配置文件里面非常简单,是定义的是 type string, 那么为什么会这个配置文件又是定义的 type string, 然后这个 model 点 p y a p i 里面又是定义的 by 词呢? 所以我是觉得他这边设计的有点有点混乱,在他的 model configuration 里面 他就会有详细的说明 both config 文件里面应该定义什么样的格式。所以由于我这边是制服串嘛,所以用制服串是用的最多的格式, 所以这边在 model configuration 里面是要写 type 下滑现时卷,但是在 a p i 里面,它所对应的就叫 做 bike 词了,那么在这个 number 里面,它所对应的这个词句呢?是叫做第一 type 是 object, 但是我是写的词句下划线,因为词句下话线我感觉应该更好, 所以呢这个就是它的配置文件了,配置文件就是这么起作用的。如果我有两个输出,就像我现在的这个例子,确实是有两个输出,所以就有一个叫 a 的 tensor, 有一个叫 a r 的 tensor, 他们的格式是这样子写的,参照这个配置 model configuration 的官网文档, 然后这边是要,所以这边就要写 type type 加号线是 rain, 在 a p i 里面就我就要写 byte, 那没有办法,按照它的这个格式是这样定义的, 这样子的话我就可以拿到这两个数据进行打印,所以就会出现第一个打印是这个数据,第二个打印是这个输入的数据加输入的这部串,这个字节数据串 加上一个二二二的这个普通制服串的一个结果。这就是一个简单的部署一个 python big end 的模型,并用 try comes inference server 启动的例子。

triton 是一种由 video 公司推出的深度学习框架,旨在为大规模深度学习模型的训练和推理提供高效、可扩展和灵活的解决方案。 triton 的主要特点包括以下几个方面, 一、可扩展性和灵活性 triton 支持多种深度学习框架,例如 tens of flow、 petarch max net 等,可以提供高效的训练和推理服务。 同时, tratin 还支持多种硬件设备,例如 gpu、 tpu 等,可以根据不同的应用场景和需求进行灵活配置。二、高效性和优化性能 triton 支持一步训练和推理,可以充分 利用硬件设备的并行处理能力,提高训练和推理的效率和性能。此外, trito 还支持动态批处理、波卡同步提度累积等技术,可以进一步优化训练和推理的性能。 三、易用性和可视化 tretin 提供了简单易用的 api 接口,可以方便的构建和部署深度学习模型。同时, tretin 还提供了丰富的可视化工具,可以帮助用户监控和调试模型的训练和推理过程。 四、安全性和可靠性 traction 提供了多种安全性和可靠性保障措施,例如模型加密、数据隔离、错误处理等,可以 保障深度学习模型的数据安全和稳定运行。总之, traction 是一种高效、可扩展、灵活和应用的深度学习框架,可以为大规模深度学习模型的训练和推理提供全面的解决方案。随着人工智能技术的不断发展和应用, triton 的应用前景也将会更加广阔和多样化。


今天我们来演奏一款科音二十五键的合成器, 解开了,来了。


太炸裂了,清华大学这个新模型让我惊呆了,只需要四到六步的迭代步数,就可以出以前需要二十迭代步数的图。这里也讲了,只需要极少的迭代步数就可以生成高质量的图, 迭代步数减少几倍后,意味着生成的速度相比以前也会提升几倍。下面这些图就是用四步的迭代步数完成的,这已经相当于以前二十步去出图的质量了。 你们可以看一下我用 com p e y 出五百一十二乘七百六十八尺寸的深层速度,全程没有任何加速,迭代步数是五步, 出图的质量也非常不错。你盯住这个绿色的进度调侃,是不是你还没反应过来,一张五百一十二乘七六八的图片就已经生成在你眼前了?然后再用高清修复,放大一点五倍,看一下放大高清后的总生成速度,这时候图片尺寸来到了 七六八乘一千一百五十二,相比以前速度直接提升几倍。可以看一下终端显示的生成速度,日字加上高清修复,总生成时间是一点五二秒。再看一下之前没用高清修复,单独生成五百一十二乘七百六十八尺寸的生成时间,零点四四秒左右就生成了一张图片,速度简直不要太快。 在 y b u y 里面也是可以用这个模型的。我们也看看生成的速度,零点五秒就生成了一张同样是五百一十二乘七六八的图片,相比起来,还是康比 u y 生成的速度更快, 相同的参数,相同的提示词,相同的模型,也是 confi ui 出图的质量更高,这是我经过大量测试的结果。 ok, 接下来我就教大家怎么设置可以让你出图速度提升几倍。这几个 lolo 模型就是这次必须用到的模型,分为 s d 点五和 s d 叉 l 使用的专属 lol 模型。把它们下载好后,打开 你的 yby 个目录,找到名字叫猫豆子的文件夹,点进去再找到名字叫 yoy 的文件夹,放在这个文件夹里面就可以了,就是正常放你自己捞捞模型的地方。因为这次要用到一些新的采样方法,所以你的 yby 版本必须更新到最新,最好还是更新一下吧, 目前最新版本是幺点六点幺,点击右上角的一键更新即可。打开 yby 以后,我提前把提示词写好了,我们先用以前的方法,二十的迭代步数正常去做图,采样方法也保持默认 尺寸改为五百一十二乘七六八,然后直接点击生成,测一下生成需要的时间,第一次生成因为要加载模型可能会慢一些,这下面的参数可以看到,生成这张图片所用的时间二点六秒再生成一次,看看这次不加载模型了,应该会快一些。 ok, 这次用十一点九秒记一下。然后 我们在提示时你添加刚刚下载的新 lob。 第一个就是写着一点五的,就是用于一点五模型的专属 low。 写着 sd 叉 l 的就是用于 sd 叉 l 模型的专属 lober。 我现在用的是一点五的模型, 所以选择一点五的老板,接着把叠带步数改成五,也就是降低到以前的四倍。采用方法可以选择,这个我测试了,效果好一些。 还有一个非常重要的是,官方建议提示使引导系数在一到二之间大于二,效果反而会很差。我大量测试过, ok, 直接点击生成就好了。 第一次依然会慢一些,因为我们添加了捞了模型进去,需要加载。这次的生成速度是二点四秒,我们再生成一次,可以看到这个进度条跑的非常快,最终耗时零点七秒,而且图片的质量我怎么感觉比刚刚二十步还要好一点,再生成一次,看看速度会不会更快。这次耗时 零点六秒,比刚刚的零点七秒还要快了零点一秒。接下来再测试一下 comfi ui, 出图质量会更好。来到 comfi ui 的页面,这是一个简单的纹身图工作流。首先我们肯定是要添加一个使用 lola 的节点,很简单,就是从大模型拉出一个连接 lola 加载器的线, 然后把线条都依次串联一下就好了。再选择一下我们新下载的 lola 模型,一点五的模型就选择一点五的 lola。 然后到采样器设置一下参数,看 y b y 设置是一样的,叠带步数改成五,然后提示词引导系数改成一点五。采样方法记得也改成专属的 xem 采样方法 只送我。提前设置好了五百一十二乘七六八,现在就可以去点击生成了。因为刚接入了 lola, 所以会加载模型,第一次生成会慢一些。我们这次生成的时间是一点六八秒,我们再点击生成一次, 这次明显快不少,看一下生成的时间,我的妈呀,这次生成只用了零点五一秒,这个速度生成这样的质量真的不错吧,再生成看一下这个进度条我都来不及看。这次生成的速度是零点五八秒,大概就是一张图在零点五秒左右, 可以看到图片的质量相比 y b y 更好一些。我们再把批次改成六张,测试一次出六张图片需要多少时间? ok, 完成了,我们看一下是不是一次生成了六张。再看一下这六张图片总共耗时多少秒? 一次生成六张,总共耗时二点四一秒,平均每张耗时零点四秒。再测试一下,打开高清修复,生成一张大图需要多久?把屏蔽的节点打开,直接点击生成就可以了啊?为什么高清修复后的图 图片还没之前的小图质量好呢?因为加了拉拉结点,第二个采样器的模型线应该连接拉拉结点才对。再重新点击生成看一下, 这样就对了。高清修复后的图片明显细节更多了。再看一下总共用时多久?这个时间不对,用了三点零一秒,应该是第二个采样器也会加载一下模型,重新点击生成看看这次速度。生成快多了, 高清修复也没什么毛病,总共耗时仅仅一点五八秒,就完成了一张尺寸一千两百左右的大图,可以多点几次生成,测试一下稳定速度在多少秒。 这次是一点五秒,比刚刚还快,基本上就是稳定在一点五秒左右。目前这个 lola 是可以搭配任何 lola 模型使用的,也可以用在图声图, ctrl 呢也可以用,应该也可以用在 element 的插件中,做动画的 速度至少提升几倍,你们赶快去用起来吧。所有的捞捞模型我都整理在粉丝群了,自作不易,你们的支持是我更新最大的动力,等待 l c m 采样器在 y b u i 中更新,就可以和 com b u i 一样使用出图了,关注我,让你在 a i 的学习上少走弯路。