본문 바로가기

기술 이야기/PyTorch5

[PyTorch] TorchScript: Tracing vs. Scripting 안녕하세요, PyTorch로 학습한 모델을 배포하는 일은 굉장히 흔한 일인데요, 오늘은 TorchScript에서 활용하는 Tracing과 Scripting를 각각 설명하고 차이점을 비교하려고 합니다. 참고로 이 내용에는 여기 블로그가 많은 참고가 됐습니다. 그리고 TorchScript and PyTorch JIT | Deep Dive를 보시면 도움이 되실겁니다 시작에 앞서 두 방법은 모두 nn.Module을 전제로 합니다. PyTorch에서 nn.Module을 상속 받지 않은 모델은 존재하지 않는다고 봐도 무방합니다. 용어 설명 Export: Eager-mode Python code를 그래프로 변환하는 과정 (Eager-mode는 즉시 실행한다는 의미로, 컴파일을 하지 않는 파이썬의 기본 성질입니다) T.. 2023. 6. 4.
PyTorch 2.0 vs ONNX vs TensorRT 비교 안녕하세요, 딥러닝 모델을 개발하면 그 모델을 배포하는 과정이 매우 중요합니다. 어떻게 하면 더 빠르게 동작하는 서비스를 만들까 고민이 많으실텐데요, 오늘은 그 방법 중 몇가지를 비교하고 더 좋은 방법을 찾아보고자 글을 쓰도록 하겠습니다. 방법으로는 꽤 많이 알려진 PyTorch, ONNX, TensorRT를 골랐습니다. 왜 JAX가 없냐 물어보시면 JAX는 독자적 생태계가 확고해서 다음에 따로 리뷰하도록 하겠습니다. 참고로 글의 내용은 Nebuly Blog를 참조했습니다. 비교에 앞서 PyTorch, ONNX, TensorRT가 무엇인지 짧게 소개하면 이해가 더 쉬울 것 같습니다. PyTorch 2.0 언젠가부터 Tensorflow를 앞지르고 가장 인기있는 Deep Learning Framework이 .. 2023. 5. 19.
[PyTorch] nn.Linear에 대한 질문 안녕하세요, 오늘은 PyTorch를 쓰다보면 굉장히 많이 접하게 되는 nn.Linear 함수에 대해 설명하려고 합니다. nn.Linear란 먼저, 논문을 읽거나 기타 자료를 볼 때 nn.Linear는 Fully Connected Layer(FC) 또는 Dense Layer라고 표현을 합니다. Fully Connected, Dense와 같은 단어에서 느낌이 오듯, Input/Output의 노드를 빼먹지 않고 촘촘하게 연결한 구조를 갖습니다. 그렇다고 Input 또는 Output 노드 사이의 연결이 존재하지는 않고, Bipartite Graph를 떠올리시면 쉽습니다 (참고). nn.Linear란 어떤 역할을 할까요? Classification: 분류 문제의 경우, 보통 네트워크의 가장 마지막에 붙어 이전까지.. 2023. 4. 28.
[PyTorch] nn.Module에 대한 이해 안녕하세요, 혹시 PyTorch를 쓰시다 보면 습관적으로 nn.Module을 상속 받고 시작하지 않으시나요? 오늘은 타성에 젖은 상속 말고, nn.Module이 뭔지 이해하고 써보면 좋겠습니다. 설명해보겠습니다. nn.Module 정의 먼저 공식 Docs에 있는 torch.nn.Module부터 읽어보시죠. 한마디로 모든 모델의 근간이 되는 기본 클래스입니다. 우리가 직접 정의하는 모든 모델은 이 녀석을 상속 받고 시작해야만 forward, backward 등을 편하게 수행할 수 있다는 소리입니다. import torch.nn as nn import torch.nn.functional as F class Model(nn.Module): # 여기서 nn.Module을 상속 받는다 def __init__(se.. 2023. 4. 3.
[PyTorch] 간략한 자기 소개 안녕하세요. 딥러닝을 연구하는 많은 분들께서 PyTorch를 쓰고 계신 걸로 알고 있습니다. 저는 2017년말부터인가 이것을 쓰기 시작했는데요, 그동안 많은 시간을 들여 코딩했지만 언제부터인가 각 기능이 정확히 어떻게 동작하는지 알고 싶어졌습니다. 그래서 시간 나는대로 기본적인 내용부터 설명해볼까 합니다. 저는 개인적으로 PyTorch Forum에서 활동을 하고 있는데요, 말하기 민망할 정도로 가끔 들어가서 다른 사람들의 문제를 함께 고민하고 해결하는 시간을 갖습니다. 답변을 200개 정도 달았는데, 생각보다 채택률이 저조한 이유는 물론 모든 답변이 문제 해결로 이어진 것은 아니지만 문제를 해결한 답변에 체크를 안해주시는 분들이 꽤 많은 것 같아 손해보는 느낌이 듭니다... 뭐 아무튼 앞으로도 꾸준히 활.. 2023. 3. 30.