728x90

sh 파일을 이용해서 학습 및 평가를 돌리는 경우가 많은데,

 

이 sh 파일에 띄어쓰기 혹은 줄 바뀜 등, 에러에 의하여

 

shell script error expecting "do" 에러가 뜨는 경우가 있다  

 

이는 해결하기 상당히 귀찮은 문제인데, 인터넷에 자꾸 찾아보다가 매번 까먹어서 여기에다가 올려둔다

 

파일명이 train.sh 일 때

 

cat train.sh | tr -d '\r' >> new_train.sh

 

 

이렇게 하면 동일한 파일 구조내에 new_train.sh 를 얻게되고, 

 

이를 원래 파일에 덮어 씌우면 된다

728x90
728x90

Huggingface, Transformers 등 사용하다 보면, 나는 인자를 잘 주고 있는 것 같은데 warning 이 뜨는 경우가 많다

 

보통 이러한 오픈 소스들에서는 logger를 사용하여 warning을 사용자에게 출력시키는데 계속 반복되면서 출력되면 학습 진행률을 보기가 힘들다

 

아래처럼 간단하게 3줄로 처리가 가능하다

 

import logging
logging.disable(logging.INFO) # disable INFO and DEBUG logging everywhere
logging.disable(logging.WARNING) # disable WARNING, INFO and DEBUG logging everywhere

 

main.py 맨 상단에 이렇게 코드를 넣어두면, 연결된 모든 library 에서도 자동적으로 logger를 turn off 해준다

 

728x90

'Program > Python' 카테고리의 다른 글

pip freeze path 문제  (0) 2023.06.22
numpy를 이용한 연속적인 중복값 제거  (0) 2021.01.22
ImportError: cannot import name 'main' pip  (0) 2019.10.08
pip와 pip3 차이  (2) 2018.04.12
Ubuntu Python2, Python3 버전 관련  (0) 2018.04.12
728x90

폴더 내의 여러 tar 파일 압축 해제 명령어

 

.tar 확장자

find . -name '*.tar' -exec tar -xvf {} \;

 

.tar.gz 확장자

find . -name '*.tar.gz' -exec tar zxvf {} \;

 

find 명령어로 여러 응용 가능함

728x90
728x90

보유한 python library가 다음과 같을 때:

 

numpy==1.19.0
packaging==20.4
pandas @ file:///opt/concourse/worker/volumes/live/38d1301c-8fa9-4d2f-662e-34dddf33b183/volume/pandas_1592841668171/work
pandocfilters==1.4.2

 

그대로 pip freeze > ./requirements.txt

하면 path 문제로 설치가 안될 수 있음

 

이를 해결하기 위해

 

pip list --format=freeze > requirements.txt

 

를 입력하면 해결 가능함

728x90
728x90

이전 포스팅에서 pytorch DDP 사용시 conda 문제로 축약되어 게시한 글이 있었다. 해당 글에서는 conda를 최신으로 업데이트하여 문제 해결을 하라고 하였으나, 직접 돌려보니 conda version 문제는 아닌 듯 하다.

 

그러던 도중 다른 연구자들에 따르면, python 3.8에서 이러한 문제들이 자주 생긴다고 주장되었고, 이에 대한 해결책이 python 3.7로 degrading 하여 사용하라는 것이었다.

 

이에 따라 나는 conda latest version에 python 3.7로 세팅하여 실행해보았지만, 같은 문제가 생겼음을 확인하였다.

 

이 와중에 ram memory 문제라는 것이 제기되었다. data loader를 너무 급격히 돌리다보면 system memory가 부족하여 생기는 문제라고 한다.

 

현재 사용중인 서버 환경은 ubuntu 18.04, memory 251G, Swp 30G, RTX 24GB x 8EA이다. 통상적으로 메모리가 512는 되어야 한다고 주장하는 것 같다.

 

반면에, 다른 서버 환경인 memory 126GB, Swp 30.4GB, RTX 24GB x 4EA 에서는 해당 문제가 발생하지 않았다. 즉 parallel DDP를 사용하기 위해서는 memory 혹은 Swp memory 가 더 필요한 것처럼 보일 수 있다.

 

혹은 사용하는 data가 커서 생기는 문제일 수도 있다.

 

현재 사용하는 데이터는 wav 음성을 입력으로 사용하여 pre-trained 된 feature model로 부터 약 3~5MB의 768, T 만큼의 feature를 얻고, 이것을 npy로 저장하고 있다. 이렇듯, 데이터가 커서 생긴 문제일 수도 있을 것 같다.

 

또한, 약 5개의 서버에서 NAS로 묶어서 sharing을 하였는데, 모든 곳에서 같은 data를 read 하다가 부하가 생긴 문제는 아닐까? 라는 생각이 들었다.

 

하지만 추측하건대, system memory를 늘리면 해결가능한 문제인 것으로 보인다.

 

요약

 

1. pytorch DDP 문제 발생

2. conda update 시도 하여 문제 해결 --> 실패

3. python 3.7 버전으로 degrading 하여 문제 해결 --> 실패

4. 결론: system memory 추가 필요

728x90
728x90

Pytorch에서 DDP로 multi-GPU training을 신나게 돌리다가, 종종 에러가 발생한다.

 

 

구글링 결과, anaconda 관련 문제인 것 같았다.

 

main.py 및 DDP loading 과 관련된 문젱는 아니었다.

 

상당히 비슷한 문제가 아래의 링크에 포함되어 있는데,

 

https://github.com/conda/conda/issues/9589

 

Warning about leaked semaphore under Python 3.8 · Issue #9589 · conda/conda

Current Behavior Under Python 3.8, there is a warning printed when running most conda commands: ~/miniconda3/lib/python3.8/multiprocessing/resource_tracker.py:216: UserWarning: resource_tracker: Th...

github.com

 

이들은 모두 conda의 version, 그리고 python version 문제라고 하였다.

 

그래서 나는 우선 conda를 최신으로 업데이트 하였다.

 

conda update --all

 

위의 명령어를 통해서 업데이트 이후, deactivate, 다시 activate 하였다.

 

우선은 다시 돌리고 있는 중인데, 만약 이와 같은 문제가 또 생겼을 경우 python 버전을 3.7로 낮춰서 해봐야 할 것 같다.

728x90
728x90

우분투에서 Anaconda를 설치하는 것은 생각보다 간단한데, initialization 할 때 귀찮은 문제가 종종 생기곤 한다.

 

우선 본인 환경에 맞는 anaconda를 설치한다.

 

https://docs.anaconda.com/anaconda/install/hashes/lin-3-64/

 

Anaconda with Python 3 on 64-bit Linux — Anaconda documentation

 

docs.anaconda.com

 

이 사이트에서 받을 수 있고, 나 같은 경우는 Anaconda3-2021.05-Linux-x86_64.sh 를 사용한다. (2021, 06, 25 기준)

 

다운받아서 우분투로 옮기고,

 

sh ./Anaconda3-2021.05-Linux-x86_64.sh 

 

그 다음 yes

 

enter, 등등..

 

설치가 완료된 뒤, conda init 을 해줘야하는데, 이 때 command not find가 뜬다.

 

이때, 

 

vi ~/.bashrc

export PATH="/your_workspace/anaconda3/bin:$PATH"

(예시: export PATH="/workspace/kaen2891/anaconda3/bin:$PATH")

source ~/.bashrc

 

conda init

 

으로 해결할 수 있다.

 

 

728x90
728x90

우분투 환경에서, python을 사용하여 mp4 파일을 wav로 변환 하는 것에 대해 소개한다.

 

즉, 영상 파일을 음성으로 변경하는 것이다.

 

우선 ffmpeg이 설치되어 있어야 한다.

 

apt-get install ffmpeg 을 하면 되고, sudo 권한이 필요하다.

 

이후 

 

import subprocess


command = "ffmpeg -i {} -ab 160k -ac 2 -ar 44100 -vn {}".format(item, os.path.join(this_path, save_file_id))
    
subprocess.call(command, shell=True)

 

로 진행하면 되며, 이때 item은 mp4 파일, this_path, save_file_id 저장할 wav 파일이다.

 

728x90
728x90

우분투에서 python으로 외부 library를 설치해서 사용해야 될 경우가 많다.

 

특히 open source, github에서 보면 requirements.txt 라는 파일이 종종 보이는데,

 

이는 source code 원작자가 다른 이들이 본인의 것을 사용하기 위해 필요한 version을 명시한 것이다.

 

보통 pip3 을 이용하여 외부 library를 설치하는데, 본인이 설치한 python3 library 확인은 pip3 freeze 를 치면 된다.

 

python external library

 

위의 보이는 것들은 내가 사용하고 있는 library들이다. tensorflow, torch 등이 설치된 것을 볼 수 있다.

 

github에서 보이는 것처럼 내가 쓰고 있는 환경을 다른 서버의 계정, 혹은 남에게 공유하고 싶다면?

 

pip3 freeze > requirements.txt 를 입력하면 된다.

 

 

위의 requirements.txt를 이제 공유하기만 하면 된다.

 

이후 requirements.txt 내의 library들을 설치하고 싶으면,

 

pip3 install -r requirements.txt

 

를 입력하면 된다.

 

728x90
728x90

appropriate binary mode and that you have compiled unzip properly 과 같은 문제가 생겼을 시, 아래와 같은 방법으로 해결이 가능함

 

 

zip -FF my_zip --out my_zip_ver2.zip

 

unzip my_zip_ver2.zip

 

 

728x90

+ Recent posts