Cloud TPU와 TensorFlow로 더욱 강력해진 삼성전자의 Bixby
June Oh
Technical Solutions Engineer
Android 스마트폰인 Galaxy 사용자라면 전 세계 1억 6천만 대가 넘는 기기에서 9개 언어로 서비스되고 있는 삼성전자의 지능형 음성 지원 시스템인 Bixby를 익히 알고 있을 것입니다. 오늘 Google에서는 Cloud TPU를 도입한 결과 Bixby 음성 인식 모델의 학습 속도가 18배 향상되었다는 결과를 발표했습니다.
Bixby 및 기타 음성 지원 시스템은 자동 음성 인식(ASR)을 사용하여 음성 언어를 텍스트로 변환합니다. 이 기술이 탄생한 지 오랜 시간이 지났지만 아직 완벽한 것은 아니기에 정확도를 최대치로 끌어올리기 위해서는 ASR 모델의 학습 및 반복 학습을 여러 회에 걸쳐 수행할 수 있어야 합니다. Google Cloud와 긴밀한 파트너 관계를 유지하고 있는 삼성은 목적에 맞게 제작된 Google Cloud의 머신러닝 프로세서인 Cloud TPU를 사용하여 ASR 모델의 학습 속도를 높이고 궁극적으로 Bixby의 정확도를 개선했습니다.
삼성전자 무선사업부 AI팀의 우경구 상무는 “Google Cloud는 탁월한 TPU 생산성으로 언어 학습 측면에서 삼성전자에 큰 도움을 주고 있습니다. Google 브레인팀의 전문가는 물론 Google Cloud의 고객 엔지니어링팀, 제품팀, 지원팀과 긴밀하게 협력한 덕분에 일주일 넘게 걸렸던 처리 시간이 반나절로 단축되었고 삼성의 기술을 향상시킬 수 있었습니다"라고 말합니다. “삼성전자는 삼성 Bixby의 사용자 경험을 향상하고 고도화하기 위해 지속적인 노력을 기울이고 있으며 Google Cloud와의 지속적인 협업이 소비자가 만족할 만한 새로운 모바일 경험을 제공하는 데 핵심적인 역할을 한다고 생각합니다."
학습 데이터가 많을수록 개선되는 정확도
몇 년 동안 DNN-HMM(심층신경망-은닉 마르코프 모델) 하이브리드 ASR 시스템 아키텍처는 이전 세대의 Bixby를 비롯한 많은 음성 텍스트 변환 서비스의 표준 방식이었습니다. DNN-HMM 시스템은 음향, 발음, 언어 모델을 음성 인식 파이프라인으로 통합했습니다. 하지만 학습 프로세스가 복잡해 전반적으로 정확도를 최적화하는 데에는 무리가 있었습니다.
Bixby팀은 DNN-HMM 하이브리드 ASR 시스템의 한계를 극복하기 위해 최신 엔드 투 엔드 딥 러닝 방식으로 엔진을 향상시키기로 했습니다. 트랜스포머(Transformer) 아키텍처를 기반으로 한 단일 심층신경망 모델을 활용한 결과 새로운 엔진의 학습 프로세스가 간소화된 것은 물론 방대한 학습 데이터에도 액세스할 수 있게 되었습니다.
하지만 이러한 시스템의 변화에는 새로운 과제도 따랐습니다. 이전 시스템에 준하는 정확도를 확보하려면 새로운 실험 및 미세 조정이 필요했기 때문입니다. 또한 새로운 언어로 지속적으로 확장하는 동시에 실시간 서비스를 최신 상태로 유지하려면 빠른 학습 반복 속도가 필수였습니다. 나날이 증가하는 학습 데이터의 양을 흡수하는 동시에 이러한 요구사항을 충족하기 위해 Bixby팀은 Cloud TPU를 도입해 보기로 했습니다.
Cloud TPU에서 실현된 성능 최적화
2013년 당시 Google은 기존 CPU 및 GPU 인프라로는 증가하는 AI의 컴퓨팅 니즈를 따라잡을 수 없다는 사실을 깨닫고 이를 위한 전용 칩을 새로 빌드하기로 했습니다. 그 결과 탄생한 Tensor Processing Unit(TPU)은 2015년부터 Google 데이터 센터에 배포되어 사용되고 있습니다. Google은 그 이후에도 여러 세대에 걸쳐 TPU 칩을 발전시켰을 뿐 아니라 수천 개의 TPU 칩을 한데 연결하는 TPU Pod라는 대규모 슈퍼컴퓨팅 시스템을 만들어 세상에서 가장 빠른 ML 학습 슈퍼컴퓨터를 만들기에 이르렀습니다.
또한 Google은 Google Cloud를 통해 최대 2,048개 코어와 32TiB 메모리를 포함하는 확장성 높은 Cloud TPU 구성의 TPU와 TPU Pod를 제공하고 있습니다. 오늘날 Cloud TPU는 ML 연구원과 엔지니어에게는 보다 강력하고 정확한 모델을 빌드할 수 있는 기반이 되고 기업에는 귀중한 시간과 비용을 절감하는 동시에 AI 애플리케이션의 시장 출시를 앞당기는 동력이 되고 있습니다.
Cloud TPU의 역량을 최대한으로 활용하기 위해 Bixby팀의 엔지니어는 Cloud TPU의 성능을 최적화하는 데 필수적인 Cloud TPU 프로파일러 텐서보드 플러그인을 사용했습니다. 엔지니어는 TPU 호환성 뷰를 통해 TPU와 호환되지 않는 작업을 파악하고 사용 가능한 TensorFlow 작업으로 대체하여 사용률을 높일 수 있었습니다. Google에서는 TPU에서 실행되도록 사전 최적화된 공식 지원 모델도 참고용으로 제공하고 있습니다.
물론 TensorFlow가 Google에서 지원하고자 하는 유일한 생태계는 아닙니다. 9월에 정식 버전으로 제공된 PyTorch/XLA 통합을 사용하면 Cloud TPU에서 PyTorch 모델을 실행하는 것도 가능합니다. TPU의 잠재력을 활용할 수 있는 다른 플랫폼을 알아보려면 Python, 자동 미분, XLA가 모두 결합된 JAX를 살펴보세요. 머신러닝 연구에 유연성, 즐거움, 고성능이 가미될 것입니다.
Google과의 협력을 통한 기술 문제 극복
Bixby팀에서 GPU를 TPU로 마이그레이션하는 여정은 순탄한 듯 보였지만 TPU에서 학습시킨 모델을 GPU에서 다시 테스트하는 단계에 도달했을 때 이해하기 어려운 문제가 발생했습니다. TPU에서는 정상적으로 작동한 모델이 GPU에서 추론을 실행하자 반복되기 시작한 것입니다. 예를 들어 '하이 Bixby, 오늘 날씨 어때?'라고 하면 '하이 Bixby, 오늘 날씨 어때? 하이 Bixby, 오늘 날씨 어때?''로 텍스트 변환되었습니다.
머신러닝 프로젝트에서 이와 같은 기술 문제는 해결하기가 무척 어려운 경우가 많습니다. 코드, 플랫폼, 인프라, 데이터 중 어디에 문제가 있는지 불분명하기 때문입니다. Bixby팀은 Google Cloud에 지원 케이스를 제출했습니다. 그리고 Google은 상담과 몇 가지 실험 끝에 근본 원인을 찾았습니다.
Bixby의 ASR 엔진 같은 순차적 모델은 가변 길이의 입력 데이터를 처리하지만 현재 TPU의 XLA 컴파일에는 그래프 구성 시 모든 텐서 크기를 알고 있어야 한다는 요구사항이 적용됩니다. 이 차이로 인해 입력 오디오 시퀀스가 끝날 때마다 긴 패딩을 예상한 TPU에서 학습된 모델은 GPU에서 패딩이 짧거나 생략되었을 때 문장의 끝을 안정적으로 예측할 수 없었습니다. 이런 이유로 문장을 완결할 수 없었기 때문에 같은 구문을 계속 반복한 것입니다.
근본적인 원인이 파악되자 문제는 금세 해결되었습니다. Bixby팀은 각 입력 오디오의 끝에 패딩을 추가하여 GPU 추론 중 TPU 환경을 시뮬레이션하기로 했습니다. 이 시뮬레이션 덕분에 학습 코드를 수정할 필요 없이 GPU의 새로운 모델이 문장의 끝을 정확하게 예측하게 되었고 반복 문제는 성공적으로 해결되었습니다.
Google Cloud를 사용한 혁신 추구
TPU로 마이그레이션한 결과 GPU 8개의 온프레미스 학습 환경이 180시간에 걸쳐 처리했던 학습량을 v3 Cloud TPU 코어 64개 환경에서는 10시간 만에 처리할 정도로 Bixby의 속도가 18배나 향상되었습니다. 실험 반복 속도가 획기적으로 증가한 덕분에 팀은 새로운 엔드 투 엔드 아키텍처로 성공적으로 이전했고 단어 오류율 4.7% 향상, 10분의 1 수준으로 모델 크기 경량화, 추론 속도 11배 향상과 같은 결과를 얻었습니다.
Bixby팀 김한별 엔지니어가 전하는 삼성과 Cloud TPU의 여정에 대한 자세한 내용은 Google Cloud Next OnAir Recap: Seoul의 세션 영상(영문 자막 제공)에서 확인해 보세요.