온디바이스 맞춤설정 제휴 컴퓨팅 서버

제휴 컴퓨팅(FC) 서버는 기기 내 맞춤설정(ODP)에서 제공하는 제휴 학습의 일부입니다. 이 문서의 목적은 제휴 컴퓨팅 서버 (FC Server)와 그 구성요소, 사용되는 기술을 소개하는 것입니다. 이 문서에서는 아키텍처에 대한 대략적인 개요를 제공한 후 각 구성요소를 자세히 살펴봅니다. 또한 구성요소가 함께 작동하여 제휴 학습 환경을 제공하는 방법을 설명하고 워크로드 확장 및 샤딩 전략을 제공합니다.

학습 흐름

학습은 FC 클라이언트와 FC 서버 간의 데이터 흐름으로 구성됩니다. FC 클라이언트는 기기 내에서 ML 모델을 학습하고 FC 서버와 상호작용하는 핵심 Android 모듈입니다. FC 서버는 신뢰할 수 있는 실행 환경(TEE)에서 FC 클라이언트의 결과를 안전하게 처리하고 집계합니다.

교육은 다음 단계로 구성됩니다.

Android용 개인 정보 보호 샌드박스에서 제휴 컴퓨팅 클라이언트와 서버 간의 학습 흐름을 보여주는 플로 차트
  1. 기기의 FC 클라이언트가 키 서비스에서 공개 암호화 키를 다운로드합니다.
  2. FC 클라이언트가 FC 서버에 체크인하고 학습 작업을 가져옵니다.
  3. FC 클라이언트는 학습 계획과 최신 버전의 모델(버전 N)을 다운로드합니다.
  4. FC 클라이언트는 로컬 데이터와 계획을 사용하여 학습합니다.
  5. FC 클라이언트는 0단계에서 얻은 공개 키를 사용하여 이 기기의 참여를 암호화하여 FC 서버에 업로드합니다.
  6. FC 클라이언트는 학습이 완료되었음을 FC 서버에 알립니다.
  7. FC 서버는 충분한 수의 고객이 기부를 제출할 때까지 기다립니다.
  8. 집계 라운드가 트리거됩니다.
  9. 암호화된 참여는 애그리게이터에 의해 신뢰할 수 있는 실행 환경(TEE)에 로드됩니다.
  10. 애그리게이터는 NIST의 RFC 9334 원격 증명 절차 (RATS) 아키텍처에 따라 조정자에게 자체 증명합니다. 증명에 성공하면 키 서비스에서는 암호 해독 키를 부여합니다. Shamir 보안 비밀 공유 체계에서 이러한 키는 여러 키 제공업체에 분할될 수 있습니다.
  11. 애그리게이터는 적절한 개인 정보 차등 보호(DP) 메커니즘에 따라 교차 기기 집계, 클립, 노이즈를 처리하고 노이즈가 제거된 결과를 출력합니다.
  12. 애그리게이터모델 업데이터를 트리거합니다.
  13. 모델 업데이터는 집계된 기여도를 로드하고 모델 버전 N에 적용하여 모델 버전 N + 1을 만듭니다. 새 모델이 모델 저장소에 푸시됩니다.

FC 서버는 TEE 및 관련 보안 기능을 지원하는 모든 클라우드 서비스에 배포할 수 있습니다. 여기서는 퍼블릭 클라우드 제공업체와 기반 기술을 평가하고 있지만, 지금은 다음 섹션에서는 Confidential Space를 사용한 Google Cloud 구현 예시를 보여줍니다.

대략적인 아키텍처

FC 서버에는 Google Cloud에 배포된 다음 구성요소가 있습니다.

Android용 개인 정보 보호 샌드박스의 제휴 컴퓨팅 서버 아키텍처를 보여주는 다이어그램
구성요소 설명
작업 관리 서비스 학습 작업을 관리하는 웹 서비스입니다. 파트너는 Task Management API를 사용하여 학습 작업을 만들고, 기존의 모든 학습 작업을 나열하고, 작업을 취소하고, 모든 학습 상태를 검색해야 합니다.
할 일 할당 서비스 클라이언트 기기가 주기적으로 체크인하여 학습 작업을 가져오고 학습 상태를 보고하는 HTTPS 기반 웹 서비스입니다.
애그리게이터 Confidential Space에서 실행되는 백그라운드 서비스 ODP 작성 워크로드를 실행합니다. 암호 해독 키에 대한 액세스를 가드레일하는 조정자를 입증해야 합니다. 성공적으로 증명된 애그리게이터만 클라이언트 기기에서 제출한 기여를 복호화하고 교차 기기 집계를 수행할 수 있습니다.
모델 업데이터 집계된 그라디언트를 모델에 적용하는 Confidential Space에서 실행되는 백그라운드 서비스입니다.

구성요소 세부정보

다음 섹션에서는 대략적인 아키텍처를 더 자세히 설명합니다.

Android용 개인 정보 보호 샌드박스의 제휴 컴퓨팅 서버 구성요소를 보여주는 다이어그램입니다.

작업 관리 서비스

Android용 개인 정보 보호 샌드박스 작업 관리 서비스의 토폴로지를 보여주는 다이어그램

작업 관리 서비스에는 작업 관리 웹 서비스와 작업 스케줄러 서비스라는 두 가지 하위 구성요소가 있으며, 둘 다 GKE에 배포됩니다.

작업 관리

HTTPS 요청을 받아 작업 데이터베이스에서 작업을 만들거나 가져오는 프런트엔드 웹 서비스 집합입니다.

작업 스케줄러

작업 데이터베이스를 지속적으로 스캔하는 백그라운드 서비스 새 학습 라운드 및 반복 생성과 같은 학습 흐름을 관리합니다.

작업 데이터베이스

태스크, 반복, 할당 정보를 저장하는 ANSI SQL 준수 데이터베이스입니다. 이 구현에서는 Google Cloud Spanner가 기본 데이터베이스 서비스로 사용됩니다.

할 일 할당 서비스

Android용 개인 정보 보호 샌드박스의 작업 할당 서비스의 토폴로지를 보여주는 다이어그램

Task Assignment Service는 GKE에서 호스팅되는 프런트엔드 웹 서비스입니다. FC 클라이언트의 요청을 수신하고 해당하는 경우 학습 작업을 배포합니다.

여기서 태스크 데이터베이스는 태스크 관리 서비스의 태스크 데이터베이스와 동일한 데이터베이스 인스턴스입니다.

애그리게이터 서비스

Android용 개인 정보 보호 샌드박스의 애그리게이터 서비스 토폴로지를 보여주는 다이어그램입니다.
애그리게이터 및 모델 업데이터

애그리게이터와 모델 업데이터는 비슷합니다. Confidential Space에서 데이터를 안전하게 처리하는 백그라운드 서비스입니다. 오프라인 작업 간의 통신은 PubSub를 통해 이루어집니다.

경사, 집계된 경사, 모델, 계획
  • 클라이언트 기기에서 업로드된 (암호화된) 그라데이션을 위한 그라디언트 스토리지입니다.
  • 집계된, 잘린, 노이즈가 추가된 그라데이션을 위한 집계된 그라데이션 저장소입니다.
  • 학습 계획, 모델, 가중치의 모델 및 계획 저장소입니다.
수집기

수집기는 학습 중에 클라이언트 기기 제출 수를 주기적으로 계산하는 백그라운드 서비스입니다. 충분한 제출이 확보되면 애그리게이터에게 집계를 시작하도록 알립니다.

서비스 호스트

민감한 정보에 액세스할 수 없는 모든 서비스는 GKE에서 호스팅됩니다.

민감한 정보에 접근할 수 있는 모든 서비스는 Confidential Space에서 호스팅됩니다.

모든 민감한 정보는 여러 당사자가 소유한 키 서비스에서 관리하는 암호화 키로 암호화됩니다. 적법한 기밀 컴퓨팅 지원 버전의 Confidential Space에서 실행되고 성공적으로 증명된 ODP 작성 오픈소스 코드만 복호화 키에 액세스할 수 있습니다.

하나의 서비스 단위에서 컴퓨팅 리소스는 다음과 같습니다.

Android용 개인 정보 보호 샌드박스의 서비스 단위 토폴로지를 보여주는 다이어그램입니다.

확장성

앞에서 설명한 인프라는 하나의 서비스 단위에 중점을 둡니다.

서비스 단위 1개에서 Cloud Spanner 1개를 사용합니다. 중요한 제한사항은 Spanner 할당량 및 한도를 참고하세요.

이 아키텍처의 각 구성요소는 독립적으로 확장할 수 있습니다. 이는 표준 확장 메커니즘을 사용하여 Confidential Space 또는 GKE 클러스터 내에서 용량을 확장하여 수행됩니다. 다음의 인스턴스를 더 추가하여 처리 용량을 늘릴 수 있습니다.

  • 할 일 할당 웹 서비스
  • 작업 관리 웹 서비스
  • 애그리게이터 인스턴스
  • 모델 업데이터 인스턴스

탄력성

FC 서버의 복원력은 복제된 스토리지를 사용하는 재해 복구로 처리됩니다. 재해 복구에 관심이 있다면 리전 간 데이터 복제를 사용 설정해야 합니다. 이렇게 하면 재해(예: 데이터 센터를 방해하는 기상 현상)가 발생할 경우 마지막 학습 라운드부터 서비스가 재개됩니다.

Spanner

FC 서버의 기본 구현은 Google Cloud Spanner를 데이터베이스로 사용하여 학습 흐름을 제어하는 데 사용되는 태스크 상태를 저장합니다. 멀티 리전 구성을 선택하기 전에 비즈니스 요구사항에 따라 일관성과 가용성 간의 절충점을 평가해야 합니다.

Spanner 인스턴스에는 원시 또는 암호화된 사용자 데이터 또는 그 파생 데이터가 저장되지 않습니다. Spanner에서 제공하는 재해 복구 기능을 자유롭게 사용할 수 있습니다.

Spanner는 변경 내역을 기록합니다. 집계기와 모델 업데이터는 학습 라운드별로 데이터를 저장하며 각 라운드의 결과는 서로 덮어쓰지 않고 별도로 저장됩니다. 따라서 재해가 발생할 경우 마지막 학습부터 서비스를 다시 시작할 수 있습니다.

Google Cloud Storage

FC Server의 기본 구현에서는 Google Cloud Storage를 사용하여 모델, 학습 계획, 암호화된 기기 참여 내역과 같은 blob 데이터를 저장합니다.

설계에는 GCS 인스턴스가 세 개 있습니다.

  • 기기 참여: 기기에서 업로드된 암호화된 기기 참여
  • 모델: 학습 계획, 모델, 가중치
  • 집계된 경사: 애그리게이터에 의해 생성된 집계된 경사입니다.

GCS에 저장된 데이터는 다음 중 하나입니다.

  • 개발자가 제공한 데이터(예: 학습 계획) 또는
  • 기기 업로드 경사 및 집계된 경사와 같은 사용자 신호 (다중 조정자 지원 암호화로 보호됨)에서 파생되므로 비공개 가능성이 있는 데이터 또는
  • 모델 가중치와 같이 개인 정보 차등 보호 적용 후에 사용자 신호에서 파생된 개인 정보 이외의 데이터

일관성과 가용성 사이의 절충점을 평가하고 적절한 GCS 데이터 가용성 및 내구성 기능을 선택해야 합니다. 자체 데이터 보관 정책을 지정해야 합니다.

복제 및 백업

Google Cloud에서 제공하는 데이터 복제 메커니즘 외에도 Spanner 및 GCS에서 주기적으로 데이터를 백업할 수도 있습니다. 예를 들어 교차 클라우드 복제 서비스 및 제품을 사용할 수 있습니다. 이러한 구성은 비즈니스 요구사항에 따라 크게 달라지므로 ODP에서 샘플을 제공하지 않습니다. 현재 설계는 이러한 복제 및 백업에 대한 개발자의 잠재적 요구사항을 고려합니다. 따라서 서드 파티에서 제공하는 복제 및 백업 서비스 및 제품과 호환됩니다.