전체 글

보호되어 있는 글입니다.
Google Colab은 무료 GPU 자원을 제공하는 매우 유용한 실험 환경이다.그러나 일정 시간 이상 키보드/마우스 입력 없이 대기하거나, 과도한 리소스를 사용할 경우 세션이 끊기거나 초기화될 수 있다.특히 딥러닝 모델을 오래 학습시키거나 대규모 데이터를 처리할 때, 중간에 세션이 날아가면 상당히 곤란해진다.이 글에서는 Colab 세션이 끊기는 주요 원인과 이를 방지하기 위한 현실적인 방법들을 정리한다.1. Colab 세션이 끊기는 조건Colab에서 세션이 끊기는 주요 조건은 다음과 같다:15분 동안 아무 입력이 없을 때: 유휴 세션으로 판단됨90분~180분 이상 실행 시: 리소스 회수 정책에 따라 GPU 세션 회수과도한 연산 또는 리소스 점유: 다른 사용자 보호를 위한 강제 종료탭이 백그라운드 상태일..
지식을 흘려보내지 않고 체계적으로 쌓고 싶은 개발자라면, Obsidian은 매우 강력한 도구이다.여기에 Git까지 연동하면, 마크다운 기반의 로컬 지식 저장소를 버전 관리하며 사용하는 워크플로우를 만들 수 있다.이 글에서는 Obsidian이 무엇인지부터 Git과 연동하여 사용하는 방법까지 단계별로 설명한다.1. Obsidian이란 무엇인가?Obsidian은 로컬 폴더에 저장된 마크다운(.md) 파일들로 이루어진 '바울트(vault)'를 연결해서 사용하는 노트 앱이다.노션이나 에버노트와 달리 완전한 로컬 기반이기 때문에, 속도도 빠르고 백업/연동 자유도가 높다.또한, 노트 간 연결(링크)과 그래프 뷰를 통해 복잡한 아이디어도 시각적으로 정리할 수 있다는 점이 큰 장점이다.주요 특징:마크다운 기반 → 깃과의..
RuntimeError: CUDA error: device-side assert triggered또는RuntimeError: CUDA error: device-side assert triggeredException raised from at ... in file ...이 에러는 PyTorch를 사용할 때, 특히 GPU 환경에서 모델을 학습시키는 중에 갑자기 터지는 경우가 많다.처음 이 에러를 만나면 코드 어디에서 문제가 발생한 건지 알기 어렵고, 에러 메시지도 명확하지 않기 때문에 당황하게 된다.1. 원인 요약이 에러는 GPU 내부에서 실행되던 코드가 잘못된 입력이나 상태를 만나 'assert'에 걸렸을 때 발생한다.예를 들어, 어떤 값이 특정 범위를 벗어났거나, 예상하지 못한 데이터 타입이 들어왔을 ..
프로그램을 작성하다 보면 다양한 예외 상황이 발생할 수 있다.이를 적절하게 처리하면 예기치 않은 프로그램 종료를 방지하고, 디버깅 및 유지보수를 용이하게 할 수 있다.이번 포스팅에서는 파이썬의 기본 예외 처리 방법과 함께 나만의 커스텀 예외 클래스를 정의하고 활용하는 방법을 살펴보자.1. 기본 예외 처리파이썬에서 try, except, else, finally 구문을 이용해 예외를 처리할 수 있다.try: 예외가 발생할 수 있는 코드를 작성except: 특정 예외가 발생했을 때 이를 처리하는 코드를 작성else: 예외가 발생하지 않았을 때 실행할 코드를 작성finally: 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성def divide(a, b): try: result = a /..
파이썬의 데코레이터(decorator)는 기존 함수를 수정하지 않고도 추가적인 기능을 손쉽게 덧붙일 수 있는 강력한 도구이다.데코레이터의 기본 개념과 활용하는 법을 코드를 통해 알아보자.데코레이터란?데코레이터는 하나의 함수를 입력받아 새로운 함수를 반환하는 함수이다.이 방식을 통해 로깅, 실행 시간 측정, 캐싱 등 공통적인 기능을 여러 함수에 쉽게 적용할 수 있다.핵심 로직과 부가 기능을 분리하여 코드의 재사용성과 가독성을 높일 수 있다는 점이 큰 장점이다.데코레이터의 장점 및 필요성코드 재사용성 향상여러 함수에 동일한 기능을 중복 없이 적용할 수 있다.관심사의 분리주요 기능과 부가 기능(예: 인증, 로깅)을 분리하여 코드의 가독성 및 유지보수가 용이하다.유연한 기능 추가함수 실행 전후에 다양한 부가 작..
파이썬 matplotlib을 사용해서 서브플롯을 그리는 방법 두 가지를 살펴보자.1. 명시적이고 직관적인 방법명시적이고 직관적이므로 코드를 통해 살펴본다.import matplotlib.pyplot as pltimport numpy as np# 데이터 생성x = np.linspace(0, 10, 100)y1 = np.sin(x)y2 = np.cos(x)y3 = np.tan(x)y4 = x ** 0.5# Figure와 서브플롯 생성fig, axs = plt.subplots(2, 2, figsize=(10, 8)) # 2x2 서브플롯# 첫 번째 서브플롯axs[0, 0].plot(x, y1, color='blue')axs[0, 0].set_title('y = sin(x)')# 두 번째 서브플롯axs[0, 1..
고양이 이미지를 학습해서 새로운 고양이 이미지를 만들어주는 GAN을 제작해보자.만들기 전에 GAN에 대한 설명과 예시는 아래 링크를 참조하자.이 글에서 catGAN은 카테고리 GAN이 아니라 고양이 GAN이다.PyTorch로 GAN 구현하기PyTorch로 DCGAN 구현하기1. 데이터 준비Kaggle에서 데이터를 받아올 것이다.이 링크를 통해 이미지를 다운받거나 아래 명령어를 터미널에 복사해서 붙여 넣고 실행하자.curl -L -o ~/Downloads/archive.zip https://www.kaggle.com/api/v1/datasets/download/spandan2/cats-faces-64x64-for-generative-modelscURL을 사용하려 할 때, Kaggle API가 설정되어있지 ..
1. eval() 함수의 개념과 필요성PyTorch에서 eval()함수는 모델을 평가(evaluation) 모드로 전환하는데 사용된다.모델에 Dropout 레이어나 Batch Normalization 계층이 있는 경우 훈련 모드와 평가 모드에서 모델의 동작이 달라지는 경우가 있기 때문에, eval()함수를 사용해 모델이 평가 단계에서 적절한 동작을 하도록 설정한다.2. eval() 함수를 사용할 때 모델의 주요 변화Dropout 비활성화:모델에 eval()함수를 먹여서 평가 모드로 전환하면, Dropout 계층이 무작위로 뉴런을 끄는 것을 막아 학습을 방해하지 않고 모든 뉴런을 사용한다.Batch Normalization 고정:평가 모드에서는 배치 정규화(BatchNorm) 계층이 새로운 배치 통계를 사..
이번 포스팅은 PyTorch에서 모델을 저장하고 로드하는 방법에 대해 알아본다.간단한 신경망 모델을 만들고 모델의 파라미터를 저장한 후 다시 로드하는 과정을 알아본다.1. 간단한 모델 생성먼저 간단한 모델을 정의하자.torch.nn.Module을 상속받아 신경망 구조를 정의한다.import torchimport torch.nn as nnimport torch.optim as optim# 간단한 모델 정의class SimpleModel(nn.Module): def __init__(self): super(SimpleModel, self).__init__() # 입력이 10차원이고 출력이 1차원인 완전연결층 self.fc = nn.Linear(10, 1) ..
아니그니까
공간