Table of Contents
메모리 사용량을 줄이기 위해 다음과 같은 추가적인 방법들을 시도해 볼 수 있습니다. 특히, 현재 실행 중인 프로세스와 사용 중인 애플리케이션을 구체적으로 살펴보면서 메모리 사용량을 최적화하는 방법을 찾아야 합니다.
1. 현재 메모리 사용량 분석
1.1. 프로세스별 메모리 사용량 확인
htop
이나 top
명령어를 사용하여 메모리를 많이 사용하는 프로세스를 찾아내고, 불필요한 프로세스를 종료합니다.
htop
# or
top
1.2. 메모리 사용량 상세 분석
smem
도구를 사용하여 프로세스별 메모리 사용량을 자세히 분석할 수 있습니다.
sudo apt-get install smem
smem -t -k
2. 메모리 사용량 최적화
2.1. 데이터 로드 및 전처리 최적화
데이터셋을 한 번에 모두 메모리에 로드하지 않고, 배치 단위로 로드하여 메모리 사용량을 줄입니다.
from torch.utils.data import DataLoader
# 데이터셋 및 데이터로더 예시
dataset = CustomDataset(...)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4)
2.2. 캐시 및 버퍼 비우기
리눅스 시스템에서는 캐시와 버퍼를 비워 메모리 사용량을 줄일 수 있습니다.
sudo sync
sudo sysctl -w vm.drop_caches=3
2.3. 불필요한 객체 삭제 및 가비지 컬렉션 호출
사용이 끝난 변수는 del
을 사용하여 메모리에서 해제하고, gc.collect
를 호출하여 가비지 컬렉션을 수행합니다.
import gc
# 큰 변수 삭제 및 가비지 컬렉션 호출
del large_variable
gc.collect()
3. 메모리 릭 점검
3.1. 메모리 프로파일링 도구 사용
Python에서는 memory_profiler
를 사용하여 메모리 사용량을 분석하고 메모리 릭을 점검할 수 있습니다.
from memory_profiler import profile
@profile
def my_function():
# 메모리 사용량이 많은 코드
...
my_function()
4. 시스템 설정 조정
4.1. 스왑 메모리 설정
스왑 메모리를 활성화하여 물리적 메모리 부족 시 스왑을 사용할 수 있도록 설정합니다.
# 스왑 파일 생성 (예: 4GB 스왑 파일)
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 스왑 활성화 확인
sudo swapon --show
5. 주요 프로세스 종료 및 재시작
5.1. Jupyter Notebook 서버 종료
Jupyter Notebook 서버가 여러 개 실행 중이라면, 이를 종료하고 필요한 경우 다시 시작합니다.
pkill -f jupyter-notebook
5.2. VSCode 서버 종료
VSCode 서버가 여러 개 실행 중이라면, 이를 종료하고 필요한 경우 다시 시작합니다.
pkill -f vscode-server
5.3. Python 프로세스 종료
불필요한 Python 프로세스를 종료합니다.
pkill -f python
예시 코드: 메모리 사용량 최적화
import torch
from torch.utils.data import DataLoader
import numpy as np
import gc
# 데이터셋 및 데이터로더 설정
dataset = CustomDataset(...)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True, num_workers=4)
# 큰 변수 삭제 및 가비지 컬렉션 호출
del large_variable
gc.collect()
# 메모리 프로파일러 사용 예시
from memory_profiler import profile
@profile
def train_model():
model = create_model()
optimizer = create_optimizer(model)
for data in dataloader:
inputs, labels = data
optimizer.zero_grad()
outputs = model(inputs)
loss = compute_loss(outputs, labels)
loss.backward()
optimizer.step()
train_model()
# 캐시 및 버퍼 비우기
import os
os.system('sudo sync; sudo sysctl -w vm.drop_caches=3')
결론
메모리 사용량을 줄이기 위해 여러 가지 최적화 방법을 시도할 수 있습니다. 특히, 현재 실행 중인 프로세스를 분석하고 불필요한 프로세스를 종료하며, 데이터 로드 및 전처리 과정을 최적화하여 메모리 사용량을 줄이는 것이 중요합니다. 메모리 프로파일링 도구를 사용하여 메모리 릭을 점검하고, 시스템 설정을 조정하여 메모리 사용량을 효율적으로 관리할 수 있습니다.
'Upstage AI 3기' 카테고리의 다른 글
[학습 블로그] 수료식 & 과정 전체 후기 (5) | 2024.11.08 |
---|---|
[학습 블로그] 현직자 특강회고 (3) | 2024.11.06 |
upstage에서 제공한 remote 서버 스펙 (0) | 2024.07.26 |
[패스트캠퍼스 Upstage AI 부트캠프] 과정 중간 회고 학습 블로그 (1) | 2024.07.14 |
[패스트캠퍼스] Upstage AI Lab 3기 학습 블로그_코딩 테스트:자료구조 및 알고리즘 개론 (재귀 recursion) (0) | 2024.05.17 |
- Total
- Today
- Yesterday
- 해시
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- Numpy
- 리스트
- recursion #재귀 #자료구조 # 알고리즘
- Array
- git
- nlp
- Hugging Face
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- speaking
- RAG
- Lora
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- PEFT
- 파이썬
- Transformer
- LLM
- LIST
- cnn
- 손실함수
- clustering
- 오블완
- 코딩테스트
- Github
- 티스토리챌린지
- Python
- t5
- classification
- English
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |