faster-whisper로 녹음 수백 개를 한 번에 돌리는 식의 장시간 GPU 작업을 하면, GPU 온도가 계속 올라 스로틀링이 걸리거나 불안해집니다. nvidia-smi로 온도를 읽어 일정 온도를 넘으면 자동으로 식을 때까지 쉬는 '발열 가드'를 코드에 넣은 방법을 정리합니다.
1. 문제: 연속 작업이면 GPU가 계속 뜨겁다
한두 개면 상관없지만, 파일 수백 개를 쉬지 않고 돌리면 GPU 온도가 80도 후반까지 올라갑니다. 그러면 성능이 떨어지고(스로틀링) 장비에도 부담입니다. 그래서 처리 루프 중간에 온도를 보고, 너무 뜨거우면 잠깐 쉬게 만들었습니다.
- 단발 작업은 발열 신경 안 써도 됨
- 수십에서 수백 건 연속 배치가 문제(온도 누적)
- 해결: 루프 사이에 온도 체크 + 임계 초과 시 자동 대기
2. nvidia-smi로 현재 온도 읽기
온도는 nvidia-smi의 쿼리 옵션으로 숫자만 깔끔하게 받을 수 있습니다. --query-gpu=temperature.gpu --format=csv,noheader,nounits를 주면 단위/헤더 없이 정수만 나와서 코드에서 바로 비교할 수 있습니다. 파이썬에서는 subprocess로 호출합니다.

- --query-gpu=temperature.gpu 로 GPU 온도만
- --format=csv,noheader,nounits 로 "75" 같은 정수만 출력
- subprocess.run으로 받아서 int로 변환
3. 발열 가드 로직: 80도 멈춤, 70도 재개
임계값을 둘로 둡니다. 멈추는 온도(예: 80도)와 다시 시작하는 온도(예: 70도)를 따로 두는 게 핵심입니다. 하나의 값만 쓰면 그 경계에서 멈췄다 켜졌다를 반복(채터링)하기 때문에, 멈춤은 높게, 재개는 낮게 벌려둡니다.

- TEMP_PAUSE(80): 이 온도 이상이면 대기 시작
- TEMP_RESUME(70): 이 온도 이하로 식으면 재개
- 두 값을 벌려두는 게 포인트(히스테리시스, 켜짐/꺼짐 반복 방지)
4. 대기는 폴링으로: 식을 때까지 잠깐씩 확인
임계 온도를 넘으면 짧게(예: 20초) 자고 다시 온도를 재는 식으로, 재개 온도까지 내려갈 때까지 반복합니다. nvidia-smi 호출이 실패하면(GPU 정보 못 읽으면) 그냥 통과시켜 작업이 멈추지 않게 안전장치를 둡니다.
- 20초 sleep -> 온도 재측정 반복으로 식기를 기다림
- 온도 읽기 실패 시에는 가드를 건너뛰어 작업 중단 방지
- 로그로 "냉각 대기 -> 회복 재개"를 남기면 진행 상황이 보임
5. 처리 루프에 끼워넣기
완성된 가드는 파일 하나 처리하기 직전에 호출만 하면 됩니다. 각 파일 시작 전에 온도를 보고, 뜨거우면 알아서 쉬고, 식으면 다음 파일로 넘어갑니다. 덕분에 수백 개를 무인으로 돌려도 과열로 죽지 않고 완주합니다.

- 파일 처리 직전에 thermal_guard() 한 줄 호출
- 처리 후 로그에 현재 온도를 같이 찍으면 추세 파악 가능
- 무인 배치(밤새 돌리기)에 특히 유용
함께 보면 좋은 글:
- 패스터위스퍼(faster-whisper)로 한국어 음성을 텍스트로 (GPU 메모리 부족까지 잡기) - 발열이 문제 되는 장시간 배치 전사의 기본
- 수백 개 음성 파일 밤새 무인 STT 배치 (재개 가능) - 무인 배치 편
여기까지 nvidia-smi 온도 모니터링으로 장시간 GPU 작업의 발열을 자동으로 잡는 방법에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!
'일상' 카테고리의 다른 글
| faster-whisper vs OpenAI Whisper 직접 비교 (속도 4배·VRAM 절반, 8GB GPU 실측) (0) | 2026.06.27 |
|---|---|
| 성별로 화자분리 더 정확하게? 피치(F0)와 HF 성별 모델 둘 다 써봤지만 (득보다 실이었던 이유) (0) | 2026.06.27 |
| Windows에서 faster-whisper GPU로 돌리기 (CUDA/cuDNN 세팅, '쿠다 인식 안 됨' 잡기) (0) | 2026.06.27 |
| faster-whisper + pyannote로 화자 분리까지 (누가 말했는지 나누는 STT 파이프라인) (0) | 2026.06.27 |
| 비밀번호 들어가는 sftp/scp를 스크립트로 자동화하기 (expect, sshpass, 흔한 함정) (0) | 2026.06.24 |