Launch HN: Flower (YC W23) – 분산되거나 민감한 데이터로 AI 모델 학습하기
요약
Flower는 분산된 데이터 환경에서 AI 모델을 학습시키기 위한 오픈 소스 연합 학습(Federated Learning) 프레임워크입니다. 데이터를 중앙으로 모으는 대신 모델을 데이터가 있는 곳으로 이동시켜, 개인정보 보호 및 규제 준수 문제를 해결합니다.
핵심 포인트
- 연합 학습(Federated Learning)을 통해 데이터 이동 없이 모델 학습 가능
- HIPAA 등 엄격한 데이터 규제 준수 및 프라이버시 보호 강화
- 의료, 금융, 자율주행 등 민감한 데이터를 다루는 산업에 최적화
- 개별 기기나 분리된 데이터 소스(Silos)를 활용한 모델 고도화 지원
안녕하세요 HN 여러분 - 저희는 Daniel, Taner, Nic이며, 분산된 데이터로 AI를 학습시키기 위한 오픈 소스 프레임워크인 Flower (https://flower.dev/)를 구축하고 있습니다. 저희는 데이터를 모델로 옮기는 대신, 모델을 데이터로 이동시킵니다. 이를 통해 규제 준수(예: HIPAA) 및 기존 방식으로는 불가능했던 머신러닝 (ML) 유스케이스를 가능하게 합니다. 저희 GitHub 주소는 https://github.com/adap/flower 이며, 여기에서 튜토리얼을 확인하실 수 있습니다:
Flower를 사용하면 데이터를 이동할 필요 없이 여러 사용자 기기나 "사일로 (silos)"(분리된 데이터 소스)에 분산되어 있는 데이터로 ML 모델을 학습시킬 수 있습니다. 이러한 접근 방식을 연합 학습 (Federated Learning)이라고 합니다.
사일로는 단일 사용자 기기부터 조직 전체의 데이터에 이르기까지 무엇이든 될 수 있습니다. 예를 들어, 스마트폰 키보드의 추천 및 자동 수정 기능은 데이터를 누구의 기기에서도 전송하지 않고도, 본인의 개인 키보드 데이터와 다른 스마트폰 사용자들의 데이터를 통해 학습된 개인화된 ML 모델에 의해 구동될 수 있습니다.
ChatGPT와 Google Translate부터 DALL·E 및 Stable Diffusion에 이르기까지 대부분의 유명한 AI 혁신은 웹의 공개 데이터를 통해 학습되었습니다. 데이터가 모두 공개되어 있다면, 학습을 위해 중앙의 한 장소로 수집할 수 있습니다. 하지만 이러한 "데이터를 연산(computation)으로 이동"하는 접근 방식은 데이터가 민감하거나 조직의 사일로 및 사용자 기기에 분산되어 있는 경우에는 실패합니다.
많은 중요한 유스케이스가 이러한 제한 사항의 영향을 받습니다:
-
생성형 AI (Generative AI): 많은 시나리오에서 사용자와 조직이 클라우드에 업로드하기를 꺼려하는 민감한 데이터를 필요로 합니다. 예를 들어, 사용자는 자신과 친구들을 AI 생성 이미지에 넣고 싶어 할 수 있지만, 자신의 모든 사진을 업로드하고 공유하고 싶어 하지는 않습니다.
-
의료 (Healthcare): 잠재적으로 어떤 의사보다 더 뛰어난 암 진단 모델을 학습시킬 수 있지만, 단일 조직이 충분한 데이터를 보유하고 있지는 않습니다.
-
금융 (Finance): 개별 은행들이 데이터 규제를 받기 때문에 금융 사기를 방지하는 것은 어렵습니다. 또한 개별적으로는 좋은 모델을 학습시킬 만큼 충분한 사기 사례를 보유하고 있지 않습니다.
-
자동차 (Automotive): 자율 주행 (Autonomous driving)은 매우 혁신적이겠지만, 개별 자동차 제조사들은 발생 가능한 롱테일 (long tail) 에지 케이스 (edge cases)를 모두 커버할 수 있는 데이터를 수집하는 데 어려움을 겪고 있습니다.
-
개인용 컴퓨팅 (Personal computing): 사용자들은 특정 종류의 데이터가 클라우드 (cloud)에 저장되는 것을 원하지 않습니다. 그렇기에 Signal 메신저나 Brave 브라우저와 같은 개인정보 보호 강화 (privacy-enhancing) 대안들이 최근 성공을 거두고 있는 것입니다. 연합 학습 (Federated methods) 방식은 사용자 프라이버시 (user privacy)를 유지하면서 개인 기기에서 발생하는 민감한 데이터를 사용할 수 있는 길을 열어줍니다.
-
파운데이션 모델 (Foundation models): 이 모델들은 학습을 위한 더 많은 데이터와 더 다양한 데이터를 가질수록 성능이 향상됩니다. 하지만 다시 말하지만, 대부분의 데이터는 민감하기 때문에 포함될 수 없습니다. 이러한 모델들이 계속해서 거대해지고 더 많은 정보를 필요로 함에도 불구하고 말입니다.
우리 각자는 다양한 환경(예: 기업 환경, 오픈 소스 (open-source) 프로젝트, 연구소)에서 머신러닝 (ML) 프로젝트를 수행해 왔습니다. 우리는 Samsung, Microsoft, Porsche, Mercedes-Benz와 같은 기업들을 위한 AI 유스케이스 (use cases)를 작업했습니다. 우리의 가장 큰 과제 중 하나는 규정이나 기업 정책을 준수하면서 AI를 학습시키기 위한 데이터를 확보하는 것이었습니다. 때로는 법적 또는 조직적 제한 때문이었고, 때로는 대량의 데이터를 물리적으로 이동시키는 데 따르는 어려움이나 사용자 프라이버시에 대한 자연스러운 우려 때문이기도 했습니다. 우리는 이러한 종류의 문제들이 많은 ML 프로젝트, 특히 의료 및 금융과 같은 도메인 (domains)에서 프로젝트가 궤도에 오르는 것을 너무 어렵게 만들고 있다는 것을 깨달았습니다.
연합 학습 (Federated learning)은 대안을 제시합니다. 모델을 학습시키기 위해 데이터를 이동시킬 필요가 없으므로, ML 프로젝트를 가로막는 많은 장벽을 극복할 수 있는 잠재력을 가지고 있습니다.
2020년 초, 저희는 연합 학습 (Federated Learning)을 단순화하고 사용자 친화적으로 만들기 위해 오픈 소스 Flower 프레임워크 개발을 시작했습니다. 작년에 산업계 사용자들 사이에서 Flower의 도입이 급증하는 것을 경험했고, 이는 저희가 YC에 지원하는 계기가 되었습니다. 과거에는 컨설팅 프로젝트를 통해 연구 자금을 조달해 왔으나, 앞으로는 기업을 위한 관리형 버전 (Managed version)을 제공하고 배포 또는 연합 (Federation)당 비용을 청구할 예정입니다. 동시에, 누구나 계속해서 사용하고 기여할 수 있도록 Flower를 오픈 소스 프로젝트로 계속 운영할 것입니다.
연합 학습 (Federated Learning)은 학습을 데이터가 있는 곳으로 이동시킴으로써 분산되고 민감한 데이터 상에서 AI 모델을 학습시킬 수 있습니다. 학습 과정은 가능한 정보를 수집하지만, 데이터는 원래 위치에 그대로 머물러 있습니다. 데이터가 절대 이동하지 않기 때문에, 조직의 사일로 (Silos)나 사용자 기기에 흩어져 있는 민감한 데이터를 사용하여 AI를 학습시킬 수 있으며, 지금까지는 활용할 수 없었던 데이터를 통해 모델을 개선할 수 있습니다.
작동 방식은 다음과 같습니다: (0) 서버에서 글로벌 모델 파라미터 (Global model parameters)를 초기화합니다; (1) 모델 파라미터를 다수의 조직/기기 (클라이언트 노드, Client nodes)로 전송합니다; (2) 각 조직/기기 (클라이언트 노드)의 데이터로 로컬에서 모델을 학습시킵니다; (3) 업데이트된 모델 파라미터를 다시 서버로 반환합니다; (4) 서버에서 모델 업데이트를 (예: 평균화하여) 새로운 글로벌 모델로 집계 (Aggregate)합니다; (5): 모델이 수렴 (Converge)할 때까지 1단계부터 4단계를 반복합니다.
물론 이는 중앙 집중식 학습 (Centralized learning)보다 더 까다롭습니다. AI 모델을 데이터 사일로 (Data silos)나 사용자 기기로 이동시키고, 로컬에서 학습시킨 뒤, 업데이트된 모델을 다시 보내 집계 (Aggregate)하고, 이 과정을 반복해야 하기 때문입니다. Flower는 이를 쉽게 수행할 수 있는 오픈 소스 (Open-source) 인프라를 제공할 뿐만 아니라, 다른 개인정보 보호 강화 기술 (PETs)도 지원합니다. Flower는 PyTorch, TensorFlow, JAX, Hugging Face, Fastai, Weights & Biases 및 머신러닝 (ML) 프로젝트에서 정기적으로 사용되는 기타 모든 도구와 호환됩니다. 서버 측의 유일한 의존성 (Dependency)은 NumPy이지만, 필요한 경우 이마저도 제거할 수 있습니다. Flower는 내부적으로 gRPC를 사용하므로, 현재 지원되지 않는 대부분의 언어에 대해서도 기본적인 클라이언트를 쉽게 자동 생성할 수 있습니다.
Flower는 오픈 소스 (Apache 2.0 라이선스)이며 다음과 같은 모든 종류의 환경에서 실행할 수 있습니다: 개발 및 시뮬레이션을 위한 개인 워크스테이션, Google Colab, 대규모 시뮬레이션을 위한 컴퓨팅 클러스터 (Compute cluster), 연구 시스템 구축을 위한 Raspberry Pi 클러스터 (또는 유사한 장치), 또는 퍼블릭 클라우드 인스턴스 (AWS, Azure, GCP 등)나 프라이빗 온프레미스 (On-prem) 하드웨어에 배포할 수 있습니다. 저희는 사용자들이 Flower 시스템을 배포할 때 기꺼이 도움을 드릴 것이며, 곧 관리형 클라우드 서비스 (Managed cloud service)를 통해 이를 더욱 쉽게 만들 예정입니다.
PyTorch 예제 코드는 여기에서 찾을 수 있습니다: https://flower.dev#examples, 더 많은 예제는 https://github.com/adap/flower/tree/main/examples 에서 확인할 수 있습니다.
저희는 AI 기술이 오늘날보다 더 협력적이고, 개방적이며, 분산된 형태로 진화해야 한다고 믿습니다 (https://flower.dev/blog/2023-03-08-flower-labs/). 학습의 어려움, 데이터 접근, 데이터 규제, 개인정보 보호, 그리고 연합 학습 (Federated learning) 또는 관련 학습 방법과 관련된 그 어떤 것이라도 여러분의 피드백과 경험을 듣고 싶습니다!
AI 자동 생성 콘텐츠
본 콘텐츠는 HN OpenAI Codex의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기