1.Nvidia Triton Server使用教程:从青铜到王者
2.从HOOK模型的王者王四个步骤,分析王者荣耀的模型模型上瘾机制
3.增长黑客P1:王者荣耀的Hook模型分析
Nvidia Triton Server使用教程:从青铜到王者
接下来要介绍的triton就是目前比较优秀的一个模型推理框架。
接下来手把手教你跑通triton,源码源码用让你明白triton到底是王者王干啥的。
NGC可以理解是模型模型NV的一个官方软件仓库,里面有好多编译好的源码源码用源码安装完404软件、docker镜像等。王者王我们要注册NGC并生成相应的模型模型api key,这个api key用于在docker上登录ngc并下载里面的源码源码用镜像。
注册申请流程可以参考 官方教程
命令行界面输入
然后输入用户名和你上一步生成的王者王key,用户名就是模型模型$oauthtoken,不要忘记$符号,源码源码用不要使用自己的王者王用户名。 最后会出现Login Succeeded字样,模型模型就代表登录成功了。源码源码用
你也可以选择拉取其他版本的triton。镜像大概有几个G,需耐心等待,这个镜像不区分gpu和cpu,是通用的。
/home/triton/model_repository 就是你的模型仓库,所有的模型都在这个模型目录中。启动容器时会将其映射到容器中的怎么读公司源码/model 文件夹上,fc_model_pt可以理解为是某一个模型的存放目录,比如一个用于情感分类的模型,名字则没有要求,最好见名知义,1代表版本是1 模型仓库的目录结构如下:
创建一个torch模型,并使用torchscript保存:
生成模型后拷贝到刚才建立的目录中,注意要放到版本号对应的目录,且模型文件名必须是model.pt。
为了让框架识别到刚放入的模型,我们需要编写一个配置文件config.pbtxt,具体内容如下:
这个模型配置文件估计是整个triton最复杂的地方,上线模型的大部分工作估计都在写配置文件,我这边三言两语难以解释清楚,只能给大家简单介绍下,具体内容还请参考 官方文档。注意配置文件不要放到版本号的目录里,放到模型目录里,也就是说config.pbtxt和版本号目录是平级的。
如果你的系统有一个可用的gpu,那你可以加上如下参数--gpus=1来让推理框架使用GPU加速,这个参数要放到run的后面。
如果你按照我的教程一步一步走下去,那么肯定可以成功启动容器,什么是内核源码下面我们可以写段代码测试下接口是否是通的,调用地址是:
测试代码如下:
执行代码后会得到相应的输出:
不知道是不是我的用法有问题,就使用体验来看,这个推理接口有些让我不适应: 1. 明明在config.pbtxt里指定了datatype,但是输入的时候还需要指定,不指定就会报错 2. 输入的shape也需要指定,那不然也会报错 3. datatype的值和config.pbtxt里不统一,如果datatype设为TYPE_INT,则会报错,必须为INT 4. 输出里的data是个1维数组,需要根据返回的shape自动reshape成对应的array
除了像我这样直接写代码调用,还可以使用他们提供的官方库
地址如下: github.com/triton-infer...
上一小节的教程只是用到了triton的基本功能,所以段位只能说是个黄金,下面介绍下一些triton的高级特性。
模型并行可以指同时启动多个模型或单个模型的多个实例。实现起来并不复杂,通过修改配置参数就可以。在默认情况下,triton会在每个可用的gpu上都部署一个该模型的实例从而实现并行。 接下来我会对多种情况进行测试,以让你们清楚模型并行所带来的效果,本人的配置是2块(租的)用于测试多模型的情况。 压测命令使用
这条命令的iapp娇踹源码意思是5个进程反复调用接口共次。 测试配置及对应的QPS如下:
结论如下:多卡性能有提升;多个实例能进一步提升并发能力;加入CPU会拖累速度,主要是因为CPU速度太慢。
下面是上述测试对应的配置项,直接复制了放到config.pbtxt中就行
至于选择使用几张卡,则通过创建容器时的--gpus来指定
动态batch的意思是指, 对于一个请求,先不进行推理,等个几毫秒,把这几毫秒的所有请求拼接成一个batch进行推理,这样可以充分利用硬件,提升并行能力,当然缺点就是个别用户等待时间变长,不适合低频次请求的场景。使用动态batch很简单,只需要在config.pbtxt加上
具体参数细节大家可以去看文档,我的这种简单写法,组成的bsz上限就是max_batch_size,本人压测的结果是约有%QPS提升,反正就是有效果就对了。
PS:这种优化方式对于压测来说简直就是作弊。。。
所谓自定义backend就是自己写推理过程,正常情况下整个推理过程是通过模型直接解决的,但是linux上传源码教程有一些推理过程还会包含一些业务逻辑,比如:整个推理过程需要2个模型,其中要对第一个模型的输出结果做一些逻辑判断然后修改输出才能作为第二个模型的输入,最简单的做法就是我们调用两次triton服务,先调用第一个模型获取输出然后进行业务逻辑判断和修改,然后再调用第二个模型。不过在triton中我们可以自定义一个backend把整个调用过程写在里面,这样就简化调用过程,同时也避免了一部分http传输时延。 我举的例子其实是一个包含了业务逻辑的pipline,这种做法NV叫做BLS(Business Logic Scripting)。
要实现自定义的backend也很简单,与上文讲的放torch模型流程基本一样,首先建立模型文件夹,然后在文件夹里新建config.pbtxt,然后新建版本文件夹,然后放入model.py,这个py文件里就写了推理过程。为了说明目录结构,我把构建好的模型仓库目录树打印出来展示一下:
如果上一小节你看明白了,那么你就会发现自定义backend的模型目录设置和正常目录设置是一样的,唯一不同的就是模型文件由网络权重变成了自己写的代码而已。下面说下config.pbtxt和model.py的文件内容,大家可以直接复制粘贴:
config.pbtxt的文件内容:
待上述工作都完成后,就可以启动程序查看运行结果了,大家可以直接复制我的代码进行测试:
运行结果可以发现2次的输出中,ouput0是不一样,而output1是一样的,这和咱们写的model.py的逻辑有关系,我这里就不多解释了。
PS:自定义backend避免了需要反复调用NLG模型进行生成而产生的传输时延
如果上面的教程你完整的走了一遍,相信你对triton的使用方法和相关特性会有一个大概的了解,王者不敢保证,黄金段位肯定是有了,后面去学习使用triton的其他特性想必也会非常顺利. 如果你在使用过程中遇到了问题可以私信或者评论,我们一起学习交流。 最后如果有需要租用GPU机器的同学,可以考虑featurize,我做的实验就是在这上面租了机器,大家如果需要租用请使用我的邀请链接,也算是给我做实验回本了,谢谢各位,注册链接:
从HOOK模型的四个步骤,分析王者荣耀的上瘾机制
深入探讨王者荣耀的上瘾机制,我们通过HOOK模型的四个步骤来剖析其设计策略。首先,产品概述:《王者荣耀》作为全球首款5V5公平竞技手游,不仅有王者峡谷、深渊乱斗等多种模式,还吸引玩家通过技术和团队配合争取胜利,其社交属性和游戏时间短是其成功关键。
数据表明,自年起,其用户量持续增长,尤其是在年达到高峰。HOOK模型的分析如下:1. 触发(Trigger)
内部触发:利用手机游戏的便捷性和腾讯社交平台的联系,使用户容易上手。
外部触发:通过电竞比赛和与好友竞技的吸引力,扩大用户群体。
2. 行动(Action)
Fogg模型强调动机(如社交和休闲)和能力(如低门槛设计),《王者荣耀》通过优化设计满足这两点,吸引各个水平的玩家。3. 奖励(Reward)
社会奖励:通过团队胜利和电竞荣誉激励玩家。
自我情绪奖励:游戏带来的成就感和快乐感。
资源奖励:虚拟道具和皮肤的获取。
4. 投资(Investment)
玩家投入的时间、精力,以及在游戏中建立的社会关系和虚拟财富。 尽管游戏设计适合碎片化时间,但其吸引力依然促使玩家深度投入。总结来说,王者荣耀凭借其巧妙的Hook设计,成功地在用户心中种下了上瘾的种子。增长黑客P1:王者荣耀的Hook模型分析
通过分析增长黑客的Hook模型,结合王者荣耀这款热门游戏,我们可以深入了解其如何设计上瘾机制。Hook模型强调四大要素:触发、行动、奖励和投资,下面我们将分别从这四个步骤来探讨王者荣耀的上瘾原因。
第一步,触发。王者荣耀在设计上做了多方面的考虑来触发玩家的使用欲望。外部触发包括游戏的广告宣传、社交媒体上的分享与讨论、以及游戏内各种活动的提醒等。内部触发则源自游戏本身的趣味性和挑战性,比如新英雄的上线、赛季的更新、以及与好友的对战邀请等。
第二步,行动。王者荣耀在设计上鼓励玩家进行各种游戏内操作,如组队匹配、购买装备、完成任务等。游戏通过直观的界面和流畅的操作体验,使得玩家能够快速上手并享受游戏带来的乐趣。
第三步,奖励。王者荣耀的奖励机制多样且丰富,包括但不限于:等级提升、稀有皮肤的获取、成就系统的解锁等。这些奖励不仅能够提供即时的满足感,还能激发玩家的长期兴趣和探索欲望。
第四步,投资。王者荣耀通过提升玩家的参与度和投入感来实现上瘾机制的最后一步。前期投资主要包括新手引导、角色选择等,帮助玩家熟悉游戏环境;增加投资则体现在游戏的深度和复杂性上,如丰富的英雄选择、多样化的战术策略、以及不断更新的内容等,使得玩家愿意花费更多时间和精力在游戏上。
综上所述,王者荣耀通过精心设计的Hook模型,成功地吸引了大量玩家,并让玩家在游戏过程中不断上瘾。其成功之处在于巧妙地结合了触发、行动、奖励和投资四个步骤,为玩家提供了丰富的游戏体验和持续的满足感。