VOL. 184 October 2021
컴퓨터는 인간이 작성한 코드를 그대로 이해하지 못한다.
인간이 작성한 코드(Source file)를 컴퓨터가 이해할 수 있는 기계어로 번역해주어야 컴퓨터가 이해할 수 있는 것이다.
이렇게 인간이 사용하는 언어인 고급언어를 기계가 이해 할 수 있는 기계어로 번역하는 과정에 사용되는 것이 바로 컴파일러(Compiler)다.
최근 들어 딥러닝을 활용한 인공지능 기술이 발전함에 따라 의료, 금융, 제조, 보안, 운송, 교육 등 다양한 분야에서 널리 인공지능이 활용되고 있다. 딥러닝이란 머신러닝(기계학습)의 하위개념으로 여러 층을 가진 인공신경망을 사용하여 머신러닝을 수행하는 것을 의미한다. 쉽게 말해 기계가 예시를 통해 규칙을 학습할 수 있도록 하는 것이다.
여기에서 인공신경망이란 뇌와 같은 생물학적 신경망에서 영감을 얻은 학습 알고리즘이다. 뇌에서 하나의 뉴런(신경세포)에서 다른 뉴런으로 신호를 전달하는 접점인 시냅스를 모방하고, 이를 결합하여 뇌의 구조와 비슷한 네트워크, 즉 뉴럴 네트워크를 형성한 인공 뉴런이 문제해결 능력을 가지도록 만드는 것이다.
기존 머신러닝에서는 학습하려는 데이터의 여러 특징 중에서 어떤 특징을 추출할지 사람이 직접 분석하고 판단해야 했지만, 딥러닝에서는 데이터에서 기계가 자동으로 학습에 필요한 특징을 추출하고 학습한다. 따라서 딥러닝이란 기계가 자동으로 대규모 데이터에서 중요한 패턴 및 규칙을 학습하고, 이를 토대로 의사결정이나 예측 등을 수행하는 기술로 정의할 수 있다.
딥러닝 기술은 1998년, 뉴욕대학교의 Yann LeCun 교수가 MNIST 데이터셋1)을 이용해 필기체 숫자를 인식할 수 있는 모델을 처음으로 제안한 것으로 시작한다. 최근에는 사람보다 더 뛰어난 시각 인지 성능을 보이는 모델, 음성인식 및 상호나 자동차 번호판 등의 문자 인식에 널리 활용되는 모델도 발표되고 있다. 이러한 딥러닝 응용 서비스의 발전에 따라 요구되는 하드웨어의 사양도 날로 높아지는 추세다.
더 뛰어난 딥러닝 성능을 위해 대규모 뉴럴 네트워크를 처리가 가능한 인공지능 프로세서의 개발에 전 세계 국가별, 회사별로 경쟁이 치열해지는 것은 어떻게 보면 당연한 일이다. 현재 인공지능 프로세서 개발은 NVIDIA가 V100, A100 등 강력한 성능을 가진 GPU 칩을 계속 출시하면서 반도체 칩 계산 성능 측면을 선도하고 있으며, 다양한 기업과 국가에서 투자를 아끼지 않고 있다.
미국의 전기차 회사 Tesla는 완전자율주행이 가능하도록 고성능 컴퓨팅이 가능한 하드웨어 4.0을 준비 중이다. Google, Apple, Facebook 및 Amazon에서도 인공지능 반도체 개발에 나서고 있으며, 중국도 대규모로 인공지능 반도체 개발 투자에 나서며 프로세서의 연산 성능을 크게 향상시키는 방향으로 개발하는 추세다.
MNIST 데이터셋(Modified National Institute of Standards and Technology database)
손으로 쓴 숫자들로 이루어진 대형 데이터베이스
초기의 인공지능 전용 프로세서 개발은 학습보다는 주로 추론 성능에 초점을 맞추어 진행됐다. 학습은 데이터 센터 등의 고성능 서버에서 수행하고 실제 인공지능 서비스 시에는 추론만 사용한다는 가정이 있었기 때문이다. 그러나 딥러닝 알고리즘 기술이 발전함에 따라 추론뿐만 아니라 학습도 병행할 수 있는 인공지능 반도체에 대한 수요가 많아지고 있다. 네트워크를 구성하는 기본 부품인 센서노드 등에서 실시간 학습이 가능하면 데이터 전송에 필요한 네트워크 대역폭을 낮출 수 있고, 디바이스별 고유의 학습이 가능하기 때문이다.
대규모 학습과 추론 처리 성능을 극대화하기 위해서는 인공지능 프로세서의 자체 연산 성능도 중요하지만, 이를 운용하기 위한 인공지능 컴파일러(Compiler)의 최적화도 필요하다. 딥러닝에 사용된 DNN, CNN, RNN, RBM, DBN 등 다양한 형태의 모델을 특정 디바이스에서 효율적으로 동작시키기 위해서 최적의 속도와 정확도를 낼 수 있는 기계어로 변환할 수 있어야 하는 것이다.
현재 개발 및 사용되고 있는 인공지능 컴파일러에는 Tensorflow, PyTorch 등을 입력하고 사용할 수 있는 Arm NN SDK / CPU나 GPU, USB 등의 인터페이스에서 기계학습을 실행할 수 있도록 개발한 OpenVINO 툴킷 / 모바일 단말기에서의 기계학습을 위해 개발된 Android NN / NVIDIA에서 딥러닝 추론 성능을 극대화하기 위해 개발한 TensorRT 등으로 다양하다.
국내에서는 2020년 ETRI가 ‘AB9 인공지능 프로세서’를 제작했는데, 이를 다양하게 활용하기 위해서는 ONNX(Open Neural Network Exchange) 프레임워크와의 연계가 중요하다. ONNX란 서로 다른 환경에서 만들어진 인공지능 학습 모델들을 서로 호환시킬 수 있도록 만들어진 공유 플랫폼을 말하는데, 인공지능 모델이 AB9 프로세서 위에서 최대 성능을 달성하려면 정확하고 효율적인 컴파일러, 프레임워크가 필요한 것이다.
현재까지 인공지능에 있어 인간의 뇌에 가장 근접하다고 평가받는 GPT-3의 2020년 발표 이후로 국내외 관련 학계 및 업계에서는 초거대 인공지능(AI) 모델을 개발하려고 시도중이다. 이러한 모델을 실행하기 위해서는 대규모 병렬 연산이 가능한 고성능 SoC(System on a Chip, 단일 칩 시스템) 반도체가 필요하고 최고 용량/최고 대역폭을 갖는 메모리와 데이터 인터페이스가 필요하다. 인공지능 모델과 SoC 반도체와의 가교 역할을 수행하는 것이 인공지능 컴파일러이며, 최대 성능을 달성하려면 정확하고 효율적인 컴파일러, 프레임워크의 개발이 필요하다.
결국 우리나라가 인공지능 하드웨어, 소프트웨어 분야 모두에서 더 큰 발전을 이루려면 더욱 개선된 인공지능 프로세서 컴파일러 연구가 함께 진행되어야 할 것이다.
본 내용은
전자통신동향분석 36권 2호(통권 189)를 참고,
‘인공지능 프로세서 컴파일러 개발 동향’
(김진규, 김혜지, 조용철, 김현미, 여준기, 한진호, 권영수)을
재구성한 글입니다.