디버그

    [Python] 파이썬 디버거 (pdb)

    [Python] 파이썬 디버거 (pdb)

    Introduction 내가 작성한 파이썬 코드가 예상하던 대로 작동하지 않거나, 예기치 못한 오류로 자꾸 종료된다면 프로그램 내부의 지역 변수를 들여다 보고 원하는 지점에 원하는 값이 대입되고 있는 지를 한번 확인해 보면 좋을 것이다. 이를 위해서, 간단하게는 print 함수를 써서 확인이 필요한 지점마다 값을 출력하게 해 프로그램 실행 중의 변수를 확인하거나, 조그만 테스트 코드를 작성해 문제가 될 만한 상황을 재현해 볼 수 있다. 하지만 프로그램과 데이터의 규모가 커지고 복잡해질수록, 위와 같은 방법만으로는 문제의 원인을 해결하기가 여전히 어려울 수 있다. 이런 상황에서는 파이썬 디버거 (pdb) 가 유용한 해결책이 될 수 있다. pdb - Python debugger pdb 모듈은 파이썬을 위한 ..

    [PyTorch] 파이토치 프로파일링 (PyTorch profiler API)

    [PyTorch] 파이토치 프로파일링 (PyTorch profiler API)

    Introduction 지지난 글에서는, 파이썬 코드를 실행할 때 코드의 시간 성능을 프로파일러 (profiler) 를 이용해 측정하는 방법을 알아봤었다. 여기 (지지난 글이었지만 글을 수정 하면서 발행일을 업데이트 했고... 목록의 한참 위로 올라가 버렸다) 함수의 호출 수와 개별 / 누적 소모 시간을 한 번에 정리해 주기 때문에 어느 구간에서 프로그램의 연산 병목이 일어나고 있는지 쉽게 찾을 수 있다. 그렇다면 비슷한 느낌으로 파이토치 연산의 전체적인 시간 / 메모리 성능을 한 눈에 보기 쉽게 정리해 주는 기능은 없을까? 일단 위의 프로파일러는 CPU 상에서 실행되는 함수만을 트래킹 하기 때문에, 대부분 GPU를 사용하는 파이토치 모델의 성능 측정에 사용하기에는 적합하지 않다. 다행히도 파이토치 라이..

    [Python] 모듈 단위의 exception 계층 구조

    [Python] 모듈 단위의 exception 계층 구조

    Introduction 지난번에는 예외 처리와 관련해서, 왜 단순한 try, except 문을 사용하지 말아야 하는 지를 간단히 알아봤다. 이전 글 이번에는 파이썬 모듈을 작성할 때 어떤 식으로 예외를 발생시키는 것이 바람직한지에 대해 소개해보려 한다. 결론부터 말하자면, 모듈 최상위 예외 클래스를 이용해 계층 구조를 가지는 예외 클래스를 이용하는 것이 기본 파이썬 예외 클래스를 사용하는 것 보다 훨씬 편리하다고 할 수 있다. Possible problem of using built-in exeptions 먼저, 간단한 사용자 모듈을 하나 생성해 보자. 날아가는 물체의 착륙 지점을 계산하기 위한 코드이다. user_module.py # user_module.py from math import sin, c..