태그 보관물: TPU

TPU Revealed

2017-04-05_1013

구글이 자사의 데이터센터에서 사용하고 있는 머신러닝 칩셋인 TPU(Tensor Processing Unit)에 대한 성능과 구성에 대해 자세한 내용을 페이퍼공개했습니다. 페이퍼 내용을 보면 GPU/CPU 조합 보다 15~30배 가량 성능이 높다고 합니다. 개인적으로 눈길을 끄는 것은 2016년 7월에 작업한 것으로 보이는 이 페이퍼에 구글의 머신 러닝 추론inference을 위해 사용하고 있는 텐서플로우 모델 워크로드의 60%가 기본적인 피드포워드feed-forward 신경망이라는 점입니다.

스크린샷 2017-04-10 오전 1.54.39

이 수치가 거의 10개월 전의 데이터이고 텐서플로우, 즉 TPU로 서빙한 것에 국한될 수 있지만 예상외로 차이가 많은 것 같습니다. 페이퍼에서도 언급하고 있듯히 TPU의 성능 향상은 CNN을 타깃으로 하지만 실제로는 MLP가 주요 애플리케이션에 사용되고 있는 것 같습니다. 그렇다면 가중치 크기로 보아 비교적 레이어의 유닛수가 많은 MLP0은 유투브 추천에 MLP1은 광고 추천에 사용되는 것이 아닐까 조심스럽게 추측해 봅니다.

DL Chip Race

card-hero2-800x550

출처: 마이크로소프트 리서치

어제 마이크로소프트가 개발하고 있는 딥러닝을 위한 칩 개발 프로젝트 ‘Catapult’에 대해 크게 보도가 되었습니다. 캐타펄트(Catapult)는 마이크로소프트에서 수년간 개발해 왔고 최근 클라우드에 실전 배치된 것으로 알려졌습니다. 이 칩은 FPGA(field programmable gate array) 타입이어서 재프로그래밍(reprogrammable)이 가능합니다. 와이어드(Wired)에 따르면 마이크로소프트가 이런 타입을 채택한 것은 딥러닝 알고리즘이 발전하면서 새로운 연산방식에 효과적으로 대응할 수 있기 때문이라고 합니다. TPU 방식이라면 아마도 구글은 계속 새로운 칩을 설계해야만 할 것이라고 보았습니다. 하지만 캐타펄트(Catapult)가 TPU 보다는 성능이 떨어진다고 합니다.

이 소식에 이어 바이두가 오늘 딥러닝을 위한 칩 벤치마킹 자료를 공개하였습니다. 딥벤치(DeepBench)는 딥러닝을 위해 사용할 수 있는 칩을 제조하는 메이커들의 경쟁을 이끌고 연구자들이 원하는 하드웨어를 선택할 수 있도록 도움을 주기 위해서라고 합니다. 이 벤치마크에 사용된 코드는 깃허브에 커밋되어 있습니다. 이 벤치마크는 딥러닝 프레임워크를 대상으로 한 것은 아니고 행렬연산이나 콘볼루션 연산 같은 저수준의 작업에 대한 성능을 평가한 것입니다.

딥러닝에 대한 경쟁은 학계에서 프레임워크로 또 하드웨어로까지 빠르게 확산되는 것 같습니다. 현재는 엔비디아(Nvidia)와 인텔(Intel)만이 딥벤치 결과에 참여했고 점차 확대될 것으로 보입니다. 하지만 구글이 TPU를 테스트해 줄지는 의문이네요. 딥벤치가 활성화되고 나서 바이두가 폭발적인 성능을 내는 칩을 내놓으려는 건 아닐런지…

TPU is just for inferencing not training

Google IO 2016에서 선다 피차이 CEO의 키노트 말미에 발표한 TPU(Tensor Processing Unit)가 많이 회자되고 있습니다. 구글이 직접 칩셋을 만들기 시작했으니 Nvidia의 입장이 어떠할지 궁금하고 GPU의 가격이 좀더 낮아지지 않을까 하는 예상하는 사람들도 있었습니다.

며칠 전 대만에서 열린 컴퓨텍스(Computex) 전시회에서 젠슨 황 Nvidia 대표가 구글 TPU에 대해 언급한 내용이 보도 되었습니다. 젠슨은 구글의 TPU가 머신러닝의 훈련(training)과 추론(inferencing) 중 추론에 최적화되어 있다고 언급하고 대량의 데이터를 이용한 알고리즘 훈련 단계에서는 Nvidia GPU를 사용할 수 밖에 없음을 시사했습니다. 이는 Kevin Krewell이 언급한 내용을 보도한 기사에서도 같은 내용을 엿볼 수 있습니다. 추론단계의 연산은 훈련보다 복잡하지 않기 때문에 최적화하기 쉽다고 언급되어 있고 여전히 구글은 Nvidia로 부터 많은 양의 GPU를 구매하고 있다고 합니다.

그러나 어떤 내용에 근거해서 TPU가 추론단계에만 사용되는 프로세서라고 한 것인지는 찾지 못했습니다. 구글이 공식적으로 공개한 자료에는 그런 부분은 없는 듯 합니다. 다만 두 기사의 내용을 미루어 보아 상당히 믿을만하다고 보입니다. 다양한 웹 서비스를 제공하는 구글 입장에서는 추론에 드는 시간을 단축하여 사용자 경험을 높이는 쪽에 더 관심이 많았을 수 있습니다. Nvidia가 TPU에 대해 크게 걱정을 할 필요가 없는 것인지 아니면 그런 척하는 것인지, 또 앞으로 구글이 훈련단계에 까지 적용 가능한 프로세서를 만들어낼지 등등 많은 것이 궁금하네요.

Tensor Processing Unit(TPU)

구글 IO가 시작하자마자 여러 뉴스로 시끌벅적합니다. 그 중에서도 관심을 끄는 것은 바로 Tensor Processing Unit, TPU 입니다. 구글 선다 피차이 CEO는 구글 IO 2016 기조 연설 마지막 부분에서 머신러닝에 관해 발표하면서 최초로 TPU를 공개했습니다.

구글 블로그에 따르면 TPU는 머신러닝 특히 텐서플로우에 최적화된 반도체 칩으로 주문 제작되어 구글 데이터센터에서 일년전부터 사용되고 있다고 합니다. 검색, 스트릿뷰 등 많은 구글 팀에서 뿐만 아니라 알파고와 이세돌의 대국에도 바로 이 칩이 사용되었습니다. 오른쪽 사진이 이세돌과의 대국에 사용된 TPU가 꽂힌 서버랙 입니다. TPU는 서버의 하드드라이브 디스크에 슬롯에 꽂아서 사용할 수 있습니다. 랙 측면에 바둑판 사진이 붙어 있는게 보이네요.

구글이 머신러닝을 위한 칩을 직접 만들어 사용하는 것은 인텔이나 Nvidia에게는 슬픈소식이 될 것 같습니다. 이미 마이크로소프트도 직접 칩을 만든 적이 있고 애플도 오랫동안 아이폰과 아이패드에 직접 만든 칩을 사용해 왔습니다. 범용 GPU를 사용하지 않고 직접 만든 최적화된 칩을 이용해서 딥러닝 모델 학습을 보다 빠르게 하려는 경쟁에 불이 붙을 것 같습니다. 정말 놀랍고 두렵기도 합니다.

구글이 칩에 대한 상세 내용을 발표할 것 같지는 않습니다. 구글이 텐서플로우를 공개하고 개발자들이 열심히 배우게 한다음 세상에서 가장 빠른 딥러닝 칩이 꽂힌, 특히 텐서플로우에 최적화된, 구글 클라우드를 쓰라고 말하는 것 같습니다. 아마존은 계속 GPU를 쓸지 다른 선택을 할지 궁금합니다.

(추가) TPU에 대해 여러 기사가 나왔지만 대부분 구글이 많은 정보를 공개하지 않았기 때문에 구글 블로그에 있는 내용을 크게 벗어나지 못했습니다. 하지만 넥스트플랫폼에서 낸 이 기사는 흥미로운 점 몇가지를 알려주고 있습니다. TPU가 성능을 위해 부동 소숫점 연산의 복잡함을 어느정도 희생할 것이라 예상하는데 16비트 부동소숫점 연산인지 8비트 부동소숫점 연산인지에 대해 설왕설래 했었습니다. 그런데 이 기사에서 TPU는 8비트 정수라고 밝히고 있습니다. 또 TPU가 모델을 학습하는 것과 모델을 이용해 실행하는 곳 모두 사용되는 것으로 추측하고 있으며 정확히 구글의 머신러닝 중 얼만큼이 TPU를 통해 처리되는 지는 밝혀지지 않았다고 합니다. 여러 미디어들이 언급한 것 처럼 TPU의 성능이 명확히 공개되지는 않는 상황에서 이번 발표는 상당부분 마케팅 적인 측면이 있다고 여기고 있습니다. 보통 새로운 칩을 설계하고 제조하는 데에는 수십억에서 많게는 수백억 이상이 든다고 합니다. 그래서인지 구글이 이 칩에 대해 보다 상세한 자료를 공개할 것이라고 기대하지는 않고 있습니다.

awesome-tensorflow 깃허브를 관리하고 있는 Json Toy는 그의 블로그에서 TPU에 관해 저와 유사한 의견을 피력했습니다. 바로 개발자와 연구가들이 구글 클라우드 머신러닝을 쓰게끔 만드려는 것 같다는 겁니다. 그러나 이런 구글의 행보가 아직도 비싼 제품을 생산하는 GPU 시장을 압박하여 보다 저렴하고 전문화된 칩이 나올 것이라는 긍정적인 면에 대해서도 말하고 있습니다.