본문 바로가기
728x90
반응형

AI Coding/Pytorch8

[Pytorch] Inference Time Check 딥러닝이 일상 생활에서 사용되려면 기본적으로 굉장히 빠른 인퍼런스 속도를 갖춰야 합니다. 때문에 millisecond 단위로 속도를 재고 평가해주어야 합니다. ​ ​ ▶Asynchronous execution 딥러닝은 비동기 방식으로 작동하기 때문에 높은 효율성을 갖습니다. 그렇다면 왜 비동기 방식으로 작동할까요? => 먼저, 여러 개의 batch를 inference 하는 상황을 생각해보겠습니다. 첫번째 batch가 GPU에서 연산이 되고 있을 때, GPU의 작업이 다 끝날때까지 CPU는 어떻게 동작해야 할까요? 마냥 기다리기만 한다면 이는 매우 비효율적일 것입니다. 때문에 CPU는 GPU의 작업이 모두 끝나지 않더라도 다음 batch 를 위한 작업을 해둬야 합니다. 바로 이점 때문에! 딥러닝 모델의 G.. 2023. 2. 24.
[Pytorch] loss nan 해결하기 신경망을 학습시키다 보면 학습 도중 loss 가 nan 값이 등장하는 경우가 발생하기도 합니다. nan loss나 nan output이 발생했을 때 원인을 찾고 해결할 수 있는 방법에 대해 포스팅 하겠습니다. ​ ​ ▶ nan 이 발생한 연산 찾기 먼저 torch. autograd 함수중에서 nan loss 가 발생하면 그 즉시 실행을 멈추고 nan을 유발한 코드 라인을 찾아야합니다. 이를 쉽게 해주는 함수가 바로 출력해주는 함수가 autograd.set_detect_anomaly() 입니다. autograd.set_detect_anomaly(True) 스크립트 제일 위에 위 코드를 추가해주면, 어느 라인에서 nan이 발생했는지 터미널 창의 문구를 통해 알 수 있습니다. 좀 더 구체적으로 이 함수는 au.. 2023. 2. 24.
[Pytorch] Tensor Manipulation Pytorch는 텐서의 형을 변환해주는 다양한 함수들을 제공해줍니다. 이번 포스팅에서는 텐서의 형변화를 위한 아래 4가지 함수의 사용법과 차이점에 대해 설명해보겠습니다. - view() - reshape() - transpose() - permute() ​ ​ ▶ view( ) 와 reshape( ) 두 함수 모두 numpy의 reshape( ) 함수를 기반으로 하고 있습니다. 먼저 두 함수의 간단한 사용법 부터 설명하겠습니다. view()와 reshape() 모두 입력으로 shape을 받습니다. 원하는 차원의 shape을 적어주면 바로 형변환하여 리턴해줍니다. import torch x = torch.arange(12) print(x) # tensor([ 0, 1, 2, 3, 4, 5, 6, 7, 8,.. 2023. 2. 24.
[Pytorch] TorchVision Fine Tuning 이번 포스팅에서는 torchvision에서 제공하는 사전 학습된 모델들을 fine tuning 하는 방법에 대해서 알아보겠습니다. fine tuning에 대한 설명은 이곳을 참고해 주세요! ​ Pytorch의 공식 튜토리얼에 따르면 fine-tuning과 feature extraction 두 가지 방법을 설명하고 있습니다. 두 개의 차이점에 대해 간략히 설명하자면! - Fine tuning : 사전 학습된 모델로 시작하여 새로운 작업에 대한 모델의 모든 파라미터를 업데이트 합니다. - Feature extraction : 사전 학습된 모델을 이용하여 가장 마지막의 분류기만 재학습합니다. ​ 두 가지 모두 아래 과정들이 필요합니다. - 사전 학습된 모델로 초기화해주어야 합니다. - 새로 학습시킬 데이터의 .. 2023. 2. 5.
728x90
반응형