Replies: 2 comments 4 replies
-
[Q] 왜 tflite를 tensorrt보다 많이 사용하시나요?? |
Beta Was this translation helpful? Give feedback.
-
최근에 읽었던 논문 자료가 도움이 될 것 같아서 댓글 달아봅니다.
|
Beta Was this translation helpful? Give feedback.
-
[Q] 왜 tflite를 tensorrt보다 많이 사용하시나요?? |
Beta Was this translation helpful? Give feedback.
-
최근에 읽었던 논문 자료가 도움이 될 것 같아서 댓글 달아봅니다.
|
Beta Was this translation helpful? Give feedback.
-
[Q] 금일 발표해주신 연구들은 GPT와 같은 대규모/대용량 모델에 한정되어 이뤄진 연구들일까요?
[A] 꼭 그렇지는 않습니다. GPT와 같은 모델들에 대한 연구는 거의 이뤄져 있지 않은 상황이기 때문에 오히려 참고할만한 연구가 많지 않습니다. 오늘 얘기들은 대부분 그간의 경험들을 합친것이라 보시면 될것 같습니다. 저의 최근 경험은 그쪽으로 치우쳐져 있는 편이긴 합니다.
[Q] 경량화에 대해 전체적인 흐름을 배울 수 있는 사이트나 자료가 있을지 궁금합니다.
[A] 이게 참 어려운데, 딥러닝에 대해서 전반적으로 배울수 있는 사이트나 자료가 많지 않듯이 (교과서가 없기 때문에) 경량화는 더 없는 편입니다. 필요하신 목적/모델/요구사항 등에 따라 다 따로 검색해야하는 문제가 있고, 그러다보니 초보자는 더 진입하기 어려운 측면이 있습니다. 스터디를 하시면서 느끼시겠지만, 각 분야의 전문가분들이 많이 계십니다. 그분들과 친분을 쌓는 것을 추천드립니다.
[Q] Int8에 대해서 VNNI(x86), dp4a(gpu)등과 같이 special instruction이 잘 지원되는 환경에서는 FP16보다 latency 측면에서 차이가 있다고 생각하시는지 궁금합니다.
[A] Special instruction이 지원되더라도, s/w적으로 최적화 되어 있는가에 대한 것은 얘기가 다릅니다. VNNI 성능도 생각보다 별로였고 (상황에 따라 다릅니다.) NVIDIA int8/int4 로직은 써보지도 못했네요. 항상 무엇에 최적화 할것이냐, end-to-end 시간은 어떠냐 하는 여러가지 요인들이 latency 향상과 깊은 관계가 있습니다. 절대 쉽게 결론내릴수 있는 문제가 아닙니다.
[Q] 가속화 하드웨어에 있어 모델을 서비스함에 있어 경량화에서 소요 시간만큼이나 중요한 부분이 전력 사용량이라고 생각하였는데 이 부분은 어떻게 생각하시나요?
[A] 전력량은 중요합니다만, 이미 설치될때부터 정해져 있는 경우가 많습니다. 내가 하드웨어를 디자인하는 입장에서는 low-power를 잘 만들어야하는 것은 사실인데, 만들어져 있는 system을 사용할때는 이미 전력량이 왠만큼 이미 나왔기 때문에 계산이 가능하고, 그 다음부터는 utilization으로 가야하는 것으로 이해됩니다.
[Q] 적정선을 어디로 잡을지에 대한 기준선 선정 기준이 따로 있을까요? 가성비 말고.
[A] 적정선을 Trade-off 관계를 말씀하신거라면 정답은 없습니다. Hard한 constraint들은 맞춰야할테고요 (Infra, latency, 비용 등) 그 상태에서 얼마나 손해를 봐도 괜찮은지는 stakeholder들의 결정일것입니다.
[Q] 발표와는 다른 내용이긴 하지만 석사학위를 받고 박사과정을 많이 고민하는 중인데 "딥러닝 경량화" 주제로 박사학위에 도전하는 것이 시기 상(?)으로 괜찮을지 조언을 구해보고 싶습니다..
[A] 경량화에 대해 할 거리는 너무 많습니다만, 단순히 quantization/pruniing 알고리즘만 가지고 하는 거라면 차라리 모델을 공부하시라고 권하고 싶습니다. 하드웨어나 시스템까지 엮어서 종합적인 뷰를 가지시겠다면 추천드립니다. 다만, 지도교수가 많이 중요한 것이, 필요하고 과제하기에도 좋다보니 경량화 주제를 하기는 했는데 지도교수가 전혀 지원을 못해줘서 제대로된 연구를 못하는 케이스를 많이 봤습니다. 모델에 대한 지식과 시스템에 대한 지식을 골고루 갖춘 연구실에서 하시면 좋을것 같습니다.
[Q]혹시 경량화 과정에서 겪는 framework-level에서의 문제들 (e.g., 말씀하셨던 TQ lite issue, latency issue) 등에 대해서 public하게 공개된 리스트가 있거나 공유해주실수 있는 내용들이 있을까요? 제가 하고 있는 일들이 이런 문제들을 address하는 것이라서요. 감사합니다!
[A] 다 된다는 얘기만 하지 안된다는 얘기 하는 곳이 거의 없습니다 ^^.. 이런 스터디하면서 인맥을 찾아서 물어보시는게 제일 빠를수 있습니다. 참고로 저는 이 문제에 있어서 전문가가 아닙니다.
[Q] Low precision data format으로 학습한 모델 가중치를 갖고 다른 data format으로 추론 시손실의 폭이 있을까요? ( ex. bfloat16으로 사전학습 및 파인튜닝 / 추론 시 float32 - Tensorflow 공식 튜토리얼에서는 이렇게 해도 된다고 써있긴 한데, 정보의 손실이 안고 가는 정도인건지, 전혀 상관 없을까요?)
[A] bfloat16은 거의 문제가 없습니다. fp16도 training 시에 auto scaling 문제가 있긴 하나 거의 문제가 없습니다. (물론 attention이라던지, input이라던지 일부 민감한 layer가 걸릴수는 있습니다.) int8의 경우는 조금 더 문제가 생길수 있습니다만, redundant한 resnet같은 경우도 괜찮을수 있습니다.
[Q] Pruning 쪽을 연구하셨다고 하셔서 질문드리고 싶은게 있습니다. 개인적으로 pruning은 knowledge distillation이나 quantization에 비해 benchmarking하기가 참 어렵다고 생각합니다. 보통 FLOPS 기준으로 compression rate를 측정하곤 하는데, 대부분의 기법들의 압축률이 다른 건 둘째치고, 아무래도 pruning되는 형식이 다르다보니 실제 latency나 parameter 수 감소 등에서 차이가 있으니까요. 현업에서 쓰실 때는 어떤 방식으로 적용할 pruning 기법을 선정하시는 지 궁금합니다.
[A] 현업에서 Structured pruning은 결국 latency와 accuracy로 말해야한다고 생각하구요. FLOPs는 현업에서 쓰일만한 metric이 아닙니다. depthwise conv.가 들어가는 순간 1:1 비교가 안되니까요. unstructured pruning은 현업에서 못쓰기때문에 논외입니다.
[Q] 발표 내용과는 다른 결의 것일지는 잘 모르겠지만 세중님께서 실제로 학습 하시고 성능 측정을 하실 때 메모리나 속도 측정은 어떤 식으로 하시는지 궁금합니다.
[A] 겉에서 재는 방법과 profiling해서 깊히 들어가는 방법이 있을텐데, 어떤 환경에서 재냐에 따라 다를겁니다. 저는 주로 이쪽 일을 하지는 않는데요, 저희 팀으로 확장해서 보면 가능한 모든 것을 합니다. 근데 이 과정에서 중요한 것은 속도가 나오는 것을 이론적으로 이해하고 있어야한다는 점입니다. 그래야 내가 잘못잰건지, s/w적인 문제가 있는지, h/w랑 안맞는지 등을 파악할 수 있습니다. 그게 아니면 결국 이것도 장님이 코끼리 만지는게 되어버립니다.
[Q] Activation을 압축한다는 것은 어떤걸 의미하는건가요?
[A] CNN의 경우에는 Feature Map, Transformer의 경우에는 hidden vector를 말씀드리는 겁니다. input에서 출발해서 결과가 나오기까지 연산이 일어나는 모든 input을 의미합니다. y=xW의 y/x라고 볼수도 있구요.
[Q] Model compression 쪽으로 커리어를 준비하고자 하는 입장에서, 특정 domain에 대한 집중 (e.g. vision, NLP etc.)이 얼마나 중요하다고 생각하시나요? 즉, 하나의 도메인에 특화하여 공부하고 경험을 쌓는 것과 얕더라도 다양한 모델에 적용시켜 보는 것 중 어떤 것이 더 좋을까요?
[A] 지금 시점에서 특정 도메인 지식 없이 model compression 으로 커리어를 쌓는 것은 거의 불가능합니다. 먼저 하나라도 잘 파는 것이 중요할것 같구요. 저희 팀이 좀 특수한 경우인데, 다양한 경험을 쌓는데까지 많은 시간이 걸렸습니다. 하나에 대해서 잘 파놓고 workload에 대한 이해를 잘 하고 나면 그때부터는 옮기는게 조금 더 수월해지기는 합니다.
[Q] 오늘 발표에서 tucker decomposition 에 대한 이야기와 기존 모델보다 느릴 수도 있다 말씀해주셨는데요. 저도 관련 경험이 있어 여쭤보고 싶은점이 있습니다. (관련 자료가 부족해 공부하기 어려웠던 점도 있습니다 ㅠㅠ). 물론 케이스 바이 케이스 이겠지만 일반적인 convolution network 에 VBMF estimation 으로 tucker decomposition 진행 후 인퍼런스 벤치마크 진행 결과 gpu 상에서는 오히려 2배 가량 느려졌었고 cpu 상에서 아주 조금의 성능 향상을 관찰하였습니다. 1. 지금까지 gpu의 경우 cuDNN 의 가속화 기능을 완전히 활용하지 못해서 라고 생각해왔는데 어떻게 생각하시나요? 혹시 제가 틀리게 생각하고 있던걸까요? 2. cpu 인퍼런스 경우에도 성능 향상폭이 너무 적어 과연 tucker decomposition 을 성공적으로 adopt 한 케이스가 있는지 궁금했었습니다. 혹시 관련해 참고할만한 레퍼런스가 있다면 공유해주시면 정말 감사하겠습니다.
[A] 정보가 적어서 완벽한 대답을 해드리기는 힘들고, 모델의 크기가 별로 크지 않았다면 느려지는것도 말이 될것 같습니다. CNN의 경우 이미 충분히 computation을 잘하고 있는 상황이라, 거기에서 layer를 둘로 쪼개버리면 쪼개진 layer를 각각 처리하는게 오히려 더 시간이 걸릴수도 있습니다. tucker decomp.가 제대로 적용된 사례는 못봤습니다. 특히 최근에는 별로 연구가 많이 되고 있지 않은 것으로 압니다.
[Q] 중간에 말씀해주셨던 vector quantization이 15년도 Song Han이 썼던 Weight Clustering과 관계가 있는 건가요? 뭔가 PPT의 그림이 비슷해보여서, 관련이 있는지 궁금합니다.
[A] 네. K-means clustering해서 quantization한 것이 맞습니다. 아마 그림도 그쪽 그림이었던것 같습니다. 거기서부터 발전한 많은 내용들이 있습니다.
[Q] 발표 때 structured pruning에 대해서 질문했었는데, 이에 대해서 조금 더 물어보고 싶습니다. 발표자님께서 structured pruning에 대해 좋지 않다고 생각하셨던 이유는 결국 review했던 논문들이 redundant한 것이 많은 모델을 단순히 압축했기 때문이라고 하셨고, 이는 다르게 표현하면 단순히 하이퍼 파라미터 튜닝 (e.g. CNN에서 layer당 채널 수 등)을 잘 하면 해당 성능을 어느 정도 도달할 수 있으리라 생각하시기 때문일까요? 사실 structured pruning의 경우 하이퍼 파라미터 튜닝을 통해서 같은 형태의 모델을 만들 수 있기 때문에 이렇게 튜닝된 모델보다 높은 성능을 내야하는 이유가 명확해야할 것 같은데 이에 대한 것이 잘 다루어지지 않았기 때문인지 궁금합니다.
[A] 네, 저는 그렇게 생각합니다. benchmark와 논문은 어떤 하고 싶은 말이 있어서 나온 것이고, 최적화가 완벽히 되었다고 보기는 어렵습니다. 하지만 그런 모델을 ref.로 삼아서 압축을 한다고 할때에는 원래 모델이 얼마나 최적화가 덜된 모델인지도 생각해야한다고 보구요. 제가 심사했던 많은 pruning paper들이 그런 점을 전혀 고려하지 않고 실제적이지 않은 연구를 하는 것을 많이 봐왔기 때문에 부적정적으로 말씀드렸습니다. 혹은 제가 기대하는 압축 기술의 성능이 그 이상이라 더 그럴수도 있습니다.
[Q] 혹시 Mixed precision quantization에 대해서 긍정적으로 생각하시는지 부정적으로 생각하시는지 궁금합니다. INT8에 대해서 부정적으로 생각하신다고 들어서 이런 분야에 대해서 어떻게 생각하는지 궁금합니다.
[A] top-tier 학회 논문으로는 novelty가 떨어질 가능성이 높아서 부정적이구요. 현업에서 꼭 필요한 기술이라고 보기는 합니다. layer마다 sensitivity는 다른 것이 맞고, 그에 맞게 압축하는 것은 당연하다고 생각합니다. 현업에서 쥐어짤때는 반드시 써야합니다. 다만 regular하지 않다는 것은, 또 다른 가속에서의 단점으로 이어질수 있기 때문에 주의를 해야합니다.
[Q] 연구와 개발은 다르다고 저는 생각합니다. 그런한 것중 하나로 경량화와 실제 제품에 넣는 일은 많이 다르다고 생각합니다. 가장 이러한 것의 대표적인 예가 딥러닝이 동작하는 다양한 스마트폰의 하드웨어 성능이라 생각합니다. (첫번째 질문) 20년도 전에 HPCA에서 페이스북이 발표한 논문에서는 딥러닝 모델이 동작하는 스마트폰의 성능이 너무 다양하기 때문에, 이를 고려한 모델 설계와 추론 방법이 고안되어야 한다는 이야기가 있습니다. 경량화라는 방법은 추론의 성능을 높이는데는 좋지만, 경량화의 조건은 타겟 디바이스가 명확하다는 것이 개인적인 생각입니다. 경량화 방법에 따라 CPU/GPU/NPU에서 이득이 되는 경우와 그렇지 않은 경우가 분명 존재합니다. 조금 민감한 이야기 일수도 있으나, 이를 현업에서는 어떻게 이를 고려하는지 알고 싶습니다.
[A] 아주 중요한 질문이신데요. 그래서 저희팀은 모바일 디바이스마다 모델을 넣는 것을 별로 선호하지 않습니다. 아무래도 노가다를 뛸수밖에 없구요. 그렇다고 자동화하기에는 모델 기술과 압축 기술이 그리 성숙하지 못했습니다. 예를 들어 int8만 해도 적용하지 못하는 기기가 수두룩합니다. 저희가 hyperscale 연구에 많이 집중하고 있는것도 그런 측면이 있습니다.
[Q] (두번째 질문) 저는 박사 학위를 하는 동안 CNN의 곱셈 연산의 복잡도를 줄이는 연구를 진행하였습니다. 양자화를 통한 경량화가 아니라 Winograd, Strassen과 같은 방법을 사용하여 곱셈의 횟수를 줄이는 방법을 통해 하드웨어 구현의 복잡도를 낮추는 방법을 제안하였습니다. 최근에는 Winograd와 양자화를 잘 적용하여 추론의 효율 (전력소모, 실행시간)을 개선하는 연구가 조금씩 진행되고 있는 것으로 알고 있습니다. 발표자 분께서는 이러한 fast matrix mulitplication 알고리즘에 대해 어떻게 생각하시는지 의견을 듣고 싶습니다.
[A] 잘되면 좋다고 생각합니다. 다만, NVIDIA나 구글이 안하는 것에도 이유는 있다고 생각을 합니다. 만약 연구를 하시는 거라면 당연히 가치가 있을테니 응원해드릴거구요, 현업에서 사용하고 싶으신거라면 왜 빅테크가 안쓸지에 대해 질문해야한다고 생각합니다.
[Q] 이번 발표에서는 경량화 기법들에 대한 소개를 주로하셨는데, 두개이상의 경량화 기법간 시너지(?)가 유독 좋았던 기법이 있는지 궁금합니다 !
[A] Non-uniform Quantization + Pruning이 시너지가 좋을수 있습니다만, 압축율이 높아지면 그것도 장담이 안됩니다. 모델 압축 방법들을 섞을려는 시도는 많았지만, 결국 압축율이 높아지면 더 어려워지는 것이 사실이라, 논문 레벨 이상으로 의미있는 결과를 본 적은 없습니다.
[Q] 발표 내용에 대해서는 특별히 질문은 없습니다만 구성원들의 일하는 방식이 궁금합니다. 어떤 라이브러리를 주로 쓰는지 서비스팀과 경량화 팀이 어떻게 협업하는지 등등. 정리해서 깃헙에 작성하겠습니다.
[A] 한번더 질문하신다고 하셨지만, 이건 간단히 말씀드리기 어려운 문제이기는 하네요. 저희팀만의 특성도 있구요. 질문을 구체화해주시면 한번더 생각해볼게요.
[Q] 말씀하신 것처럼 딥러닝 모델을 converting할 때 각 API마다 지원되는 연산이 있고 지원이 안 되는 연산이 자주 문제를 일으켰습니다. 특히 python에서는 dynamic하게 데이터가 다뤄지는 반면, c++과 같은 환경에서는 static하게 그것을 변경해주는게 어려웠네요. 대게의 경우에는 구체적인 테스트 환경이 정해진 이후에 index등을 static하게 바꿔주는 방식으로 교체하거나, advanced layer를 좀 더 기본적인 layer들의 조합으로 하나의 함수로 묶어 사용했는데, 이러한 dynamic->static 변화에서 좀 더 노가다성 없이 해낼 수 있는 팁이나 키워드가 있는지 궁금합니다. 감사합니다.
[A] 저는 이 레벨에서는 거의 일하고 있지 않습니다. 다른 분께서 좋은 답변을 해주시면 좋을것 같습니다.
[Q] LRA는 Leaky ReLU Activation을 말하나요?
[A] LRA는 Low-rank Approximation을 의미합니다. Layer decomposition이라고 보셔도 좋구요. matrix factorization, SVD 등의 기법을 사용해서 layer를 작은 layer의 곱으로 쪼갭니다.
[Q] PPT 44 page에서 Activaion 압축이라는 표현을 썼는데 Activaion이 feature map을 말씀하시는 건가요?
[A] 용어가 좀 혼동이 있긴 한데, CNN은 feature map, Transformer 계열은 hidden vector 등일겁니다.
[Q] PPT 44 page에서 Instruction은 있지만, SW 최적화가 안되어있다 에서 Instruction은Instruction set, 즉 어셈블리를 말씀하시는게 맞는지요? SW적인 최적화가 안되어있다면 결국 중간 단계인 HAL(hardware abstraction layer), FW(Firmware) 최적화가 부족하다는 의미이신지요?
[A] 네 intruction이 있으니까 assembly는 있겠죠. NVIDIA 기준으로 말씀드리면 CUDA level에서 직접 최적화를 해야합니다. 연산기는 주로 어떤 단위의 연산기로만 이뤄져 있습니다. 이걸 s/w적으로 weight의 shape을 보고 적절히 던져줘야하는 이부분이 안되어 있는 경우가 많았습니다.
[Q] compression 중 여러 축의 연구가 있는데, 제가 생각하기에 궁극적인 목표는 matmul에서 계산량을 줄이는 것이 아닐까 합니다. 이 부분에서 추천해 주실 만한 선행 연구나 다른 아이디어가 있으실까요? 설문조사에서 키워드로 제시된 decomposition 방법 이외의 다른 방법들을 더 알고 싶습니다.
[A] 결국 integer 형태의 연산기가 지금으로서는 최선인것 같고 (Neurips 2020의 MSFP 라던가), 저희 팀의 연구도 있긴한데 이건 아직 공개해드릴수가 없네요. 더 low-level의 하드웨어 학회를 가면 더 있을수 있는데, 제가 거기까지는 잘 모르겠습니다.
Beta Was this translation helpful? Give feedback.
All reactions