Jiarui Fang(方佳瑞)
Jiarui Fang(方佳瑞)
支持的,可以让embedding用pytorch运行。你参考一下roberta例子即可。
这个在Turbo里处理不太方便,可以通过dlpack转化成pytorch tensor,然后用torch的接口处理完再转回来。 turbo tensor -> torch tensor torch_tensor = dlpack.from_dlpack(turbo_tensor.to_dlpack()) see this file for more detail turbo_transformers/python/turbo_transformers/layers/return_type.py torch tensor -> turbo tensor convert2tt_tensor(t) see this file for more details: turbo_transformers/python/turbo_transformers/layers/utils.py
应该和Q矩阵正负没关系,你可以去单测跑一下你的输入数据?
1. 你理解没错,tf需要转化为npz加载,torch则可以直接加载。 2. gpt2只能用onnxrt加速
把冲突的包卸载了吧
应该是continuumio/anaconda3升级导致的 https://hub.docker.com/r/continuumio/anaconda3/tags?page=1&ordering=last_updated 可以把dockerfile改成 FROM continuumio/anaconda3:2020.07
精度可以到小数点后两位
turbo单测会比较每个kernel的精度,跟我我的经验,问题可能出在 1. 矩阵乘法实现,GPU会默认使用tensor core计算 更改如下文件 https://github.com/Tencent/TurboTransformers/blob/master/turbo_transformers/layers/kernels/mat_mul.cpp#L80 参数配置改成如下 auto cublas_algo = CUBLAS_GEMM_DEFAULT; //CUBLAS_GEMM_DEFAULT_TENSOR_OP; auto cublas_match_mode = CUBLAS_DEFAULT_MATH; //CUBLAS_TENSOR_OP_MATH; 不用tensor core计算精度会提升 2. 去源代码里检查一下softmax,layernorm的超参数 比如除法为了防止除0会加一个eps,这个可能和tf的参数不一样。
BTW,你比较一下tf和pytorch的精度有差异么?
那行代码是意义,你可以搜关键字替换 CUBLAS_TENSOR_OP_MATH -> CUBLAS_DEFAULT_MATH 既然turbo和torch一样,那和tf的差异就是框架的原因的。