분산 학습 환경
- 분산 학습은 분산 컴퓨팅을 기반으로 함.
- 분산 학습 환경의 큰 축 :
- 클러스터 컴퓨팅과 클라우드 컴퓨팅 : 컴퓨터를 여러 대 연결하여 컴퓨팅 자원을 늘려 줌
- 멀티스레드와 멀티코어 : 한번에 여러 작업을 진행 할 수 있도록 함
- 하드웨어 가속기(GPU)
클러스터 컴퓨팅과 클라우드 컴퓨팅
- 클러스터 컴퓨팅 cluster computing은 컴퓨터 여러대를 하나의 커다란 그룹으로 묶어 연산력을 높이는 컴퓨팅 환경
- 클러스터 컴퓨팅에서 컴퓨터 자원 하나는 특별히 노드라고 표현
- 클러스터 컴퓨팅은 클라우드 컴퓨팅cloud computing으로 발전함
- 클라우드 컴퓨팅은 원하는 자원을 주문한 즉시 바로 사용하고, 비용을 사용한 시간과 자원만큼만 지불하는 매우 유연한 컴퓨팅 환경
- 두 컴퓨팅 환경 모두 네트워크 구조에 따라 성능에 영향을 끼침
멀티스레드와 멀티코어
- 한 CPU 안에서 여러 연산이 병렬로 진행되는 기술
- 멀티스레드는 소프트웨어를 활용하는 방법과 하드웨어를 활용하는 방법이 있음
- 한 CPU에서 여러 작업을 하는 스레드와 달리 멀티코어는 CPU코어를 여러개 사용하는 기술
- 멀티 스레드와 멀티 코어는 애플리케이션의 병렬 처리 모델에 따라 성능이 좌우 됨
하드웨어 가속기(GPU)
- GPU,TPU(tenfor porcessing unit), FPGA(field programmable gate array)가 있으며 이들은 모두 컴퓨터의 연산자원인 CPU, 메모리를 사용하지 않음
- 연산 유닛과 메모리 구조를 따로 가지고 있음
- 하드웨어 가속기는 특정 연산을 하드웨어로 직접 구현하거나 명령어 하나를 대량의 데이터에 적용하는 SIMD single instruction multiple data를 극대화한 장치
- NVIDIA의 GPU는 연산 유닛인 ALU arithmetic logic unit를 대량으로 집적하고 공유 메모리를 통해 SIMD를 극대화 함
- 하드웨어 가속기는 하드웨어를 활용하여 멀티스레드를 확장한것이라 생각해도 됨.
분산 학습을 위한 소프트웨어
CPU SIMD라이브러리와 하드웨어 가속기 라이브러리
- 멀티스레드와 멀티코어를 활용하려면 하드웨어 가속기에 명령어를 직접 전달해 주는 소프트웨어가 필요
- (->> CPU제조사에서 제공하는 컴파일러나 명령어가 호환되는 컴파일러가 필요함)
- 하드웨어 가속기를 사용하는 소프트웨어를 만들려면 해당 하드웨어 제조사에서 제공하는 CUDA같은 저수준 툴킷과 관련된 프레임 워크가 필요
분산 컴퓨팅 라이브러리
- 여러 컴퓨터를 네트워크로 연결하려면 별도의 소프트웨어가 필요함
- 가장 간단한 통신 라이브러리 : 소켓socket (>>소켓을 사용하면 TCP/IP를 직접 사용할 수 있지만, 소켓은 컴퓨터 끼리 직접 통신을 하는 기능만 제공)
- 분산학습에는 컴퓨터간 통신 뿐 아니라 다양한 데이터를 교환할 떄 발생하는 오버헤드가 제거된 고수준의 통신을 갖추어야함.
- 분산 컴퓨팅 라이브러리가 필요하다
- 분산 컴퓨팅 라이브러리
- MPI 라이브러리
- NCCL 라이브러리
- Horovod 라이브러리
- RLlib 라이브러리 : 강화학습에 특화된 라이브러리
머신러닝 프레임워크
- 텐서플로우, 파이토치, 카페등이 있음
- 머신러닝에 필요한 연산과 분산 학습을 위해 다양한 라이브러리를 쉽게 사용할 수 있도록 되어있음
개발할떄, 많이 사용하고, 언급되는 단어들인데 개념정리를 안하고 사용했던 것 같다.
정리하고 나니 개발 할 때 도움이 될것 같은 느낌~? ㅎㅎㅎㅎ
한번 정도는 제대로 이해하고 정리해두면 개발하는데 많은 도움이 될 것 같다
@book{Do-it-Reinforcement-Learning,
title={Do it! 강화 학습 입문},
author={조규남, 맹윤호, 임지순},
isbn={9791163032526},
url={http://www.yes24.com/Product/Goods/101924618},
year={2021},
publisher={이지스퍼블리싱}
}
반응형
'Machine Learning' 카테고리의 다른 글
Supervised Learning & Unsupervised Learning (0) | 2022.04.26 |
---|---|
what is Machine Learning? (0) | 2022.04.26 |
NLP 를 위한 CNN (0) | 2020.07.14 |
Word2Vec (0) | 2020.07.13 |
Bert (0) | 2020.07.13 |