PyTorch 라는 머신러닝 라이브러리를 사용해 자연어 처리를 진행했어야했다.
Elastic Beanstalk 을 사용해 배포를 진행하고 있었고, 배포가 실패되며 에러가 발생했다는 것을 확인했다.
아니 얼마나 크길래 공간이 없다는거지? df -h 명령어를 통해 파일 시스템의 용량과 사용량을 확인했다.
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 453M 0 453M 0% /dev/shm
tmpfs 182M 15M 167M 8% /run
/dev/nvme0n1p1 16G 3.4G 13G 21% /
tmpfs 453M 436M 18M 97% /tmp
/dev/nvme0n1p128 10M 1.3M 8.7M 13% /boot/efi
tmpfs 91M 0 91M 0% /run/user/1000
/var/app 아래에 라이브러리가 저장되는데 /dev/nvme0n1p1는 전혀 모자라 보이지 않은 용량이었다.
그래서 진짜 저장 공간 문제인지 확인하기 위해 볼륨을 연결해서 확인해보았다.
볼륨 마운트를 해서 그 안에 torch를 설치해보았으나
동일하게 No space left on device문제가 발생하였다.
실질적인 저장공간이 문제가 아니라 다른 부분에서 문제가 발생한 것이라고 판단하였고
방법을 찾아보았다.
⭐PyTorch와 같은 라이브러리들은 컴파일 과정에서 많은 메모리를 필요로 한다.
>> 시스템 메모리가 부족하다면 설치 과정에서 메모리 부족 오류가 발생할 수 있다.
그래서 시스템 메모리 부족을 해결하기 위해 3가지 방법을 사용했다.
1. 캐시 비우기:
sudo sync; sudo sysctl -w vm.drop_caches=3
- sudo sync: 메모리에 남아 있는 모든 데이터를 디스크에 기록한다.
- sudo sysctl -w vm.drop_caches=3: 캐시를 비운다. vm.drop_caches=3은 페이지 캐시, dentry 캐시, inode 캐시를 모두 비우라는 의미이다.
2. /tmp 디렉토리 정리 및 크기 조정
sudo rm -rf /tmp/*: /tmp
sudo mount -o remount,size=1G /tmp: /tmp
- sudo rm -rf /tmp/*: /tmp 디렉토리(임시 파일 저장) 내의 모든 파일과 디렉토리를 삭제한다.
- sudo mount -o remount,size=1G /tmp: /tmp 디렉토리를 크기 1GB로 다시 마운트한다.
3. 스왑 파일 생성
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
- sudo fallocate -l 2G /swapfile: 2GB 크기의 스왑 파일을 생성
- sudo chmod 600 /swapfile: 스왑 파일의 권한을 600으로 설정 (소유자만 읽기쓰기 가능)
- sudo mkswap /swapfile: 스왑 파일을 스왑 공간으로 초기화
- sudo swapon /swapfile: 스왑 파일을 활성화하여 스왑 공간으로 사용
>> 스왑 파일은 물리적 메모리가 부족할떄 임시 메모리로 사용하는 방법이다.
스왑파일을 사용하면 실제 물리적 메모리가 부족해도 디스크의 일부를 메모리처럼 사용할 수 있다!
-> 메모리 부족 문제 해결 가능!!
.ebextetions에 위의 코드를 추가하고 배포해보니 정상 설치 된 것을 확인할 수 있었다!!! 야호!!!!
'AI' 카테고리의 다른 글
RAG(Retrieval-Augmented Generation) 비교 (5) | 2024.10.11 |
---|---|
[LLM] 랭체인 기초 (랭체인, Language models, 프롬프트, Chain, Memory) (4) | 2024.09.03 |