개인 공부 49

Distributed System - 10. Distributed Learning Algorithms

* Distributed learning- 왜 분산 학습을 하여야할까?ex) On-device learning만약 모델이 개인 데이터를 학습하여 맞춤형 서비스를 제공해야한다고 생각해보자. 이 경우 Privacy 문제 때문에 Server로 데이터를 보내는 것은 문제가 될 수 있다. 1. 데이터의 분산성 : 데이터는 센서, 기기, DB 등 다양한 곳에 분산되어 존재하지만, 보안 등의 이유 때문에 고립되어있을 수 있다.2. AI 시스템의 적응 필요성 : AI 시스템은 센서에서 수집된 새로운 데이터에 지속적으로 적응해야할 필요가 있다. 즉, 개인적인 데이터를 다룰 일이 필수적으로 생긴다.=> 분산된 여러 client에서 데이터를 활용해 모델을 자체적으로 학습할 수 없을까?1. Federated Learning ..

개인 공부 2024.12.06

Distributed System - 9. Distributed Training

1. Motivation최근에는 분산 컴퓨팅의 활용 도메인에 AI를 위한 HPC 기능을 제공하는 것이 추가되고 있다. 그 이유에는 Transformer의 등장 이후 가속화된 모델 크기 비대화가 큰 지분을 차지한다.모델을 사용한단 것은 크게 Training - Inference의 단계가 존재하게 되는데,  Training의 단계에서 리소스 요구량은 단일 노드가 감당하기에는 불가능에 가까워지는 것이 현실이다. GPT-3 175B는 A100 기준으로도 단일로 3100000의 비현실적인 시간이 소요되는 것을 확인할 수 있다. * Data parallelism따라서 결국에는 여러 GPU가 학습을 병렬적으로 처리하게 된다. 이 병렬 방법중 Data parallelism이란 데이터 자체를 분할하여 각 GPU에게 할당..

개인 공부 2024.12.05

Distributed System - 8. Fault Tolerance

1. Introduction* DependabilityComponent가 서비스를 client에게 제공하기 위해, 다른 Component의 서비스에 의존할 수도 있다. 즉, 하나의 component는 완전히 독립적으로 동작하지 않을 수도 있으며, 다른 component와의 상호작용에 따라 동작이 달라질 수 있다.정의 : component C가 component C*에 의존한다고 할 때, C*의 동작이 올바르게 수행하지 않으면 C 역시 장애가 발생한다. (여기서 component는 프로세스나 채널을 의미한다.)=> 이러한 Dependability의 요구사항은 크게 4가지가 존재한다.1. Availability : 시스템의 사용 가능 상태가 얼마나 잘 유지되는지를 의미.(얼마나 준비상태를 유지할 수 있는지...

개인 공부 2024.12.04

Distributed System - 7. Consistency & Replication

1. Reasons for replication복제(Replication)이란 데이터를 여러 복제본(replica)로 분산하여 저장하는 것을 의미한다.복제를 함으로써 얻을 수 있는 효과는 크게 2가지가 있다.1. 성능 : 동일한 데이터에 대해 여러 클라이언트가 동시에 요청을 처리할 수 있어 성능이 향상된다.2. 확장성(Scalability) : replica를 추가함으로써 시스템의 capacity를 확장할 수 있다. (Task 분산) 그러나 복제를 하면 자연스럽게 따라오는 문제가 있는데, 바로 replica 끼리의 consistency 문제이다.replicas consistent를 지키기 위해서, Write 작업과 다른 작업이 동시에 일어날 때 처리를 해줄 규칙이 필수가 된다는 것이다.1. Read-Wr..

개인 공부 2024.12.02

Distributed System - 6. Coordination

1. Clock synchronization분산 시스템을 구축할 때, 각 Autonomous computing element 들은 물리적으로 격리되어있다고 가정한다.따라서 이들은 공통된 Physical global clock을 가지는 것이 불가능하다. 따라서 분산 시스템을 구축하며 coordination의 측면에서 Clock 동기화는 필수이다.위의 사진과 같이 output.c를 컴파일한 결과 output.o가 local clock이 달라 output.o가 먼저 만들어진 것으로 인식될 수가 있다는 것이다. 그렇다면 clock 동기화는 어떻게 하면 될까? 1. Physical clock만약 단순히 선후 관계의 이벤트 순서만이 아니라 해당 이벤트의 정확한 발생 시간이 필요하다고 해보자.(Ex : UTC 등의 ..

개인 공부 2024.12.02

Distributed System - 5. Naming

1. Names, identifiers and addresses- Name : entity를 가리키는 bit나 char의 나열- Entity : Name이 붙을 수 있는 모든 것=> Entity에 접근하기 위해서는 Access Point(AP)를 통해야하며, 이 AP도 역시 entity이다.- Address : AP의 Name- Naming system : 어떻게 각 Entity의 name을 결정할 것이며 이러한 name을 가지고 어떻게 해당 entity까지 접근할지, 그리고 그 name 들을 어떻게 관리, 유지할지를 결정할지를 정하는 것이다. - Identifiers(ID)란?1. Pure name : 이름에 아무런 의미가 없는 형태.2. Identifier : entity와 1대1 매칭이 되며, 재사..

개인 공부 2024.10.23

Distributed System - 4. Communication

1. Layered protocols- 기본적인 Layered protocols로써 OSI 7계층이 있다.-> 자세한 것은 네트워크에서 배우기에 가볍게 말하면 물리,데이터링크,네트워크,전송,세션,표현,응용 계층으로 통신 프로토콜을 계층화한 것이다. -> 통신의 본질은 Message를 교환하는 것이고, 해당 Message를 보내고자 할 때, Client의 응용 계층부터 물리 계층 까지 Message가 내려가며 Header를 추가한다. 이후 목적지의 물리 계층부터 응용 계층까지 헤더를 확인하며 최종 Message를 수신 처리하는 것이다. * Distributed System에서의 Layered protocols1. Physical layer : "bit"라는 가장 기본적인 데이터 단위를 실제로 전송하는 방식..

개인 공부 2024.10.20

Distributed System - 3. Processes

1. Threads- Processor : Instruction 집합을 자동적으로 순서대로 실행할 수 있는 것.- Process : SW processor 면서 여러가지 Thread를 실행하는 context를 가진 프로그램 실행의 단위- Thread :  가장 작은 단위의 SW processor. 실행될 수 있는 가장 작은 Instruction 단위. Thread를 저장한다는 것은 현재 실행을 멈추고 그에 관한 레지스터 data들을 다음 stage를 대비하여 저장하는 것을 의미한다. * Context switching- Processor Context : Instruction Series을 실행하기 위해 저장하고 있는 레지스터 값들의 collection. (Stack pointer, addressing ..

개인 공부 2024.10.07

Distributed System - 2. Architectures

1. Architectures- Distributed System의 아키텍처를 나누는 기준으로는 여러가지가 있을 수 있는데, 그 기준은 다음과 같다.1. Replaceable : Component들이 잘 정의된 인터페이스를 가져서 다른 component와 상호작용이 가능한가?2. Connectivity : Component 간의 연결이 어떻게 되어있는가?3. Data exchange : Component 간 데이터 교환법이 어떻게 되는가?4. Mechanism : Component와 Connector들이 시스템 상에서 어떻게 구성되는가?(* Connector : Connector는 Component 간 통신 등을 중재하는 Component이다. 여기서 통신은 procedure call, messaging..

개인 공부 2024.10.01

Distributed System - 1. Introduction

1. What is a distributed system?분산 시스템이란 종단 user들에게 하나의 coherent system으로 보이는 Autunomous computing element들의 collection을 의미한다.Autonomous computing element(node)란 물리적으로 독립된 하드웨어나 프로세스를 의미한다. 즉, 메모리 등 자원 공유가 안되는 상태이다.Single coherent system 이란 하나의 시스템으로 인지되는 시스템을 의미하며, 이를 위해 노드들은 협력이 필요하다.각 노드는 물리적으로 독립되어있으므로 각자의 시간을 가지고 작동하며 phsycal global clock이 없고, 동기화 및 조정 문제를 해결해야한다.즉, Collection of nodes는 어떻게..

개인 공부 2024.09.30