머신러닝 관점에서 information transmission
1. introduction
모든 network는 기본적으로 graph로 나타낼 수 있다.
C가 작성만 하면 컴퓨터가 이해하는 것이 아니고 compile 과정을 거쳐서 기계어로 최종 번역되어야 이해할 수 있다.
network도 마찬가지로 그냥 GPU에서 돌아가는 것이 아니라 graph lowering 과정을 거쳐야 hardware에서 이해할 수 있다.
이러한 역할을 해주는 것이 deep learning compiler
지금까지 software측면에서 network만 주로 공부했지만 실제로 network가 CPU,GPU 같은 hardware 환경에서 돌아가기까지 생각보다 많은 일이 있다.
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로 정보가 네트워크상에서 빠르게 이동하려면 랜선의 병목현상을 해결해야함
차가 도로에서 빠르게 움직이려면 넓어야하듯이 랜선상에서 이동하는 정보 패킷도 랜선이 넓어야 빠르게 움직일 수 있음
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
'딥러닝 > light weight modeling' 카테고리의 다른 글
경량화 모델하면 가장 먼저 떠오르는 MobileNetV1의 핵심 아이디어 (0) | 2022.11.05 |
---|---|
컴퓨터의 근본 원리가 된 finite state machine 개념 익히기 (0) | 2022.11.04 |
딥러닝에서 parameter search하는 gradient descent와 기하학적 의미 (0) | 2022.11.02 |
머신러닝 관점에서 entropy 개념 알아보기 (0) | 2022.11.01 |
공간(space)과 시간복잡도(time) 사이 관계 (0) | 2022.10.31 |