보람찬 코기의 개발자 블로그
article thumbnail
반응형

지난 포스팅에 이어 2024 동계 인턴을 마무리하는 포스팅이다.

 

참여한 과제에 대해 깊은 설명을 못드리는 것에 대해 양해를 부탁드립니다.

 


지난 두 달동안 무엇을 했는가?

나는 지난 두 달동안 우리 부서의 연합학습 시뮬레이터에 대해 개발 및 통합과정을 맡아서 진행하였다.

 

 기존 시뮬레이터에서 여러 기능을 구현하거나, 기존 함수호출을 다른 액터가 분담하게 하는 등 여러 코드 작업이 있었고

 

또한 과제에서 연구 용역을 맡기고 나온 결과물인 두 대학의 코드를 통합하는 것이였다.

 

시뮬레이터는 파이썬으로 작동되어 있었고, 기능 구현이 있을 때마다 박사님과 연수생들이 함께모여 코드리뷰하는 귀중한 기회를 얻을 수 있었다.

 

또한 모든 개발은 git을 통해 협업을 진행하였고 또한 브랜치 관리도 할 수 있었다.

 

인상 깊었던 것은

1. gRPC

시뮬레이터는 gRPC를 통하여 작동을 하고 있었기에 gRPC에 대해  빠르고 깊게 공부하면서 일부 기능들을 gRPC로 구현했어야 했다. 

 

간략하게 gRPC란?

 

  • gRPC는 Google에서 개발한 오픈 소스 RPC(Remote Procedure Call) 프레임워크
  • RPC는 컴퓨터 프로그램 간에 통신을 할 때 사용되는 방법 중 하나로, 클라이언트가 서버에게 함수를 호출하고, 서버는 해당 함수를 실행한 뒤 결과를 클라이언트에게 반환한다.
  • gRPC는 이러한 RPC를 사용하여 서버와 클라이언트 간에 효율적인 통신을 제공합니다.
  • gRPC는 HTTP/2를 기반으로 하여 다양한 언어와 플랫폼에서 사용 가능
  • Protocol Buffers를 사용하여 데이터를 직렬화하고, 이를 통해 효율적인 데이터 교환

 

간단히 말하면, gRPC는 서버와 클라이언트 간에 효율적이고 빠른 통신을 가능하게 해주는 도구이다.

 

그래서 연합학습의 여러 주체가 함수를 가지고 있고 다른 주체가 어떤 주체의 함수를 통하여 작동하도록 하였다.

 

파이썬으로 OOP 언어처럼 코드를 작성하고 또한 처리해야하는 여러 데이터를 stub을 통하여 보내야 했었다.


 

2. IPFS

또한 연합학습의 글로벌 모델을 학습하고 난뒤 모델을 IPFS에 저장시키는 기능도 구현하였다.

 

이 기술은 중앙 집중식 시스템의 한계를 극복하고 더 안전하고 효율적인 파일 관리 및 공유 방법을 제공한다

 

간단하게 IPFS란?

 

IPFS(InterPlanetary File System)는 분산 파일 시스템으로, 파일을 저장하고 공유하는 데 사용

IPFS는 중앙 서버가 아닌 사용자들의 컴퓨터 네트워크에 파일을 분산하여 저장

이것은 파일의 안정성과 보안을 향상시킬 뿐만 아니라, 데이터에 대한 접근성도 향상

 

  • 분산 파일 저장: 파일은 전 세계에 분산된 다수의 노드에 저장됩니다. 이는 중앙 서버에 의존하지 않고도 파일에 대한 접근을 가능하게 합니다.
  • 고유한 주소: IPFS는 파일을 식별하는 데 해시를 사용합니다. 이 해시는 파일의 내용을 나타내며, 한 번 지정된 파일은 항상 동일한 해시를 갖는다.
  • 반복 저장 제거: IPFS는 중복된 파일을 효율적으로 관리하여 네트워크 공간을 절약합니다. 동일한 파일이 여러 번 업로드되어도 하나의 복제만 유지한다.
  • 암호화 및 보안: IPFS는 파일 전송을 위해 암호화 기술을 사용하며, 데이터 무결성을 유지하기 위해 해시 기반의 내용 주소를 사용한다.
  • 높은 속도: IPFS는 분산된 방식으로 파일을 제공하기 때문에 사용자에게 빠른 속도를 제공한다.

그래서 계층형으로 연합학습을 구현하면서 통신 데이터 내부에는 모델에 대한 정보가 없도록 하였다.

 

3. 연합학습에 관련하여 실험

에트리 인턴은 정말 논문을 작성하기 최적화 되어있다.

 

과제에서 연합학습에 대해 여러 실험을 진행할 수 있었으며, 인터넷에 있는 정보 이외에 직접 개발에 참여한 시뮬레이터로 돌려보면서 결과를 확인할 수 있었다.

 

물론 2달만에 논문을 작성하기에는 너무나 빠듯한 시간이라서 퇴사 후에 작성하여 국내 학술지에 한번 투고할 계획이다 


 

3. 주 2~3회 정기적인 과제 회의 및 아침에 업무 투입 전 To do 리스트 작성

지난 하계 인턴과 다르게 공부하며 자율적으로 주제 선정하는 것과 달리, 실제 과제에 투입이 되어야했기에 뚜렷한 목표가 있었다.

 

그러다보니 기능마다 소요되는 시간도 천차 만별이였고, 기능 구현이 우선이였지만 나름 최적화 시키기 위해 시간이 조금씩 더 걸렸다. 

 

때때론 이해도가 부족하여 방향을 놓쳤을 때, 박사님께서 다시 프리젠테이션을 통해 방향을 수정해주는 등 다양한 리더쉽도 배울 수 있었다.

 


한국전자통신연구원은

부서마다 정말 분위기도 다르고, 업무 스케일도 천차 만별이라 생각이 든다.

 

다행히, 내가 속하게 된 부서는 정말 잘챙겨주셔서 감사했다. 또한  너무 행복했고, 좋은 박사님들과 멋진 실장님 덕분에 개인의 학업적으로도, 인성적으로도 한층 성숙해질수 있었다.

 

 

 

이 글을 보시는 분들은 Etri에 하계/동계 연구연수생을 지원하거나 합격하셔서 들어오셨을 것이다.

 

나는 각각 다른부서로 총 두 번이나 인턴을 한 특이 케이스이므로 언제든지 관련하여 댓글을 남겨주신다면 정성스럽게 대댓글로 남길것이다. (언제든 문의주세요!)


후기:

 

앞으로 더 멋진 개발자로 성장하여 ETRI와 협업을 하게되거나,

 

석사를 도전하여 언젠간 ETRI에 취직하고 싶다.

 

또한 이 자리를 빌어, 감사인사를 드립니다.

 

실장님, 박사님들 그리고 인턴동기들에게 감사하며 모두 다 잘되었으면 좋겠다.

반응형
profile

보람찬 코기의 개발자 블로그

@BoChan

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!