한국의 개발자들을 위한 Google for Developers 국문 블로그입니다.
TensorFlow Serving의 혁신적인 기능들을 확인해 보세요.
2017년 12월 14일 목요일
<블로그 원문은
여기
에서 확인하실 수 있으며, 블로그 번역 리뷰는
최성준(Machine Learning GDE)
님이 참여해 주셨습니다.>
게시자: Chris Olston(TensorFlow Serving 연구원) 및 Noah Fiedel(TensorFlow Serving 소프트웨어 엔지니어)
2016년 2월
TensorFlow Serving
이 처음으로 오픈소스로 제공된 이후 우리는 몇 가지 주요 기능을 대폭 개선했습니다. 우리가 처음 시작한 때를 되돌아보고, 그동안의 진행 상황을 다시 짚어보고, 앞으로 나아갈 방향에 대해 얘기해 보도록 하겠습니다.
TensorFlow Serving이 출시되기 전, Google 내 TensorFlow 사용자는 자신만의 서비스 제공 시스템을 처음부터 새로 생성해야 했습니다. 서비스 제공은 얼핏보면 쉬운 것처럼 보이지만, 일회성 서비스 제공 솔루션은 빠르게 그 복잡성이 증가합니다. 기계 학습(ML) 서비스 제공 시스템은 모델 버전 관리(롤백 옵션을 포함한 모델 업데이트용) 및 다중 모델(A/B 테스트를 통한 실험용)을 지원해야 하면서, 동시에 동작하는 모델들이 하드웨어 액셀러레이터(GPU 및 TPU)를 통해 짧은 지연 시간으로 높은 처리량을 달성하도록 보장해야 합니다. 따라서 우리는 범용적인 단일 TensorFlow Serving 소프트웨어 스택을 만들기로 했습니다.
우리는 이를 처음부터 오픈소스로 제공 가능하도록 만들기로 결정했으며 2015년 9월에 개발을 시작했습니다. 몇 달 후 우리는 완벽하게 작동하는 초기 시스템을 제작했으며 2016년 2월에 오픈소스 릴리스를 했습니다.
지난 1년 반 동안 우리 회사 내외부의 사용자와 파트너의 도움 덕분에 TensorFlow Serving은 성능, 모범 사례 및 표준 측면에서 다음과 같은 발전을 이루었습니다.
최적화된 서비스 제공 및 사용자설정 기능 기본 제공
: 우리는 이제 AVX 지원 최신 CPU에 맞게 최적화되어 미리 빌드된 표준 서비스 제공 바이너리를 제공하므로 개발자가 특별한 요구 사항이 없는 한 Google 라이브러리에서 자체적인 바이너리를 어셈블할 필요가 없습니다. 그와 동시에, 레지스트리 기반 프레임워크를 추가하여 라이브러리를 사용자설정(또는 TensorFlow 이외) 서비스 제공 시나리오에 사용할 수 있도록 했습니다.
다중 모델 서비스 제공
: 한 모델에서 동시에 서비스가 제공되는 여러 모델로 전환하면 성능과 관련하여 여러 가지 장애물이 발생합니다. 우리는 (1) 격리된 스레드 풀에 로드하여 트래픽이 발생시키는 다른 모델에서 지연 시간의 급증이 발생하지 않도록 하고, (2) 서버 시작 시 모든 모델의 초기 병렬 로드를 가속화하며, (3)
다중 모델 배치 인터리빙
을 통해 하드웨어 액셀러레이터(GPU/TPU)를 다중화함으로써 다중 모델을 원활하게 제공합니다.
모델 형식 표준화
: 우리는
SavedModel
을 TensorFlow 1.0에 추가하여 훈련 및 서비스 제공 간에 제대로 작동하는 단일의 표준 모델 형식을 커뮤니티에 제공했습니다.
사용이 간편한 추론 API
: 우리는 일반적인 추론 작업(
분류
,
회귀
)에 사용할 수 있는 사용이 간편한 API를 출시했으며, 이는 광범위한 Google 애플리케이션에서 올바르게 작동하는 것으로 확인되었습니다. 더욱 발전된 사용을 지원하기 위해 더 low-level tensor 기반 API(
predict
)와 멀티태스킹 모델링을 사용하는 새로운 다중 추론 API를 지원합니다.
이 모든 작업은 (a) 우리가 내실을 기하고 내부 SLA를 충족하도록 하는 데 도움을 주는 Google의 ML
SRE
팀, (b) 광고 서비스 제공 및
TFX
를 포함한 기타 Google 기계 학습 인프라 팀, (c) Google Play 등의 애플리케이션 팀, (d)
Clipper
서비스 제공 시스템과 관련한 상호 보완적인 연구 문제를 탐구하는
UC 버클리 RISE Lab
파트너, (e) Google 오픈소스 사용자 기반 및 기고자와의 긴밀한 협업을 바탕으로 이루어졌습니다.
TensorFlow Serving은 현재 Google의
Cloud ML Prediction
을 비롯하여 1,100개 이상의 Google 자체 프로젝트에 대해 초당 수천만 개의 추론을 처리하고 있습니다. Google의 핵심 서비스 제공 코드는 오픈소스
릴리스
를 통해 모두에게 제공됩니다.
앞으로 계속해서 우리가 하는 작업은 무궁무진할 것이며 혁신을 꾀할 수 있는 여러 방안을 모색 중입니다. 오늘 우리는 두 가지 실험 영역에서 초기 진행 상황을 알려드리고자 합니다.
세분화된 일괄 처리
: 특수화된 하드웨어(GPU 및 TPU)를 통한 높은 처리량을 달성하기 위해 우리가 택한 핵심 기술은 여러 사례를 공동으로 처리하여 효율성을 높이는 기술인 '일괄 처리'입니다. 우리는 (a) 효율성을 극대화하기 위해 일괄 처리가 계산에서 GPU/TPU 부분만 대상으로 삼을 수 있도록 하고, (b) 텍스트 및 이벤트 시퀀스와 같은 시퀀스 데이터를 처리하는 데 사용되는 순환적 신경망 내에서 일괄 처리가 가능하도록 하는 것을 목표로 일괄 처리를 향상할 수 있는 기술과 모범 사례를 개발하고 있습니다. 우리는
일괄 처리/일괄 처리 해제
작업 쌍을 사용하여 임의의 부분 그래프를 일괄 처리하는 것을 실험하고 있습니다.
분산 모델 서비스 제공
: 우리는 하나의 서버 노드에 맞추기에는 너무 큰 모델을 처리하거나 메모리 효율적인 방식으로 하위 모델을 공유하는 수단으로서 모델 분할 기술을 연구하고 있습니다. 최근에 프로덕션 환경에서 1TB 이상의 모델을 출시하고 좋은 결과를 내고 있으며, 이 기능을 곧 오픈소스로 제공하기를 바라고 있습니다.
다시 한 번 피드백, 코드, 그리고 아이디어를 주신 모든 사용자와 파트너 여러분께 감사 말씀을 올립니다.
github.com/tensorflow/serving
에서 프로젝트에 참여해 주시기 바랍니다.
Contents
ML/Tensorflow
Android
Flutter
Web/Chrome
Cloud
Google Play
Community
Game
Firebase
검색
Tag
인디게임페스티벌
정책 세미나
창구프로그램
AdMob
AI
Android
Android 12
Android 12L
Android 13
Android 14
Android Assistant
Android Auto
Android Games
Android Jetpack
Android Machine Learning
Android Privacy
Android Studio
Android TV
Android Wear
App Bundle
bootcamp
Business
Chrome
Cloud
Community
compose
Firebase
Flutter
Foldables
Game
gdg
GDSC
google
Google Developer Student Clubs
Google Play
Google Play Games
Interview
Jetpack
Jetpack Compose
kotlin
Large Screens
Library
ma
Material Design
Material You
ML/Tensorflow
mobile games
Now in Android
PC
Play Console
Policy
priva
wa
wear
Wearables
Web
Web/Chrome
Weeklyupdates
WorkManager
Archive
2024
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2023
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2022
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2021
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2020
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2019
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2018
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2017
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2016
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2015
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2014
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2013
12월
11월
10월
9월
8월
7월
6월
5월
4월
3월
2월
1월
2012
12월
11월
10월
9월
8월
7월
6월
5월
3월
2월
1월
2011
12월
11월
Feed