# torch

[pytorch] batch size에 대해서
1. batch size란? 데이터를 모델에 입력하여 예측을 수행할 때, 일반적으로 한 번에 하나의 데이터 샘플을 처리하는 것보다 여러 개의 데이터 샘플을 함께 처리하는 것이 효율적입니다. 이때 한 번에 처리되는 데이터 샘플의 개수가 배치 크기입니다. 배치 크기를 선택하는 것은 학습 알고리즘의 성능과 학습 속도에 영향을 미칩니다. 작은 배치 크기를 사용하면 메모리 요구량이 줄어들고, 모델 파라미터 업데이트가 빈번하게 이루어져 더 정확한 예측 결과를 얻을 수 있습니다. 그러나 계산 비용이 많이 들고 학습 시간이 오래 걸릴 수 있습니다. 반대로 큰 배치 크기를 사용하면 계산 비용과 메모리 요구량이 줄어들지만, 예측 정확도가 약간 감소할 수 있습니다. 더불어 GPU와 같은 가속화 장치를 활용할 때에는 일정한 배치 크기가 필요하기도 합니다. 따라서 배치 크기는 주어진 하드웨어 자원과 모델 구조, 데이터셋의 특성 등을 고려하여 조절해야 합니다. 일반적으로 32, 64, 128 등

pytorch-lr-finder
Intro 평소에 pytrochforecasting Library를 쓰면 보통 pytorchlightning과 결합하여서 써서, autolrfind를 이용해서 최적의 learning rate를 찾곤했다. 하지만 내가 직접 모델을 구현할때는 보통 pytorch_lightning을 사용하지 않고 손수 loss를 구한후 backward를 시키면서 모델을 훈련시키는데, 이 과정에서 초기 learning rate를 heuristic하게 찾아야 해서 좀 불편했다. 이러한 니즈를 해결하고자 검색해본결과 GitHub 에 올라와있는 모듈의 README를 한번 공부해보고 실제로 사용해보겠다. 이 라이브러리는 Paper에 자세히 기술된 learning rate range test(LRRT)의 파이토치 구현이다. > LRRT란? l

Repairing Deep Neural Networks: Fix Patterns and Challenges
논문리뷰: Repairing Deep Neural Networks: Fix Patterns and Challenges (Loss function- add, remove or replace the loss function에 집중하여) 📕 Summary Background The paper presents a comprehensive study on bug fix patterns in deep neural networks (DNNs) used in software engineering, aiming to understand the challenges and patterns involved in repairing DNNs. Problem (summarize) The problem addressed in the research paper is the need for automated tools to support the repair of software that use

넌 고양이니 개니?
심플하게 딥러닝 기법으로 학습한 모델로 이미지를 분류해내는 과정을 적어보고자 한다. 1. 데이터 및 분석 환경 준비 1) 데이터 준비 데이터 출처 : Cats and Dogs 우선 데이터가 필요하다. 데이터는 학습에 사용할 사진 여러장과 각 장의 라벨 정보가 담긴 csv파일이 필요하다. train에 사용할 데이터, test에 사용할 데이터 나눠서 준비해보도록 하자. 고양이와 개 사진을 분류하기 위해 고양이, 개 사진을 준비한다면 디렉터리(폴더) 구조는 다음과 같을 것이다. 본 분석에선 train의 cats, dogs 사진 각각 4,000장, test의 cats, dogs 사진 각각

실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트(2)
실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트 입니다. 실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트(1)에 이은 발표 PPT 및 설명입니다. ># 발표 및 PPT 안녕하세요 저는 4조 김명진 여형구 임정민 김해니 중에 이번 딥러닝 팀 프로젝트 발표를 맡은 여형구 라고 합니다. 저희의 주제는 실시간 얼굴 인식을 통한 cnn기반 맞춤형 광고 송출이고 발표 시작하도록 하겠습니다. 목차는 다음과 같습니다. 
실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트(1)
실시간 얼굴 인식을 통한 맞춤형 광고 제공 프로젝트 입니다. 메타버스 아카데미 2기 AI반 MediaPipe,CNN 활용 프로젝트입니다! 🐧🐧🐧 ># 프로젝트 소개 대중교통 혹은 엘리베이터 탑승 시 탑승객의 성별/연령대에 따라 맞춤형 광고를 제공하는 프로젝트입니다. MediaPipe를 활용하여 탑승객들의 안면을 추출하고 CNN을 통해 검출된 1개 이상의 안면별로 성별/연령대를 예측하는 Multi-Label 분류가 핵심 프로세스입니다. Face Recognition을 위해 MediaPipe와 FaceNet(MTCNN) 모듈을 비교하였고 안면 Multi-Label 분류를 위해 CNN 아키텍처인 ResNet50, VGG16, DenseNet121, EfficientNetB0 모델들을 활용

기상 상황에 따른 도로 노면 분류 프로젝트(2)
중고 수입차 가격 예측 프로젝트 입니다. 기상 상황에 따른 도로 노면 분류 프로젝트(1)에 이은 발표 PPT 및 설명입니다. ># 발표 및 PPT 안녕하십니까. 기상 상황에 따른 도로 노면 분류라는 주제로 AI반 딥러닝 미니 프로젝트를 진행한 임정민입니다. 반갑습니다. 발표 목차입니다. 보이시는 순서와 같습니다. 프로젝트 주제는 차량 운행 중에 빗길이

기상 상황에 따른 도로 노면 분류 프로젝트(1)
기상 상황에 따른 도로 노면 분류 프로젝트 입니다. 메타버스 아카데미 2기 AI반 딥러닝(CNN) 개인 프로젝트입니다! 🐇🐇🐇 ># 프로젝트 소개 딥러닝 CNN 아키텍처 모델을 통해 차량 운행 중 빗길이나 눈길 등 안전을 위협하는 노면을 분류하는 프로젝트입니다. 정보통신산업진흥원의 2023년 ICT 기술 동향 보고서에 기재된 두가지 기술 키워드 1) 자율주행차를 기반 상업적 서비스를 의미하는 통합모빌리티 서비스의 확대2) 인근 도로를 주행하는 차량들끼리의 정보 공유를 통한 안전 사고 방지 통신 기술의 확대 를 참고하여 주제를 선정하게 되었습니다. https://www.globalict.kr/product/product_view.do?menuCode=030200&artclCod
내 컴퓨터 torch version
pip install torch==2.0.0+cu118 torchvision==0.15.1+cu117 torchaudio==2.0.1 --index-url https://download.pytorch.org/whl/cu118
[TIL] TORCH.TENSOR.SCATTER_
헷갈렸던 torch scatter_ 함수 이해를 위해 정리해본다. torch 공식 문서에는 scatter_ 에 대해 아래와 같이 나와있다. > Parameters: dim (int) – the axis along which to index index (LongTensor) – the indices of elements to scatter, can be either empty or of the same dimensionality as src. When empty, the operation returns self unchanged. src (Tensor or float) – the source element(s) to scatter. reduce (str, optional) – reduction operation to apply, can be either 'add' or 'multiply'. 파라마터에 대해 간단히 정리하자면 은 값을 채울 차원 기준 방향을 의미하며

RuntimeError: CUDA error: no kernel image is available for execution on the device 해결
코드 내 amp.initialize를 실행하는 라인에서 runtime error가 발생했다. 해당 에러는 설치되어 있는 torch와 cuda의 버전이 맞지 않아 발생하는 에러이다. torch & nvidia driver, cuda version 확인 현재 사용하려는 가상환경에서 torch가 어떤 버전의 cuda에서 빌드되는지, 내가 사용하는 서버의 cuda driver의 버전이 무엇인지 확인한다. 그럼 아래와 같이 정보가 나온다. 보면 PyTorch version이 1.6.0+cu101라고 되어 있다. 1.6.0버전의 pytorch를 해당 가상환경에서 사용하고 있으며 이는 cuda버전 10.1위에서 빌드되는 버전이라는 의미이다. CUDA used to build PyTorch: 10.1 라고 나와 있는 것은 pytorch를 빌드할 때 10.1버전의 cuda가 사용되었다는 의미이다. 하지만 Nvidia driver version를 보면 `450.2
GPU버전 pytorch 설치하기 -torch.cuda.is_available()이 False일 때-
CPU가 아닌 GPU에서 Pytorch를 사용하려면 torch.cuda.is_available() 값이 true로 리턴되어야 한다. GPU 환경에서 사용할 파이썬 가상환경을 여러번 설치하다 보니 쉽지가 않다. 먼저, slurm 명령어 srun을 이용한 방법이다. 설치 후에는 정상적으로 설치했는지 python / import torch / torch.cuda.is_available()를 통해 확인해본다. 몇 번은 이렇게 해도 false가 뜨곤 했다. (왜인지 도저히 모르겠음..) false가 뜬다면 pip list와 conda list 명령어를 통해 torch가 cpu에 깔린 걸 확인하고 pip uninstall torch 혹은 conda uninstall torch 해주면 된다 pip list / conda list에 안 뜰 때까지 해당 작업을 반복해준다. 내가 또 사용한 방법은 이걸로 설치했을 때 해결되기도 했었다 왜 맨날 다르게 해결되는지는 정말 모

M1 Part14 - "번개의호흡, Pytorch-Lightning 2.0 on M1"
INTRO 아침에 자고 일어나니, Pytorch 2.0과 Pytorch Lightning 2.0이 나왔다고 떴다. 이래저래 시간이 많지 않기에 간단하게 설치만 진행해봤다. Pytorch Lightning의 경우, Colab에서만 많이 써보기는 했는데 천천히 써보려고 한다. Lightning Fabric이 메인 중 하나같은데... 잘 모르겠다. 아직은. 참고 M1 Part13 "Pytorch 2.0 (Stable) came out" [M1 Part8 - "번개의호흡, Pytor
[MLOps] Triton Inference Server 구축기 2 - model repository 만들기
이전 글에서 triton inference server를 docker로 띄우는데 성공하였다면, 이제 serving 하고자 하는 모델을 triton에 올릴 차례이다. triton은 모델 저장소(model-repository)에서 각각의 모델과 메타 데이터(버전 등)을 읽어와 서버로 띄운다. model-repository는 로컬 혹은 remote cloud인 AWS S3, Azure Blob Storage, Google Cloud Storage가 될 수도 있다. 여기서는 로컬 환경에서의 repository 구성을 하려 한다. Model Repository의 구조 우선 serving 할 모델들이 위치할 폴더를 하나 생성한다. 그 다음 생성한 폴더 아래에 아래와 같은 layout으로 model, config 파일 등을 넣어둔다. [Model-repository 구성 예시] Model-repository는 총 세가지 구성 요소로 되어 있는데, 1.
[MLOps] Triton Inference Server 구축기 1 - 설치
공식 문서에서 추천하는 triton build 및 deployment 방법은 docker 이미지를 통한 빌드이기 때문에 추천하는 방식으로 블로그를 쓰려고 한다. 1. Docker, NVIDIA Container Toolkit 설치하기 Triton inference server 설치 전 아직 docker와 NVIDIA Contianer Toolkit이 설치되어 있지 않다면 설치해주자. Docker 다운로드 : https://github.com/NVIDIA/nvidia-docker NVIDIA Contianer Toolkit 다운로드 : https://github.com/NVIDIA/nvidia-docker 만약, DGX 유저라면 아래 링크를 따라 셋팅하면 된다. https://docs.nvidia.com/deeplearning/frameworks/preparing-containers/index.html 2. NVIDIA driver 버전 확인하기 NVIDIA
[MLOps] Triton Inference Server 구축기 0 - 공식 문서 모음
[Update] 28 Feb - 7번 Tutorial repo 추가 Triton으로 inference server를 구축하는 과정에서 정보가 많이 없어 고생을 많이 하고 있다. 예시도 많이 없을 뿐더러, Nvidia에서 나온 공식 문서도 이곳 저곳 흩어져 있어서 이곳에 정리해보려 한다. 삽질하는 시간을 줄이는 방법은, 공식 문서를 보는 것이기 때문에..! Triton Inference Server Offical Docs 1. Triton Inference Server Release Notes -> Link Triton의 이전 버전부터 최신 버전까지의 release note를 확인할 수 있다. 또한, 가장 중요한 driver requirements(CUDA, CuDNN, NVIDIA

[MLOps] Transformers로 학습한 모델 ONNX로 변환하기
ONNX란? ONNX는 Open Neural Network eXchange의 약자로 PyTorch, TensorFlow 등 다양한 딥러닝 프레임 워크에서 학습된 모델을 상호 호환 가능하도록 해주는 일종의 deep learning model 포멧이다. 즉, PyTorch에서 학습한 모델을 ONNX로 export한 모델을 TensorFlow에서 import하여 사용할 수 있으며 그 반대도 가능하다. 지원하는 아키텍쳐 export 하기 지원하는 모델 확인하기
[MLOps] PyTorch 모델을 TensorRT로 변환하기
PyTorch Official Docs Torch-TensorRT는 PyTorch 모델을 TensorRT 모델로 바꾸어 주는 역할 TensorRT는 NVIDIA에서 만든 inference engine으로 kernel fusion, graph optimization, low precision 등의 optimization을 도와 준다. In this tutorial, converting a model from PyTorch to TensorRT™ involves the following general steps: Build a PyTorch model by doing any of the two options: Train a model in PyTorch Get a pre-trained model from the PyTorch Mo

[토치의 호흡] 10 About Transformer PART 04 "In EncoderLayer: Multi Head Attention"
썸네일 이미지 출처 INTRO : 이번 포스트에서는 EncoderLayer의 내부를 살펴보도록 한다. 정확히 말하자면, Multi Head Attention, PositionwiseFeedForwardLayer 에 대해서 다룰 것이다. 이 포스트를 보기 전에 이전 포스트들에 대해서 어느 정도 숙지가 되어있기를 바란다. 05 NLP Basic "Text to Tensor" <a href="https://ve

[토치의 호흡] 09 About Transformer PART 03 "Encoder and EncoderLayer"
썸네일 이미지 출처 INTRO : 이번 시간에는 Encoder에 관해서 작성한다. 여기서는 '흐름' 만 파악해도 성공한다고 본다. 제목은 'Encoder and EncoderLayer'라고 하였지만, Encoder 안에 EncoderLayer가 들어있다. 정리를 하면, Encoder 내에서의 흐름만 파악하면 이번 포스트의 목표는 달성했다고 보면 된다. 이번 포스트에서는 따로 실습코드(Colab Link)가 제공되지는 않는다. : 하지만, 다음 포스트들을 꼭 숙지하고 보길 바란다. <a href="https://velog.io/@heiswicked/토치의-호흡-03-NLP-Basic-Text-to-Tensor" target=