썩 대중적인 물건은 아닌데, ASIC나 FPGA 등의 개념에 대한 설명이 있어서 올려봅니다.
7nm로 생산하는 FPGA 칩 Versal을 손에 든 자일링스 사장 겸 CEO 빅터 펜
FPGA (Field Programmable Gate Array)를 개발/판매하는 자일링스(Xilinx)는 10월 1일부터 2일에 XDF (Xilinx Developer Forum) Americas 2019 (XDF 2019)를 미국 캘리포니아주 산호세의 Fairmont San Jose에서 개최했습니다. 여기서 자일링스 사장 겸 CEO인 빅터 펜은 자사의 FPGA를 활용해 딥러닝을 효과적으로 수행하는 통합 소프트웨어 환경, Vitis를 발표했습니다.
텐서플로우와 Caffe 등의 일반적인 프레임워크를 사용하는 프로그래머가 FPGA의 지식이 없어도 Vitis AI 라이브러리를 활용해서 FPGA 기반 딥 러닝 추론을 쓸 수 있습니다. 10월 말부터 출시돼 자일링스의 FPGA 제품(Alveo와 Zynq 등)을 구입하거나 퍼블릭 클라우드 서비스를 통해 무료로 이용 가능합니다.
ASIC 제작 전 테스트용이었던 FPGA가 이제는 연산용으로
PCI Express의 FPGA 가속 카드 Alveo를 손에 든 빅터 펜
FPGA는 프로그래머블 커스텀이 가능한 로직 블럭이 있어, 여기에 어떤 프로그램(HDL : 하드웨어 기술 언어)을 넣느냐에 따라 다양한 로직 회로를 구성할 수 있습니다. 예를 들어 CPU처럼 다양한 처리를 수행하는 논리 회로를 정의해서 연산하고, GPU 같은 병렬 처리 가능한 논리 회로를 넣는 등, 다양한 활용이 가능합니다. 논리 회로 뿐만 아니라 메모리용 블럭도 있어, 이를 캐시로 쓰거나 메인 메모리처럼 쓸 수도 있습니다.
그래서 FPGA는 반도체 업체들이 SoC나 ASIC (Application Specific Integrated Circuit)를 설계하고 개발할 때 테스트 칩으로 쓰거나, 소량 생산하는 ASIC를 개발해 웨이퍼를 직접 생산하지 않고 FPGA+HDL로 대체하는 식으로 많이 씁니다.
자일링스는 주요 반도체 제조사 중 하나로, FPGA 시장에선 인텔이 인수한 알테라와 더불어 시장을 양분하고 있습니다. 최근에는 인텔 제온+알테라처럼 FPGA를 하나의 패키지로 제공하는 경우도 있고, 자일링스의 Zynq나 인텔 Stratix처럼 Arm CPU를 FPGA가 1칩 SoC로 만들어, OS 실행은 Arm CPU가 하고 FPGA는 특수 용도-예를 들면 DSP처럼 음성 처리하고 GPU가 병렬 처리하는 식으로 다양한 활용하고 있습니다.
이제 FPGA는 테스트 칩이 아니라 일종의 가속기로서 쓰는 경우가 늘어나고 있습니다.
다양한 분야에서 성장 중인 가속기 시장, 딥 러닝용 제품이 주목
FPGA를 사용하는 통합 소프트웨어 환경, Vitis
이렇게 특정 용도에 쓰는 논리 회로를 미국의 반도체 업계에서는 도메인 프로세서, 도메인 가속기라 부릅니다. 현재 반도체 시장의 트렌드이기도 하지요. 18개월~2년 마다 반도체 성능이 두배로 늘어난다는 무어의 법칙을 인텔조차도 실현하기 어려워졌습니다. 이런 상황에서 앞으로 성능을 향상시킬 방법으로 주목받는 게 도메인 프로세서입니다.
도메인 가속기의 대표적인 사례가 GPU입니다. 더 구체적으로 말하면 NVIDIA의 GPU+CUDA입니다.이 조합은 딥 러닝/머신 러닝의 AI 학습에 활용됩니다. 딥 러닝의 DNN Deep Neural Network 교육을 CPU로 수행하려면 엄청난 시간이 걸립니다. 그걸 병렬 처리에 특화된 GPU에서 진행하면 몇 달이 하루로 줄어듭니다. 그래서 지금은 학습 처리를 GPU+CUDA로 수행하고 있습니다. GPU 하나만으로도 그래픽 렌더링이나 병렬 연산이 가능하지만, CUDA와 NVIDIA가 제공하는 라이브러리를 통해 GPU를 AI 학습이라는 특정한 용도에 쓸 수 있게 됐습니다.
Vitis의 구조
이번에 자일링스가 발표한 Vitis도 기본적인 아이디어는 CUDA와 비슷합니다. CUDA가 GPU 하드웨어의 차이를 줄여, 어떤 GPU에서도 같은 CUDA 코드의 소프트웨어를 실행하는데, Vitis도 서로 다른 FPGA의 차이점을 Vitis가 흡수하는 구조입니다. 또 보통의 경우엔 프로그래머가 HDL를 다룰 줄 알고, HDL에 따라 FPGA를 어떻게 구성할지는 프로그래밍하지만 Vitis에서는 그런 부분까지 모두 포용합니다. 즉 Vitis라는 소프트웨어를 통해서 도메인별로 가속기를 갖춘 것처럼 만드는 구조입니다.
Vitis AI
Vitis AI는 특수 용도의 라이브러리도 함께 제공합니다. 깃허브에 공개된 라이브러리의 일부를 AI에 특화한 것입니다. 일반적으로 AI 프로그램을 설계하는 프로그래머는 텐서플로우와 Caffe같은 딥 러닝 프로그렘워크의 지식은 있으나, 하드웨어에 대해서는 잘 알지 못하는 경우가 많습니다. 실제로 CUDA를 쓰는 프로그래머도 NVIDIA 최적화 툴을 이용해 최적화를 할 뿐이지 GPU 하드웨어에 대해 잘 알지는 못합니다. Vitis도 하드웨어 부분을 Vitis가 처리하기에 많은 지식이 필요하지 않습니다.
Vitis AI가 텐서플로우와 Caffe 등의 딥 러닝 프레임 워크를 지원
하지만 Vitis을 도입해 FPGA에 최적화하하면 텐서플로우와 Caffe를 사용한 AI 프로그램을 만들 수 있습니다. 따라서 소프트웨어 통합 환경이 구축됩니다. 자일링스는 Vitis를 10월말에 제공할 계획이며, 자일링스 FPGA를 사용하는 사용자라면 무료로 제공, 라이브러리는 오픈 소스로 제공합니다.
FPGA + Vitis + Vitis AI 조합으로 딥 러닝 추론의 도메인 가속
자일링스의 Vitis 데모, Zynq의 이미지 인식 소프트웨어를 FPGA에서 실행
자일링스는 Vitis과 Vitis AI 라이브러리를 주로 딥 러닝 추론용으로 제공할 계회입니다. 데이터 센터에서 실행하는 딥 러닝용 학습 솔루션은 현재 NVIDIA가 독점한 상태입니다. 이걸 뒤집긴 매우 어렵지만 엣지 컴퓨팅나 음성 인식을 비롯해 애플리케이션 클라우드에서 쓰는 추론 작업의 경우, 일부 스마트폰의 전용 가속기 외에 대부분의 처리를 CPU에서 합니다. 각 추론마다 도메인 가속기를 쓰는 게 사실상 표준이 됐습니다.
NVIDIA도 이런 분위기에 맞춰 GPU+CUDA를 이용한 추론 개발 키트인 CUDA-X AI를 3월의 GTC 19에서 발표했고, 인텔도 엣지 컴퓨팅에서 추론 작업의 도메인 가속장치인 너바나 NNP-I를 제공하는 등, 다들 추론 작업을 위한 솔루션을 확충 중입니다. 추론이 다음번의 주요 경쟁장이 되리라고 보기 때문입니다. 그래서 자일링스도 Vitis+Vitis AI를 도입하며 이 경쟁에 참여했다고 볼 수 있겠습니다.
ASIC나 CPU/GPU는 기능이 고정돼 애플리케이션마다 실행 효율이 다릅니다.
FPGA는 하드웨어 구성을 유연하게 바꿀 수 있어 효율을 높이기 편합니다.
그럼 GPU 대신 FPGA를 쓰는 이유는 무엇일까요? 이번 XDF 2019에서 자일링스 소프트웨어 AI 제품 마케팅 담당 부사장, 라미네 론은 "CPU와 GPU에서 AI를 처리하면 애플리케이션 처리에 따라 리소스를 제대로 활용하지 못하는 경우가 있습니다. CPU나 GPU는 연산 유닛의 구성이 고정되고 메모리 계층 구조도 바꿀 수 없어서 그렇습니다. 반면 FPGA는 연산 유닛과 메모리 계층을 필요한 처리에 맞춰 최적화합니다." 라고 했습니다. 애플리케이션이 필요로 하는 요구에 따라 최적화할 수 있는 게 FPGA의 장점입니다. 이 최적화 작업은 모두 Vitis가 자동으로 수행해 프로그래머가 신경 쓸 필요가 없다는 장점도 있습니다.
프로그래머가 FPGA에 익숙해 HDL을 쓸 수 있다면 직접 최적화하고 여기서 실행하는 프로그램을 만들어도 됩니다. 하지만 그런 지식이 없어도 Vitis를 도입하면 엣지 컴퓨팅 디바이스의 FPGA 칩이나 FPGA 가속기, 클라우드 가속기 등을 사용해 텐서플로우와 Caffe 등의 프레임 워크를 활용, 딥 러닝 추론 연산을 수행할 수 있습니다. 그것이 Vitis의 장점입니다.
제온의 아성을 무너뜨릴 수 있는가?
자일링스는 FPGA+Vitis의 응용 사례로 딥 러닝을 이용한 영상 인식의 데모를 공개했습니다. 자일링스의 처리는 끝났으나 NVIDIA는 아직 처리 중이네요.
앞으로는 자동 운전이나 ADAS에 필요한 딥 러닝의 영상 인식 엔진으로 채택, 스마트 시티를 실현하는 보안 카메라의 이미지 인식 장치로 활용을 염두에 두고 있습니다. 구체적인 고객사로 일본 히타치 자동차가 자일링스 FPGA를 ADAS 시스템에 사용한 사례를 공개했습니다.
5G도 새로운 응용 분야입니다. 삼성전자가 미국/한국에서 제공하는 5G 베이스 스테이션 솔루션에 자일링스의 FPGA를 채택했음을 밝혔습니다. 일본의 라쿠텐은 제온+알테라 FPGA를 5G에 사용합니다. 이쪽도 회사는 다르지만 FPGA를 5G 서비스에 쓰는 것이죠.
또 애플 시리와 아마존 알락세 같은 음성 인식 기능을 향상시키고, 번역, 자연 언어 기능을 실현하는데도 FPGA 가속기와 이를 장착한 퍼블릭 클라우드 서비스가 있습니다. 클라우드의 딥 러닝 추론 시장에선 많은 CPU(인텔 제온)를 쓰고 있으며, 여기에 딥 러닝 시장에서 독점적인 비중을 차지한 NVIDIA가 있고, 인텔도 추론 전용 도메인 프로세서를 출시하려 합니다. 자일링스도 Vitis 솔루션을 가속화해 시장 점유율을 확보하려 합니다. 앞으로 딥 러닝을 위한 도메인 가속기의 경쟁이 치열해지리라 보입니다.
한편, 기계학습 추론을 위한 가속장치만 놓고 보자면, nVidia 역시 놀고만 있는 것이 아니라서요. 얼마전에 개선판이 나온 TensorRT 추론 전용 라이브러리와 같이 기존 GPU 기반의 다양한 기계학습용 프레임워크에 손 댈 필요 없는 손쉬운 통합과 전환(예를 들자면 추론용 엔진에 맞춰 학습을 새로 할 필요 없이;)을 강점으로 데이터센터 레벨과 같은 대규모 서비스용 추론에 필요한 요구사항을 맞춰줄려는 노력을 보여주고 있습니다.
기업에서 추론 서비스를 위한 GPU의 차선책으로 CPU를 사용하는 것은 "전용 추론 엔진에 맞춰서 모델을 새로 개발하고 학습"하는 것이 꽤 큰 부담이기 때문이기도 합니다. (논외로, GPU를 사용하는 것은 latency 측면에서 다수의 사용자를 상대해야하는 public service 시나리오에서 손해이기도 합니다. 근본없는 비용도 비용이지만요.) 때문에, 자일링스의 Vitis AI는 최소한 전략에 있어서는 그들이 원하는 "추론계의 Post-CUDA"라는 위치에 맞게, 손쉬운 적용과 폭넓은 호환성을 계속해서 강조하게될 듯 합니다.
10월 말에 공개될 소프트웨어의 수준과 형태를 봐야 좀 더 이야기 해 볼만할테지만, 관련된 라이브러리를 오픈소스로 풀고, 기존의 잘 알려진 기계학습 프레임워크들(최소 3종류 이상~) 에 잘 스며들기만이라도 하면, Bare metal을 제공하는 IaaS 클라우드에서 먼저 사용사례들이 나올 것이고, 거기서 더 결과물이 잘 나왔거나 운이 좋다면 AWS나 Azure 같은 큰손들의 서비스 품목에도 추가될 수 있을 것으로 생각됩니다.