제퍼넷 로고

Amazon SageMaker에서 연합 학습을 사용하는 분산형 훈련 데이터를 사용한 기계 학습 | 아마존 웹 서비스

시간

기계 학습(ML)은 산업 전반에 걸쳐 솔루션을 혁신하고 데이터에서 새로운 형태의 통찰력과 인텔리전스를 이끌어냅니다. 많은 ML 알고리즘은 대규모 데이터세트에 대해 훈련하여 데이터에서 찾은 패턴을 일반화하고, 보이지 않는 새로운 기록이 처리될 때 해당 패턴에서 결과를 추론합니다. 일반적으로 데이터 세트나 모델이 너무 커서 단일 인스턴스에서 학습할 수 없는 경우 분산 교육 클러스터 내의 여러 인스턴스를 사용하고 훈련 프로세스 중에 해당 인스턴스에 데이터 또는 모델 파티션을 배포할 수 있습니다. 분산 교육에 대한 기본 지원은 다음을 통해 제공됩니다. 아마존 세이지 메이커 SDK와 함께 예시 노트북 인기있는 프레임 워크에서.

그러나 때로는 조직 내 또는 조직 전체의 보안 및 개인 정보 보호 규정으로 인해 데이터가 여러 계정 또는 다른 지역에 분산되어 하나의 계정 또는 지역 전체에 중앙 집중화될 수 없습니다. 이 경우 전체 데이터에 대한 일반화된 모델을 얻기 위해서는 연합학습(FL)을 고려해야 합니다.

이 게시물에서는 Amazon SageMaker에서 연합 학습을 구현하여 분산된 교육 데이터로 ML을 실행하는 방법에 대해 설명합니다.

연합 학습이란 무엇입니까?

연합 학습은 병렬로 실행되는 여러 개의 개별 교육 세션이 지리적으로 큰 경계를 넘어 실행되고 결과를 집계하여 프로세스에서 일반화된 모델(글로벌 모델)을 구축할 수 있도록 하는 ML 접근 방식입니다. 보다 구체적으로, 각 교육 세션은 자체 데이터 세트를 사용하고 자체 로컬 모델을 가져옵니다. 다른 교육 세션의 로컬 모델은 교육 프로세스 중에 글로벌 모델로 집계됩니다(예: 모델 가중치 집계). 이 접근 방식은 데이터 세트가 하나의 교육 세션에 병합되는 중앙 집중식 ML 기술과 대조됩니다.

연합 학습과 클라우드의 분산 교육

이 두 가지 접근 방식이 클라우드에서 실행되는 경우 분산 교육은 한 계정의 한 지역에서 발생하며 교육 데이터는 중앙 집중식 교육 세션 또는 작업에서 시작됩니다. 분산 훈련 과정에서 데이터 세트는 더 작은 하위 집합으로 분할되고 전략(데이터 병렬 처리 또는 모델 병렬 처리)에 따라 하위 집합은 다른 훈련 노드로 전송되거나 훈련 클러스터의 노드를 통과합니다. 클러스터의 한 노드에 머무르십시오.

이와 대조적으로 연합 학습을 사용하면 교육은 일반적으로 여러 개별 계정이나 지역 전체에서 발생합니다. 각 계정 또는 지역에는 자체 교육 인스턴스가 있습니다. 훈련 데이터는 처음부터 끝까지 계정 또는 지역 전체에 분산되어 있으며, 개별 데이터는 연합 학습 프로세스 중에 서로 다른 계정 또는 지역 간의 해당 훈련 세션 또는 작업에서만 읽혀집니다.

꽃 연합 학습 프레임워크

연합 학습을 위해 다음과 같은 여러 오픈 소스 프레임워크를 사용할 수 있습니다. 운명, , 파이 시프트, 오픈FL, FedML, NV플레어텐서플로 연합. FL 프레임워크를 선택할 때 일반적으로 모델 범주, ML 프레임워크, 장치 또는 운영 체제에 대한 지원을 고려합니다. 또한 클라우드에서 효율적으로 실행하려면 FL 프레임워크의 확장성과 패키지 크기도 고려해야 합니다. 이 게시물에서는 SageMaker를 사용하여 FL 구현을 수행하기 위해 쉽게 확장 가능하고 사용자 정의 가능하며 가벼운 프레임워크인 Flower를 선택합니다.

Flower는 대규모 FL 실험을 실행할 수 있는 새로운 기능을 제공하고 다양한 유형의 FL 장치 시나리오를 지원함으로써 기존 프레임워크와 차별화되는 포괄적인 FL 프레임워크입니다. FL은 데이터 공유가 불가능한 시나리오에서 데이터 프라이버시 및 확장성과 관련된 문제를 해결합니다.

Flower FL의 설계 원리 및 구현

Flower FL은 설계상 언어 및 ML 프레임워크에 구애받지 않고 완전히 확장 가능하며 새로운 알고리즘, 훈련 전략 및 통신 프로토콜을 통합할 수 있습니다. Flower는 Apache 2.0 라이선스에 따라 오픈 소스로 제공됩니다.

FL 구현의 개념적 아키텍처는 논문에 설명되어 있습니다. 꽃: 친근한 연합 학습 프레임워크 다음 그림에서 강조 표시됩니다.

이 아키텍처에서 에지 클라이언트는 실제 에지 장치에 상주하며 RPC를 통해 서버와 통신합니다. 반면에 가상 클라이언트는 비활성 상태에서는 거의 XNUMX에 가까운 리소스를 소비하며 클라이언트가 교육 또는 평가를 위해 선택될 때만 모델과 데이터를 메모리에 로드합니다.

Flower 서버는 Flower 클라이언트에 보낼 전략과 구성을 구축합니다. 이는 이러한 구성 사전을 직렬화합니다(또는 구성 사전 줄여서) ProtoBuf 표현으로 전송하고 gRPC를 사용하여 클라이언트로 전송한 다음 다시 Python 사전으로 역직렬화합니다.

플라워 FL 전략

Flower를 통해 학습 과정을 맞춤화할 수 있습니다. 전략 추상화. 전략은 매개변수 초기화(서버 또는 클라이언트 초기화 여부), 실행을 초기화하는 데 필요한 사용 가능한 최소 클라이언트 수, 클라이언트 기여 가중치, 교육 및 평가 세부 정보를 지정하는 전체 페더레이션 프로세스를 정의합니다.

Flower는 FL 평균화 알고리즘과 강력한 통신 스택을 광범위하게 구현했습니다. 구현된 평균화 알고리즘 및 관련 연구 논문 목록은 다음 표를 참조하십시오. 꽃: 친근한 연합 학습 프레임워크.

SageMaker를 통한 연합 학습: 솔루션 아키텍처

SageMaker와 Flower 프레임워크를 사용하는 연합 학습 아키텍처는 양방향 gRPC(기초) 스트림 위에 구현됩니다. gRPC는 교환되는 메시지 유형을 정의하고 컴파일러를 사용하여 Python에 대한 효율적인 구현을 생성하지만 Java 또는 C++와 같은 다른 언어에 대한 구현을 생성할 수도 있습니다.

Flower 클라이언트는 네트워크를 통해 원시 바이트 배열로 명령(메시지)을 받습니다. 그런 다음 클라이언트는 명령을 역직렬화하고 실행합니다(로컬 데이터에 대한 교육). 그런 다음 결과(모델 매개변수 및 가중치)가 직렬화되어 서버로 다시 전달됩니다.

Flower FL의 서버/클라이언트 아키텍처는 Flower 서버 및 Flower 클라이언트와 동일한 지역에 있는 서로 다른 계정의 노트북 인스턴스를 사용하여 SageMaker에서 정의됩니다. 훈련 및 평가 전략은 전역 매개변수뿐만 아니라 서버에서 정의된 다음 구성이 직렬화되어 VPC 피어링을 통해 클라이언트로 전송됩니다.

노트북 인스턴스 클라이언트는 서버 구성을 역직렬화하고 읽고, 훈련 작업을 트리거하고, 매개변수 응답을 보내는 Flower 클라이언트의 인스턴스화를 트리거하기 위해 사용자 지정 스크립트를 실행하는 SageMaker 훈련 작업을 시작합니다.

마지막 단계는 서버 전략에 명시된 실행 횟수와 클라이언트 수가 완료되면 새로 집계된 매개변수의 평가가 트리거될 때 서버에서 발생합니다. 평가는 서버에만 존재하는 테스트 데이터 세트에 대해 이루어지며, 새롭게 향상된 정확도 지표가 생성됩니다.

다음 다이어그램은 Flower 패키지가 있는 SageMaker의 FL 설정 아키텍처를 보여줍니다.

아치 온 세이지메이커

SageMaker를 사용하여 연합 학습 구현

SageMaker는 완전관리형 ML 서비스입니다. SageMaker를 사용하면 데이터 과학자와 개발자는 ML 모델을 신속하게 구축 및 훈련한 다음 프로덕션에 즉시 사용할 수 있는 호스팅 환경에 배포할 수 있습니다.

이 게시물에서는 관리형 ML 플랫폼을 사용하여 노트북 경험 환경을 제공하고 SageMaker 훈련 작업을 통해 AWS 계정 전체에서 연합 학습을 수행하는 방법을 보여줍니다. 원시 교육 데이터는 데이터를 소유한 계정을 떠나지 않으며 파생된 가중치만 피어링된 연결을 통해 전송됩니다.

이 게시물에서는 다음과 같은 핵심 구성 요소를 강조합니다.

  • 네트워킹 – SageMaker를 사용하면 기본 네트워킹 구성을 빠르게 설정할 수 있으며 조직의 요구 사항에 따라 네트워킹을 완전히 사용자 지정할 수도 있습니다. 우리는 VPC 피어링 구성 이 예에서는 지역 내에서.
  • 교차 계정 액세스 설정 – 서버 계정의 사용자가 클라이언트 계정에서 모델 훈련 작업을 시작할 수 있도록 하기 위해 계정 간 액세스 위임 사용 AWS 자격 증명 및 액세스 관리 (IAM) 역할. 이렇게 하면 서버 계정의 사용자가 SageMaker에서 작업을 수행하기 위해 계정에서 로그아웃하고 클라이언트 계정에 로그인할 필요가 없습니다. 이 설정은 SageMaker 훈련 작업을 시작하기 위한 목적으로만 사용되며 계정 간 데이터 액세스 권한이나 공유가 없습니다.
  • 클라이언트 계정에 연합 학습 클라이언트 코드 구현, 서버 계정에 서버 코드 구현 – Flower 패키지와 SageMaker 관리 교육을 사용하여 클라이언트 계정에 연합 학습 클라이언트 코드를 구현합니다. 한편, Flower 패키지를 사용하여 서버 계정에 서버 코드를 구현합니다.

VPC 피어링 설정

VPC 피어링 연결은 프라이빗 IPv4 주소 또는 IPv6 주소를 사용하여 두 VPC 간에 트래픽을 라우팅할 수 있게 해주는 두 VPC 간의 네트워킹 연결입니다. 각 VPC의 인스턴스는 마치 동일한 네트워크 내에 있는 것처럼 서로 통신할 수 있습니다.

VPC 피어링 연결을 설정하려면 먼저 다른 VPC와의 피어링 요청을 생성합니다. 동일한 계정의 다른 VPC와의 VPC 피어링 연결을 요청하거나, 사용 사례에서는 다른 AWS 계정의 VPC에 연결할 수 있습니다. 요청을 활성화하려면 VPC 소유자가 요청을 수락해야 합니다. VPC 피어링에 대한 자세한 내용은 다음을 참조하세요. VPC 피어링 연결 생성.

VPC에서 SageMaker 노트북 인스턴스 시작

SageMaker 노트북 인스턴스는 완전 관리형 ML을 통해 Jupyter 노트북 앱을 제공합니다. 아마존 엘라스틱 컴퓨트 클라우드 (Amazon EC2) 인스턴스. SageMaker Jupyter 노트북은 고급 데이터 탐색을 수행하고, 훈련 작업을 생성하고, SageMaker 호스팅에 모델을 배포하고, 모델을 테스트 또는 검증하는 데 사용됩니다.

노트북 인스턴스에는 다양한 네트워킹 구성을 사용할 수 있습니다. 이 설정에서는 노트북 인스턴스가 VPC의 프라이빗 서브넷 내에서 실행되며 직접 인터넷에 액세스할 수 없습니다.

교차 계정 액세스 설정 구성

교차 계정 액세스 설정에는 IAM 역할을 사용하여 서버 계정에서 클라이언트 계정으로 액세스 권한을 위임하는 두 단계가 포함됩니다.

  1. 클라이언트 계정에서 IAM 역할을 생성합니다.
  2. 서버 계정의 역할에 대한 액세스 권한을 부여합니다.

유사한 시나리오를 설정하는 자세한 단계는 다음을 참조하세요. IAM 역할을 사용하여 AWS 계정 전체에 대한 액세스 권한 위임.

클라이언트 계정에서 다음과 같은 IAM 역할을 생성합니다. FL-kickoff-client-job 정책으로 FL-sagemaker-actions 역할에 붙어있습니다. 그만큼 FL-sagemaker-actions 정책에는 다음과 같은 JSON 콘텐츠가 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:CreateTrainingJob", "sagemaker:DescribeTrainingJob", "sagemaker:StopTrainingJob", "sagemaker:UpdateTrainingJob" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:DescribeNetworkInterfaces" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:GetRole", "iam:PassRole" ], "Resource": "arn:aws:iam::<client-account-number>:role/service-role/AmazonSageMaker-ExecutionRole-<xxxxxxxxxxxxxxx>" } ]
}

그런 다음 신뢰 관계의 신뢰 정책을 수정합니다. FL-kickoff-client-job 역할:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<server-account-number>:root" }, "Action": "sts:AssumeRole", "Condition": {} } ]
}

서버 계정에서는 기존 사용자에게 권한이 추가됩니다(예: developer)로 전환할 수 있도록 FL-kickoff-client-job 고객 계정의 역할. 이를 위해 다음과 같은 인라인 정책을 만듭니다. FL-allow-kickoff-client-job 사용자에게 첨부합니다. 다음은 정책 JSON 콘텐츠입니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::<client-account-number>:role/FL-kickoff-client-job" }
}

샘플 데이터 세트 및 데이터 준비

이 게시물에서 우리는 선별된 데이터 세트 에서 공개한 메디케어 제공자 데이터의 사기 적발을 위해 메디케어 및 메디케이드 서비스 센터(CMS). 데이터는 훈련 데이터 세트와 테스트 데이터 세트로 분할됩니다. 대부분의 데이터는 사기가 아니기 때문에 우리는 스 모트 교육 데이터 세트의 균형을 맞추고 교육 데이터 세트를 교육 및 검증 부분으로 추가로 분할합니다. 교육 및 검증 데이터는 모두 아마존 단순 스토리지 서비스 (Amazon S3) 클라이언트 계정의 모델 교육용 버킷이며, 테스트 데이터 세트는 테스트 목적으로만 서버 계정에서 사용됩니다. 데이터 준비 코드에 대한 자세한 내용은 다음과 같습니다. 수첩.

SageMaker와 함께 scikit-learn 프레임워크용으로 사전 빌드된 Docker 이미지 SageMaker 관리형 훈련 프로세스를 통해 연합 학습을 사용하여 이 데이터 세트에 대한 로지스틱 회귀 모델을 훈련합니다.

클라이언트 계정에서 제휴 학습 클라이언트 구현

클라이언트 계정의 SageMaker 노트북 인스턴스에서 다음을 준비합니다. client.py 스크립트와 utils.py 스크립트. NS client.py 파일에는 클라이언트에 대한 코드가 포함되어 있으며 utils.py 파일에는 교육에 필요한 일부 유틸리티 기능에 대한 코드가 포함되어 있습니다. scikit-learn 패키지를 사용하여 로지스틱 회귀 모델을 구축합니다.

In client.py, 우리는 Flower 클라이언트를 정의합니다. 클라이언트는 클래스에서 파생됩니다. fl.client.NumPyClient. 다음 세 가지 메서드를 정의해야 합니다.

  • get_parameters – 현재 로컬 모델 매개변수를 반환합니다. 유틸리티 기능 get_model_parameters 이것을 할 것입니다.
  • 맞게 – 클라이언트 계정의 훈련 데이터에 모델을 훈련시키는 단계를 정의합니다. 또한 서버에서 글로벌 모델 매개변수 및 기타 구성 정보를 수신합니다. 수신된 전역 매개변수를 사용하여 로컬 모델의 매개변수를 업데이트하고 클라이언트 계정의 데이터 세트에서 계속 학습합니다. 이 방법은 또한 훈련 후 로컬 모델의 매개변수, 훈련 세트의 크기 및 임의의 값을 서버에 다시 전달하는 사전을 보냅니다.
  • 평가 – 클라이언트 계정의 검증 데이터를 사용하여 제공된 매개변수를 평가합니다. 유효성 검사 세트의 크기 및 정확도와 같은 기타 세부 정보와 함께 손실을 다시 서버로 반환합니다.

다음은 Flower 클라이언트 정의에 대한 코드 조각입니다.

"""Client interface"""
class FlowerClient(fl.client.NumPyClient): def get_parameters(self, config): return utils.get_model_parameters(model) def fit(self, parameters, config): utils.set_model_params(model, parameters) with warnings.catch_warnings(): warnings.simplefilter("ignore") model.fit(X_train, y_train) return utils.get_model_parameters(model), len(X_train), {} def evaluate(self, parameters, config): utils.set_model_params(model, parameters) loss = log_loss(y_test, model.predict_proba(X_test)) accuracy = model.score(X_test, y_test) return loss, len(X_test), {"accuracy": accuracy}

그런 다음 SageMaker를 사용합니다. 스크립트 모드 나머지를 준비하기 위해 client.py 파일. 여기에는 SageMaker 훈련으로 전달될 매개변수 정의, 훈련 및 검증 데이터 로드, 클라이언트에서 모델 초기화 및 훈련, 서버와 통신하도록 Flower 클라이언트 설정, 마지막으로 훈련된 모델 저장이 포함됩니다.

utils.py 호출되는 몇 가지 유틸리티 함수가 포함되어 있습니다. client.py:

  • get_model_parameters – scikit-learn을 반환합니다. 로지스틱 회귀 모델 매개변수.
  • set_model_params – 모델의 매개변수를 설정합니다.
  • set_initial_params – 모델의 매개변수를 XNUMX으로 초기화합니다. 이는 서버가 시작 시 클라이언트로부터 초기 모델 매개변수를 요청하기 때문에 필요합니다. 그러나 scikit-learn 프레임워크에서는 LogisticRegression 모델 매개변수는 초기화될 때까지 초기화되지 않습니다. model.fit() 호출됩니다.
  • 로드_데이터 – 학습 및 테스트 데이터를 로드합니다.
  • 저장_모델 – 모델을 다음과 같이 저장합니다. .joblib 파일.

꽃은 패키지에 설치된 패키지가 아니기 때문에 SageMaker 사전 구축된 scikit-learn Docker 컨테이너, 우리는 나열합니다 flwr==1.3.0requirements.txt 파일.

우리는 세 개의 파일을 모두 넣습니다(client.py, utils.pyrequirements.txt) 폴더 아래에 tar zip을 압축합니다. .tar.gz 파일(이름: source.tar.gz 이 게시물에서)은 클라이언트 계정의 S3 버킷에 업로드됩니다.

서버 계정에서 연합 학습 서버 구현

서버 계정에서는 Jupyter 노트북에 코드를 준비합니다. 여기에는 두 부분이 포함됩니다. 먼저 서버가 클라이언트 계정에서 훈련 작업을 시작하는 역할을 맡은 다음, 서버가 Flower를 사용하여 모델을 연합합니다.

클라이언트 계정에서 훈련 작업을 실행하는 역할을 맡습니다.

우리는을 사용하여 Boto3 파이썬 SDK 설정하려면 AWS 보안 토큰 서비스 (AWS STS) 클라이언트가 FL-kickoff-client-job 역할을 수행하고 SageMaker 관리형 교육 프로세스를 사용하여 클라이언트 계정에서 교육 작업을 실행하도록 SageMaker 클라이언트를 설정합니다.

sts_client = boto3.client('sts')
assumed_role_object = sts_client.assume_role( RoleArn = "arn:aws:iam::<client-account-number>:role/FL-kickoff-client-job", RoleSessionName = "AssumeRoleSession1"
) credentials = assumed_role_object['Credentials'] sagemaker_client = boto3.client( 'sagemaker', aws_access_key_id = credentials['AccessKeyId'], aws_secret_access_key = credentials['SecretAccessKey'], aws_session_token = credentials['SessionToken'],
)

위임된 역할을 사용하여 클라이언트 계정에 SageMaker 훈련 작업을 생성합니다. 훈련 작업은 SageMaker 내장 scikit-learn 프레임워크를 사용합니다. 다음 코드 조각의 모든 S3 버킷과 SageMaker IAM 역할은 클라이언트 계정과 관련되어 있습니다.

sagemaker_client.create_training_job( TrainingJobName = training_job_name, HyperParameters = { "penalty": "l2", "max-iter": "10", "server-address":"<server-ip-address>:8080", "sagemaker_program": "client.py", "sagemaker_submit_directory": "s3://<client-account-s3-code-bucket>/client_code/source.tar.gz", }, AlgorithmSpecification = { "TrainingImage": training_image, "TrainingInputMode": "File", }, RoleArn = "arn:aws:iam::<client-account-number>:role/service-role/AmazonSageMaker-ExecutionRole-<xxxxxxxxxxxxxxx>", InputDataConfig=[ { "ChannelName": "train", "DataSource": { "S3DataSource": { "S3DataType": "S3Prefix", "S3Uri": "s3://<client-account-s3-data-bucket>/data_prep/", "S3DataDistributionType": "FullyReplicated", } }, }, ], OutputDataConfig = { "S3OutputPath": "s3://<client-account-s3-bucket-for-model-artifact>/client_artifact/" }, ResourceConfig = { "InstanceType": "ml.m5.xlarge", "InstanceCount": 1, "VolumeSizeInGB": 10, }, VpcConfig={ 'SecurityGroupIds': [ "<client-account-notebook-instance-security-group>", ], 'Subnets': [ "<client-account-notebook-instance-sunbet>", ] }, StoppingCondition = { "MaxRuntimeInSeconds": 86400 },
)

Flower를 사용하여 로컬 모델을 글로벌 모델로 집계

서버에서 모델을 연합하기 위한 코드를 준비합니다. 여기에는 페더레이션 전략과 해당 초기화 매개변수 정의가 포함됩니다. 우리는 다음에서 유틸리티 함수를 사용합니다. utils.py 모델 매개변수를 초기화하고 설정하기 위해 앞서 설명한 스크립트입니다. Flower를 사용하면 자신만의 콜백 함수를 정의하여 기존 전략을 맞춤설정할 수 있습니다. 우리는 FedAvg 평가 및 적합 구성을 위한 맞춤형 콜백이 포함된 전략. 다음 코드를 참조하십시오.

 """Initialize the model and federation strategy, then start the server""" model = LogisticRegression() utils.set_initial_params(model) strategy = fl.server.strategy.FedAvg( min_available_clients = 1, # Minimum number of clients that need to be connected to the server before a training round can start min_fit_clients = 1, # Minimum number of clients to be sampled for the next round min_evaluate_clients = 1, evaluate_fn = get_evaluate_fn(model, X_test, y_test), on_fit_config_fn = fit_round, ) fl.server.start_server( server_address = args.server_address, strategy = strategy, config = fl.server.ServerConfig(num_rounds=3) # run for 3 rounds ) utils.save_model(args.model_dir, model)

앞의 코드 스니펫에는 다음 두 가지 기능이 언급되어 있습니다.

  • fit_round – 클라이언트에게 라운드 번호를 전송하는데 사용됩니다. 우리는 이 콜백을 on_fit_config_fn 전략의 매개변수. 우리는 단순히 on_fit_config_fn 매개 변수입니다.
  • get_evaluate_fn – 서버에서 모델 평가에 사용됩니다.

데모 목적으로 데이터 준비 과정에서 따로 보관해 둔 테스트 데이터 세트를 사용하여 고객 계정에서 통합된 모델을 평가하고 그 결과를 고객에게 다시 전달합니다. 그러나 거의 모든 실제 사용 사례에서 서버 계정에 사용되는 데이터는 클라이언트 계정에 사용되는 데이터 세트와 분할되지 않는다는 점은 주목할 가치가 있습니다.

연합 학습 과정이 끝나면, model.tar.gz 파일은 SageMaker에 의해 클라이언트 계정의 S3 버킷에 모델 아티팩트로 저장됩니다. 한편, model.joblib 파일은 서버 계정의 SageMaker 노트북 인스턴스에 저장됩니다. 마지막으로 테스트 데이터 세트를 사용하여 최종 모델을 테스트합니다(model.joblib) 서버에서. 최종 모델의 테스트 출력은 다음과 같습니다.

fl-결과

정리

작업을 마친 후 서버 계정과 클라이언트 계정 모두에서 리소스를 정리하여 추가 비용이 발생하지 않도록 합니다.

  1. SageMaker 노트북 인스턴스를 중지합니다.
  2. VPC 피어링 연결 및 해당 VPC를 삭제합니다.
  3. 데이터 저장용으로 생성한 S3 버킷을 비우고 삭제합니다.

결론

이 게시물에서는 Flower 패키지를 사용하여 SageMaker에서 연합 학습을 구현하는 방법을 살펴보았습니다. VPC 피어링을 구성하고, 교차 계정 액세스를 설정하고, FL 클라이언트 및 서버를 구현하는 방법을 보여주었습니다. 이 게시물은 데이터 공유가 제한된 계정 전체에서 분산 데이터를 사용하여 SageMaker에서 ML 모델을 훈련해야 하는 사람들에게 유용합니다. 이 게시물의 FL은 SageMaker를 사용하여 구현되었으므로 SageMaker의 훨씬 더 많은 기능을 프로세스에 가져올 수 있다는 점은 주목할 가치가 있습니다.

SageMaker에서 연합 학습을 구현하면 SageMaker가 ML 수명 주기를 통해 제공하는 모든 고급 기능을 활용할 수 있습니다. EC2 인스턴스나 엣지를 사용하는 등 AWS 클라우드에서 연합 학습을 달성하거나 적용하는 다른 방법이 있습니다. 이러한 대체 접근 방식에 대한 자세한 내용은 다음을 참조하세요. FedML을 사용한 AWS의 연합 학습엣지에서 ML을 위한 연합 학습 적용.


저자 소개

셰리 딩 Amazon Web Services(AWS)의 수석 AI/ML 전문 솔루션 아키텍트입니다. 그녀는 컴퓨터 과학 박사 학위와 함께 기계 학습에 대한 광범위한 경험을 가지고 있습니다. 그녀는 주로 다양한 AI/ML 관련 비즈니스 과제에 대해 공공 부문 고객과 협력하여 AWS 클라우드에서 기계 학습 여정을 가속화하도록 돕습니다. 손님을 돕지 않을 때는 야외 활동을 즐깁니다.

로레아 아리사발라가 그녀는 고객이 Amazon SageMaker를 사용하여 ML 솔루션을 설계하도록 돕는 영국 공공 부문의 솔루션 아키텍트입니다. 그녀는 또한 하드웨어 가속을 전담하는 Technical Field Community의 일원이며 AWS Inferentia 및 AWS Trainium 워크로드의 테스트 및 벤치마킹을 돕습니다.

벤 스나이블리 AWS 공공 부문 수석 수석 전문가 솔루션 아키텍트입니다. 그는 빅 데이터, 분석 및 AI/ML 프로젝트에서 정부, 비영리 및 교육 고객과 협력하여 AWS를 사용하여 솔루션을 구축하도록 돕습니다.

spot_img

최신 인텔리전스

spot_img