정리 조금/Machine Learning & Statistics

SplitFed

Turtle0105 2024. 4. 20. 09:45

Intro

SplitFed (SFL)은 Federated Learning (FL) & Split Learning (SL)을 합쳐놓은 방법론이다. 이 내용은 아래의 논문에 등장하는데, 호주 연방과학산업연구기구 (CSIRO)에서 출판한 논문이다. 사실 이 논문의 결과는 그닥 좋지 않다... Result 부분을 보고 리뷰할까 고민이 많이 됬던 논문이다. 뒤에 언급함... 그럼에도 읽다보니 구조적으로 활용하거나 여러 개념을 조립하여 적용 가능해보여서 결국 다 읽게 되었다. 여기 논문에서는 새로운 구조 제시와 privacy protecting methods에 집중하여 논문을 전개하는데, 오늘은 논문의 구조에 대해서만 집중하여 포스트를 올린다.

그리고 혹시 FL과 SL에 대해 잘 모르겠거나 읽다가 헷갈리신다면 아래의 포스터를 참고 바랍니다!

FL: https://jaehong-data.tistory.com/79

 

SL: https://jaehong-data.tistory.com/80


 

SplitFed

FL과 SL 은 여러 client와 함께 raw data를 공유하지 않은채로 협업을 가능하게끔하는 방법론이다. 이 방법론은 각자 구조적인 결함이 있다.

 

먼저 FL의 경우 computation burden이 잘못 분배되어있다는 점에있다. Server의 경우 넘치는 computation power를 가지고 있지만, 그에비해 맞은 역할은 단수히 가중평균이기 때문이고, 반대로 client의 경우 computation power는 적지만, 해야하는 일은 deep learning (DL)이다. 때문에 computation 측면에서 균형이 맞지 않는다.

그리고 SL의 경우에는 학습에 모든 layer가 관여하여 update를 시키느라 학습 과정이 너무 sequential하여 overhead가 일어난다는 단점이 있다. 때문에 학습 속도가 굉장히 느리다. CPU schedeuling에서 Round Robin style을 생각하면 쉽다. 

이러한 두가지 단점을 보완하여 나온 방법이 바로 SplitFed이다. 이 방법도 FL과 SL처럼 매우 단순하다.

Structure

이 방법은 이름에서 알 수 있듯이, SL과 FL을 섞어놓은 방식이다. 구조는 아래와 같다. 서버를 두개쓴다는게 가장 큰 특징이다. 하나는 FL을 위한 fed server, 다른 하나는 SL을 위한 main server. 아래 그림상 각각 server2와 server1에 해당된다. 주된 학습은 server1 에서 이루어지니 main server라 부른다.

SplitFed

전반적으로 SFL에서 model을 update하는 방식은 FL의 그것을 차용하며, 계산의 이점과 구조적인 보안성으로인해 SL도 활용한다.

 

먼저 SL부분부터 보자면, SFL은 기존의 SL의 모델을 쪼개어 서버에서 학습한다는 아이디어만 빌려온다. 때문에 큰 차이가 학습하는 순서에서 난다. 기존의 SL의 경우 sequential하게 학습하여 overhead가 발생하고, 그로인해 학습시간이 오래걸린다는 특징이 있었다. 하지만, SFL의 SL부분은 다른client의 학습을 기다리지 않고 parallel하게 client를 학습시키며, 한번에 정보를 aggregation한다. 이는 서버가 두개라 가능한 방법이다. 구체적으로는 Fedserver에서 한번에 모델을 update겸 aggregation하기 때문이다. 이를 통해 학습시간의 단축을 도모한다.

 

그리고 FL부분으로 넘어오자면, SFL의 FL역시 기존의 FL과 차이를 보인다. 이는 SL 부분에서 model을 client-side와 server-side 로 나누기 때문에 발생하는데, FL이 아래의 그림처럼 두 부분에서 일어난다. 여기서 server-side의 경우는 gradient로 새로운 weight를 update하며, client-side의 경우는 weight의 가중평균으로 update를 하게된다. 참고로 논문에서는 FedAVG를 사용한다하는데, 어떤 update 알고리즘을 적용해도 괜찮을듯 싶다.

 

하지만, 이렇게 parallel하게 학습을 진행하면, SL의 장점인 "모든 cut layer 의 학습참여로 인한 성능향상"을 이룰 수가 없다. 때문에 server-side model update시 FedAVG와 같은 FL 방식을 사용하지 않고, 랜덤으로 cut layer를 하나씩 비복원 추출하여 server로 보내 forward & backward propagation을 진행하여, 업데이트 시키는 방식도 소개하고 있다.

 

 

FL이 두번 사용되는 먼저 소개한 방식은 SFLV1, 그리고 뒤에 소개한 다소 sequential한 방식은 SFLV2라 한다. 아래의 알고리즘은 SFLV1에 대한 내용을 담고 있다.

SFLV1 Algorithm

각 과정을 시각화하여 보자면, 아래와 같다.

(left) SFLV1, (right) SFLV2

Comparison

아래의 표는 FL, SL and SFL 방법론의 기능을 비교한다. 너무 당연한 이야기이지만 정리해두니, 장점만 잘 가져온게 보인다. 하지만... 뭔가 중요한 server-side training이 semi-parallel(?) 하다는 정보는 빠져있다.

Results

SFL은 조금 구조가 복잡할 뿐이지, 아이디어는 직관적이고 간단하다. 때문에 마음에 들지만, 결국 결과가 중요하다. 그리고 이 방법은 결과가 매우 좋지 못하다. 때문에, 굳이 이런 복잡한 구조를 사용할 필요가 있는가...? 하는 의문이 들게된다.

 

아래의 데이터 셋과 모델구조를 사용하여 결과를 내었다. Dataset의 경우, 전부 IID setting이라 아쉬웠으며, image data가 사용되었는데, 소개하지 않은 privacy protecting method중 computer vision에 사용되는 PixelDP라는 개념을 사용했기 때문인듯 하다. 만약 자연어나 기타 다른 imput이라면 그에 맞는 privacy protecting method를 사용해야할듯?

 

그리고 그 결과는 아래와 같다. 총 5개의 client로 200번의 global epoch을 사용하여 실험을 진행하였다. 표에서 알 수 있듯이 거의 모든 부분에서 중앙에서 한번에 데이터를 모아 학습하는 (normal)과 FL & SL을 이기지 못한다. 표에 화살표로 표시한 부분은 그나마 가장 나은 경우를 나타내었다.

또한 본 논문에는 실리지 않았는데, supplementary를 보니 더 심각한 경우가 존재했다. 우선 모델별로 그리고 데이터셋 별로 너무도 결과의 편차가 컷으며, 아래 그림 왼쪽부터 문제되는 세가지 경우를 가져왔다.

 

가장 왼쪽의 경우는 무난하게 다른 모델에 비해 학습이 잘 되지 않는다.

중간은 아예 악습이 되지않는 경우이며, 가장 오른쪽의 경우는 test에서 epoch마다 성능이 널뛰기 하며 튄다.

Suggestion...?

이러한 구조를 활용한다면, 아래와 같은 구조는 어떠한가...? Client가 병원이라 가정하면 그 수가 적을 것이고, 들어오는 자료의 형태가 분명 여러가지 일 것이다. 수가 적으니, sequential하게 server-side model을 학습시켜 성능은 향상시키고, 자료의 형태 또한 feature space가 비슷하거나 같은 client끼리 묶어 FL을 진행하고, 뒤에 SL multimodal로 학습하면 될 듯하다.

 

때문에, SL의 multimodality를 활용하여 raw data는 숨기고 (사실 저 그림에서 label도 숨기면 좋을텐데 시간나면 고쳐야겠다), 어떤 자료가 들어와도 학습이 가능하고, 모든 자료의 layer가 학습에 참여하여 성능의 향상도 도모할 수 있는 형태의 학습이 되지 않을까 싶다!

 

물론 본 논문의 결과를 보면, 성능은 좋지 못하여 이렇게나 복잡한 구조를 사용할 필요가 있을까 싶다. 재미있는 상상을 해보았다.


Outro

오늘은 방법론의 구조에 집중해 보았다. 하지만, 여기서 차용하는 privacy protecting method 중 하나로 computer vision에서 주로 사용하는 PixelDP와 같은 방법은 보지 않았다. 랜덤 노이즈를 가우시안으로 가정하여 gradient에 작업치는 방식으로 진행되는 듯 하다. 자세한 내용은 본문을 참고바란다.

 

개인적인 생각으로 SFL은 결과는 좋지 못하지만, 재미있는 상상력을 자극하는 방법론이었다. 약간 석사들의 졸업을 위한 thesis가 이런식으로 두가지 방법을 적절히 섞어서 방법론을 제시하기도 하는데, 그런 느낌이었다. 또한 동시에 안타깝기도 했다. 컴공 특성상 더욱 결과가 중요하고, 이런 계열의 논문은 현상이 중요하여 결과에 집중하거나 가중치를 더 높게주어 평가하게 된다. 그리고 convergence라거나 하는 현상은 후에 수학적으로 증명하는 논문이 따로 길게 나오는 정도이니 더욱 그러하다. 이런 직관적인 아이디어로 좋은 성능이 나왔으면 좋았을텐데 너무도 안타깝다... 나는 응원하는 맘으로 높은 점수를 주고싶다. 세상의 빛도 보지 못하고 학교 도서관에서 아사해버릴 내 석사 thesis가 생각나서가 절대 아니다!! ㅜㅠ

 

그리고 왜 저런 좋지 못한 결과가 나오는지 그 이유를 규명하고 싶다. 다른 방법론과 비교할때는 왜 학습이 더디고 좋지 못한지, 그리고 모델 자체의 결과만 볼 때에는 왜 학습이 안되는 경우가 있으며, 왜 test에서 결과가 튀는지... 이를 위해서는 엄청난 직관과 경험 그리고 통찰이 필요할텐데... 아직 내게 그런 능력은 없는것 같아 아쉽고, 무언지 알기 위해 액션을 취해야하는데, 어찌해야할지 잘 모르겠다... 그게 더 무섭다. 일단 저자에게 메일로 물어봐야겠다.

 

다음으로는 multi-task와 FL의 방법론에 대해 생각해보겠다. Multimodality 때문인지 계속 신경쓰인다.

References

https://arxiv.org/abs/2004.12088

 

SplitFed: When Federated Learning Meets Split Learning

Federated learning (FL) and split learning (SL) are two popular distributed machine learning approaches. Both follow a model-to-data scenario; clients train and test machine learning models without sharing raw data. SL provides better model privacy than FL

arxiv.org

 

'정리 조금 > Machine Learning & Statistics' 카테고리의 다른 글

Linear Discriminant Analysis  (1) 2024.11.27
Split Learning  (1) 2024.04.19
Federated Learning  (0) 2024.04.05
Mixed Precision (1) 정수 표현법  (0) 2024.03.14
Multiclass Hinge Loss  (0) 2023.11.17