Federated Learning에 다양한 GAN 적용시키기

2022. 5. 13. 14:02AI 기술

현재 상용화 된 Federated Learning Framework 들이 몇몇 존재한다.

실제로 업무를 하면서 3가지 정도를 다뤄봤고, 그중 Flower Framework를 기준으로 설명하고자 한다.

내가 생각하는 Federated Framework 절대적으로 동작해야되는 기능을 포함하는 Framework만 선별했다.

 

  1. Real Network Operation
    하나의 환경안에서만 동작하는 Federated Learning은 깃헙에도 custom코드가 널리고 널렸다. Server와 Client 환경을 구분하지 않는 Framework는 바로 out 시켰다.
  2. Security
    weight를 주고 받을 때, 동형화 암호를 사용하여 주고 받게 되어있는데, 해당 기능을 개발중이거나 사용하지 않는 Framework는 사실 Federated Learning의 존재 가치가 없다고 생각하여 out 시켰다.

 

1. Nvidia Clara

official github : https://github.com/NVIDIA/clara-train-examples

 

GitHub - NVIDIA/clara-train-examples: Example notebooks demonstrating how to use Clara Train to build Medical Imaging Deep Learn

Example notebooks demonstrating how to use Clara Train to build Medical Imaging Deep Learning models - GitHub - NVIDIA/clara-train-examples: Example notebooks demonstrating how to use Clara Train t...

github.com

 

여러가지 FL tool을 써본 결과 가장 기능이 많고 유저 친화적인 툴이라고 생각한다. 다만 model이나 설정하는 부분들이 한정적이여서 GAN을 도입하지 못했고, real network enviornment에서 구현에 실패하였다. (ip address를 무조건 domain name으로 설정하라는게 참...)

쉬운 task (classification, segmentation)들을 해보려면 user guideline을 따라서 천천히 해보는 걸 추천한다.

환경 세팅은 어렵지 않다! 무조건 도커이미지를 이용한 컨테이너 안에서만 실행이 가능하는 점도 참고하길 바란다.

 

 

2. Pysyft Duet

official github : https://github.com/OpenMined/PySyft

 

GitHub - OpenMined/PySyft: A library for answering questions using data you cannot see

A library for answering questions using data you cannot see - GitHub - OpenMined/PySyft: A library for answering questions using data you cannot see

github.com

 

가장 삽질을 많이한 프레임워크 PySyft이다. Clara와 마찬가지로 설명이 꼼꼼히 잘 되있고, real world에서 동작한다는 장점을 가지고 있다. 구글링을 하면 PySyft로 구현된 Federated Learning example이 많이 나온다. 그런데 사용하시려는 분들을 꼭 아셔야되는게 검색결과의 99%가 Pysyft 0.2.x version으로 코드가 구현되어 있다. 현재(22/05/13)기준 0.7.0 버전까지 나온상태인데 아직도 구버전 코드들만 수두룩해서 프레임워크 사용법을 Document만을 보고 익혀야 한다. 심지어 최신버전에 대한 문서도 너무 불친절하다... 그래서 겨우 찾은 방법이 Duet이다!

PySyft 깃헙 내에서 Duet branch로 들어가보면 쉽게 따라할 수 있는 notebook code가 존재한다. 코드도 직관적이고 사용하기 편하게 짜여져있다.

하지만! 가장 큰 문제가 존재한다. 실험했을 당시(version 0.5.0) Server와 client가 수시로 끊기는 현상이 발생했다. 1시간마다 네트워크 연결이 끊겨 도저히 테스트를 진행 할 수 없는 상황이 지속되어 Framework를 포기했어야 했다. 

 

 

3. Flower

official github : https://github.com/adap/flower

 

GitHub - adap/flower: Flower - A Friendly Federated Learning Framework

Flower - A Friendly Federated Learning Framework. Contribute to adap/flower development by creating an account on GitHub.

github.com

official document : https://flower.dev/docs/

 

Flower 0.19.0

Next Installing Flower

flower.dev

 

현 프로젝트에 성공적으로 이식 성공한 프레임워크!

단 한가지의 단점만 빼면 내가 느끼기엔 완벽하게 연합학습을 지원하는 프레임워크라고 생각한다.

불친절한 깃헙(Slack Community를 통한 질문가능)을 제외하면 흠 잡을 곳이 없다.

 

 

Federated Learning with GAN Flow

 

* 코드는 완성되었지만, 업무상 Private로 설정해 놨습니다. 혹시 궁금한 점이 있으면 댓글이나 메일로 문의주시면 슈더코드나 알고리즘은 공유가 가능합니다!

 

 

결론

Flower Framework를 이용한

1. Classification

2. segmentation

3. DCGAN

4. StyleGAN

5. StyleGAN2-ada

구현에 성공하였으며, real network에서 돌아가는 것까지 확인 되었습니다.

성능은 아직 측정중에 있으므로, 만약 유의미한 결과가 나오면 공식 레포로 돌릴 예정입니다.