Research(22)
-
[OSDI 2018] TVM: An Automated End-to-End Optimizing Compiler for Deep Learning 논문 정리
TVM의 개념을 한 마디로 정리하자면, "주어진 하드웨어에 따라서 그 백엔드에 알맞게 high-level(graph level) 최적화와 low-level(operator level) 최적화를 동시에 제공하는 E2E 컴파일러"라고 할 수 있다. FPGA, ASIC 가속기들부터 여러 임베디드 edge device들까지 하드웨어 환경은 제각기 다르기 때문에, 각 환경의 특성에 알맞게 최적화를 하려면 서로 다른 방식으로 최적화 튜닝을 해주어야 한다. Tensorflow, PyTorch를 비롯한 여러 딥러닝 프레임워크들도 graph IR(Intermediate Representation)에 대해서만 최적화를 적용할 뿐, 하드웨어 특성에 따라 유동적으로 operator-level transformation을 해주..
2020.02.14 -
딥러닝에서 메모리를 효율적으로 관리하기 위한 기법들
1. Activation Compression 아주 적은 정도의 accuracy만을 희생하여 compressed representation을 만들어 사용하는 방법이다. "Faster Neural Networks Straight from JPEG"에서는 일부 디코딩된 JPEG 이미지에서 뽑아낸 discrete cosine transform code를 통해서 ImageNet 이미지를 분류하는 DNN 알고리즘을 고안하였다. 이를 통해서 inferencing 속도 향상과 memory 점유를 낮출 수 있었다. Faster Neural Networks Straight from JPEG The simple, elegant approach of training convolutional neural networks (C..
2020.02.13 -
[SOSP 19] TASO: Optimizing Deep Learning Computation with Automatic Generation of Graph Substitutions
현존하는 DNN 프레임워크는 개발자가 매뉴얼하게 짜놓은 규칙에 따라서 graph optimzation을 수행하는데 이는 scalable 하지 못하며 모든 optimizable option들을 반영하지 못하는 단점이 있다. TASO는 자동으로 효율적인 graph substitution을 생성하는 최초의 DNN graph optimizer이다. TASO Github: https://github.com/jiazhihao/TASO substitutions computation graph의 런타임 퍼포먼스를 향상시키기 위해서 할 수 있는 가장 일반적인 방법은 graph substitution이다. graph substitution은 기존 그래프의 일부(subgraph)를 그것과 equivalent 하면서 보다 효..
2020.02.01 -
[Paper Review] Trace-based Just-in-Time Type Specialization for Dynamic Languages
이 논문은 JavaScript를 타켓으로 하고 있지만 요즘 연구하고 있는 pytorch의 JIT(just-in-time) 컴파일러 연구에 중요한 바탕이 되는 연구이기에 리뷰를 작성한다. Abstract 자바스크립트와 같은 dynamic language(js, python, ruby, ...)는 static language(c, c++, ...)와 비교했을 때 컴파일에 많은 어려움이 존재한다. 그 주된 이유는 변수의 type이나 branch와 같은 정보들을 compile time에는 알 수 없고, runtime이 되어서야 알 수 있기 때문이다. Python과 같은 dynamic language는 컴파일 시점에 구체적인 타입에 대한 정보가 없기 때문에, 기존의 컴파일러들은 가능한 모든 조합의 타입들을 런타임..
2020.01.16