TFDevSummit 2020 키노트 후기(1)
지난주 미국 시간으로 3월 11일(수)에 텐서플로우 개발자 서밋 2020이 버추얼 이벤트로 개최되었습니다. 그 이유는 현재 코로나 바이러스 출현 및 확산으로 구글뿐만 아니라 미국의 대형 개발자 행사들이 모두 취소되었거나 연기되었기 때문입니다. 안 그래도 구글 텐서플로우의 엔지니어링 부사장인 메건 카춀리아(Megan kacholia)가 키노트를 시작하면서 모든 사람들의 건강과 안전 및 안녕을 기원한다는 메시지로 시작했습니다.
따라서 이 글은 텐서플로우 개발자 서밋 2020 키노트에 발표된 내용을 제가 정리하고 재구성했습니다. 크게두 부분으로 나누어서 작성하려고 계획 중입니다. 오늘은 첫 번째 순서로 "텐서플로우 생태계:초보자도 쉽개 개발부터 배포까지"라는 제목으로 한번 잡아보았습니다.
이번 키노트를 보면서 전반적으로 든 느낌은 텐서플로우가 단순히 개발 혹은 코딩만 강조하던 시절은 지나갔고, 리서치에서 아이디어를 발견하여 인공지능 개발부터 배포까지 하나로 할 수 있는 엔드-투-엔드 솔루션을 전반적인 인공지능 개발자 생태계 관점에서 녹여놨다는 점에서 찬양하지 않을 수 없었습니다. 특히, 인공지능 개발이 어렵다는 편견을 깨기 위해 초보자들이나 비전공자들도 쉽게 접근할 수 있도록 다양한 커뮤니티 헌신과 고객 성공 스토리들을 잘 버무려 개인적으로 재미있었습니다.
이러한 관점에서 볼 때, 여러분들도 아시다시피 텐서플로우는 작년 한 해 버전 1.0에서 2.0으로 메이저 업그레이드를 했습니다. 또한 텐서플로우 로드쇼를 통해 11개의 다른 도시로 방문했고, Coursera를 통해 다양한 온라인 교육 및 세미나 등을 펼쳤다고 합니다. 특히, TF2.0 DEV Post-Challenge 우승자들 중 한 사례로 자연재해에 대하여 재난 감시를 위해 데이터를 집계하고 NLP를 이용한 대화용 시스템인 DeepPavlov에 대해 강조했습니다.
한편, 기술적으로는 텐서플로우 1.5에서 2.X로 마이그레이션 하는 것은 어렵지만, 텐서플로우 2.X 에서는 인공지능 개발의 초보자들이나 비전공자들도 사용하기 쉽게 Keras API 인터페이스를 텐서플로우에 적용해 더 단순하게 쓸 수 있도록 했고, 더 많은 장치들로 개발할 수 있도록 제공했다고 합니다. 또한 개발자들의 코드 실행 속도 및 성능에 대해서도 체계적인 방법으로 측정할 수 있도록 도구들을 제공했다고 합니다. 실험과 연구를 주로 하는 AI 애플리케이션 엔지니어 또는 데이터 과학자들에게 더욱더 유연성을 제공하기 위해 모델이 실제로 어떻게 영향을 미치는지 좀 더 알 수 있게 도구 및 라이브러리를 제공한다고 또한 언급했습니다.
예를 들어, 텐서플로우가 자연어 처리를 위해 모델 아키텍처의 한계를 극복하기 위해 T5 모델을 통해 최신 전이 학습(Transfer Learning)을 사용하여 전 세계 모든 언어 문제를 텍스트 형태로 변환할 수 있다고 주장했습니다. 이 모델에는 거대하고 잘 정리된 크롤링 모음으로 데이터셋을 만들고 110억 개가 넘는 파라미터들을 이용하여 학습 훈련시켰다고 합니다. 다른 한편으로는, Meena와 같은 대화형 모델에서는 60억 개 이상의 파라미터를 가지고, 대화 시 상황에 적절하게 반응할 수 있도록 유연하게 쓸 수 있도록 했다고 합니다.
첫 번째, 텐서플로우와 더불어 텐서보드(TensorBoard)는 비록 작년에 출시되었지만, 리서치 커뮤니티들로 많은 긍정적인 피드백을 받았다고 합니다. 바로 실험 결과들을 URL 별로 업로드하고 공유할 수 있는데, 이 URL을 사용하면 하이퍼 파라미터들을 더 깨끗하게 정리해주며, 더욱더 빠르게 실험 결과들을 시각화할 수 있도록 해줍니다.
두 번째, 모델 성능의 일관되게 모니터링을 제공하기 위해 텐서보드에 새로운 성능 프로파일러(Performance Profiler) 도구를 도입하게 했다고 합니다. 텐서플로우의 코드들을 심층적으로 디버깅할 수 있도록 메시들을 포함하고 있고, 모델의 성능이 어떻게 되는지 명확하게 볼 수 있도록 제공된다고 합니다.
텐서플로우 2.0으로 업그레이드되면서 텐서플로우에서 가장 큰 변화는 Eagar Execution 할 필요없이 바로 Graph를 빌드할 수 있다는 점입니다. 그 외에도 TF 네임스페이스를 가진 새로운 기능들이 상당히 많이 추가되었는 데 키노트에서 다음과 같이 언급했습니다.
첫 번째, Python의 데이터 사이언스 라이브러리 패키지인 Numpy Array를 직접 사용할 수 있을 뿐만 아니라 연구원들은 모델을 신속하게 변경하고 특히 데이터 추출, 변환 및 로드 관리와 같은 가속화된 하드웨어로 훈련 규모를 확장하고 싶다고 말했습니다. tf.data API의 TensorFlow DataSets은 이를 염두에 두고 만들어져 연구원들이 최신 데이터셋을 빠르게 접근할 수 있도록 합니다. 이러한 데이터셋 또는 개인 데이터셋을 사용하든 기본 TFRecord 기반 아키텍처를 사용하면 tf.distribute와의 병렬화를 구축하여 GPU 또는 TPU 기반 훈련 인프라를 가장 효율적으로 사용할 수 있는 최적의 입력 파이프라인을 구축할 수 있습니다.
두 번째, TensorFlow 생태계는 실험을 향상하고 자주 사용하는 오픈 소스 라이브러리와 함께 작업할 수 있는 애드온 및 확장 기능이 포함되어 있습니다. TF Probability 및 TF Agents와 같은 확장은 최신 버전의 Tensor Flow와 동작합니다. Google Research의 JAX와 같은 실험 라이브러리는 TensorFlow 데이터 파이프라인을 사용하여 JAX에 데이터를 입력하는 등 마치 레고 블록처럼 TensorFlow와 함께 구성할 수 있습니다. 최첨단 컴퓨팅을 지향하는 사람들은 Hybrid Quantum-Classical ML 모델의 빠른 프로토타이핑을 위한 라이브러리인 TensorFlow Quantum을 확인하십시오.
세 번째, tf.Keras를 사용하면 좀 더 생산 속도를 높일 수 있습니다. Keras 인터페이스를 텐서플로우에 맞게 사용할 수 있도록 포팅되었으며 상위 수준의 API들이 포함되어 있기 때문입니다. 또한 하이퍼 파라미터 튜닝에 대한 사용자의 의견을 들었으며 작년 초 Google 오픈소스 Keras Tuner를 살펴보는 것이 좋습니다. 또한 현재 실험 중인 새로운 경량의 전처리 레이어셋도 연구하고 있습니다.
네 번째, 모델 작성을 돕기 위해 Google Colabratory는 호스팅 된 Python 노트북 환경으로, TensorFlow 모델 훈련에 사용할 수 있는 GPU 및 TPU 리소스에 액세스 할 수 있습니다. 무료로 쓸 수 있는 것 외에도 최근 새로운 Colab Pro 서비스를 시작하여 월간 구독 비용으로 더 빠른 GPU, 더 긴 런타임 및 더 많은 메모리에 액세스 할 수 있습니다. Colab 노트북의 장점 중 일부를 여기서 확인할 수 있습니다.
처음부터 모델을 구축하지 않고 사전에 잘 훈련된 모델을 사용하고자 한다면, 텐서플로우 허브(TensorFlow Hub)로 다양한 모델을 다운로드하여 사용할 수 있도록 호스팅까지도 해줄 수 있습니다. 현재 텐서플로우 허브에서는 모델에 대한 문서, 코드에 적용할 수 있도록 예제 코드 조각 모음, 데모 등을 포함한 수천 개가 넘는 모델이 제공되고 있다고 합니다.
이 모델을 Keras 레이어처럼 추가하는 것만 큼 쉽게 이 모델을 다운로드하여 사용하고 재훈련 및 최적화(fine-tune)할 수 있습니다. TF Hub의 일부 게시자들은 웹 브라우저에서 직접 이미지나 오디오 클립으로 직접 모델을 시험해볼 수 있는 놀라운 작업을 강조하기 위해 커스텀 컴포넌트들을 만들 수 있습니다.
또한 훈련된 모델에서 비즈니스 크리티컬 프로세스로 전환하는 것은 모델 아키텍처 생성, 훈련 및 테스트를 넘어서는 것 이상입니다. 대규모 생산을 위한 구축에는 복잡한 상호 관리 프로세스가 포함되어있어 모델을 지속적으로 실행하고 관련성 있게 업데이트합니다. 이를 염두에 두고 TFX (TensorFlow Extended)를 만들었습니다.
개인적으로 이번 키노트에서 가장 신선하게 보았던 프로덕션 환경에서 TensorFlow를 보다 쉽게 사용할 수 있도록 구글 클라우드 AI 플랫폼 파이프라인(Google Cloud AI Platform Pipelines)를 출시했습니다. KubeFlow, TFX 및 Google Cloud를 기반으로 위에서 설명한 것과 같은 엔드-투-엔드 프로덕션 파이프라인을 쉽게 구축할 수 있도록 설계되었습니다.
수많은 최적화 및 엔터프라이즈급 장기적인 지원을 제공하는 TensorFlow의 사용자 정의 빌드인 TensorFlow Enterprise와 함께 GCP에서 AI 플랫폼 파이프 라인을 사용할 수 있습니다. 또한 TFX에서 Cloud AI 플랫폼 파이프라인을 사용하는 데 도움이 되는 자습서도 제공됩니다.
클라우드 TPU에서는 이미 수많은 곳에서 발표했기 때문에 특별히 언급하지 않겠지만, 클라우드 AI 플랫폼 파이프라인이 AI 워크로드를 위해 특별히 설계된 커스텀 하드웨어에서 모델 및 파이프라인을 학습 훈련하고 배포할 수 있다고 합니다.
텐서플로우를 PC나 서버, 혹은 클라우드에서만 사용하는 것은 아닙니다. 스마트폰이나 IoT, 임베디드 장치에서도 사용할 수 있는데, 여러분의 스마트폰에서 사진을 찍거나 여러 가지 액티비티를 하면 그것을 실시간으로 머신러닝으로 처리할 수 있습니다. 이때 장치에서 만들어진 모델을 클라우드에 보내거나 동기화시킬 수 있습니다.
개인 프라이버시를 보호하면서 열악한 네트워크 연결로 작업 대기시간이 낮은 곳이나 일부 제약 조건에서 작업할 수 있도록 TensorFlow Lite가 지원해주고 있습니다. 또한 CPU, GPU, DSP 또는 기타 가속기들에서 모델을 최대한 빠르게 실행할 수 있도록 지원해주는 데, MobileBERT의 성능을 최적화하는 방법의 한 예로 대기 시간을 크게 줄이도록 텐서플로우 라이트를 즉시에 사용하도록 했다고 합니다.
또한 이번 TF Lite 최신 버전에서는 새로운 기능들이 대거 포함되었다고 합니다. 캐너리 채널(Canary Chaneel)을 통해 곧 출시될 Android Studio에서 TensorFlow Lite를 사용하는 것을 통합했다고 합니다. 따라서 Android Studio로 TF Lite로 컨버트한 모델을 끌어 놓기만 하면 모델을 쉽게 배포하고 몇 번의 클릭만으로 TF Lite 모델의 자바 클래스를 자동으로 생성할 수 있다고 합니다.
모델 작성자가 모델을 만들고 변환할 때 메타 데이터 사양을 제공할 수 있도록 모델 사용자가 모델의 작동 방식을 이해하고 프로덕션 환경에서 사용하는 방법을 보다 쉽게 이해할 수 있도록 했습니다. 또한, 새로운 Model Maker가 있어 개발자가 복잡한 ML을 수행하지 않고도 기존 모델을 미세 조정할 수 있습니다.
TensorFlow Lite를 사용하여 최신 iPhone 및 iPad에서 부동 소수점 모델을 가속화하기 위해 Apple Neural Engine을 통해 Core ML 위임을 발표합니다. 마지막으로, 휴대폰 CPU, GPU, DSP 및 NPU에서 모델에 가장 빠른 실행 속도를 제공하기 위해 성능 개선에 계속 중점을 둡니다.
웹 브라우저에서는 챗봇과 같은 대화식 인공지능의 흥미로운 장소가 되었습니다. TensorFlow JS는 자바스크립트 및 웹 개발자들이 놀라운 애플리케이션을 빌드할 수 있도록 제공해 줍니다. 웹 또는 Node.js 애플리케이션에서 사용할 수 있는 얼굴 및 손 추적 및 NLP를 위한 몇 가지 새로운 모델을 발표했습니다. 또한 성능 개선, 새로운 백엔드 및 TensorFlow 2.0 모델 훈련과의 완벽한 통합을 시작했습니다.
또한 FaceMesh 및 MobileBERT는 현재 지원되는 흥미로운 새 모델입니다. 특히, Hugging face는 node.js 에서 직접 질문에 답변할 수 있는 새로운 텐서 플로우 JS용 패키지를 도입했다고 합니다. 끝으로 새롭게 웹 어셈블리(Web Assembly) 백엔드를 지원해 CPU 성능 향상을 했다고 합니다.
향후 몇 년간 머신러닝을 위한 플랫폼과 장치들이 폭발적으로 증가될 것인데 MLIR이 빠르게 변화하는 환경에 대해 솔루션을 제공해 줄 것입니다. 텐서플로우 및 기타 AI 프레임워크를 위한 컴파일러 인프라이며 전 세계 하드웨어 가속기 제조업체들의 95%를 지원할 것입니다.
이것은 머신러닝의 미래라고 이야기할 수 있는데, 텐서플로우 영역 인프라에 대해 구글이 계속해서 투자하겠다는 의지가 아닐까 싶습니다. 새로운 텐서플로우 런타임(TFRT)은 개발자들이나 연구원들에게는 필요하지 않겠지만 다양한 도메인별 하드웨어, 특히, 로봇이나 자율주행 같은 분야에서 최상의 성능을 제공하지 않을까 생각합니다.
또한 구체적인 변경으로 2월에 TF → TF Lite Converter를 출시했습니다. TF → TF Lite Converter는 더 나은 오류 메시지, 제어 흐름 지원 및 통합된 양자화 워크플로우를 제공해야 합니다. 이 두 가지 기능인 TFRT와 MLIR을 통해 다양한 하드웨어 및 저수준 라이브러리를 지원하고 더 쉽게 지원할 수 있습니다.
아무래도 제 1부는 기술적인 내용을 다루어서 조금 길어진 감이 없지 않았습니다. 제 2부도 많이 읽어 주시고, 혹시 사내 세미나에 발표하시거나 키노트 PDF 및 캡처 사진 파일 리소스 필요한 분들을 위해 저의 GItHub에 공유해 놓았으니 참고하시기 바랍니다.
텐서플로우 생태계: 책임성 있는 AI와 개발자 커뮤니티: https://brunch.co.kr/@synabreu/54
TFDevSummit 2020 리소스: https://github.com/synabreu/TFDevSummit2020
MediaPipe FaceMesh 오픈소스: https://github.com/tensorflow/tfjs-models/tree/master/facemesh