关于ONNX转换
Hi, 我看到目前的ONNX转换生成了很多个ONNX,使用很不方便。 是否有办法将主体部分(README图绿色部分)转换成一个大的ONNX呢?
单个 onnx 文件不能超过 2GB https://github.com/onnx/onnx/issues/3275 想单个 onnx 结果,
- 首先改一下 pb 代码里的变量;
- 然后
torch.onnx.export加在这里 https://github.com/tpoisonooo/transformers/blob/a515d0a77c769954ac2f0151a2a99c04d8d6cf95/src/transformers/models/llama/modeling_llama.py#L820
但中间的 for 和 if 你就要自己处理。
或者给个 zero tensor past_key,自己削掉里面的 if
@lingffff 目前 onnx 的设计并不完全适用 LLM
@tpoisonooo 请教下,那现在有适合的LLM(特别是llama)在GPU上优化推理过程的方案嘛? 我查了FastTransformer、Transformer-Deploy这些方案,应该都是不支持的;
单个 onnx 文件不能超过 2GB onnx/onnx#3275 想单个 onnx 结果,
- 首先改一下 pb 代码里的变量;
- 然后
torch.onnx.export加在这里 https://github.com/tpoisonooo/transformers/blob/a515d0a77c769954ac2f0151a2a99c04d8d6cf95/src/transformers/models/llama/modeling_llama.py#L820但中间的 for 和 if 你就要自己处理。
或者给个 zero tensor past_key,自己削掉里面的 if
Hi @tpoisonooo ,
ONNX对2GB以上的模型是通过将权重拆分成单独的weights文件解决的,在使用时可以通过唯一的onnx读入(如torch.onnx.export大模型就会生成这样一系列文件)。应该有办法生成这样的ONNX?
另外,我看到README图里面绿色部分是没有if/for的,是否可以把这一部分作为整体生成上述onnx?
可以。 onnx 支持 for/if,但如果这么做的话。为啥不直接用 torch 呢。
@tpoisonooo 请教下,那现在有适合的LLM(特别是llama)在GPU上优化推理过程的方案嘛? 我查了FastTransformer、Transformer-Deploy这些方案,应该都是不支持的;
FastTransformer、 OpenAI/Triton 都支持 LLM 。
@RiskySignal
可以。 onnx 支持 for/if,但如果这么做的话。为啥不直接用 torch 呢。
ONNX作为中间格式,做部署会方便些,我在尝试往TensorRT转
可以。 onnx 支持 for/if,但如果这么做的话。为啥不直接用 torch 呢。
ONNX作为中间格式,做部署会方便些,我在尝试往TensorRT转
目前的 “ onnx 分散片” 是能直接转成功的。
可以。 onnx 支持 for/if,但如果这么做的话。为啥不直接用 torch 呢。
ONNX作为中间格式,做部署会方便些,我在尝试往TensorRT转
目前的 “ onnx 分散片” 是能直接转成功的。
感谢!我也成功转出来了,请问你试过 “ onnx 分散片” 转TRT之后,推理结果正确吗?
可以。 onnx 支持 for/if,但如果这么做的话。为啥不直接用 torch 呢。
ONNX作为中间格式,做部署会方便些,我在尝试往TensorRT转
目前的 “ onnx 分散片” 是能直接转成功的。
感谢!我也成功转出来了,请问你试过 “ onnx 分散片” 转TRT之后,推理结果正确吗?
我这里是能用TRT做inference了,但是decoder-merge-0的输出结果就已经不对了
可以。 onnx 支持 for/if,但如果这么做的话。为啥不直接用 torch 呢。
ONNX作为中间格式,做部署会方便些,我在尝试往TensorRT转
目前的 “ onnx 分散片” 是能直接转成功的。
感谢!我也成功转出来了,请问你试过 “ onnx 分散片” 转TRT之后,推理结果正确吗?
我这里是能用TRT做inference了,但是decoder-merge-0的输出结果就已经不对了
发了个 issue 给 TRT, https://github.com/NVIDIA/TensorRT/issues/2928 🤗
@tpoisonooo 可以针对这种大模型,重新定义一种模型结构么,比如图结构用一个jeson来记录,weights单独保存在一个文件中,这样就。另外就是大模型一般都是几十层的 attention,定义一种循环的表示方式?
@tpoisonooo 请教下,那现在有适合的LLM(特别是llama)在GPU上优化推理过程的方案嘛? 我查了FastTransformer、Transformer-Deploy这些方案,应该都是不支持的;
FastTransformer、 OpenAI/Triton 都支持 LLM 。
效果如何,有很大提升吗
@tpoisonooo 请教下,那现在有适合的LLM(特别是llama)在GPU上优化推理过程的方案嘛? 我查了FastTransformer、Transformer-Deploy这些方案,应该都是不支持的;
FastTransformer、 OpenAI/Triton 都支持 LLM 。
效果如何,有很大提升吗
用 FT/triton 肯定很快,手写的 90%
@chenqy4933 用简单的 toml+onnx 就够用了。似乎现在 onnx 也支持模型嵌套了。
我们使用FT/triton已经加速了2-3倍。但是性能还是不够, @tpoisonooo 现在tensorrt结果错误的问题又最新的进展吗?