Menu
-
이번에는 multi gpu를 사용하면서 나올 용어들과 개념들을 정리해보았다. multi gpu하면 꼭 같이 나오는 parallel을 data와 model로 나누어 정리하였다. 코드 Multi-GPU 원래 옛날에는 GPU를 어떻게 하면 적게 쓸까를 고민했지만 최근에는 성능에 초점을 두면서 엄청난 양의 GPU를 쓰고 있다. 용어 정리 Single : 1개 사용 vs Multi : 2개 이상 사용 GPU vs Node : Node는 1대의 컴퓨터를 말한다. Single Node Single GPU : 1대의 컴퓨터에서 1개의 GPU 사용 Single Node Multi GPU : 1대의 컴퓨터에서 여러 개의 GPU 사용 Multi Node Multi GPU : 서버실에서 여러 개의 GPU 사용 Model pa..
Multi-GPU, Parallel | 용어와 개념 간단한 코드[PyTorch] 와 함께 한방에 정리이번에는 multi gpu를 사용하면서 나올 용어들과 개념들을 정리해보았다. multi gpu하면 꼭 같이 나오는 parallel을 data와 model로 나누어 정리하였다. 코드 Multi-GPU 원래 옛날에는 GPU를 어떻게 하면 적게 쓸까를 고민했지만 최근에는 성능에 초점을 두면서 엄청난 양의 GPU를 쓰고 있다. 용어 정리 Single : 1개 사용 vs Multi : 2개 이상 사용 GPU vs Node : Node는 1대의 컴퓨터를 말한다. Single Node Single GPU : 1대의 컴퓨터에서 1개의 GPU 사용 Single Node Multi GPU : 1대의 컴퓨터에서 여러 개의 GPU 사용 Multi Node Multi GPU : 서버실에서 여러 개의 GPU 사용 Model pa..
2024.01.12 -
오늘은 PyTorch에서 쉽게 그래프 등 시각화하여 살펴볼 수 있는 방법들을 소개하려고 한다. 원래 matplotlib 밖에 모르던 때는 귀찮아서 잘 안그렸지만, 확실히 시각화해서 보는게 학습과정 이해에 필요한 것 같다. 아래의 도구들은 귀찮다라는 말을 달고 사는 내가 쓸 정도니까 대부분의 사람들은 좋아하지 않을까...?라는 생각이 든다.☺️ Monitoring tools 학습과정을 트래킹 하기 위한 도구들이다. Tensorboard Tensorflow의 프로젝트로 만들어진 시각화 도구이다. 학습 그래프, metric, 학습 결과의 시각화를 지원한다. Tensorboard 지원 도구 scalar : metric 등 상수 값의 연속(epoch 단위)을 표시한다. graph : 모델의 computationa..
PyTorch Monitoring tools | 학습과정 쉽게 그래프로 살펴보기오늘은 PyTorch에서 쉽게 그래프 등 시각화하여 살펴볼 수 있는 방법들을 소개하려고 한다. 원래 matplotlib 밖에 모르던 때는 귀찮아서 잘 안그렸지만, 확실히 시각화해서 보는게 학습과정 이해에 필요한 것 같다. 아래의 도구들은 귀찮다라는 말을 달고 사는 내가 쓸 정도니까 대부분의 사람들은 좋아하지 않을까...?라는 생각이 든다.☺️ Monitoring tools 학습과정을 트래킹 하기 위한 도구들이다. Tensorboard Tensorflow의 프로젝트로 만들어진 시각화 도구이다. 학습 그래프, metric, 학습 결과의 시각화를 지원한다. Tensorboard 지원 도구 scalar : metric 등 상수 값의 연속(epoch 단위)을 표시한다. graph : 모델의 computationa..
2024.01.12 -
모델 불러오기 학습 시키다가 갑자기 데이터가 모두 날아가는 경험 한 번씩은 있을 것이다... 이렇게 날아가지 않도록 중간중간 저장시켜주기 위해서 사용하는 함수가 save()이다. Model.save() 학습의 결과를 저장하기 위한 함수 모델 형태와 파라미터를 저장한다. 모델 학습 중간 과정의 저장을 통해 최선의 결과모델을 선택할 수 있다. 만들어진 모델을 외부 연구자와 공유하여 학습 재연경 향상시켜준다. 이 save함수를 사용하여 아래와 같은 코드를 쓸 수 있다. state_dict : 모델의 파라미터를 표시 load_state_dict : 같은 모델의 형태에서 파라미터만 load save(model.state_dict(),~) → 모델의 파라미터를 저장 save(model,~) → 모델의 archite..
PyTorch | Model save, checkpoints, freezing모델 불러오기 학습 시키다가 갑자기 데이터가 모두 날아가는 경험 한 번씩은 있을 것이다... 이렇게 날아가지 않도록 중간중간 저장시켜주기 위해서 사용하는 함수가 save()이다. Model.save() 학습의 결과를 저장하기 위한 함수 모델 형태와 파라미터를 저장한다. 모델 학습 중간 과정의 저장을 통해 최선의 결과모델을 선택할 수 있다. 만들어진 모델을 외부 연구자와 공유하여 학습 재연경 향상시켜준다. 이 save함수를 사용하여 아래와 같은 코드를 쓸 수 있다. state_dict : 모델의 파라미터를 표시 load_state_dict : 같은 모델의 형태에서 파라미터만 load save(model.state_dict(),~) → 모델의 파라미터를 저장 save(model,~) → 모델의 archite..
2024.01.12 -
PyTorch Dataset & DataLoader 이번 포스팅은 PyTorch에서 Dataset과 DataLoader 객체에 대한 내용이다. 만약 파이토치에서 자신의 데이터셋을 쓰기 위해서는 꼭 필요한 부분이라고 생각한다. PyTorch의 데이터셋 처리 과정 파이토치 데이터는 아래와 같은 과정으로 사용한다. collecting/cleaning/pre processing ⇒ Data ⇒ Dataset
PyTorch | Dataset & DataLoaderPyTorch Dataset & DataLoader 이번 포스팅은 PyTorch에서 Dataset과 DataLoader 객체에 대한 내용이다. 만약 파이토치에서 자신의 데이터셋을 쓰기 위해서는 꼭 필요한 부분이라고 생각한다. PyTorch의 데이터셋 처리 과정 파이토치 데이터는 아래와 같은 과정으로 사용한다. collecting/cleaning/pre processing ⇒ Data ⇒ Dataset
2024.01.12 -
AutoGrad & Optimizer 오늘은 PyTorch에서 AutoGrad와 Optimizer를 위해서 사용되는 객체과 함수들을 소개할 예정이다. nn.Module 딥러닝을 구성하는 Layer의 base class이다. Input, Output, Forward, Backward 정의한다. 학습이 되는 Parameter로 정의가 된다. 그러면 이제 weight를 정의를 해야하는데 이는 nn.Parameter로 정의된다. nn.Parameter Tensor 객체의 상속 객체이다. nn.Module 내에 attribute 가 될 때는 required_grad=True로 지정되어 학습의 대상이 되는 Tensor이다. 직접 설정하는 일은 잘 없다. 이 객체를 사용하지 않고 Tensor를 사용하면 자동미분이 되..
PyTorch | nn.Module, Parameter, BackwardAutoGrad & Optimizer 오늘은 PyTorch에서 AutoGrad와 Optimizer를 위해서 사용되는 객체과 함수들을 소개할 예정이다. nn.Module 딥러닝을 구성하는 Layer의 base class이다. Input, Output, Forward, Backward 정의한다. 학습이 되는 Parameter로 정의가 된다. 그러면 이제 weight를 정의를 해야하는데 이는 nn.Parameter로 정의된다. nn.Parameter Tensor 객체의 상속 객체이다. nn.Module 내에 attribute 가 될 때는 required_grad=True로 지정되어 학습의 대상이 되는 Tensor이다. 직접 설정하는 일은 잘 없다. 이 객체를 사용하지 않고 Tensor를 사용하면 자동미분이 되..
2024.01.12 -
PyToch Basic 우선 파이토치에서는 Tensor의 구조를 사용한다. 그리고 numpy 기능들을 거의 다 지원한다. Tensor numpy의 ndarray와 비슷하다. import torch t_array = torch.FloatTensor(n_array) 이외의 Data to Tensor, ndarray to tensor방법 등이 있다. GPU 사용 ~.device를 하면 cpu인지 gpu 사용중인지 알 수 있다. if torch.cuda.is_available(): data_cuda = data.to('cuda') data_cuda.device 위의 코드로 gpu사용 가능하면 gpu로 바꾸도 아니라면 cpu를 그대로 출력한다. Tensor Handling view reshape과 비슷하고 ten..
PyTorch BasicPyToch Basic 우선 파이토치에서는 Tensor의 구조를 사용한다. 그리고 numpy 기능들을 거의 다 지원한다. Tensor numpy의 ndarray와 비슷하다. import torch t_array = torch.FloatTensor(n_array) 이외의 Data to Tensor, ndarray to tensor방법 등이 있다. GPU 사용 ~.device를 하면 cpu인지 gpu 사용중인지 알 수 있다. if torch.cuda.is_available(): data_cuda = data.to('cuda') data_cuda.device 위의 코드로 gpu사용 가능하면 gpu로 바꾸도 아니라면 cpu를 그대로 출력한다. Tensor Handling view reshape과 비슷하고 ten..
2024.01.12 -
파이토치와 Tensorflow차이 팀플하다 보면 파이토치를 쓸지 텐서플로우를 쓸지 정하는데, 나는 파이토치를 주장하는 편이다. 사실 그 이유는 최근에 자주 사용하는 게 파이토치여서 그렇긴 한데😂 그러면 꼭 둘이 뭐가 다르냐는 질문을 받는다. 그럴 때 답변하기 위한 포스팅이라고 할 수 있다.😎 DCG(Dynamic Computational Graph) Backward에서 자동미분할때 실행시점에서 그래프를 정의하는 방법이다. Define and run 말 그래도 정의하고 실행하는 것이다. 그래프를 먼저 정의 → 실행시점에 데이터를 feed한다. TF, Pytorch Pytorch는 Define by run(DCG)를 사용하여 실행하면서 그래프를 생성하고 Tensorflow는 Define and run으로 실..
PyTorch vs Tensorflow | PyTorch✋파이토치와 Tensorflow차이 팀플하다 보면 파이토치를 쓸지 텐서플로우를 쓸지 정하는데, 나는 파이토치를 주장하는 편이다. 사실 그 이유는 최근에 자주 사용하는 게 파이토치여서 그렇긴 한데😂 그러면 꼭 둘이 뭐가 다르냐는 질문을 받는다. 그럴 때 답변하기 위한 포스팅이라고 할 수 있다.😎 DCG(Dynamic Computational Graph) Backward에서 자동미분할때 실행시점에서 그래프를 정의하는 방법이다. Define and run 말 그래도 정의하고 실행하는 것이다. 그래프를 먼저 정의 → 실행시점에 데이터를 feed한다. TF, Pytorch Pytorch는 Define by run(DCG)를 사용하여 실행하면서 그래프를 생성하고 Tensorflow는 Define and run으로 실..
2024.01.12 -
가끔 내가 짠 코드도 아닌데 에러 났다고 하고... 그냥 다른 거 하나 고쳐봤는데 디버깅이 되는 어이없는 상황들을 마주하기 쉽다. 이번 포스팅은 그 늪에서 탈출하기 위한 방법들이다. Troubleshooting OOM (Out-Of-Memory) 이런 문제는 왜 발생했는지, 어디서 발생했는지 알기 어렵다... Error backtracking이 이상한데로 갈 때도 있고 메모리 이전 상황을 파악하기도 어렵다. 그러면 이런 문제들은 어떻게 해결할까? 가장 기본적인 방법으로는 Batch Size 줄이고 ⇒ GPU clean ⇒ RUN GPU Util 사용하기 nvidia-smi 처럼 GPU의 상태를 보여주는 모듈이다. Colab 환경에서 GPU상태 보기 편하다. Iter마다 메모리가 늘어나는지 확인할 수 있다..
[PyTorch] Error 늪에서 빠져나오기 | Troubleshooting, OOM, GPU Util가끔 내가 짠 코드도 아닌데 에러 났다고 하고... 그냥 다른 거 하나 고쳐봤는데 디버깅이 되는 어이없는 상황들을 마주하기 쉽다. 이번 포스팅은 그 늪에서 탈출하기 위한 방법들이다. Troubleshooting OOM (Out-Of-Memory) 이런 문제는 왜 발생했는지, 어디서 발생했는지 알기 어렵다... Error backtracking이 이상한데로 갈 때도 있고 메모리 이전 상황을 파악하기도 어렵다. 그러면 이런 문제들은 어떻게 해결할까? 가장 기본적인 방법으로는 Batch Size 줄이고 ⇒ GPU clean ⇒ RUN GPU Util 사용하기 nvidia-smi 처럼 GPU의 상태를 보여주는 모듈이다. Colab 환경에서 GPU상태 보기 편하다. Iter마다 메모리가 늘어나는지 확인할 수 있다..
2024.01.12