목록전체 글 (291)
개발자로 후회없는 삶 살기
서론Multi Node Single GPU 환경에서 GPU를 효율적으로 사용하기 위해서 GPU 풀을 구현해봅니다. Spring 쓰레드 풀과 같은 개념으로 GPU를 미리 할당 받아서 모아 두어 효율적으로 사용하기 위한 목적으로 볼 수 있습니다. 본론- 구현 목적다수의 GPU로 모델 학습을 돌리다보면 GPU를 100% 효율적으로 사용하기 어려울 수 있고, 프로젝트 종료 후에 실제 학습을 돌린 시간을 보면 절반도 안되는 경우가 있습니다. 그 이유는 누군가는 모델을 안 돌리고 있을 수 있고, 누군가는 모델을 돌리고 싶지만 현재 자신의 GPU를 돌리고 있어서 다른 실험을 할 수 없을 수 있습니다. 이렇게 되면 GPU utilization이 떨어집니다. 따라서 6개의 GPU의 사용성을 올리기 위해서 개개인의 GPU..
서론 이번주는 새로운 이벤트가 많은 주였습니다. 기록하는 마음으로 회고합니다. 본론 - 확률 분포를 모델링하라 5주 차에 들어서기까지 다양한 강의와 과제를 하고 확률 분포를 모델링한다는 문장을 셀 수도 없이 많이 들었지만 정확히 그게 어떠한 의미, 메커니즘인지 이해를 못 했었습니다. 마치 경사하강법을 처음 배울 때 최소값을 가지는 최적의 W를 찾아서 기울기를 따라 이동한다고 하긴 하는데 Cost 함수의 X, y축이 무엇인지 모르고 도대체 어떻게 최솟값을 찾아가는지 추상적으로만 알고 있던 상황과 비슷했습니다. 하지만 이번에 배운 Hourglass 모델을 통해 확률 분포를 모델링하고 정규분포가 되도록 모델링하고 두 분포의 KL 발산을 최소화한다는 것에 다시 한 번 생각해 보게 되었습니다. 저는 항상 공부를 ..
서론 모델 학습에서 가장 중요하다고 할 수 있는 데이터, 그러한 데이터를 불러오고 배치 사이즈만큼 feeding 할 수 있는 데이터셋과 데이터 로더를 깊게 다뤄봅니다. 본론 - 데이터 셋과 데이터 로더를 극한으로 공부해보자 1) 데이터 초기화하여(대입) x, y 정의하기 2) 데이터를 읽기 데이터 셋의 역할은 다음과 같습니다. 1. __init__ 데이터의 타입(자연어, 이미지)에 따라 다르지만 보통 이미지의 경우 학습할 데이터의 경로를 적습니다. 또한 증강 정의, 컬럼 삭제 등 초기화 작업을 수행합니다. 이처럼 정형 데이터라면 데이터를 읽어서 x 변수 y 변수를 초기화할 수 있고 이미지 데이터라면 데이터를 읽어서 증강을 선언하는 것이 일반적입니다. 2) __len__ 이것은 단순하게 총 길이를 나타내면..
🚨 서론 (문제 상황)네이버 부스트캠프에서 제공하는 프로젝트는 위와 같이 하나의 파일로 존재합니다. 이를 6명의 팀원이 관리해야 하면 어떤 문제점이 발생할까요? 1) 파일 충돌2) 디렉토리 충돌위와 같은 간단한 충돌은 당연히 일어나고 가장 큰 문제는 train.py가 하나의 파일로 존재하기 때문에 발생합니다. if args.dataset in ['MultiLabelSplitByProfileDataset','MaskMultiLabelDataset']: multilabel_train(data_dir, model_dir, args)else: train(data_dir, model_dir, args)train.py에서 하나의 베이스 프로세스를 실행하기 때문에, 모든 학습 모듈 (데이터 로더, 데이터..
서론 이번 과제로 논문 구현이 취미셨던 김태훈 님의 마음을 느껴봅니다. 본론 - 전체 코드 https://github.com/SangBeom-Hahn/Practical_Pytorch/blob/main/model/model.py 1. 논문 읽기 -> 1회독 Abstract > Introduction > figures > conclusion 빠른 구현 가능성 파악과 프로토타입 제작을 위해서, 전체 논문을 읽는 것이 아니라 논문을 기재한 기관이 어디인지, 코드를 제공하는지 확인하고 위 4단계를 빠르게 속독합니다. -> 2 회독 Task > Approach > Experiments 1 회독을 완료하고 코드도 실행해 보았다면, 더 높은 성능과 이슈 사항을 파악하기 위해 2 회독을 진행합니다. 저자가 발견한 문제들..
서론 본격적으로 도입한 CV 고급 이론 학습을 회고합니다. 본론 - 얕은 지식 부수기 Version.2 ✅ 컴퓨터 비전의 근현대사를 이해하는 과정에서 이미지 분야 딥러닝의 근본적인 고민과 해결 방안을 고찰하고 깨닮음을 얻는 것이 여러 번 있었습니다. 1) 이미지 분류는 어떤 영상에 어떤 클래스가 들어있는 지 찾는 것이다. 2) 만약 모든 종류의 데이터를 가지고 있다면 분류 문제가 KNN 검색 문제가 된다. 3) NN은 방대한 데이터를 제한된 하드웨어에 압축해 넣은 것이다. 4) 학습 데이터는 인간이 보기 좋게 찍은 편향 데이터인데 실제 상황에서는 그 외 다양한 입력이 들어온다. 누군가에는 당연히 그런 것 아닌가라고 느껴질 수 있는 주제이지만 제게는 원래 알고 있던 지식을 다른 시각으로 볼 수 있는 좋은 ..
서론 개인적으로 공부하고 있는 우아한 테크코스 로또 문제에서 발생한 소수점 계산 문제를 해결합니다. 본론 - float과 double의 문제점 float와 double은 정확한 값이 아닌 근삿값을 담고 있는 문제가 있습니다. -> 고정 소수점과 부동 소수점 1) 고정 실수를 부포비트, 정수부, 소수부로 나누고 자릿수를 고정하여 실수를 표현하는 방식입니다. ex) 7.75 = 111.11(2) 7.75는 실수를 2진수로 변환하면 111.11이 되는데 이를 정수부와 소수부로 나눠서 담아 표현합니다. 구현법이 간단하지만, 자릿수 제한이라는 단점이 있습니다. 2) 부동 실수를 부호부, 가수부, 지수부로 나누는 방식입니다. ex) 12.3456 = 0.123456 * 10^2 12.3456를 0.123456 * ..
서론 본격적으로 딥러닝을 파헤쳐보는 3주차 느낀점을 기록합니다. 본론 - 얕은 지식 부수기 🚨 딥러닝의 기본적이자 필수가 되는 원리를 배우며 제가 가지고 있던 지식을 검증하고 새로운 사실을 배우는 시간을 가졌습니다. 결정적으로, 제가 "그러려니~" 알고 있던 얕은 지식을 부수고 보다 디테일한 사실을 습득할 수 있었습니다. 부스트캠프가 정말로 전문가를 양성하는 과정임을 제대로 느끼는 시간이었습니다. 1) cnn의 모토는 깊이는 깊게 하면서 w를 줄여 일반화 성능을 높이는 것 2) w가 적을수록 성능이 좋아서 최신 트렌드는 앞 단의 conv를 깊게 쌓고 뒷단의 fc를 얕게 쌓는 것 3) w의 수를 줄이기 위해 1 by 1으로 채널을 줄일 수 있고 최신 모델들은 3, 5, 7 보다 큰 필터 사이즈를 쓰지 않았..