728x90

DEEPLEARNING 23

[Paper Review] BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation (ICML'22)

오늘 리뷰할 논문은 22년도 ICML에서 발표된 BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation 입니다. 기존의 VLP 연구의 한계를 모델, 데이터 두 가지 관점에서 설명하며 이를 보완한 unified VLP framework를 제안합니다. 실험 결과가 매우 강력했지만, dataset bootstrapping으로 얻은 효과 이외에도 구조 자체의 이점 또한 있었던 것 같습니다. Training cost (time)에 대한 이야기가 있었다면 bootstrapping에 대한 정당성이 조금 더 높아지지 않았을까 합니다. 후속 연구인 BLIP2에서는 end-to-end pre..

[Paper Review] Masked Autoencoders Are Scalable Vision Learners (CVPR'22)

오늘 리뷰할 논문은 Masked Autoencoders Are Scalable Vision Learners (a.k.a. MAE)입니다. 22년도 CVPR에서 oral presentation으로 선정된 논문이며, Masked Modeling을 아주 간단한 방식을 통해서 Vision 분야의 self-supervised pre-training에 성공적으로 적용한 논문입니다. 이 방법론은 Simple, effective, scalable하다고 정리할 수 있겠습니다! 하기할 내용에 오류 혹은 질문이 있을 경우 언제든 댓글 부탁드립니다! Abstract We mask random patches of the input image and reconstruct the missing pixels based on two ..

[Paper Review] UNIFIED-IO: A Unified Model For Vision, Language, And Multi-Modal Tasks (ICLR'23)

오늘 리뷰할 논문은 ICLR'23에 notable top 25%로 선정된 Unified-IO: A Unified Model For Vision, Language, And Multi-Modal Tasks 라는 논문입니다. 논문에서는 하나의 모델로 기존의 연구에서 다루던 task보다 많은 range의 task를 다루는 unified architecture를 제안합니다. 아이디어는 간단합니다. Encoder-decoder 구조를 통해 architecture에 있어서 unification을 이루면서도 다양한 input, output을 generate할 수 있게 모두 discrete tokenization을 통해서 architecture에 feed하겠다는 것입니다. 대략 30억개의 파라미터를 갖는 XL 모델을 p..

[Paper Review] Patch-level Representation Learning for Self-supervised Vision Transformers (CVPR'22)

오늘은 CVPR 2022에서 oral presentation으로 선정된 논문인 Patch-level Representation Learning for Self-supervised Vision Transformers (a.k.a. SelfPatch) 를 리뷰해보도록 하겠습니다. 기존의 SSL ViT 아키텍처가 모두 global representation만을 loss에서 활용된다는 점을 이야기하면서 이러한 부분은 attention의 collapse로 이어지며 representation quality를 떨어뜨린다고 문제를 제기하고 있습니다. 해당 논문은 ViT 아키텍처에서 손쉽게 patch representation을 얻을 수 있음에도 불구하고 이러한 부분은 전혀 활용되지 않고 있다는 점에서 출발하여, ViT..

[Pytorch] Distributed Data Parallel (multi-gpu 학습)

오늘은 여러 gpu 디바이스에서 분산 학습을 수행하는 방법을 정리해보겠습니다. 하기한 내용에 오류가 있을 경우 댓글 부탁드립니다. How to parallel Model parallel 모델을 쪼개서 여러 gpu (병렬적)로 뿌려주는 경우입니다. model이 너무 커서 하나의 gpu 메모리가 충분하지 못할 때의 문제인 것 같습니다. 1번 디바이스에서는 전체 forward process의 part1을 맡고, 2번 디바이스에서는 part2를 맡는 방식으로 분산 학습이 진행됩니다. 간단히 코드를 작성해보면 아래와 같습니다. class ModelParallel(nn.Module): def __init__(self, *args, **kwargs): super(ModelParallel, self).__init__(..

[Pytorch] 여러 gpu 사용할 때 torch.save & torch.load (feat. map_location)

굳이 multi-gpu에서 분산 학습을 한 게 아니더라도, 여러 gpu를 사용할 수 있는 환경이라면 한 번쯤 겪어볼 만한 error에 대한 해결책 정리. 0번 gpu에서 모델을 학습시키고 torch.save를 통해 저장한 상황이라고 할 때, 1번 gpu에서 torch.load를 통해 해당 weight을 가져와서 학습을 재개하고자 하는 경우 혹은 재학습시키고자 하는 경우 device가 일치하지 않는다는 error가 뜨는 경우가 존재함. 이는, torch.save를 통해서 모델을 가져올 때 map location을 지정해주지 않아서 생기는 문제. torch DDP docs를 보다가 아래와 같은 note를 발견함. If you use torch.save on one process to checkpoint th..

[Paper Review] MLP-Mixer: An all-MLP Architecture for Vision

MLP-Mixer: An all-MLP Architecture for Vision 이번에 리뷰할 논문은 "MLP-Mixer: An all-MLP Architecture for vision" 입니다. 현재 convolution과 attention 기반의 네트워크가 computer vision 분야에서 널리 사용되고 있지만 실상 이 두가지가 꼭 필요한 것은 아니라고 주장하며, 아키텍처 전체가 MLP만을 사용한 MLP-Mixer 구조를 제안하였습니다. MLP-Mixer는 기존의 Convolution과 Attention 모듈 없이 MLP만으로 Image Recognition을 잘 수행할 수 있도록 다음과 같이 두 가지 MLP Block으로 구성된 Mixer Layer를 제안합니다. Channel-Mixing M..

[Pytorch] model.zero_grad() vs. optimizer.zero_grad()

gradient accumulation 관련 코드를 찾아보다 model.zero_grad()를 처음 보게 되어서 글 짧게 남깁니다. def train(opt): optimizer = torch.optim.Adam(model.parameters(), ...) for epoch in opt.n_epochs: model.train() for step, batch in enumerate(train_loader): optimizer.zero_grad() x, y = batch[0].to(opt.device), batch[1].to(device) output = model(x) loss = criterion(output, y) loss.backward() # backward 시 gradient가 계산되며 텐서의 g..

[Paper Review] Vision Transformer (ViT)

AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE 오늘 리뷰할 논문은 Vision Transformer입니다. 이미지 분류에 Transformer 구조를 성공적으로 적용시킨, 매우 유명한 논문입니다. 2021년 ICLR에서 발표된 이후, 현재 ViT 관련 많은 후속 연구들이 진행되고 있으며 ViT를 backbone으로 한 다양한 architecture들이 기존의 CV task를 푸는 솔루션으로 제안되고 있습니다. ViT는 inductive bias가 약한 대신 보다 통합적이고 일반적인 모델 구조라고 할 수 있으며, inductive bias가 약하여 일반화 성능이 떨어지는 문제를 data-driven training, 즉..

728x90