제휴 컴퓨팅 (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 원격 ATtestation procedureS (RATS) 아키텍처에 따라 코디네이터에게 자체 인증을 제공합니다. 증명이 완료되면 키 서비스에서 복호화 키를 부여합니다. 이러한 키는 샤미르 비밀 공유 스킴에서 여러 키 제공업체에 걸쳐 분할될 수 있습니다.
- 애그리게이터는 적절한 개인 정보 차등 보호 (DP) 메커니즘에 따라 교차 기기 집계, 클립, 노이즈를 처리하고 노이즈가 제거된 결과를 출력합니다.
- 애그리게이터가 모델 업데이터를 트리거합니다.
- 모델 업데이터는 집계된 기여도를 로드하고 모델 버전 N에 적용하여 모델 버전 N + 1을 만듭니다. 새 모델이 모델 저장소에 푸시됩니다.
FC 서버는 TEE 및 관련 보안 기능을 지원하는 모든 클라우드 서비스에 배포할 수 있습니다. Google에서는 퍼블릭 클라우드 제공업체와 기본 기술을 평가하고 있지만 지금은 다음 섹션에서 Confidential Space를 사용하는 Google Cloud 구현 예시를 보여줍니다.
대략적인 아키텍처
FC 서버에는 Google Cloud에 배포된 다음 구성요소가 있습니다.
구성요소 | 설명 |
작업 관리 서비스 | 학습 작업을 관리하는 웹 서비스입니다. 파트너는 Task Management API를 사용하여 학습 작업을 만들고, 기존의 모든 학습 작업을 나열하고, 작업을 취소하고, 모든 학습 상태를 가져와야 합니다. |
할 일 할당 서비스 | 클라이언트 기기가 주기적으로 체크인하여 학습 작업을 가져오고 학습 상태를 보고하는 HTTPS 기반 웹 서비스입니다. |
애그리게이터 | Confidential Space에서 실행되는 백그라운드 서비스입니다. ODP 작성 워크로드를 실행합니다. 복호화 키에 대한 액세스를 보호하는 코디네이터에게 증명해야 합니다. 성공적으로 증명된 애그리게이터만 클라이언트 기기에서 제출한 참여를 복호화하고 교차 기기 집계를 실행할 수 있습니다. |
모델 업데이터 | 집계된 그라디언트를 모델에 적용하는 Confidential Space에서 실행되는 백그라운드 서비스입니다. |
구성요소 세부정보
다음 섹션에서는 대략적인 아키텍처를 자세히 설명합니다.
작업 관리 서비스
작업 관리 서비스에는 두 가지 하위 구성요소인 작업 관리 웹 서비스와 작업 스케줄러 서비스가 포함되며, 이 두 가지 모두 GKE에 배포됩니다.
작업 관리
HTTPS 요청을 수신하고 태스크 데이터베이스에서 태스크를 만들거나 가져오는 프런트엔드 웹 서비스 집합입니다.
작업 스케줄러
작업 데이터베이스를 지속적으로 스캔하는 백그라운드 서비스입니다. 새 학습 라운드 및 반복을 만드는 등 학습 흐름을 관리합니다.
작업 데이터베이스
태스크, 반복, 할당 정보를 저장하는 ANSI SQL 준수 데이터베이스입니다. 이 구현에서는 Google Cloud Spanner가 기본 데이터베이스 서비스로 사용됩니다.
할 일 할당 서비스
Task Assignment Service는 GKE에서 호스팅되는 프런트엔드 웹 서비스입니다. FC 클라이언트의 요청을 수신하고 해당하는 경우 학습 작업을 배포합니다.
여기서 태스크 데이터베이스는 태스크 관리 서비스의 태스크 데이터베이스와 동일한 데이터베이스 인스턴스입니다.
애그리게이터 서비스
애그리게이터 및 모델 업데이터
집계기와 모델 업데이터는 유사합니다. Confidential Space에서 안전하게 데이터를 처리하는 백그라운드 서비스입니다. 오프라인 작업 간의 통신은 PubSub을 통해 이루어집니다.
경사, 집계된 경사, 모델, 계획
- 클라이언트 기기에서 업로드한 (암호화된) 그라데이션의 그라데이션 저장소입니다.
- 집계된, 잘린, 노이즈가 추가된 그라데이션을 위한 집계된 그라데이션 저장소입니다.
- 학습 계획, 모델, 가중치의 모델 및 계획 저장소입니다.
수집기
Collector는 학습 라운드 중에 클라이언트 기기 제출을 주기적으로 집계하는 백그라운드 서비스입니다. 충분한 제출이 있으면 집계 도구에 집계를 시작하도록 알립니다.
서비스 호스트
민감한 정보에 액세스할 수 없는 모든 서비스는 GKE에서 호스팅됩니다.
민감한 정보에 접근할 수 있는 모든 서비스는 Confidential Space에서 호스팅됩니다.
모든 민감한 정보는 여러 당사자가 소유한 키 서비스에서 관리하는 암호화 키로 암호화됩니다. 적법한 기밀 컴퓨팅 지원 버전의 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에서는 샘플을 제공하지 않습니다. 현재 설계는 이러한 복제 및 백업에 대한 개발자의 잠재적 요구사항을 고려합니다. 따라서 서드 파티에서 제공하는 복제 및 백업 서비스 및 제품과 호환됩니다.