徐静
徐静
我的运行环境是Python3.x, tensorflow==1.5.0,这个报错的主要原因是没有找到训练的语料。因为语料是公司内网OA环境下的后台聊天数据,不方便公开,你可以自行设置一些语料,或者搜一些电视剧,电影小说的对白,设计自己风格的语料。
Now u batch_size is 1. If u train in CUDA GPU u can config some params in `lx_bot_3.py` line `195` or made the `input_seq_len` and `output_seq_len` smaller
是的samples是存放的语料库,是公司OA的聊天数据,不方便透漏,model文件夹存放的是训练好的模型,如果是部署Deeplearning的模型,我不建议你使用Flask或Django,你可以考虑tensorflow-serving或simple tensorflow serving 可以参考我的这个项目:或在线文档:
这里所说的`合并`是 把Transpose + Reshape结构在API中直接去掉,举个简单的例子有些OP被ONNX解析出来是连续做了3次 Transpose+Reshape, 这时候可能用1次 Transpose+Reshape替代就解决了,这样相当于去掉了2次。 再比如有时候因为pytorch在设计网络上的需要会先做Transpose+Reshape再加一个OP(比如矩阵乘)再接一个Transpoe+Reshape, 像这样的组合其实是可以直接用一个矩阵乘的OP替代或直接用一个矩阵乘+Transpose+Reshape替代的。在TensorRT API自己去设计的时候其实没必要完全遵循之前网络结构的冗余设计去进行简化,只要结果保持一致性就可以。
两种方式底层调用都是TensorRT API的实现,你说的最后一条其实性能是一样的(本项目其实在描述优化过程,Plugin部分的性能提高其实不是API带来的)。我自己觉得TensorRT API比ONNX Parser好一点的优势就是你可以控制一部分算子的合并,重新基于网络设计高效的inference实现。当然ONNX Parser通过一些方式也可以切断算子合并。其实随着ONNX Parser的不断强大,TensorRT API的这些优势也可能会消失。 我个人觉得生产环境下,还是优先考虑ONNX Parser +Plugin的这种方式,其实已经足够了。没必要耗费大量的时间去用API再重新实现一遍 :bug:
+ + 我不确定您说的·getWorkspaceSize`是不是这个,我一般的做法是默认值,如果不行会在默认值的基础上增加,直到可以正常导出
如果你是静态的shape,我不建议用Dynamic shape的TRT plan去推断,我自己觉得这种情况下Dynamic shape的模型推断速度不够快,他要做shape的推断,同时优化过程选择的kernel,Dynamic和Static可能也是不一样的,这导致Dynamic时速度可能会低于Static的model. 我自己的原则是能不用Dynamic shape就不用,除非万不得已. 至于`显存是不是一定会增加?`这个问题,我之前没有遇到过这种情况,抱歉。
不好意思,百度网盘被清空了,近期我们会重新上传,更新链接!
也尝试过,也是相同的error,我可不可以在`models/ common.py`中基于Pytorch重新给个Mish激活函数的定义?如下: ``` # no pretrain # from mish_cuda import MishCuda as Mish # pretrain #from mc.build.lib.mish_mish import MishCuda as Mish # 实在装不上mish-cuda,用pytorch自己实现 class Mish(nn.Module): def __init__(self): super().__init__() def forward(self,x):...
好的,明白!