>  기사  >  기술 주변기기  >  누군가 마침내 분산 머신러닝을 명확하게 설명했습니다.

누군가 마침내 분산 머신러닝을 명확하게 설명했습니다.

王林
王林앞으로
2023-04-13 22:52:011491검색

​분산 학습이라고도 불리는 분산 기계 학습은 여러 컴퓨팅 노드(워커 노드, Worker라고도 함)를 사용하여 기계 학습 또는 딥 러닝을 수행하는 알고리즘 및 시스템을 의미하며, 성능 향상, 개인 정보 보호를 목표로 하며 확장이 가능합니다. 더 큰 훈련 데이터와 더 큰 모델.

연합 학습은 분산 학습의 특별한 유형으로 간주될 수 있으며, 이를 통해 분산 기계 학습에서 직면하는 몇 가지 어려움을 더욱 해결할 수 있으며 이를 통해 개인 정보 보호를 위한 인공 지능 애플리케이션 및 제품을 구축할 수 있습니다.

1. 분산 머신러닝 개발 역사

최근 몇 년 동안 신기술의 급속한 발전으로 인해 데이터 양이 유례없이 증가했습니다. 데이터 세트를 분석하고 의사결정 시스템을 구축하는 데 머신러닝 알고리즘이 점점 더 많이 사용되고 있습니다. 그리고 자율주행차 제어, 음성 인식, 소비자 행동 예측(Khandani et al. 2010 참조)과 같은 문제의 복잡성으로 인해 알고리즘 솔루션은 실현 가능하지 않습니다.

복잡한 애플리케이션에 필요한 교육 데이터가 쉽게 테라바이트 수준에 도달할 수 있기 때문에 단일 시스템에서 모델 교육을 실행하는 데 오랜 시간이 걸리면 솔루션 설계자가 분산 시스템을 사용하여 병렬 처리량과 I/O 대역폭을 늘리게 되는 경우도 있습니다.

그 외의 경우, 데이터 자체가 분산되어 있거나 단일 시스템에 저장하기에는 볼륨이 너무 큰 경우 중앙 집중식 솔루션은 바람직하지 않습니다. 예를 들어, 대기업은 서로 다른 위치에 저장된 데이터에 대한 트랜잭션 처리를 수행하거나 데이터 볼륨이 너무 커서 이동 및 중앙 집중화할 수 없습니다.

이러한 유형의 데이터 세트를 기계 학습 문제에 대한 교육 데이터로 액세스하려면 병렬 컴퓨팅이 가능하고 다중 데이터 배포에 적응하며 오류 복구 기능을 보유하는 알고리즘을 선택하고 구현해야 합니다.

최근에는 머신러닝 기술이 널리 활용되고 있습니다. 다양한 경쟁 방법과 알고리즘이 등장했지만 사용된 데이터 표현은 구조적으로 매우 유사합니다. 머신러닝 작업에서 계산의 대부분은 선형 대수학에서 흔히 발생하는 문제인 벡터, 행렬, 텐서의 기본 변환에 관한 것입니다.

이 작업을 최적화해야 하는 필요성은 수십 년 동안 고성능 컴퓨팅(HPC) 분야에서 매우 활발한 연구 방향이었습니다. 따라서 HPC 커뮤니티의 일부 기술과 라이브러리(예: BLAS 또는 MPI)가 기계 학습 커뮤니티에서 성공적으로 채택되어 시스템에 통합되었습니다.

동시에 HPC 커뮤니티에서는 기계 학습을 새로운 고부가가치 워크로드로 식별하고 HPC 방법을 기계 학습에 적용하기 시작했습니다.

Coates et al.은 상용 고성능 컴퓨팅(COTSHPC) 시스템에서 단 3일 만에 10억 개의 매개변수로 네트워크를 훈련했습니다.

You 등은 2017년에 고성능 컴퓨팅 애플리케이션용으로 설계된 칩인 Intel의 Knights Landing에서 신경망 훈련을 최적화할 것을 제안했습니다.

Kurth et al.은 2017년에 대규모 병렬 HPC 시스템에서 딥 러닝 문제(예: 날씨 패턴 추출)를 최적화하고 확장할 수 있는 방법을 시연했습니다.

Yan et al.은 2016년에 HPC의 경량 분석과 같은 기술을 빌려 워크로드 요구 사항을 모델링하면 클라우드 컴퓨팅 인프라에서 심층 신경망 애플리케이션을 예약하는 문제를 해결할 수 있다고 제안했습니다.

Li et al., 2017은 가속기에서 실행될 때 하드웨어 오류에 대한 심층 신경망의 복구 속성을 연구했습니다(가속기는 주요 고성능 컴퓨팅 시스템에 배포되는 경우가 많습니다).

다른 대규모 컴퓨팅 과제와 마찬가지로 워크로드를 가속화하는 근본적으로 다르고 보완적인 두 가지 방법이 있습니다. 즉, 머신에 더 많은 리소스를 추가하는 것(GPU/TPU 컴퓨팅 코어의 지속적인 개선과 같은 수직적 확장), 노드를 시스템에 추가합니다(수평 확장, 저비용).

기존 슈퍼컴퓨터, 그리드 및 클라우드 사이의 경계가 점점 더 모호해지고 있으며, 특히 기계 학습과 같은 까다로운 워크로드를 위한 최적의 실행 환경에 있어서 더욱 그렇습니다. 예를 들어 GPU와 가속기는 주요 클라우드 데이터 센터에서 더 일반적입니다. 따라서 대규모로 허용 가능한 성능을 달성하려면 기계 학습 워크로드의 병렬화가 중요합니다. 그러나 중앙 집중식 솔루션에서 분산 시스템으로 전환할 때 분산 컴퓨팅은 성능, 확장성, 장애 복원력 또는 보안 측면에서 심각한 문제에 직면합니다.

2. 분산 머신러닝 개요

알고리즘마다 고유한 통신 패턴이 있기 때문에 일반 머신러닝을 효과적으로 분산시킬 수 있는 종합 시스템을 설계하는 것이 과제입니다. 현재 분산 기계 학습의 다양한 개념과 구현이 있지만 전체 설계 공간을 포괄하는 공통 아키텍처를 소개하겠습니다. 일반적으로 머신러닝 문제는 훈련 단계와 예측 단계로 나눌 수 있습니다(그림 1-5 참조).

누군가 마침내 분산 머신러닝을 명확하게 설명했습니다.

▲ 그림 1-5 머신러닝 구조. 훈련 단계에서 ML 모델은 훈련 데이터를 사용하고 하이퍼파라미터를 조정하여 최적화됩니다. 훈련된 모델은 시스템에 배포되어 들어오는 새로운 데이터에 대한 예측을 제공합니다

훈련 단계에는 대량의 훈련 데이터를 입력하고 일반적으로 사용되는 ML 알고리즘(EA(진화 알고리즘), 의사 결정 트리와 같은 규칙 기반 기계 학습 알고리즘 및 연관 규칙)을 사용하여 기계 학습 모델을 훈련하는 것이 포함됩니다. , 토픽 모델(TM), 행렬 분해(Matrix Factorization), 확률적 경사하강법(SGD) 기반 알고리즘 등을 사용하여 모델 업데이트를 수행합니다.

주어진 문제에 적합한 알고리즘을 선택하는 것 외에도 선택한 알고리즘에 대한 하이퍼파라미터 튜닝도 수행해야 합니다. 훈련 단계의 최종 결과는 훈련된 모델을 얻는 것입니다. 예측 단계에서는 훈련된 모델을 실제로 배포하는 것입니다. 훈련된 모델은 새로운 데이터를 입력으로 수신하고 예측을 생성합니다(출력).

모델의 훈련 단계는 일반적으로 계산 집약적이고 대규모 데이터 세트가 필요하지만 추론은 더 적은 컴퓨팅 성능으로도 수행할 수 있습니다. 훈련 단계와 예측 단계는 상호 배타적이지 않습니다. 증분 학습은 훈련 단계와 예측 단계를 결합하며, 예측 단계의 새로운 데이터를 사용하여 모델을 지속적으로 훈련합니다.

배포와 관련하여 문제를 두 가지 다른 방식, 즉 데이터 병렬성 또는 모델 병렬성으로 모든 시스템에 걸쳐 나눌 수 있습니다(그림 1-6 참조). 두 가지 방법을 동시에 적용할 수도 있습니다.

누군가 마침내 분산 머신러닝을 명확하게 설명했습니다.

▲ 그림 1-6 분산 기계 학습의 병렬성. 데이터 병렬성은 훈련 데이터 세트의 서로 다른 하위 집합에서 동일한 모델의 여러 인스턴스를 훈련하는 반면, 모델 병렬성은 단일 모델의 병렬 경로를 여러 노드에 분산하는 것입니다.

데이터 병렬(Data Parallel) 방법에서는 데이터가 분할됩니다. 시스템에 작업자 노드가 있는 횟수만큼 모든 작업자 노드가 동일한 알고리즘을 다른 데이터 세트에 적용합니다. 중앙 집중화 또는 복제를 통해 모든 작업자 노드에서 동일한 모델을 사용할 수 있으므로 자연스럽게 일관된 단일 출력이 생성됩니다. 이 방법은 데이터 샘플에 대한 독립적이고 동일한 분포 가정을 충족하는 모든 ML 알고리즘(즉, 대부분의 ML 알고리즘)에 사용할 수 있습니다.

모델 병렬 접근 방식에서는 모델의 다양한 부분을 작동하는 작업자 노드에서 전체 데이터 세트의 정확한 복사본을 처리합니다. 따라서 모델은 모든 모델 부분의 집합입니다. 모델 매개변수는 일반적으로 분할될 수 없기 때문에 모델 병렬 처리 방법은 모든 기계 학습 알고리즘에 자동으로 적용될 수 없습니다.

한 가지 옵션은 동일하거나 유사한 모델의 여러 인스턴스를 훈련하고 앙상블(예: 배깅, 부스팅 등)과 같은 방법을 사용하여 모든 훈련된 모델의 출력을 집계하는 것입니다. 최종 아키텍처 결정은 분산 기계 학습 시스템의 토폴로지입니다. 풍부한 기능을 달성하려면 분산 시스템을 구성하는 다양한 노드를 특정 아키텍처 패턴을 통해 연결해야 합니다. 이것은 일반적인 작업입니다. 그러나 모드 선택은 노드가 수행할 수 있는 역할, 노드 간 통신 정도 및 전체 배포의 장애 복원력에 영향을 미칩니다.

그림 1-7은 Baran의 분산 통신 네트워크에 대한 일반적인 분류와 일치하는 4가지 가능한 토폴로지를 보여줍니다. 중앙 집중식 아키텍처(그림 1-7a)는 단일 중앙 위치에서 발생하는 집계에 대한 엄격한 계층적 접근 방식을 사용합니다. 분산형 구조는 집계가 모든 노드(예: 트리 토폴로지)에 브로드캐스트될 때 복제 모델이 지속적으로 업데이트되는 중간 집계를 허용하거나(그림 1-7b) 여러 매개변수 서버에 걸쳐 분할된 분할 모델을 사용합니다(그림 1). -7b).1-7c). 완전 분산 아키텍처(그림 1-7d)는 솔루션을 통합하는 독립적인 노드의 네트워크로 구성되며 각 노드에는 특정 역할이 할당되지 않습니다.

누군가 마침내 분산 머신러닝을 명확하게 설명했습니다.

▲ 그림 1-7 분산 기계 학습 토폴로지

3. 분산 기계 학습과 연합 학습의 일반적인 발전

분산 기계 학습의 발전으로 인해 개인 정보 보호에 대한 필요성도 생겼습니다. 일부 콘텐츠는 연합 학습과 겹칩니다. 안전한 다자간 계산, 동형 계산, 차등 개인 정보 보호 등과 같은 일반적인 암호화 방법도 점차 분산 기계 학습에 사용됩니다. 일반적으로 연합 학습은 분산 리소스를 사용하여 기계 학습 모델을 공동으로 훈련하는 효과적인 방법입니다.

연합 학습은 원본 데이터를 분산된 상태로 유지하고 단일 서버나 데이터 센터로 이동하지 않고 여러 사용자가 협력하여 모델을 훈련하는 분산 기계 학습 접근 방식입니다. 연합 학습에서는 원시 데이터 또는 원시 데이터를 안전하게 처리하여 생성된 데이터를 훈련 데이터로 사용합니다. 연합 학습은 훈련 데이터의 전송을 피하면서 분산 컴퓨팅 리소스 간의 중간 데이터 전송만 허용합니다. 분산 컴퓨팅 리소스는 최종 사용자의 모바일 장치 또는 여러 조직의 서버를 의미합니다.

연합 학습은 데이터를 코드에 넣는 대신 데이터에 코드를 도입하여 개인 정보 보호, 소유권 및 데이터 위치와 같은 기본적인 문제를 기술적으로 해결합니다. 이러한 방식으로 연합 학습을 통해 여러 사용자가 법적 데이터 제약 조건을 충족하면서 모델을 공동으로 교육할 수 있습니다.

이 글은 "연합 학습: 알고리즘 및 시스템 구현에 대한 자세한 설명"(ISBN: 978-7-111-70349-5)에서 발췌되었으며 출판사의 허가를 받아 게시되었습니다.

위 내용은 누군가 마침내 분산 머신러닝을 명확하게 설명했습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제