본문 바로가기

Python11

Transformer Pytorch 구현 Transformer는 사실, NLP 분야뿐만 아니라, 다양한 분야에서 많이 사용되기 때문에, 그만큼 구현 소스를 쉽게 찾을 수 있다. 나도, Transformer를 자주 사용하지만, 라이브러리에서 읽어오는 형태로 사용하기 때문에, 그 상세 구조에 대해서는 대략적으로만 알고 있다. 이번 기회에 Transformer를 pytorch로 직접 짜보면서 그 구조를 정확히 이해하고자 한다. Full source : https://github.com/daehwichoi/transformer-pytorch/blob/main/model/transformer.py 구현 방향 사실, pytorch로 Transformer를 구현한 사례는 google 검색만 해도 굉장히 많이 나온다. 하지만, original transfor.. 2023. 7. 15.
Pytorch Profiler Tensorboard로 시각화 Introduction Pytorch 학습 중, Resource와 모델 구조에 대한 profiling은 torch profiler를 이용해 가능하였다. 2023.07.09 - [Python] - Pytorch 구조 & Resource Profiler 도구 (torch profiler) Pytorch Resource & 모델 구조 Profiler 도구 (torch profiler) Introduction 딥러닝 학습을 잘(?)한다는 것을 정의하기는 어렵지만, 더 빠른 시간 안에 많은 양을 학습하는 것은 매우 중요하다. 딥러닝의 모델은 다수의 layer로 구성되어 있기 때문에, 각 layer의 결 devhwi.tistory.com 이때, profiling의 결과는 테이블 구조의 텍스트 형태로 터미널에 출력 .. 2023. 7. 10.
Pytorch Resource & 모델 구조 Profiler 도구 (torch profiler) Introduction 딥러닝 학습을 잘(?)한다는 것을 정의하기는 어렵지만, 더 빠른 시간 안에 많은 양을 학습하는 것은 매우 중요하다. 딥러닝의 모델은 다수의 layer로 구성되어 있기 때문에, 각 layer의 결과가 데이터가 어느 형태로 존재하는지, 어느 layer가 병목 현상인지를 파악하는 것이 까다롭다. 특히, 최근에는 모델을 직접 코드로 구현하기보다는, pre-trained model을 사용하는 경우가 많은데, 사전에 사용하는 모델의 구조를 알지 못하면, 내부 동작을 제대로 파악할 수 없다. Pytorch에서는 이러한 모델의 구조와 각 layer에서의 cost를 profiling 할 수 있는 torch profiler를 지원한다. Code Sample torch profiler 테스트를 위한 .. 2023. 7. 9.
Python 프로파일링을 위한 도구들 (Process, Memory, Execution Time) Introduction Python으로 짜인 Code를 서비스하다 보면, CPU 100%나 Memory Fault, 실행시간이 길어지는 등 다양한 문제를 만나게 된다. 자신이 개발한 코드에서는 직감적으로 어느 부분이 문제가 될지를 간파할 수 있지만, 다른 사람이 짠 코드에서 문제에 원인이 되는 부분을 찾아내기는 매우 어렵다. 일반적으로 가장 쉽게 떠올릴수 있는 방법은 실행시간은 time 모듈을 이용한 print 디버깅이나 unittest, CPU나 memory는 작업 관리자를 통해 확인하는 방법이다. 하지만, 이 방법들은 대략적인 정도만 알아낼 수 있고, 어느 부분이 문제가 있는지 진단하기 매우 어렵다. Python에서는 Profiling을 위한 다양한 도구들을 가지고 있어, code 분석이 매우 용이하.. 2023. 7. 6.
Python 속도 최적화 - NUMBA Introduction [문제] Python은 매우 간단하고, 응용 모듈이 많아서, 많이 선호되지만, 속도가 중요한 프로그램에서는 항상 문제가 된다.(Python 코드의 속도 튜닝의 끝은 다른 언어로 다시 개발하는 것이라고 할 만큼, Python은 느리다.) 하지만, Python에만 존재하는 응용 패키지들이 많아서, Python 언어를 유지하면서 속도 튜닝이 필요한 경우가 많다. Python이 느린 이유는 많지만, 아래의 이유가 치명적이다. 인터프리터 언어 : 코드를 한줄 씩 읽고, 해석하는 식으로 동작한다. 동적 타이핑 : Python은 형식을 지정해주지 않아, 코드 실행 중에 Type 지정이 필요하다. [Numba] Numba는 이러한 Python의 실행 속도를 개선하기 위한 대표적인 라이브러리로, .. 2023. 6. 8.