본문 바로가기

ML & DL75

A Survey of Quantization Methods 리뷰 References A Survey of Quantization Methods for Efficient Neural Network Inference (link) Introduction 딥러닝이 급속도로 발전하면서 모델의 크기는 기하급수적으로 커졌고, 이로 인하여 제한된 리소스의 어플리케이션들에 배포하는 것이 불가능해졌다. 즉, 리소스가 제한되는 환경에서 높은 에너지 효율과 정확도로 실시간 추론이 필요한 분야에서 딥러닝을 활용하는데 문제가 된다. 이는 실시간 헬스케어 모니터링, 자율주행, 오디오 분석, 음성 인식 등 다양한 어플리케이션에 큰 영향을 미칠 것으로 예상된다. 최적의 정확도와 함께 효율성 및 실시간성을 달성하기 위한 많은 연구가 이루어지고 있다. 이러한 연구는 크게 다음과 같이 분류될 수 있다... 2024. 2. 13.
Integer Quantization for Deep Learning Inference 리뷰 References Integer Quantization for Deep Learning Inference: Principles and Empirical Evaluation (link) 이 논문은 뉴럴 네트워크의 INT quantization에 대한 수학적인 배경과 성능과 관련하여 quantization parameter를 선택하는 몇 가지 방법을 이야기한다. 또한, quantization workflow를 제안하며 이를 통해 모든 네트워크에서 1% 이내의 정확도 손실로 양자화할 수 있다는 것을 보여준다. Intro 양자화(quantization) 기법은 높은 처리량의 integer instruction을 활용하여 딥뉴럴 네트워크의 크기를 줄이고 추론 속도를 향상시킬 수 있다. 일반적으로 32비트의 si.. 2024. 2. 7.
[pytorch] 커스텀 연산 with autograd References Autograd mechanics (link) PyTorch API documentation (link) Extending PyTorch (link) 이번 포스팅에서는 파이토치의 autograd에 대해서 조금 더 세부적으로 살펴보고(주로 공식 홈페이지 내용을 참조하였습니다), 커스텀 확장하는 방법, 즉, 커스텀 op를 구현하는 방법에 알아보도록 하겠습니다. 다룰 내용은 사실 파이토치를 사용하기 위해서 꼭 알아야 하는 내용은 아닙니다만, 알아두면 파이토치의 동작에 대해 조금 더 깊게 이해할 수 있고 디버깅할 때도 유용할 수 있습니다. Autograd Mechanics How autograd encodes the history Developer Notes에서 autograd는 revers.. 2022. 12. 26.
[pytorch] autograd References PyTorch Official Tutorial (link1, link2) 파이토치의 autograd는 파이토치가 머신러닝 프로젝트를 빌드하는데 유연하고 빠르게 만들어주는 것들 중 하나입니다. 이는 복잡한 계산인 mutiple partial derivaties (referred to as gradients)를 빠르고 쉽게 계산할 수 있도록 해줍니다. 이 연산은 backpropagation 기반의 뉴럴 네트워크 학습의 핵심입니다. autograd는 런타임에서 동적으로 연산을 추적합니다. 즉, 모델에 decision branches나 길이를 런타임 전까지 알 수 없는 loop가 있는 경우에도 연산은 여전히 올바르게 추적되고 올바른 gradients를 얻을 수 있습니다. 이 때문에 파이토치는.. 2022. 12. 5.
[pytorch] Tensors References PyTorch Official Tutorial (link) Tensors는 파이토치에서 중심이 되는 data abstraction 입니다. 이번 포스팅에서는 튜토리얼에서 설명하고 있는 torch.Tensor에 대해서 조금 더 자세히 살펴보도록 하겠습니다. import torch import math 시작하기에 앞서, 위의 두 패키지를 import 해줍니다. Creating Tensors Tensor를 생성하는 가장 간단한 방법은 torch.empty() 를 호출하는 것입니다. x = torch.empty(3, 4) print(type(x)) print(x) 여기서 우리는 torch 모듈에 있는 수 많은 factory methods 중 하나를 사용해서 텐서를 생성했으며, 여기서 생성한 .. 2022. 12. 1.
[pytorch] Tutorial - Optimizing Model Parameters References Official PyTorch Tutorial (link) 이번에는 앞선 튜토리얼에서 살펴본 내용들을 통합하여, 네트워크 모델을 학습, 검증, 테스트하는 방법을 살펴보겠습니다. 모델의 학습은 iterative process입니다. 각 반복에서 모델을 output을 계산하고, 실제 결과와의 loss를 통해 error를 계산하고 파라미터(모델의 weights)에 대한 gradient를 계산한 뒤, gradient descent 알고리즘을 사용하여 파라미터를 최적화합니다. Prerequisite Code 다음 코드를 통해서 FashionMNIST 데이터를 받아오고, 간단한 네트워크를 구성합니다. import torch from torch import nn from torch.utils.da.. 2022. 11. 30.
[pytorch] Tutorial - Automatic Differentiation (autograd) References Official Pytorch Tutorial (link) torch.autograd Neural network를 학습할 때, 가장 많이 사용되는 알고리즘은 backpropagation 입니다. 이 알고리즘에서 파라미터, 즉, 모델의 weights는 주어진 파라미터에 대한 loss function의 gradient에 따라 조정됩니다. Gradient를 계산하기 위해서 파이토치는 torch.autograd라는 built-in differentiation engine을 사용하며, 이는 computational graph의 gradient를 자동으로 계산할 수 있도록 지원합니다. 간단하게 다음과 같이 input이 x, 파라미터가 w, b로 이루어진 하나의 레이어로 구성된 네트워크와 loss.. 2022. 11. 29.
[pytorch] Tutorial - Build the Neural Network References Official PyTorch Tutorial (link) Build the Neural Network Neural network는 데이터에 대한 연산을 수행하는 layer 또는 module로 구성됩니다. 파이토치에서 torch.nn 네임스페이스는 neural network를 구성하는데 필요한 레이어들을 제공합니다. 파이토치의 모든 레이어(모듈)들은 nn.Module의 sub class이며, neural network는 다른 레이어(모듈)들로 구성된 레이어(모듈)일 수도 있습니다. 이번 포스팅에서 파이토치 튜토리얼에서 설명하는 neural network에 대해 살펴보도록 하겠습니다. import os import torch from torch import nn from torch.ut.. 2022. 11. 29.
[pytorch] Tutorial - Datasets & DataLoaders & Transforms References Official PyTorch Tutorials (link) 파이토치에서는 데이터를 쉽게 전처리하고, 모델을 학습하는 코드와 별도로 모듈화할 수 있는 기능인 torch.utils.data.DataLoaders와 torch.utils.data.Dataset을 제공합니다. Datasets은 샘플 데이터와 대응하는 라벨을 저장하고, DataLoader는 Dataset을 순회하면서 쉽게 샘플 데이터에 액세스할 수 있도록 해줍니다. Loading a FashionMNIST Dataset torchvision에서 제공하는 FashionMNIST가 Dataset의 서브클래스인데, 파이토치는 다양한 이미지, 텍스트, 오디오 데이터셋을 제공합니다. Image Datasets Text Datasets .. 2022. 11. 26.
[pytorch] Tutorial - Tensors References Official PyTorch Tutorials (link) PyTorch Documentations (link) Tensor Vies (link) 텐서는 배열이나 행렬과 매우 유사한 데이터 구조체입니다. 파이토치에서 텐서는 모델의 input/output 그리고, 모델의 파라미터를 표현하는데 사용됩니다. 텐서는 numpy의 ndarray와 유사한데, 텐서는 GPU나 다른 하드웨어 가속기에서도 사용할 수 있습니다. 실제로, 파이토치의 텐서와 넘파이의 배열은 기본 메모리를 공유할 수 있어서, 서로 간의 변환에서 데이터를 복사할 필요가 없습니다. 이에 대해서는 아래에서 조금 자세히 살펴보도록 하겠습니다. 텐서는 automatic differeniation(자동 미분)에 최적화되어 있는데, .. 2022. 11. 26.