ONEforALL-S003 / ONE

On-device Neural Engine / q-implant
Other
1 stars 2 forks source link

[q-implant] Inherit predecessor Quantization Parameter for operators … #16

Open ssafyWooJeong opened 12 months ago

ssafyWooJeong commented 12 months ago

…that can be added while model conversion

Operators(such as transpose) can be added to model while conversion. Those operators are not present at original model, so corresponding quantization parameter could not exist on qparam.json. For those operators, inherit predecessor's quantization parameter to make appropriate graph.

ONE-DCO-1.0-Signed-off-by: WooJeong Jeong wj6349@gmail.com

FantBlog commented 12 months ago

input.circle 에는 있는 op인데 qparam.json에 존재하지 않는 op일 경우에 상속? 을 받아서 처리를 해준다는 건가요?

0minyoung0 commented 12 months ago

For those operators, inherit predecessor's quantization parameter to make appropriate graph.

I think 'share' would be more appropriate than 'inherit'!

ssafyWooJeong commented 12 months ago

input.circle 에는 있는 op인데 qparam.json에 존재하지 않는 op일 경우에 상속? 을 받아서 처리를 해준다는 건가요?

비슷하기는 한데, Transpose나 Reshape 이런 건 Model 변환 과정에서 추가될 수 있어서 원본 모델에는 존재하지 않고 변환 된 Circle 내에만 존재하는 Operator 일 수 있는데, 그 경우에는 원본 모델에 존재하지 않아 qparam.json에 없을 수 밖에 없어요.

q-implant 이후에 float가 남으면 luci IR 구조 자체가 invalid 해서 error가 발생해서 Model 변환에서 생긴 Operator에도 quantization parameter를 넣어 줘야하는데,

1) Graph를 따라서 내려가다가, Node의 자식을 확인해서 자식에게 Quantization Parameter가 존재하지 않는지 확인하고 2) Quantization Parameter가 존재하지 않는데, Model 변환 과정에서 생길 수 있는 Operator면, 변환에서 생긴 Operator임으로 Quantization Parameter가 qparam.json에 없다는 것을 가정해서 predecessor의 quantization parameter를 넣어줍니다. 3) Reshape과 같이 해당하는 Operator가 원본 모델에도 존재하면, qparam.json 내에 이미 존재함으로 predecessor의 quantization parameter를 사용하지 않게 됩니다.

FantBlog commented 12 months ago

원본 모델에는 존재하지 않고 변환 된 Circle 내에만 존재하는 Operator 일 수 있는데,

원본 모델은 tflite 모델인가요?

ssafyWooJeong commented 12 months ago

What

We want to introduce the quantization parameter sharing with precessor node, which could be added while model conversion into the q-implant module.

Why

How

Question

ssafyWooJeong commented 12 months ago

원본 모델은 tflite 모델인가요?

tflite는 circle이랑 호환 됨으로, Tensorflow model이나 tflite model은 q-implant 사용 자체를 가정하고 있지 않아요..