[Triton课程笔记] 2.2.2 Python Backend及BLS
一、例子
在Python Backend中用pytorch在GPU上运行Resnet50。
二、环境配置
由于原生环境没有pytorch的包,因此需要自己安装,有两种安装方式:
- 直接继承原生的docker镜像,并在dockerfile中安装需要的包;
- 如果不能用原生镜像中的python,需要用第二种方式,即创建新的conda环境,安装依赖,重新构建python backend stub,并复制到模型目录;打包conda环境,在配置文件中指定conda包;
三、python backend总结
- 必须手动在代码中指定运行的设备(如GPU)
- 参数"group_instance {KIND:gpu}" 不起作用
- Requests都没有打包成batch,需要自己手动去拼接;
- 每个Request必须对应一个Response;
- 如果要避免CPU-GPU拷贝设置参数:FORCE_CPU_ONLY_INPUT_TENSORS;
- 用于数据传输的共享内存必须足够大
- 每个实例至少需要65MB
- 比C++ Backend效率低,特别在循环处理方面;
四、BLS简介
- 达到动态组合的效果;
- 通过简单的python代码去连接模型和实现逻辑流,如循环,if-else,数据控制流;
- BLS就是一种特殊的python backend:
- 可以在代码中调用其他模型;
- 配置和python model没区别;
- 有两种模式:
- 同步模式;
- 异步模式;
4.1 BLS的同步模式
例子:
25:25 代码部分
本文版权归作者(https://www.cnblogs.com/harrymore/)和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,如有问题, 可邮件(harrymore@126.com)咨询.