root icon indicating copy to clipboard operation
root copied to clipboard

[tmva][sofie] Status of the support of ONNX operators

Open axmat opened this issue 3 years ago • 6 comments

This issue should track the status of the support of ONNX operators in TMVA/SOFIE.

Supported :

  • [x] Add
  • [x] AveragePool
  • [x] BatchNormalization
  • [x] Conv
  • [x] Gemm
  • [x] GlobalAveragePool
  • [x] GRU
  • [x] LSTM
  • [x] MaxPool
  • [x] Pool
  • [x] Relu
  • [x] Reshape
  • [x] RNN
  • [x] Selu
  • [x] Sigmoid
  • [x] Slice
  • [x] Transpose

Work in progress :

  • [x] Softmax, #10315
  • [x] Identity, #10315
  • [ ] Concat, #10315 and #9311
  • [ ] InstanceNormalization, #8885

Missing :

  • [x] Abs
  • [ ] Acos
  • [ ] Acosh
  • [x] And
  • [ ] ArgMax
  • [ ] ArgMin
  • [ ] Asin
  • [ ] Asinh
  • [ ] Atan
  • [ ] Atanh
  • [ ] BitShift
  • [x] Cast
  • [ ] Ceil
  • [ ] Clip
  • [ ] Compress
  • [ ] ConcatFromSequence
  • [x] Constant
  • [x] ConstantOfShape
  • [ ] ConvInteger
  • [x] ConvTranspose
  • [x] Cos
  • [ ] Cosh
  • [ ] CumSum
  • [ ] DepthToSpace
  • [ ] DequantizeLinear
  • [ ] Det
  • [x] Div
  • [x] Dropout
  • [x] Einsum
  • [x] Elu
  • [x] Equal
  • [x] Erf
  • [x] Exp
  • [x] Expand
  • [x] EyeLike
  • [x] Flatten
  • [x] Floor
  • [x] Gather
  • [x] GatherElements
  • [x] GatherND
  • [ ] GlobalLpPool
  • [x] GlobalMaxPool
  • [x] Greater
  • [ ] GridSample
  • [ ] HardSigmoid
  • [ ] Hardmax
  • [x] Identity
  • [x] If
  • [ ] IsInf
  • [ ] IsNaN
  • [ ] LRN
  • [x] LeakyRelu
  • [x] Less
  • [x] Log
  • [ ] Loop
  • [ ] LpNormalization
  • [ ] LpPool
  • [x] MatMul
  • [ ] MatMulInteger
  • [x] Max
  • [ ] MaxRoiPool
  • [ ] MaxUnpool
  • [x] Mean
  • [x] Min
  • [x] Mod
  • [x] Mul
  • [ ] Multinomial
  • [x] Neg
  • [ ] NonMaxSuppression
  • [ ] NonZero
  • [ ] OneHot
  • [ ] Optional
  • [ ] OptionalGetElement
  • [ ] OptionalHasElement
  • [ ] Or
  • [ ] PRelu
  • [x] Pad
  • [x] Pow
  • [ ] QLinearConv
  • [ ] QLinearMatMul
  • [ ] QuantizeLinear
  • [x] RandomNormal
  • [ ] RandomNormalLike
  • [ ] RandomUniform
  • [ ] RandomUniformLike
  • [ ] Reciprocal
  • [ ] ReduceL1
  • [ ] ReduceL2
  • [ ] ReduceLogSum
  • [x] ReduceLogSumExp
  • [x] ReduceMax
  • [x] ReduceMean
  • [x] ReduceMin
  • [x] ReduceSum
  • [ ] ReduceSumSquare
  • [ ] Resize
  • [ ] ReverseSequence
  • [ ] RoiAlign
  • [x] Round
  • [ ] Scan
  • [x] ScatterElements
  • [ ] ScatterND
  • [ ] SequenceAt
  • [ ] SequenceConstruct
  • [ ] SequenceEmpty
  • [ ] SequenceErase
  • [ ] SequenceInsert
  • [ ] SequenceLength
  • [x] Shape
  • [ ] Shrink
  • [x] Sign
  • [x] Sin
  • [ ] Sinh
  • [ ] Size
  • [x] Softplus
  • [ ] Softsign
  • [ ] SpaceToDepth
  • [x] Split
  • [ ] SplitToSequence
  • [x] Sqrt
  • [ ] StringNormalizer
  • [ ] Sub
  • [x] Sum
  • [x] Tan
  • [x] Tanh
  • [ ] TfldfVectorizer
  • [ ] ThresholdedRelu
  • [x] Tile
  • [x] TopK
  • [ ] Trilu
  • [ ] Unique
  • [x] Unsqueeze
  • [x] Where
  • [ ] Xor

axmat avatar Apr 08 '22 13:04 axmat

Do we have the plan to support "MatMul" ?

youlxs avatar Nov 03 '23 02:11 youlxs

MatMul is now supported in both master and 6.30, see

https://github.com/root-project/root/pull/12894

This above list needs to be updated with the new supported operator

lmoneta avatar Nov 03 '23 10:11 lmoneta

Do we have a plan to support "Split" ?

youlxs avatar Feb 02 '24 03:02 youlxs

We can plan to support it if needed. It might take a little bit of time, since we need to support in SOFIE sequence of tensors which are the output of Split. For which type of model do you need Split?

lmoneta avatar Feb 02 '24 07:02 lmoneta

MatMul is now supported in both master and 6.30, see

#12894

This above list needs to be updated with the new supported operator

thanks

youlxs avatar Feb 02 '24 13:02 youlxs

We can plan to support it if needed. It might take a little bit of time, since we need to support in SOFIE sequence of tensors which are the output of Split. For which type of model do you need Split?

I want to convert my model to the raw code to improve the prediction speed. As I saw from your slide the raw code generated through tmva has better performance than the original onnx runtime.

youlxs avatar Feb 02 '24 13:02 youlxs