본문 바로가기

새우의 테크13

맥북에서 하드디스크 사용하기. 최근에 맥북을 백업할 일이 있어서 하드디스크를 연결했는데, 제 삼성 하드디스크는 NTFS (윈도우 계열 파일 시스템) 방식을 사용해서 맥북 파일을 하드 디스크로 옮기는게 불가능 하더군요. 이런일을 처음 겪어서 매우 당황스러웠습니다. 이제부터 맥북에서 NTFS 하드디스크를 사용하는 방법을 알아봅시다. 여러 방법을 찾아 보았지만, 가장 좋은 방법은 Mounty 라는 어플리케이션을 사용하는 방법입니다. 1. Homebrew 설치 우선 homebrew 가 설치되어 있지 않다면, 맥북 패키지 관리 도구인 homebrew를 설치해 줍시다. 저는 해당 내용은 다루지 않고, 설치 관련 링크 하나 남겨두겠습니다. 2. mounty 설치 brew install mounty 커맨드를 통해 mounty 를 설치해줍시다. 3... 2024. 1. 3.
[Pytorch] Pytorch DDP 사용해 multi-gpu 로 모델 학습시키기. Pytorch는 딥러닝을 위한 프레임워크로, 많은 사람들이 사용하고 있습니다. 그 중에서도 분산 학습을 위한 DDP(Distributed Data Parallel)는 많은 연구자들이 사용하고 있는데요. 오늘은 Pytorch DDP를 사용해 모델을 학습시키는 방법에 대해 알아보도록 하겠습니다. Pytorch DDP 모듈은 DP (Data Parallel)와 다르게 multi-node 에서도 사용이 가능하지만, 편의를 위해 하나의 노드, 여러개의 GPU를 가정하겠습니다. DDP는 무엇인가요? DDP는 분산 학습을 위한 방법 중 하나입니다. 분산 학습이란 여러 대의 컴퓨터를 사용해 모델을 학습시키는 방법으로, 빠른 학습이 가능합니다. DDP는 Pytorch에서 제공하는 분산 학습 방법 중 하나로, 여러 대의 .. 2023. 5. 6.
[ML] Bias - Variance Decomposition 유도 ML 모델의 관점에서 generalization error는 보통 다음과 같이 정의됩니다. y 는 ground truth 값을, x는 input, 그리고 h( ) 는 우리 모델의 hypothesis를 나타냅니다. 헌데 대부분의 경우 x의 true distribution을 전체 다 사용해서 모델을 학습하기는 어렵습니다. 그렇기 때문에 어떤 데이터를 사용해서 학습하냐에 따라 h( ) 함수의 bias 와 variance가 나타나게 됩니다. 1) Bias Bias 는 다음과 같이 정의됩니다. h_bar( ) 함수는 다양한 x의 distribution을 통해 학습시킨 h( ) 함수의 mean 값입니다. 결국 h( ) 함수가 평균적으로 true function 인 f( )와 얼마나 떨어져있는지 계산합니다. y 와 .. 2022. 10. 13.
[ML] RNN 에서의 gradient 계산 아래와 같은 RNN formulation에서의 gradient 계산은 어떻게 되는지 정리해 보겠습니다. Loss 는 Cross Entropy Loss를 가정하겠습니다. 간단한 Chain Rule을 통해 다음과 같이 계산할 수 있습니다. 마지막 외적으로 계산되는 항의 계산은 스킵했습니다. MSE loss 로하면 비슷하게 나올 것 같은데, CE loss 로 해도 동일하게 나오는지 나중에 따로 유도한다면 올리겠습니다. 여기서 눈여겨 볼 만한 부분은, V에 대한 gradient는 오로지 현재 state의 값들에만 의존한다는 것입니다. 좀 다르게, W에 대한 gradient는 뒷 state 에도 영향을 받습니다. 여기서 파랑 네모에 있는 부분을 보면, gradient가 이전 state들에서의 gradient의 곱.. 2022. 10. 11.
[Pip3] Python 3.9 configuration issue python 3.9 설치 후 사용 에러 아카이빙 Python 3.9 설치, pip3 설치 후 pip3 로 설치시, 1. Import Error: cannot import name 'sysconfig' from 'distutils' - apt install python3.9-distutils 다른 버전의 파이썬도 동일하게 해결 가능. 다시 설치 시도시 2. 'HTMLParser' object has no attribute 'unescape' - pip install --upgrade setuptools - pip install --upgrade pip 으로 해결. 2022. 9. 26.
[Git] fatal: branch could be both a local file and a tracking branch. Git checkout 을 하던 중 다음과 같은 에러가 발생했다. 찾아보니 원래 git checkout은 세 가지 역할을 가진다. if it's local branch or explicit remote branch, switch to it. if it's a tracked path, reset it if it's a remote branch, create a tracking branch and switch to it. (Reference: https://stackoverflow.com/questions/25322335/git-change-branch-when-file-of-same-name-is-present) 그래서 동일 이름의 폴더와 브랜치가 있어서 git checkout 커맨드가 ambiguous .. 2022. 9. 21.
[Paper] Diet Code Is Healthy: Simplifying Programs for Pre-Trained Models of Code 안녕하세요 왕새우 여러분, 오늘 살펴볼 논문은 2022년 ESEC/FSE에 발표될 Diet Code Is Healthy: Simplifying Programs for Pre-Trained Models of Code 입니다. Program Simplification을 통해 source code 관련 task 에서의 computation을 줄이는 것이 목표입니다. 요새는 Software Engineering task들을 해결하기 위해 언어 모델이 많이 사용되고 있습니다. 또한 모든 task에 대하여 전부 처음부터 학습시키는 경우보다 미리 어느 정도 학습을 시켜놓은 모델을 가져와서 학습을 시키는 pre-trained model을 많이 사용합니다. 헌데 본 논문은, 이러한 pre trained 모델을 학습시키.. 2022. 9. 2.
[Paper] Conditional Positional Encodings for Vision Transformers 오늘 훑어볼 논문은 'Conditional Positional Encodings for Vision Transformers' 이라는 논문입니다. 원래 ViT (Vision Transformers) 에서는 각 이미지를 자른 후, 이에 해당하는 predefined positional embedding을 넣어줍니다. (a) 사실 이러한 방식은 비전 분야에 국한된 것이 아니라, 다른 다양한 분야들에서도 비슷하게 적용되죠. 허나 본 논문에서는 predefine 된 pe가 아닌, learnable 한 pe를 사용하는 방법을 제안합니다. (b) 또한 레이어 하나를 제외하고, 마지막에 Global Average Pooling을 넣어주는 (GAP) 를 사용하면 퍼포먼스가 올라간다는 것까지 보여줍니다. (c) (논문에서 .. 2022. 8. 25.
[Python] ModuleNotFoundError: No module named '_sqlite3' Python3 에서 종종 등장한다. sudo apt-get install libsqlite3-dev 명령어를 통해 libsqlite3-dev 를 깔아준 후, 파이썬 홈페이지에서 버전에 맞는 python source를 받는다. 그리고 다시 설치해주면 완성. https://www.python.org/downloads/ ex) Python 3.8.1 의 경우 wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz tar xzf Python-3.8.1.tgz cd Python-3.8.1 ./configure --enable-loadable-sqlite-extensions && make && make install  2022. 8. 16.
[Dockerhub] Dockerhub 사용하여 쉽고 빠르게 환경 옮기기 안녕하세요 새우깡 여러분. 서버 작업을 하다보면, 많은 경우 환경 migration을 해야 하는 경우들이 있습니다. 물론 모두 새로 다 깔아도 되지만, 이러한 작업은 번거롭고, 원치 않는 버전 미스가 나기도 합니다. 만약 docker 작업을 하고 계신다면, dockerhub를 사용해서 환경 migration을 쉽게할 수 있습니다. Dockerhub 를 사용하면, 도커 이미지를 github 소스 코드 다루듯 다룰 수 있는데요, 간단한 예시를 통해 함께 실습해 봅시다. 1. Dockerhub 가입 - 우선 https://hub.docker.com/ 에 들어가, sign up을 해주도록 합시다. 2. Dockerhub에서 repository 생성 - github의 repo 처럼, image 를 관리하기 위한.. 2022. 8. 16.