머신러닝 관점에서 information transmission

1. introduction

 

모든 network는 기본적으로 graph로 나타낼 수 있다.

 

C가 작성만 하면 컴퓨터가 이해하는 것이 아니고 compile 과정을 거쳐서 기계어로 최종 번역되어야 이해할 수 있다.

 

network도 마찬가지로 그냥 GPU에서 돌아가는 것이 아니라 graph lowering 과정을 거쳐야 hardware에서 이해할 수 있다.

 

이러한 역할을 해주는 것이 deep learning compiler

 

지금까지 software측면에서 network만 주로 공부했지만 실제로 network가 CPU,GPU 같은 hardware 환경에서 돌아가기까지 생각보다 많은 일이 있다.

 

Network가 GPU에서 돌아가려면?

 

2. acceleration

 

시간에 따른 거리의 변화량이 속도이고 속도의 변화량이 가속도(acceleration)

 

2-1) python list와 numpy array

 

python list는 각각의 element를 개별 object 단위로 저장

 

numpy array는 비슷한 data type들을 메모리 상 동일한? 비슷한? 위치에 한번에 잡아서 처리함

 

 

python list는 element 개별 주소를 부여하여 저장

 

numpy array는 동일한 type의 element를 한번에 묶어서 저장

 

numpy array는 c를 기반으로 만들어져 python list에 비해 가속(속도가 빠름)되었음

 

 

 

실제로 numpy array가 0.1초 정도 빠름

 

2-2) python과 C

 

python도 C를 기반으로 만들어졌지만 기본적으로 user friendly 언어

 

C는 hardware friendly 언어로 속도 향상에 집중

 

python은 interpreted 언어여서 매 실행할 때마다 interpretation을 수행하고 C는 한번에 compile을 하여 사용하는 언어

 

interpretation이 무슨 의미를 가지냐면 python은 virtual machine에서 실행되어서 컴퓨터가 사용하기전에 vritual machine에서 해석하는 interpretation과정이 추가적으로 필요하다는 뜻

 

반면 C는 compile을 통해 바로 machine code로 만들어져 컴퓨터가 이해할 수 있어서 python보다 과정자체가 짧으니까 기본적으로 속도가 빠르다.

 

 

3. information transmission

 

3-1) the speed of information

 

정보는 무형이라 방해를 받지 않고 그냥 빠르게 움직일 것 같은데 그렇지 않다

 

sender에서 receiver로 정보가 네트워크상에서 빠르게 이동하려면 랜선의 병목현상을 해결해야함

 

차가 도로에서 빠르게 움직이려면 넓어야하듯이 랜선상에서 이동하는 정보 패킷도 랜선이 넓어야 빠르게 움직일 수 있음

 

넓은 도로인 3번째가 가장 빠르고 효율적으로 이동할 수 있음

 

congestion control은 네트워크상에서 어디가 막혀 느려지는것인지, 그것을 어떻게 해결할지 조정하는 작업

 

 

오른쪽처럼 내부가 막혀있으면 수용력이 좋아도 효율적으로 물이 안차

 

 

3-2) CPU는 어떻게 만들어졌을까

 

CPU같은 하드웨어단에서 정보 전송력을 높이기 위한 방법으로 bandwidth를 넓힘

 

bandwidth is a measure of how much data over time a communication link can handle, its capacity

 

bandwidth를 넓힌다는 뜻은 한 번에 통과하는 정보의 capacity를 높인다는 뜻

 

 

 

64bit라는 것은 cpu register의 너비를 뜻한다고??

 

64bit는 32bit에 비해 상대적으로 2배의 정보 bit를 처리할 수 있다

 

throughput is the actual amount of data that is successfully sent/received over the communication link

 

 

throughput은 정보 전송이 성공적으로 이루어진, 실제 전송된 데이터 양

 

bandwidth가 나타내는 총 정보처리량에서 latency나 packet loss, technical issue 등으로 실제로 전송되는 throughput은 조금 차이가 생김

 

latency is the time it takes for a packet to get across the network, from source to destination

 

latency는 정보가 네트워크상에서 목적지까지 전송되는데 걸리는 시간이다.

 

 

 

자주 쓰는 정보는 CPU와 가까운 곳에 두어 latency를 줄인다?

 

CPU의 core 수가 많을수록 정보의 병렬처리(parallel processing) 능력이 증가하는데 실제 정보 처리량인 throughput를 증가시킨다는 의미다.

 

 

parallel processing is for increasing throughput, not for latency or for bandwidth

 

 

3-3) CPU는 정보 처리를 어떻게 할까

 

 

첫번째 단계로 메모리에서 CPU에 처리를 시작하라는 지시사항을 fetch함

 

두번째 단계로 CPU가 무슨 처리를 해야하는지 이해하도록 지시사항을 decode함

 

여기서 지시사항이라는 것은 대표적으로 arithmetic 연산

 

무슨 지시사항인지를 CPU가 알았다면 다음 단계로 CPU내부에 register나 memory로 피연산자(operands)들이 모임

 

A+B를 해야하는데 A,B를 모르면 더하기를 할 수가 없으니까

 

피연산자들이 모이면 다음 단계, 실제로 지시사항을 이제 수행함

 

실제로 지시사항이 수행되면 결과를 저장하기 위해 메모리에 접근하거나 CPU내부 register에 접근함

 

결과가 저장된다면 CPU는 다양한 원소들의 상태를 업데이트하거나 다음 지시사항을 수행

 

 

3-4) machine learning에서 정보 전송

 

machine learning model 자체에서 정보의 병목 현상이 심함

 

model layer가 복잡할수록, 계산량이 많을수록 train이 느리다는 것은 상식

 

 

 

bandwidth는 정보를 처리할 수 있는 능력이 5개 정도 된다는 뜻인데

 

throughput는 여러가지 이유(모델이 복잡해서?)로 실제로 정보가 전송되는 양이 3개라는 뜻이고

 

latency는 목적지까지 정보 전송이 걸리는 시간

 

 

3-5) 정보 전송이 느린 현상을 어떻게 개선할 것인가

 

 

manycore design

 

novel dataflow architecture(새로운, 개선된 dataflow architecture)

 

low precision arithmetic

 

in-memory computing capability

TAGS.

Comments