2월 3주차 그래프 오마카세

2월 3주차 그래프  오마카세

Perturbed Self-Distillation: Weakly Supervised Large-Scale Point Cloud Semantic Segmentation

배지훈

ICCV 2021

Paper Link

Official Code

Keywords : Large scale pointcloud segmentation, Weakly-supervised learning, Graph topology learning, Perturbed self-distiliation (PSD)

[Content]

Background

  • 자동주행, HCI (Human-computer interation), 로보틱스 분야 등에서 많이 활용되는 포인트 클라우드와 의미론적 분할 문제 (Semantic Segmentation)는 일반적으로 거대 스케일, 즉 수많은 개수로 구성되어 있으며, 연산 메모리 측면에서의 효율적인 딥러닝 학습을 위한 Large scale pointcloud processing & segmentation 방법들이 많은 주목을 받아오고 있습니다.
  • PointNet와 같은 선행 연구들의 포인트 레벨단에서의 처리 방법론들은 작은 크기(small-scale)의 포인트 클라우드 처리에 특화되어 있기에, 거대 스케일 포인트 클라우드 처리에 적합하지 않습니다. 따라서 RandLA-Net과 같은 효율적으로 거대 스케일 포인트 클라우드를 처리하는 방법론이 떠오르고 있습니다.

Problems

  • 본 논문의 저자들은 완전-지도학습(Fully supervised learning) 기반 RandLA-Net의 막대한 어노테이션 비용 및 노동력 등을 지적합니다. 즉 엄청나게 많은 포인트들의 레이블 지정을 하나하나 메뉴얼하 지정해줘야하는 문제점이 있다는 것입니다.
  • 예를 들어, 거대 스케일 포인트 클라우드 데이터셋 중 하나인 ScanNet의 어노테이션을 위한 시간적 비용은 한 장면당 약 22.3분이 소요된다고 합니다. 학습을 위한 상당히 비효율적이고 값비싼 노력들이 반드시 요구되어진다는 것입니다. 또한 잘못 어노테이션 된 레이블이 없다는 장담조차 하지 못합니다. 다음은 일반적인 완전-지도학습의 대표적인 문제점입니다.
Fig 1 : 완전 지도학습 기반의 RandLA-Net이 소수 레이블만 존재하는 데이터셋 상에서는 분할 성능의 한계가 있다는 보여주고 있습니다.
  • 완전 지도학습의 다음 문제점을 해소하고자, 약한 지도학습 (Weakly-supervised learning) 방법들이 제안되고 있으나, 수많은 포인트들의 부족한 레이블 정보로 인하여 학습 가능한 토폴로지 관계 정보가 부족하고, 라플라시안 행렬의 높은 연산 복잡도가 수반되는 문제가 존재합니다.
  • 게다가, 다음 방법은 오직 포인트 레벨에서만 지도학습을 수행하기 때문에 포인트의 컨텍스트(Contextual) 정보를 모델링하기 쉽지 않다는 점을 본 논문에서 지적합니다.

Idea

  • 자기지도 학습(Self-supervised learning)의 성공적인 결과들에 영감을 받아서, 해당 저자들은 위에서 지적한 약한-지도학습 방법의 2가지 중요한 문제들을 해결하기 위한 섭동된 자기증류 프레임워크(Perturbed Self-Distilation framework, PSD)를 제안합니다.
  1. 어떻게 비레이블 포인트를 위한 보조적인 지도학습 방법을 설계하여 잘 형성된 포인트 그래프 토폴로지 구조를 구축할 수 있을까?
  2. 단순 포인트 레벨에서 지도학습 방법을 너머, 어떻게 레이블 포인트들 사이의 관계성을 모델링하기 위한 컨텍스트 정규화를 파생시킬 것인가?

1) 첫번째 질문의 해답

    • 원본 포인트 클라우드 브랜치 (Branch)의 분포를 일관되게 유지하도록 강제시키며, 다음 포인트를 섭동시킨 섭동 브랜치(Perturbed branch)를 생성합니다.
    • 원본 포인트의 분포를 따르도록 강제하는 것은 추가적인 지도학습력을 부여하게 해주며, 이러한 섭동된 포인트의 그래프를 형성하고 그래프 컨볼루션을 도입하였을 때 모든 포인트 사이의 잘 표현된 그래프 토폴로지 정보를 학습할 수 있습니다.
    • 또한 학습된 토폴로지 정보를 바탕으로 원본 및 섭동 포인트 브랜치 간의 상호작용을 파생시켜서 레이블 및 비레이블 포인트 간의 정보흐름(Information flow)을 가능케 만들어줍니다.

2) 두번째 질문의 해답

    • 본 저자들은 추가적인 컨텍스트 모듈을 도입하여, 이전의 형성된 그래프 토폴로지를 추가 정제시킵니다.
    • 다음 모듈은 레이블 포인트들의 의미론적 선호도 상관성을 인코딩하여 특징 상관관계 학습을 지도하게 됩니다.
    • 레이블 포인트들 또한 구축한 그래프 토폴로지 상에 분포되어있기 때문에, 만약 레이블 포인트들 서로의 관계성이 어느정도 정확하다는 것이 보장되어진다면 비레이블 데이터의 분류 결과에도 긍정적인 영향을 가져올 수 있다는 핵심 가정으로부터 설계되어집니다.
    • 위 내용을 짧게 정리 요약하자면 이렇게 설명할 수 있습니다.

약한 지도학습 환경에서, 우리는 포인트 클라우드 분할을 위한 강건한 특징 표현을 만들기 위해 다음 2가지 방법을 고려한다.

a. 레이블 및 비레이블 포인트 간의 정보교환을 할 수 있는 멋진 그래프 토폴로지 구축을 위해 약한 지도학습 방법의 보조(추가적인) 지도학습력을 추가함

b. 비레이블 포인트에서의 성능 향상을 위해 다음 그래프 토폴로지를 정제하는 컨텍스트 모듈을 도입함

Idea Details

Fig 2 : (윗 부분) 원본 및 섭동 포인트 클라우드 처리. (아랫 부분) 컨텍스트 모듈 도입
  • Fig 2는 본 논문 아이디어의 전체 프레임워크입니다. 복잡해 보이는 구조처럼 보이지만, 간단하게 윗 부분은 첫번째 질문의 해답인 원본 및 섭동 포인트 브랜치 처리 단계, 아랫 부분은 두번째 질문의 해답인 컨텍스트 모듈의 동작 단계를 보여주고 있습니다.

그림에서 저자들은 백본 모델로 RandLA-Net, GCN 모델로 EdgeConv를 채택하였으며, 두가지 브랜치 모두에 동일한 모델을 사용하여 학습 가중치를 공유하도록 설계합니다. 또한 그래프 형성을 위해 단순하고 효율적인 KNN 알고리즘을 사용하였습니다.

  • 저자들은 다음 프레임워크를 설계하기 위한 2가지 핵심 질문을 던집니다.
  1. 어떻게 섭동된 포인트 브랜치를 형성할까?
  2. 원본 및 섭동 브랜치 간의 상호작용을 어떻게 모델링할 것인가?

1) 첫번째 핵심 질문의 해답

    • 포인트 섭동은 자기 증류 학습에 중요하기 때문에, 강한 섭동은 네트워크 수렴의 어려움을 초래할 수 있으며, 약한 섭동은 성능을 나쁘게 만들 수 있다는 점을 고려합니다.
    • 따라서, 저자들은 3가지 변환, 장면 별 변환(Scene-wise transformation), 좌표 기반 포인트 별 변위(Point-wise displacement), 그리고 속성 어텐션(attribute attention)을 혼합한 연산자를 학습하도록 설계합니다. 변환 연산자에 대한 자세한 설명은 해당 논문을 참고하시기 바랍니다.
    • 이렇게 섭동시킨 포인트의 분포를 원본 포인트 분포와 유사하도록 강제시키기 위해, 다음 변환 연산자의 학습은 Jenson-Shannon divergence 기반 자기증류학습 loss로 진행됩니다. 다음 Loss 함수는 식 (4)로 공식 정의됩니다.

2) 두번째 핵심 질문의 해답

    • 비록 소수의 레이블 포인트들이 거대 스케일포인트 클라우드의 특성을 담기엔 턱없이 부족하지만, 저자들은 레이블 포인트들 사이의 코사인 유사도 기반 컨텍스트 정보(Affinity Contextual information)에 집중하여, 먼저 식 (5)를 통한 Point Affinity 행렬을 얻어냅니다.
    • 레이블 포인트들의 해당 레이블 정보를 식 (6)의 연산을 통해 포인트 상관관계 설명자 (Point correlation descriptor)를 추가하고, Affinity Loss (식 (7~10) 참고)를 통해 Point Affinity 행렬의 가중치 학습을 진행합니다.
  • 이러한 전체 학습 과정을 End-to-End로 진행하기 위한 Total Loss는 식 (11~12)를 참고하시기 바랍니다.

Experiment Results

  • 정량적 결과
Table 1. mIOU 평가지표를 토대로, 기존의 완전 지도학습 기반 (Fully) 포인트 분할 모델 및 약한 지도학습 (Weakly) 기반 소수 레이블 포인트 개수 (10%, 1%, 1% 미만)의 각각 환경 모두에서 제안하는 PSD 방법이 가장 좋은 결과를 얻어냄
Table 2. Large Scale Pointcloud의 벤치마크 데이터셋 (S3DIS, ScanNet, Sem3D) 모두에서 약한 지도학습 기반의 제안 PSD 방법이 다른 약한 지도학습 모델들의 성능보다 향상된 결과를 얻어
    • 완전 지도학습 모델들보다는 약간 떨어진 결과를 보이긴 하였으나, 모든 포인트들이 아닌, 소수의 적은 레이블 포인트만 가지고도 그와 비슷한 성능을 보여주었다는 점에서 주목할만한 결과라 할 수 있겠습니다.
Table 4에서는, 완전 지도학습 기반 모델인 RandLA-Net와 제안 PSD 모델의 학습 시간 및 파라미터 수, 테스트 소요 시간(초)등을 비교분석한 결과
    • PSD은 백본 모델로 동일한 RandLA-Net을 사용하였으며, 추가적으로 GCNs 모델 (EdgeConv)을 추가하였기에 학습 및 추론 시간, 파라미터 수가 많았지만, 저자들은 기존 RandLA-Net과 비슷한 학습 성능을 보여주었다는 점에서 그 효율성을 강조하였습니다.
  • 정성적 결과
Fig 3. ScanNet-v2 벤치마크 데이터셋의 원본 포인트 클라우드 및 1% 레이블 포인트를 사용하여 의미론적 분할을 수행한 결과
    • 전체 포인트 클라우드 포인트가 아닌, 소수의 1% 포인트만 사용하여 분할한 결과임에도 원본과 유사한 결과를 얻어내었다는 점에서 주목할만한 부분입니다.

Conclusion

  • 본 논문의 저자들은 거대 스케일 포인트 클라우드 처리의 완전 지도학습 기반 문제점을 지적하고, 이를 완화하고자 한 약한 지도학습 기반의 문제점을 해결하기 위해, 원본 및 섭동 포인트 브랜치들의 그래프 토폴로지 학습과 추가 컨텍스트 모듈을 설계 & 통합한 프레임워크 PSD를 제안하였습니다.
  • PSD의 핵심은 그래프 토폴로지 학습을 통해 비레이블 포인트와 레이블 포인트 간의 정보교환을 가능하게 하여 약한 지도학습에 보조 지도학습력을 부여한 것이라고 생각합니다.
  • 개인적으로 다음 논문을 통해 포인트 클라우드 처리 및 학습에서의 그래프 컨볼루션의 강점을 확인할 수 있어서 이번주 오마카세로 소개드리고자 결정하였습니다.
  • 제가 눈여겨 본 부분은 포인트 클라우드 상 구축된 그래프 토폴로지 학습을 위해 기존 모델에 추가 GCN을 붙여 사용하였음에도 RandLA-Net과 학습 파라미터 및 소요시간에 큰 차이를 주지 않고도 더욱 효과적인 데이터 활용 및 성과를 얻어낼 수 있다는 점이었습니다.
  • 하지만 한 눈에 제안 PSD의 모델 구조를 이해하기에 어려움이 있어서 다음 논문을 읽어보시게 된다면, 설명과 Fig 2의 전체 프레임워크를 참고해가시면서 읽어보실 때 이해가 수월하실거라 생각합니다.

[Contact Info]

Gmail

LinkedIn

Twitter (X): @jhbae1184


GraNNDis: Efficient Unified Distributed Training Framework for Deep GNNs on Large Clusters

정이태

[Content]

Paper Link

  • 거대 그래프 데이터를 학습하기 위해 필연적으로 마주하는 GPU 엔지니어링 문제, 좋은 Multi-GPU를 활용한다고 해서 '잘' 학습할 수 있을까요? Multi-GPU 서버에서 GNN 을 학습할 때 생각하던 message passing 이 구체적으로 어떻게 GPU에서 연산하는지 그리고 어떻게 서버간 자원을 적재적소로 활용하는지 오늘 소개 시켜드릴 논문 GraNNDis 를 통해 알아보겠습니다.
  • 딥러닝 모델을 연구 및 활용하기 위해 파라미터당 VRAM 몇 기가 필요한지 고민에 고민을 거듭하며 컴퓨터 환경을 구축한 경험 다들 있으실겁니다. 혹은 클라우드 Colab 을 활용하실때도 있으시겠죠. 나름 완벽하게 구축해놓았다고 생각하고 당당히 데이터를 VRAM에 올리는 순간 발생하는 OOM(out of memory).
  • 배치 사이즈를 줄이는 둥 여러 시도를 해보며 겨우겨우 학습이 진행되는 경험 아마 다들 한번씩을 있으실거라 생각되네요. 실험하는것보다 실험 환경을 구축하는데 진을 다 빼서 배보다 배꼽이 크다 라는 말을 여기에 적용할 수 있지 않을까 싶네요.
  • 점점 증가하는 데이터 크기에 따라 엔지니어링 역량 또한 중요시되고 있는데요. 각 분야 모델마다 그 적용 방식이 다르겠으나, 현실 그래프 데이터는 대다수 멱급수 분포를 띄기때문에 OOM 위험에 더욱 노출되어 있습니다. 예를 들자면, 데이터 배치 내 weight 를 VRAM 올릴 때 특정 노드는 상대적으로 적은 엣지 때문에 적은 weight를 연산하는 반면 많은 엣지는 노드는 VRAM 허용량을 초과하게되어 OOM이 발생하게 됩니다.
  • GNN에서 발생하는 OOM 현상을 방지하기 위해 GraNNDis라는 아이디어를 제안합니다. shared preloading , expansion-aware sampling 그리고 cooperative batching 총 세 가지 관점인 GPU 서버간 통신 효율화 , GPU 서버간 샘플링 , 전체 그래프를 학습하기 위한 배치 기법를 활용해서 OOM 을 개선하는 아이디어를 제안하고 성능 또한 실험으로써 우수함을 입증합니다.
  • 실험에 앞서 본 아이디어가 '잘' 학습하는지 측정하기 위해 기준을 정립할 필요가 있는데요. 본 논문에서는 각 서버당 GPU가 얼마만큼 노드 , 엣지를 연산하는지 그리고 그 연산시 발생하는 GPU 간 통신 시간(communication time)을 기준으로 정립하고 측정합니다. 간단하게 말해서, 너무 많은 데이터를 한 서버 GPU에 담기에는 벅차니, 이를 병렬화하여 각 서버마다 분배 및 연산하고 이를 종합할 때 소요하는 시간이라고 보시면 되겠습니다.

핵심1 - shared preloading


  • 동일 서버에 있는 GPU 네트워크 통신시간과 다른 서버간 GPU 네트워크간 통신시간이 다르기 마련인데요. 당연하게도 모든 그래프들이 단일 서버의 GPU에 load되어 있다면 빠를것이고, 다중 서버의 GPU 끼리 Load 되어 있다면, 이들을 종합하기 위해 추가로 서버에 접근하여 그 정보를 가져와야 하기 때문에 오래걸릴겁니다.
  • 이 점을 해결해보고자 Shared preloading이라는 방식을 활용합니다. 기존에 동등하게 그래프를 나눠 서버에 분배하는 방식과 다르게 server 단계에서 미리 layer 별로 활용할 노드들을 지정해두고 preload 해두는 방식입니다. external - internal 연산이 발생할 시 preload한 노드의 feature 를 가져와서 활용하는 방식입니다.

핵심2 - expansion-aware sampling

  • 본 방식을 언급하기 전에 먼저 GNN 에서 샘플링이 어떻게 진행되고 있었는지 짚고가는게 여러분들에게 논문 개요 전달이 더 잘될거라 생각되어 잠깐 말씀드리고 가보겠습니다.
  • GNN의 기존 샘플링 방식은 크게 layer-wise 방식 , subgraph 방식으로 나눠서 볼 수 있는데요. layer-wise 방식은 매 layer 마다 최대 n개의 이웃을 지정하여 샘플링하는 방식, subgraph-wise 방식은 특정 노드와 연결된 서브그래프를 샘플링하는 방식이라고 할 수 있습니다.
  • layer-wise sampling 방식은 매 레이어마다 message passing 연산할 이웃을 임의로 통제할 수 있다는 점이 장점이고, subgraph-wise sampling 방식은 본래 그래프의 구조적 특성을 잘 반영한 subgraph를 효율적으로 가져올 수 있다는 점이 장점입니다.
  • 다들 친근하실 torch_geometric 으로 비유를 들어 말씀드리자면, torch_geometric 모듈 기준 layer-wise sampling 은 NeighborLoader , subgraph-wise sampling 은 GraphSAINTRandomWalkSampler라고 보시면 되겠습니다.
  • 다시 돌아와서, shared preloading 방식을 활용한다 한들, layer가 깊어질수록 sampling 해야하는 노드들이 많아진다면 결국 아무리 preload를 한다해도 한계를 마주하게 됩니다. 바로 서두에 언급한 현실 그래프 데이터들 대다수는 멱급수 분포를 띄고 있기 때문인데요. 이 한계점을 보완하기 위해 expansion-aware sampling을 활용합니다.
  • 간단합니다. 말 그대로 expansion(팽창)하는 것을 유의하여 샘플링 하는 방식인데요. 기존 샘플링 방식과 다르게 1.max-hop, 2.fan-out 이라는 파라미터를 추가로 지정하여 샘플링을 해주는 방식입니다.
  • 특정 노드 기반으로 최대 몇 번째 이웃, 그리고 그 이웃마다 최대 몇 개의 연결을 지정해서 불러올것인지를 tunable 하게 지정해준다 라고 보시면 되겠습니다.이를 통해 shared preloading 시 어느 노드를 포함할지 안할지 판단할 때, 그 기준을 마련해주는 역할을 합니다.

핵심3 - cooperative batching

  • 여태까지 shared preloading 과 expansion-aware sampling은 full-graph training 즉, 모든 그래프를 학습하기 위해 어떤식으로 접근하면 좋을지 이야기 했다면, cooperative batching 은 어떻게 각각의 GPU에 노드들을 fetch할지를 이야기합니다.
  • 기존 방식들은 먼저 target 노드를 지정하여 나누고, 이후 나눠준 노드들을 기반으로 fetch하는 방식 즉, split-then-fetch 방식이였다면, cooperative batching 은 서버에서 활용할 노드를 batch 마다 미리 fetch 해준뒤에 어떤 gpu 에서 학습할지 나눠주는 fetch-then-split 방식을 활용합니다.
  • 기존방식은 타겟 노드 하나 하나를 각각의 GPU 마다 배정하여 학습하기 때문에 그 노드와 연관된 모든 neighbor 를 각각 가져와야 하지만 cooperative batching 은 공통된 노드들이 있을시 각 batch 마다 분배해주기 때문에 GPU 끼리 이를 분배하여 연산해줄수 있기때문에 메모리 활용 측면에서 효율적이라고 할 수 있습니다.

Experiment

  • PyG,DGL 등 저희가 주로 활용하는 프레임워크등을 베이스라인으로 두고 실험을 진행합니다. 눈여겨보면 좋은부분은 DGL 의 pipeGCN , DistDGL 각각 mini-batch 불가 , Full-graph 불가하다는 한계점이 있는 반면에, GraNNDis에서는 모두 적용 가능하다는 점입니다.
  • 실험 결과들 모두 흥미롭지만 그 중에서 저는 Figure 11 이 가장 흥미로웠습니다. 학습시 얼마나 메모리 효율적이고 언제 OOM이 발생하는지를 측정하는데 중점을 두었기 때문인데요. 56 개의 레이어 그리고 256 차원 특성들. 생각만해도 엄청난 파라미터 수인데요. 평소같았으면, 학습할 염두도 나지 않았었겠지만 논문을 통해 간접 경험할 수 있고 그 결과를 확인하는 재미 또한 굉장히 흥미로웠습니다.
  • 이외에도, sampling 에 따라 파라미터가 업데이트 되는 방식이 달라지기 때문에 Accuracy 와 같은 성능이 저하될 수 있다 라는 생각이 들 수 있을텐데요. 성능 저하 없이, 학습 속도가 1.23배에서 1.95배까지 향상된 실험 결과를 보여줍니다.

Conclusion

  • LLM이 화두인 요즘, 어떻게 대용량 데이터를 주어진 환경에서 잘 학습하는지에 대해 여기저기서 이야기를 많이 하고 있습니다. 그래프는 타 데이터와 다르게 토폴로지 의존성이 강한 특이성을 가지고 있습니다.지정된 토폴로지에 따라 노드가 학습하는 정보량이 달라지기 때문인데요. 이는 성능과 직결되는 요소라고 할 수 있을만큼 중요한 요소라고 할 수 있습니다.
  • 하지만, 이 토폴로지를 아쉽게도 효율적으로 활용하지 못하는 상황이 발생하는데요. 토폴로지의 빈익빈부익부 특성때문에, 특정 GPU 메모리에는 적은 량의 정보가 load 되어 메모리가 널널한 반면에, 많은 량의 정보가 load 되는 GPU엔 오히려 과부하가 발생하여 학습 도중 OOM 이슈를 겪게 됩니다.
  • 이를 방지하기 위해 주로 배치당 정보를 최소화 하기 위해 batch-size 를 줄이거나 sample 사이즈를 줄이곤하는데요. 여기에서 유의미하다 라고 생각되는 정보를 놓칠수도 있게 됩니다.
  • 본 논문에서는 이를 문제삼아 shared preloading, expansion-aware sampling , cooperative batching 라는 기능을 가진 GraNNDis 아키텍쳐를 소개했습니다. message-passing 에 대해 고민만 하던 분들에게 전체적으로 GPU에서 어떻게 파라미터들이 연산되는지 그 과정을 공부할 수 있기에 시각이 넓어질 수 있는 좋은 논문이라 생각합니다.

[Contact Info]

Linkedin - https://www.linkedin.com/in/ii-tae-jeong/

Email - jeongiitae6@gmail.com

Subscribe for daily recipes. No spam, just food.