목록Develop (44)
ROKO

코딩테스트를 준비하면서 입출력을 어떻게 빠르게 받을 수 있을까에 대한 고심을 자주하곤 한다.이번 기회에 제대로 정리하여 까먹지 않고 이유까지 잘 이해하고 가져가도록 하자. 입력표준 입출력 (stdin)을 사용하게 되면 버퍼에 입력을 임시 저장했다가 전달해주는 과정을 거치게 된다. python에서는 주로 input()을 기본으로 사용하는데 input보다 더 빠른 sys.stdin.readline()을 쓰는것이 좋다.이유는 input()은 추가적인 프롬프트를 받아 화면에 출력해주는 과정과 내부적으로 개행문자를 매 행마다 제거해주는 연산이 존재하는데 입력을 받는데 약간의 overhead 가 된다. 자세한 내용은 아래에 상세히 기술되어 있다.https://stackoverflow.com/questions/226..

서버에서 분산 추론이나 분산 학습을 하는 중 모델이나 데이터 크기로 인해 OOM이 뜨는 경우가 있다. 혹은 코드의 문제로 process에 문제가 생기는 경우가 있는데 process 하나하나 pid를 찾아서 kill하거나 ctrl-c를 마구 누르는건 비효율 적이다. 다른 독립적인 python code가 돌아가는중이 아니라면 해당 명령어를 사용하자kill -9 pythonkill은 kernel에게 보내는 signal로 -9는 프로세스 강제종료를 의미한다. 따라서 모든 python 코드가 강제 종료된다.아래 그림의 9번째를 보면 SIGKILL을 확인 할 수 있다.

vscode에서 ananconda 가상환경을 이용해 코딩을 하는 경우 가끔씩 패키지가 설치가 되어있음에도 import error 문구가 뜨는 경우가 있다. 이런 경우는 말그대로 가상환경을 사용해서 생기는 문제인데, cmd + shift + p 를 눌러 Python : Select interpreter 를 검색한 뒤 자신이 사용하려는 가상환경에 설치된 python 버전을 선택하면 해결된다. 어떻게 보면 기초적인 부분인데 가끔씩 깜빡하는것 같다. 가상환경 사용시 유의하도록 하자.

https://github.com/he-dhamo/simsg GitHub - he-dhamo/simsg: Semantic Image Manipulation using Scene Graphs (CVPR 2020) Semantic Image Manipulation using Scene Graphs (CVPR 2020) - GitHub - he-dhamo/simsg: Semantic Image Manipulation using Scene Graphs (CVPR 2020) github.com Semantic Image Manipulation using Scene Graphs (CVPR 2020) 논문을 하나씩 스크래치로 구현하며 실험해보고자 library를 설치하는데 python 3.7 설치에서 자꾸 에러가 발..

export | grep SHELL 최근 맥북을 포멧하며 기본 설정이 날라갔다. 포멧을 한 계기는 환경변수가 꼬여서 더이상 커지다가는 스파게티나 꽈베기 노선과 같은 개발환경을 갖게 될거 같아 큰 결심을 하게 되었다. 유용한 기능중 하나인 vscode에서 git push시 내가 어떤 branch에 push하고 있는지 알려주는 설정인데, 맥 기본 shell이 bash에서 zsh로 바뀌면서 zsh를 기준으로 설정해야한다. 우선 어떤 기본 shell 설정을 사용하는지 확인해보자. export | grep SHELL 나는 zsh가 기본설정이므로 zsh를 기준으로 설명한다. vi ~/.zshrc vi로 zsh 설정파일을 편집해야 한다. 'i'를 누르면 insert라고 하단에 표시가 되면 수정이 가능하다. 빈공간에 ..
* : args, **:kwargs args는 가변인자들을 list형태로 input 받는다고 생각하면 쉽다. kwargs는 가변인자들을 dict형태로 input 받는다. def function1(*args): ... def function2(**kwargs): ... function1('a','b','c') function2(a = 'a',b = 'b', c = 'c') from [library] import * library에서 모든 내용을 import한다는 의미이다. 하지만 필요한 함수가 하나인 경우 그 함수명만 import하는게 최적화 면에서 좋다. 불러온 함수들 중 하나와 내가 설정한 변수명과 충돌이 생길수도 있다. function comment python 함수작성시 용이한 주석을 소개한다. d..
pip install -r requirements.txt pip 는 아주 효율적인 패키지 관리자이다. 하지만 가상환경을 사용하면서 pip와 conda의 설치 경로가 달라지는 문제가 발생한다. 그렇다면 위 명령어에서 pip를 conda로만 변경하면 가능할까? 불가능하다. -r 옵션은 pip에는 있지만 conda에는 없기 때문이다. 참고로 requirements.txt는 고유명사처럼 쓰이는건 아니고 관습적인 이름으로 쓰이는 파일로써 해당 프로그램을 실행하는데 필요한 library들과 호환 버전을 작성해놓은 text이다. conda를 이용하려면 아래 명령어를 사용하면 된다. while read requirement; do conda install --yes $requirement; done < requirem..

Tensorboard는 원래 tensorflow에서만 지원하던 데이터 흐름을 확인하기 위한 소프트웨어 프로그램이다. Pytorch도 지원이 된지는 오래된거 같은데 이제라도 알았으니 적극적으로 사용해야겠다. 가장 큰 장점 중 하나는 실시간성이다. 보통 loss나 특징 metric지표들을 실험이 모두 종료된 후에 보기 마련인데, tensorboard를 사용하면 실시간으로 loss가 어떻게 그려지는지 확인할 수 있다. 수치값도 좋지만 눈으로 확인 할 수 있다는 부분이 이해하기도 편하다. sin, cos 그래프 데이터를 tensorboardX로 살펴보자. 보통 log형식으로 파일에 입력하는 부분에 tensorboardX 코드도 아래와 같은 형식으로 작성하면된다. 다양한 기능은 Docs를 참고하자. https:/..

지긋지긋하게 괴롭히던 버그?오류를 해결했다. vscode를 설치할때 PATH 환경변수를 설정을 안하고 설치했는지 과거의 내가 어떻게 설치했는지 기억이 안나는데 간략히 버그를 설명하자면 아래와 같다. 본인은 anaconda를 이용해 가상환경에서 코드를 실행하고 있다. vscode에서 화살표 모양의 run code를 실행하면 python언어 또한 가상환경에 해당하는 언어로 선택되어 실행되는데 터미널에서 그냥 python으로 실행시 가상환경에서 설치한 python이 아닌 기존 path에 있는 python으로 실행되어 에러가 발생하였다. 확인 방법은 화살표를 이용해 실행하면 python 경로가 절대경로로 가상환경에 설치된 위치가 터미널에 뜬다. which python3 터미널의 경우 위의 코드를 실행하면 기본 ..
생성모델이 현재 AI분야를 휩쓸면서 프롬프트 엔지니어라는 직종도 생겨나고 있다. 프롬프트 엔지니어가 무엇인지 간략히 알아보자. 스타트업이나 기업에서 생성모델을 이용해 시장을 분석하거나 서비스에 활용하기 시작했다. 아직 완벽히 검증이 끝나지는 않았지만 기존의 성능만으로 충분히 시장성이 있다는 것은 확실하다. 현재는 모든 사용자들에게 많은 사용권한을 부여하고 있는데 생성모델은 상당히 무거운 모델이다. 훈련뿐만 아니라 실제 사용시에도 필요한 자원이 많은데, 이를 효율적으로 사용하기 위한 방법이 프롬프트 엔지니어링이고 이를 직종으로 하는 사람들이 프롬프트 엔지니어이다. 프롬프트란? GUI와 같이 마우스와 그래픽 정보로 상호작용하는 것이 아닌 CLI형식처럼 명령어를 통해 컴퓨터에게 지시하는 것을 의미한다. 개념을..