brunch

You can make anything
by writing

C.S.Lewis

by 손주식 Apr 28. 2019

2018 Google Research Review #3

2018년 Google의 연구 성과에 대한 리뷰 세 번째(마지막) 글입니다. 이번에는 시스템과 하드웨어에 대한 내용을 다루겠습니다.

첫 번째 글 : https://brunch.co.kr/@andrewhwan/49

두 번째 글 : https://brunch.co.kr/@andrewhwan/50


Quantum computing


Quantum computing (이하 양자 컴퓨팅) 은 기존 컴퓨팅 방식으로 풀 수 없었던 어려운 문제들을 풀어줄 새로운 패러다임이다. 우리는 지난 몇 년 간 이 분야에서 활발하게 연구해왔고, 최소한 하나의 문제에 대해서는 양자 컴퓨팅의 분기점이 될 Quantum Supremacy (이하 양자 우위)에 거의 다가왔다고 생각한다. 작년 한 해 동안 우리는 흥미롭고 새로운 결과를 많이 만들었는데, 예를 들어, 새로운 72-qubit 양자 컴퓨팅 장치인 Bristlecone의 경우, 양자 우위로 향하는 동안 직면할 문제들의 규모를 해결할 수 있다. 

산타 바바라 Quantum AI 연구소의 Marissa Giustina가 Bristlecone chip을 설치하는 모습

우리는 또한 양자 컴퓨터를 위한 오픈 소스 프로그래밍 프레임워크인 Cirq를 릴리스하였고, 어떻게 양자 컴퓨터가 신경망을 위해 사용될 수 있을지 조사하였다. 마지막으로, 우리는 양자 프로세서들의 성능이 요동치는 것에 대한 이해와 신경망을 위한 특성으로서 얼마나 유용할지에 대한 생각을 공유하였다. 2019년에 나올 양자 컴퓨팅 분야의 흥미진진한 결과들을 더 기대하고 있다. 


Google에서 성공적으로 양자 컴퓨팅과 신경망 연구를 접목시킨다면, AI 기술의 변화 속도가 한번 더 가속을 받게 될 것으로 보입니다. 다른 문제들도 잘 해결하는 Google이지만 규모의 문제를 해결하는 데 있어서는 거의 세계에서 독보적인 기술력을 가지고 있기 때문에 과연 양자 컴퓨팅을 이 분야에 어떻게 적용할지, 그리고 어떻게 활용하여 AI의 성장을 촉진시킬지 기대됩니다.


Computational Photography


최근 몇 년 간, 휴대전화 카메라의 품질과 다재다능함의 향상은 놀랄 만한 수준이다. 실제로 폰에 사용된 물리적 센서의 발전도 있었지만, 더욱 중요한 부분은 계산 사진학 과학적 측면의 진보이다. 우리 연구진은 새로운 연구 기술을 발표하고 이 연구 내용이 최신 픽셀과 안드로이드 폰에 적용될 수 있도록 안드로이드와 사용자 하드웨어 팀과 아주 가깝게 일했다. 2014년에 우리는 카메라가 대량의 프레임을 잡아내고 소프트웨어로 이 프레임들을 정렬하고 병합할 수 있도록 하는 HDR+를 소개했다. 원래 HDR+는 한 번의 노출만으로 촬영하는 것보다 좀 더 역동적인 촬영 범위를 가질 수 있도록 만드는 것이 목적이었다.  그러나, 이렇게 잡아낸 대량의 프레임들에 대해 계산적인 분석을 수행함으로써 2018년에 있었던 많은 카메라 기술 발전이 가능해졌다. 예를 들면, 픽셀 2의 모션 포토 그리고 모션 스틸의 증강 현실 모드 등이 있다.


픽셀 2의 모션 포토
모션 스틸의 증강 현실 모드

올해, 계산 사진학 연구는 픽셀 폰의 카메라가 "어둠 속에서 볼 수 있도록" 하는 일명 Night Sight라고 불리는 기능을 만드는 것에 집중하고 있다. 이 기능은 언론사용자에게 많은 호평을 받았는데, 사실 Night Sight는 완벽한 사진을 찍도록 도와주는 여러 새로운 소프트웨어 기반 카메라 기능들 중 단지 하나일 뿐이다. 우리는 더 뛰어난 인물 모드 촬영을 위해서 ML을 도입하였고, 슈퍼 해상도 줌으로 더 잘 보거나 Top ShotGoogle Clip으로 특별한 순간을 잘 포착할 수 있도록 하였다.

왼쪽 : 아이폰 XS, 오른쪽 : 픽셀 3 Night Sight


계산 사진학이라는 분야는 사실 좀 생소한 영역인데요, 여기서도 모든 문제를 소프트웨어스러운 방식으로 해결하려고 하는 Google만의 특성이 돋보이는 것 같습니다. 당연히 카메라 하드웨어나 사진학 자체의 도메인 지식이 많이 필요한 분야일 텐데, 거기에 추가로 ML이나 선형 프로그래밍 기법을 도입하여 품질과 성능 향상을 이끌어내는 일은 Google이 아니고서는 쉽게 얻기 힘든 성과입니다.


Software Systems


우리의 소프트웨어 시스템 연구에 있어서 대부분은 ML 모델을 만드는 것, 특히 TensorFlow와 관련이 있다. 예를 들어 우리는 TensorFlow 1.0을 위한 동적인 제어 흐름의 설계와 구현을 발표하였다. 또한, 우리는 Mesh TensorFlow라고 부르는데, 종종 수십 억 개의 parameter를 사용하기도 하는 대용량 모델들의 병렬 분산 처리를 쉽게 해주는 새로운 시스템도 소개하였다. 또 다른 예로, TensorFlow를 사용한 확장성 있는 deep neural ranking 라이브러리도 발표하였다.

TF-Ranking 라이브러리는 전통적인 single-item scoring을 확장한 multi-item scoring 구조를 지원한다.

우리는 또한 Python 함수를 임의의 차수로 미분해주는 NumPy의 가속화 버전인 JAX를 배포하였다. JAX는 TensorFlow의 일부는 아니지만, XLA와 같은 소프트웨어 인프라들을 발전시켰고, 일부 아이디어와 알고리즘들은 TensorFlow 프로젝트에 많은 도움이 되었다. 마지막으로 우리는 머신러닝의 보안과 개인정보에 대해 계속 연구하여, CleverHans와 TensorFlow Privacy와 같은 AI 시스템의 안전과 개인정보 보호를 위한 오픈 소스 프레임워크를 개발했다.

또 하나의 중요한 연구 방향은, 소프트웨어 시스템의 다양한 계층에 대한 ML의 적용이다. 예를 들어, 우리는 장치에 계산을 배치하는 방법에 대해 계속해서 연구했고 메모리 접근 패턴을 학습하는 것에 기여했다. 그리고 데이터베이스와 저장소 시스템의 전통적인 index 구조를 대체하기 위해 어떻게 학습된 index가 사용될 수 있을지 알아보았다. 작년에 말했던 것처럼, 컴퓨터 시스템에 ML을 사용하는 관점에서는 아직 시작 단계일 뿐이라고 생각한다.

Hierarchical Planner의 NMT 모델 배치. 흰색은 CPU를 의미하고 네 가지 색깔은 GPU들을 의미한다. 전문가가 직접 배치한 것보다 53.7% 더 빨랐다.

2018년에 우리는 Google의 Project Zero 팀과 다른 팀들의 도움 덕분에, 현대 컴퓨터 프로세서에서 발생하는 새로운 종류의 심각한 보안 취약점인 SpectreMeltdown을 알아낼 수 있었다. 이들과 관련된 취약점들은 계속해서 컴퓨터 아키텍처 연구자들을 꽤나 바쁘게 만들었다. CPU의 동작을 모델링하려는 우리의 꾸준한 노력으로, 컴파일러 연구팀은 기계 인스트럭션 지연과 port 부하를 측정하는 도구를 LLVM에 통합하여 보다 나은 컴파일 의사결정을 내리게 하였다.

Google의 Cloud에서 제공하거나 ML 모델을 통해 추론하는 기능을 가진 제품들의 경우, 대용량의 신뢰할 수 있고 효율적인 기술 인프라에서 계산, 저장, 통신을 제공하는 능력에 많이 의존하고 있다. 소프트웨어 기반 WAN의 발전과 BigTable, Spanner, Google Spreadsheets 등의 여러 저장소에 다양한 파일 포맷으로 저장된 데이터에 대해 SQL 질의를 실행할 수 있는 통합 질의 처리 플랫폼, 그리고 Google의 코드 리뷰에 대한 심층적이고 다각도로 살펴본 분석 등이 작년에 새롭게 각광받았다.

콘텐츠 호스팅과 같은 대용량 웹 서비스를 운영하는 것은 다양한 환경에서의 안정적인 로드밸런싱을 요구한다. 우리는 각 서버의 최대 부하에 대해 타이트하고 증명 가능한 보장을 해주는 consistent hashing scheme을 개발했고, 이를 Google 클라우드 Pub/Sub 사용자들에게 적용하였다. 우리 논문의 초기 버전이 공개된 뒤, Vimeo의 엔지니어들이 이를 haproxy 안에 구현하고, 로드밸런싱 용도로 사용하였는데 그 결과는 대단했다. 캐시 대역폭을 거의 8배 감소시켰고 스케일 병목을 제거하였다.


인터넷 서비스, 그리고 광고로 대부분의 돈을 벌고 있는 Google이 단순히 자사의 매출에 대한 기여만 하고 있는 것이 아니라 소프트웨어와 전산학 전체에도 얼마나 많은 영향을 미치고 있는지를 알 수 있는 대목입니다. 메모리 접근 패턴이나 데이터베이스, 저장소의 index에 ML을 도입하는 것은 물론, CPU의 보안 취약점을 발견하거나 컴파일러를 발전시키는 등 정말 컴퓨터 과학의 근본적인 문제 해결과 발전에도 큰 역할을 하고 있습니다. 자사 서비스들의 품질을 향상하는 것뿐만 아니라 핵심 알고리즘의 논문 공개를 통해 계속해서 타 기업의 서비스 품질 향상에도 공헌하는 것을 보면, 세계에서 가장 앞서 나가는 기술 기업의 위엄을 잘 보여주고 있다고 생각합니다. 


TPUs

Tensor Processing Units (TPU)는 Google에서 내부적으로 개발한 ML 하드웨어 가속기로, 대규모로 학습과 추론을 수행할 수 있도록 디자인되었다. TPU는 앞 서 소개했던 BERT와 같은 Google 연구의 큰 전환점이 만들어질 수 있도록 했을 뿐만 아니라, 세계의 연구자들도 오픈 소스를 통해 Google의 연구 위에 또 다른 새로운 전환점을 만들어 낼 수 있도록 하였다. 예를 들어, 누구나 Colab을 통해 무료로 TPU 위에서 BERT의 성능을 튜닝해볼 수 있게 하였고, TensorFlow Research Cloud를 통해 수천 명의 연구자들에게 무료 클라우드 TPU의 컴퓨팅 파워를 누릴 수 있는 기회를 주었다. 우리는 또한 대용량 ML 학습을 훨씬 쉽게 만들어주는 Cloud TPU Pod이라는 이름의 ML 슈퍼 컴퓨터 등 여러 세대의 Cloud TPU 하드웨어를 상용화하였다. 내부적으로, TPU는 ML 연구의 빠른 진보뿐만 아니라 Google 검색, 유튜브, Gmail, Google Assistant, Google 번역 등의 Google의 핵심 제품들의 중요한 발전을 이끌었다. 우리는 Google 내부의 ML 팀뿐만 아니라 모든 다른 ML 팀들도 TPU가 제공하는 전대미문의 컴퓨팅 스케일을 통해 많은 성취를 이루기를 원한다. 


왼쪽 : TPU v3 개별 디바이스, 오른쪽 : TPU v3 Pod

ML이 중요한 기술 영역으로 자리 잡게 되면서, 어쩌면 범용 목적의 CPU, GPU 가 아닌 ML 만을 위한 새로운 하드웨어가 등장하는 것은 당연한 일이었을지도 모릅니다. 다만 그 시작점이 하드웨어 제조사가 아닌 Google이었다는 것이 놀라운 부분이고, 이렇게 빠르게 상용화 및 서비스 적용, 연구 적용이 이루어지고 있다는 것이 신기하기만 합니다. TPU의 도움으로 ML 연구가 발전하는 만큼, ML을 통한 TPU 성능 개선이나 효율화가 많이 일어날 텐데, 그 발전 속도가 얼마나 빠를지 짐작이 잘 되지도 않는 수준입니다. 앞으로 Google에서 얼마나 더 신기한 것들을 많이 만들어낼지 궁금합니다. 


이 글은 아래의 원문을 번역 및 요약하였고, 중간중간 포함된 파란색 토막글들은 번역자의 개인적인 의견입니다.

https://ai.googleblog.com/2019/01/looking-back-at-googles-research.html





브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari