본문 바로가기

전체 글

(23)
NotADirectoryError: [Errno 20] Not a directory: './data/.DS_Store' 오류 해결 macos에서 Finder가 색인을 빠르게 하기 위해서 자동으로 .DS_Store 파일을 폴더에 만든다. 폴더 관리할 때 방해가 되기 때문에 삭제하거나 다시 생성이 안되도록 바꿔줄 필요가 있다. 1. 삭제 find . -name "*.DS_Store" -type f -delete 해당 디렉토리에 존재하는 .DS_Store 파일을 전부 삭제한다. 2. 생성이 안되도록 변경 defaults write com.apple.desktopservices DSDontWriteNetworkStores true
scp 명령어로 로컬과 원격서버간 파일 전송하기 보통 vscode에서 ssh 접속을 하여 원격서버에서 개발을 진행하는데 로컬과 원격서버 사이에서 파일이나 폴더를 전송해야할 일이 있다. 물론 vscode로 drag & drop을 하는 방법을 사용할 수도 있는데 치명적인 단점이 있다. 1. 이유는 모르겠으나 용량이 크거나 파일 수가 많으면 전송이 안된다. 2. 시간이 너무 오래걸린다. 따라서 보통 scp 명령어를 이용하여 로컬과 서버간에 파일을 전송한다. 파일을 전송하고 전송받는 경우는 크게 3가지이다. 1. 로컬 -> 원격 scp [옵션] [전송할 파일 경로] [user@ip주소:전송받을 경로] 2. 원격 -> 로컬 scp [옵션] [user@ip주소:전송할 경로] [전송 받을 경로] 3. 원격 -> 원격 scp [옵션] [user@ip주소:전송할 경로..
canceled future for execute_request message before replies were done 오류 Vscode를 사용하여 anaconda 가상환경에서 jupyternotebook을 사용하고자 하는데 계속 커널 오류가 뜬다. * 오류는 m1맥북 이후 모델로는 tensorflow-metal을 이용해야 한다는 것이었다. tensorflow-metal은 애플 실리콘 전용 tensorflow이다. 간단한 공부나 실험용이라면 Colab이나 다른 서버를 사용하는 것을 추천하고 local 환경에서 꼭 사용해야 한다면 tensorflow-metal을 사용하는 방법을 찾아보자.
vscode를 사용하여 anaconda 가상환경에서 Jupyternotebook 커널 연결하기 1. pip install jupyter jupyter 설치 2. pip install ipykernel 3. 설정 (command or ctrl + ,)에서 Default Interpreter Path 설정 python 검색후에 Default Interpreter Path에 설정되어 있는 경로로 ipykernel이 설치된다. 주의할점은 가상환경을 activate하고 있더라도 ipynb파일을 실행할 때는 이 경로의 커널을 사용하기 때문에 설치된 모듈들이 다를 수 있다. 기본값은 anaconda의 base 경로로 설정되어 있다. 4. python -m ipykernel install --user --name [가상환경이름] --display-name ["커널이름"] 이후에 생성된 커널을 선택한 뒤 실행하면..
Anaconda(아나콘다) 가상환경 생성,삭제, 기본 명령어 가상환경 생성 conda create -n [가상환경이름] python=3.x 가상환경 삭제 conda env remove -n [가상환경이름] 가상환경 목록보기 conda env list 가상환경 설치 목록 보기 conda list 가상환경 활성화 conda activate [가상환경이름] 가상환경 비활성화 conda deactivate [가상환경이름]
리눅스 서버에서 가장 용량 많이 차지하고 있는 디렉토리 확인(df, du) 디스크에 용량이 전부 꽉차 더 이상 저장공간이 남아 있지 않을 때 (이를 확인하기 위해서는 df -h 를 통해 Size와 Used, Avail을 확인한다.) 저장공간을 마련하기 위해 서버에서 가장 용량을 많이 차지하고 있는 디렉토리를 확인하고 싶을 때가 있다. sudo du -h --max-depth=1 [/home] | sort -hr 을 통해 확인할 수 있다. ([/home]에는 기준 directory의위치를 입력한다.) 만약 상위 10개를 확인하고 싶다면 sudo du -h --max-depth=1 [/home] | sort -hr | head 상위 n개를 확인하고 싶다면 sudo du -h --max-depth=1 [home] | sort -hr | head -n 을 통해 확인할 수 있다. * d..
sh: 0: Can't open / chmod -R 777 파일 권한 설정 shell 스크립트를 실행하려고 하는데 sh: 0: Can't open이라는 오류가 발생했다. 나에게 이 파일을 실행할 권한이 없다는 뜻이다. 이때 chmod를 이용하여 파일 권한 설정을 바꿀 수 있다. 파일 권한은 크게 1. 읽기(read) = 4 2. 쓰기(write) = 2 3. 실행하기(execute) = 1 세가지이다. (당연히 세 자리 이진수를 사용하기 때문에 000(0)~111(7) 중 값을 갖게된다.) 7(1+2+4)은 이 3가지 권한을 모두 부여한다는 의미이다. 777에서 첫 번째 7은 소유자(나), 두 번째 7은 그룹사용자, 세 번째 7은 기타 사용자이다. 즉 777은 나를 포함한 모든 사용자에게 모든 권한을 부여한다는 의미이다. -R은 recursive의 약자로 파일뿐만아니라 chmo..
ModuleNotFoundError : 상위 디렉토리 모듈 불러오기 python에서 한 단계 위에있는 디렉토리에 속한 파일(모듈)을 불러오고 싶을 수 있다. ex) a/aa.py b/bb.py 에서 bb.py에서 aa.py를 불러오고 싶다고 하자. 이 때 import aa를 하면 No module named 'aa'라는 오류가 발생한다. 해결을 위해서는 1. import sys, os 이후에 2. sys.path.append(os.path.dirname(os.path.abspath(os.path.dirname(__file__))))을 추가 해준다. 간단하게 위 명령어를 설명하자면 시스템이 모듈을 찾는 경로에 내 현재 파일의 디렉토리이름을 추가해 주는 것이다. print(sys.path)를 실행해보자. 그러면 ['/home/~', '/home/anaconda3/envs/~..
nvtop : GPU 사용중인 사용자, 프로세스 확인하기 nvtop nvtop 명령어를 입력하면 서버에서 GPU를 사용중인 사용자와 프로세스를 확인할 수 있다. 실행이 안된다면 sudo apt install nvtop을 통해 설치해야한다. 일반적으로 nvidia-smi를 통해 확인하는 경우가 많지만 nvtop이 더 직관적이라고 생각된다. 주로 확인해야할 것은 PID, DEV, GPU, GPU MEM이다. PID는 실행중인 프로세스의 ID이다. DEV는 device의 약자로 몇 번 GPU를 사용중인지 알려준다. GPU는 현재 GPU가 100%중 몇 %로 성능을 쓰고 있는지 알려준다. GPU MEM은 전체 GPU memory중에 얼마나 점유하고 있는지 알려준다. GPU MEM은 많이 여유가 있는데 GPU는 성능이 100%에 가까울 때가 있다. memory 크기가 ..
모델 학습중 프로세스 종료 (ctrl+c, ctrl+z) 지금까지 별 생각없이 local에서 하던 것 처럼 ctrl+z로 프로그램을 종료하고 있었다. 그런데 종료를 했다고 생각했는데 nvidia-smi로 확인해보면 계속 메모리를 차지하고 있는 것 같았다. 알고보니 ctrl+c는 실행중인 프로세스를 종료하는 것이고 ctrl+z는 실행을 중단하고 백그라운드로 돌아가는 명령어였다. 만약 ctrl+z로 중단한 프로그램을 다시 실행하고 싶으면 fg % [num]을 실행해야한다. num은 ctrl+z로 중단시키면 밑에처럼 뜬다. 기본적인 내용이지만 보통 서버를 같이 쓰기 때문에 나처럼 계속 중단시키고 있었다면 다른 이용자들에게 큰 피해가 간다.. 앞으로는 꼭 ctrl+c로 중단시키도록 하자.