제휴 컴퓨팅 (FC) 서버는 기기 내 맞춤설정 (ODP)에서 제공하는 제휴 학습의 일부입니다. 이 문서의 목적은 연합 컴퓨팅 서버 (FC 서버), 구성요소, 사용된 기술을 소개하는 것입니다. 이 문서에서는 아키텍처를 개략적으로 설명한 후 각 구성요소를 자세히 살펴봅니다. 또한 구성요소가 함께 작동하여 제휴 학습 환경을 제공하는 방법을 설명하고 워크로드 확장 및 샤딩 전략을 제공합니다.
학습 흐름
학습은 FC 클라이언트와 FC 서버 간의 데이터 흐름으로 구성됩니다. FC 클라이언트는 기기에서 ML 모델을 학습시키고 FC 서버와 상호작용하는 핵심 Android 모듈입니다. FC 서버는 신뢰할 수 있는 실행 환경 (TEE)에서 FC 클라이언트의 결과를 안전하게 처리하고 집계합니다.
학습은 다음 단계로 구성됩니다.
- 기기의 FC 클라이언트는 키 서비스에서 공개 암호화 키를 다운로드합니다.
- FC 클라이언트는 FC 서버에 체크인하고 학습 작업을 가져옵니다.
- FC 클라이언트는 학습 계획과 최신 버전의 모델(버전 N)을 다운로드합니다.
- FC 클라이언트는 로컬 데이터와 계획을 사용하여 학습합니다.
- FC 클라이언트는 0단계에서 획득한 공개 키로 이 기기의 기여를 암호화하고 FC 서버에 업로드합니다.
- FC 클라이언트는 학습이 완료되었음을 FC 서버에 알립니다.
- FC 서버는 충분한 클라이언트가 기여를 제출할 때까지 기다립니다.
- 집계 라운드가 트리거됩니다.
- 암호화된 기여는 집계기에 의해 신뢰할 수 있는 실행 환경 (TEE)에 로드됩니다.
- 집계기는 NIST의 RFC 9334 원격 증명 절차 (RATS) 아키텍처에 따라 코디네이터에게 자체 증명을 제공합니다. 증명에 성공하면 키 서비스에서 복호화 키를 부여합니다. 이러한 키는 Shamir 비밀 공유 스킴에서 여러 키 제공자 간에 분할될 수 있습니다.
- 애그리게이터는 교차 기기 집계를 실행하고, 적절한 개인 정보 차등 보호 (DP) 메커니즘에 따라 클리핑 및 노이즈를 적용하고, 노이즈가 적용된 결과를 출력합니다.
- 애그리게이터가 모델 업데이트 프로그램을 트리거합니다.
- 모델 업데이트 프로그램은 집계된 기여도를 로드하고 이를 모델 버전 N에 적용하여 모델 버전 N + 1을 만듭니다. 새 모델이 모델 스토리지로 푸시됩니다.
FC 서버는 TEE 및 관련 보안 기능을 지원하는 모든 클라우드 서비스에 배포할 수 있습니다. Google에서는 공용 클라우드 제공업체와 기본 기술을 평가하고 있지만, 현재는 다음 섹션에서 컨피덴셜 스페이스를 사용하는 Google Cloud 예시 구현을 제공합니다.
상위 수준 아키텍처
FC 서버에는 Google Cloud에 배포된 다음 구성요소가 있습니다.
| 구성요소 | 설명 |
| 작업 관리 서비스 | 학습 작업을 관리하는 웹 서비스입니다. 파트너는 작업 관리 API를 사용하여 학습 작업을 만들고, 기존 학습 작업을 모두 나열하고, 작업을 취소하고, 모든 학습 상태를 가져와야 합니다. |
| 작업 할당 서비스 | 클라이언트 기기가 주기적으로 체크인하여 학습 작업을 획득하고 학습 상태를 보고하는 HTTPS 기반 웹 서비스입니다. |
| 애그리게이터 | Confidential Space에서 실행되는 백그라운드 서비스입니다. ODP에서 작성한 워크로드를 실행합니다. 복호화 키에 대한 액세스를 보호하는 코디네이터에게 증명해야 합니다. 증명에 성공한 집계기기만 클라이언트 기기에서 제출한 기여도를 복호화하고 교차 기기 집계를 실행할 수 있습니다. |
| 모델 업데이트 프로그램 | 집계된 그라데이션을 모델에 적용하는 Confidential Space에서 실행되는 백그라운드 서비스입니다. |
구성요소 세부정보
다음 섹션에서는 대략적인 아키텍처를 자세히 설명합니다.
작업 관리 서비스
작업 관리 서비스에는 작업 관리 웹 서비스와 작업 스케줄러 서비스라는 두 가지 하위 구성요소가 포함되어 있으며, 두 구성요소 모두 GKE에 배포됩니다.
작업 관리
HTTPS 요청을 수신하고 태스크 데이터베이스에서 태스크를 만들거나 가져오는 프런트엔드 웹 서비스 집합입니다.
작업 스케줄러
작업 데이터베이스를 지속적으로 검색하는 백그라운드 서비스입니다. 새 학습 라운드와 반복을 만드는 등 학습 흐름을 관리합니다.
작업 데이터베이스
작업, 반복, 할당 정보를 저장하는 ANSI SQL 호환 데이터베이스입니다. 이 구현에서는 Google Cloud Spanner가 기본 데이터베이스 서비스로 사용됩니다.
작업 할당 서비스
작업 할당 서비스는 GKE에서 호스팅되는 프런트엔드 웹 서비스입니다. FC 클라이언트의 요청을 수신하고 해당하는 경우 학습 작업을 분산합니다.
여기서의 작업 데이터베이스는 작업 관리 서비스의 작업 데이터베이스와 동일한 데이터베이스 인스턴스입니다.
애그리게이터 서비스
애그리게이터 및 모델 업데이트 프로그램
집계기와 모델 업데이트 프로그램은 유사합니다. 컨피덴셜 스페이스에서 데이터를 안전하게 처리하는 백그라운드 서비스입니다. 오프라인 작업 간 통신은 PubSub를 통해 이루어집니다.
그라데이션, 집계된 그라데이션, 모델 및 계획
- 클라이언트 기기에서 업로드된 (암호화된) 그라데이션을 위한 그라데이션 스토리지입니다.
- 집계되고, 클리핑되고, 노이즈가 추가된 그라데이션을 위한 집계된 그라데이션 스토리지입니다.
- 학습 계획, 모델, 가중치를 위한 모델 및 계획 스토리지를 만듭니다.
수집기
수집기는 학습 라운드 중에 클라이언트 기기 제출을 주기적으로 집계하는 백그라운드 서비스입니다. 제출이 충분히 완료되면 집계기에 집계를 시작하라고 알립니다.
서비스 호스트
민감한 정보에 액세스할 수 없는 모든 서비스는 GKE에서 호스팅됩니다.
민감한 정보에 액세스할 수 있는 모든 서비스는 Confidential Space에서 호스팅됩니다.
모든 민감한 데이터는 여러 당사자가 소유한 키 서비스에서 관리하는 암호화 키로 암호화됩니다. 합법적인 컨피덴셜 컴퓨팅 지원 버전의 컨피덴셜 스페이스에서 실행되는, 증명에 성공하고 ODP에서 작성한 오픈소스 코드만 복호화 키에 액세스할 수 있습니다.
한 서비스 단위에서 컴퓨팅 리소스는 다음과 같습니다.
확장성
앞에서 설명한 인프라는 하나의 서비스 단위에 중점을 둡니다.
하나의 서비스 단위는 하나의 Cloud Spanner를 사용합니다. 주요 제한사항은 Spanner 할당량 및 한도를 참고하세요.
이 아키텍처의 각 구성요소는 독립적으로 확장할 수 있습니다. 이는 표준 확장 메커니즘을 사용하여 Confidential Space 또는 GKE 클러스터 내에서 용량을 확장하여 수행됩니다. 효과적으로 처리 용량을 늘리려면 다음 인스턴스를 추가하면 됩니다.
- 작업 할당 웹 서비스
- 작업 관리 웹 서비스
- 애그리게이터 인스턴스
- 모델 업데이터 인스턴스
탄력성
FC 서버의 복원력은 복제된 스토리지를 사용하는 재해 복구에 의해 처리됩니다. 재해 복구에 관심이 있다면 리전 간 데이터 복제를 사용 설정해야 합니다. 이렇게 하면 데이터 센터를 중단시키는 날씨 이벤트와 같은 재해가 발생하더라도 서비스가 마지막 학습 라운드부터 재개됩니다.
Spanner
FC 서버의 기본 구현에서는 Google Cloud Spanner를 데이터베이스로 사용하여 학습 흐름을 제어하는 데 사용되는 작업 상태를 저장합니다. 다중 리전 구성을 선택하기 전에 비즈니스 요구사항에 따라 일관성과 가용성 간의 장단점을 평가해야 합니다.
Spanner 인스턴스에 사용자 데이터 또는 파생 상품(원시 또는 암호화)이 저장되지 않습니다. Spanner에서 제공하는 재해 복구 기능을 자유롭게 사용하세요.
Spanner는 변경 내역을 기록합니다. 집계기 및 모델 업데이트 프로그램은 학습 라운드별로 데이터를 저장하며 각 라운드의 결과는 서로 덮어쓰지 않고 별도로 저장됩니다. 따라서 재해 발생 시 서비스가 마지막 학습 라운드에서 재개될 수 있습니다.
Google Cloud Storage
FC 서버의 기본 구현에서는 Google Cloud Storage를 사용하여 모델, 학습 계획, 암호화된 기기 참여와 같은 BLOB 데이터를 저장합니다.
설계에는 세 개의 GCS 인스턴스가 있습니다.
- 기기 참여: 기기에서 업로드된 암호화된 기기 참여입니다.
- 모델: 학습 계획, 모델, 모델의 가중치
- 집계된 그라데이션: 어그리게이터에 의해 생성된 집계된 그라데이션입니다.
GCS에 저장된 데이터는 다음 중 하나입니다.
- 개발자가 제공한 데이터(예: 교육 계획)
- 기기 업로드 그라데이션 및 집계된 그라데이션과 같은 사용자 신호 (다중 코디네이터 지원 암호화로 보호됨)에서 파생되므로 잠재적으로 비공개 데이터
- 사용자 신호에서 파생되었지만 차등 개인 정보 보호가 적용된 후의 비공개 데이터(예: 모델 가중치)
일관성과 가용성 간의 균형을 평가하고 적절한 GCS 데이터 가용성 및 내구성 기능을 선택해야 합니다. 자체 데이터 보관 정책을 지정해야 합니다.
복제 및 백업
Google Cloud에서 제공하는 데이터 복제 메커니즘 외에도 Spanner 및 GCS의 데이터를 주기적으로 백업할 수 있습니다. 예를 들어 교차 클라우드 복제 서비스 및 제품을 사용할 수 있습니다. 이러한 구성은 비즈니스 요구사항에 따라 크게 달라지므로 ODP에서는 샘플을 제공하지 않습니다. 현재 설계에서는 이러한 복제 및 백업에 대한 개발자의 잠재적 요구사항을 고려합니다. 따라서 서드 파티에서 제공하는 복제 및 백업 서비스와 제품과 호환됩니다.