Google Colab은 무료 GPU 자원을 제공하는 매우 유용한 실험 환경이다.
그러나 일정 시간 이상 키보드/마우스 입력 없이 대기하거나, 과도한 리소스를 사용할 경우 세션이 끊기거나 초기화될 수 있다.
특히 딥러닝 모델을 오래 학습시키거나 대규모 데이터를 처리할 때, 중간에 세션이 날아가면 상당히 곤란해진다.
이 글에서는 Colab 세션이 끊기는 주요 원인과 이를 방지하기 위한 현실적인 방법들을 정리한다.
1. Colab 세션이 끊기는 조건
Colab에서 세션이 끊기는 주요 조건은 다음과 같다:
- 15분 동안 아무 입력이 없을 때: 유휴 세션으로 판단됨
- 90분~180분 이상 실행 시: 리소스 회수 정책에 따라 GPU 세션 회수
- 과도한 연산 또는 리소스 점유: 다른 사용자 보호를 위한 강제 종료
- 탭이 백그라운드 상태일 때 더 빨리 종료될 수 있음
Colab은 공식적으로 연결 유지 시간이 보장되지 않는다.
따라서 중요한 실험은 항상 중간 저장, 자동 백업 등을 고려해야 한다.
2. 해결 전략
Colab에서 세션이 끊김을 방지하는 네 가지 방법을 살펴본다.
아래 나오는 코드의 경로들은 각자 원하는 곳에 설정하도록 한다.
2.1 유휴 상태를 막기 (가짜 사용자 활동)
Chrome의 브라우저 콘솔에 아래 코드를 입력하면, 마우스 움직임을 흉내 내는 방식으로 유휴 상태를 방지할 수 있다.
1단계: Colab이 열려 있는 탭에서 F12
또는 ⌘ + Option + J
로 개발자 도구 열기
2단계: Console 탭에 아래 코드 붙여넣기
위쪽 탭 영역(Elements, Console, Sources, Network, ... )에서 Console 탭을 클릭하여 아래 코드를 붙여넣는다.
이때 붙여넣기가 되지 않는 경우의 대부분은 allow pasting
을 입력하고 Enter을 치면 된다.
그 이유는 Chrome은 자바스크립트 콘솔에 코드를 자동으로 복사 또는 붙여넣도록 유도하는 공격을 막기 위해, 사용자의 의도를 다시 확인하는 장치를 마련했기 때문이다.
function preventColabDisconnect() {
const interval = 60000; // 60초 간격
setInterval(() => {
document.querySelector('colab-toolbar-button#connect').click();
console.log("🟢 Colab KeepAlive Ping");
}, interval);
}
preventColabDisconnect();
이 코드는 실제로는 ‘연결 버튼’을 60초마다 클릭해주는 효과가 있으며, 비교적 안정적으로 동작한다.
잘 작동하는지 확인하기 위해 콘솔에 다음과 같은 출력이 60초 간격으로 반복되는지 확인한다.
🟢 Colab KeepAlive Ping
🟢 Colab KeepAlive Ping
이게 나오면 실제로 버튼을 클릭하고 있다는 뜻이다.
2.2 중간 저장 및 자동 백업
Colab 세션이 언제 끊길지 모르므로, 결과를 주기적으로 저장하거나 클라우드에 업로드하는 것이 중요하다.
예시: 모델 가중치 저장
torch.save(model.state_dict(), '/content/drive/MyDrive/checkpoint.pth')
예시: 로그 파일을 구글 드라이브에 저장
with open('/content/drive/MyDrive/log.txt', 'a') as f:
f.write("step 100 | loss 0.234\n")
Google Drive는 Colab과 자동 연동되므로, 초기 세팅은 다음과 같이 하면 된다:
from google.colab import drive
drive.mount('/content/drive')
2.3 긴 실험은 Colab Pro 또는 로컬 환경 고려
Colab 무료 버전은 세션 시간이 짧고 GPU가 자주 회수된다.
다음과 같은 대안이 있다:
- Colab Pro / Pro+: 세션 시간 연장 + 우선 GPU 배정
- 로컬 GPU 환경 구성: Docker, WSL2, Jupyter 사용
- Paperspace, Kaggle Notebook: 유사 서비스로 세션 제한이 다름
또한 PyTorch에서는 다음과 같이 학습 중간에 자동 저장하는 콜백을 넣는 것도 매우 유용하다.
if epoch % 5 == 0:
torch.save(model.state_dict(), f'/content/drive/MyDrive/epoch_{epoch}.pth')
2.4 팁: background 실행 + 로그 저장
Colab은 터미널이 없기 때문에 background 작업이 불가능하다.
하지만 다음과 같은 형태로 출력을 파일로 저장하며 실행하는 방식이 가능하다:
!python train.py > output.log 2>&1 &
이렇게 하면 학습 로그가 output.log
에 저장되며, 세션 끊기 전까지의 출력 내용을 확인할 수 있다.
단, 세션이 끊기면 이 프로세스도 종료되므로 절대적인 해결책은 아니다.
3. 마무리
Colab은 접근성과 편의성이 매우 높지만, 세션 유지에는 일정한 제약이 존재한다.
실험 도중 끊김을 예방하려면 가짜 입력 유지 + 자동 저장 + 구글 드라이브 백업 + 적절한 타이밍의 커밋이 핵심이다.
완전히 방지할 수는 없지만, 위 방법들을 적용하면 실험 효율과 안전성이 크게 향상된다.
연구나 실무에서 장시간 학습이 필요하다면 Pro 계정 또는 로컬 GPU 환경도 적극 고려해야 한다.
'머신 러닝 > Machine Learning' 카테고리의 다른 글
[Machine Learning] CUDA error: device-side assert triggered — 원인과 해결법 정리 (0) | 2025.06.11 |
---|---|
[Machine Learning] 고양이 이미지 생성하는 GAN 만들기 / CatGAN (14) | 2024.11.14 |
[Machine Learning] 데이터 전처리(Data Preprocessing) 개념과 종류 및 예시 (1) | 2024.05.11 |
[Machine Learning] 예시를 통해 살펴보는 배치 사이즈(Batch size)의 이해 (1) | 2024.01.20 |
[Machine Learning] 하이퍼파라미터 튜닝을 위한 Optuna 사용법을 PyTorch 예제를 통해 알아보기 (0) | 2023.04.10 |