이 페이지는 Cloud Translation API를 통해 번역되었습니다.
Switch to English

건축물

TensorFlow Serving은 프로덕션 환경을 위해 설계된 기계 학습 모델을위한 유연한 고성능 제공 시스템입니다. TensorFlow Serving을 사용하면 동일한 서버 아키텍처와 API를 유지하면서 새로운 알고리즘과 실험을 쉽게 배포 할 수 있습니다. TensorFlow Serving은 TensorFlow 모델과의 즉각적인 통합을 제공하지만 다른 유형의 모델을 지원하도록 쉽게 확장 할 수 있습니다.

주요 개념

TensorFlow Serving의 아키텍처를 이해하려면 다음과 같은 주요 개념을 이해해야합니다.

게재 가능 항목

Servable 은 TensorFlow Serving의 중심 추상화입니다. Servable은 클라이언트가 계산 (예 : 조회 또는 추론)을 수행하는 데 사용하는 기본 개체입니다.

Servable의 크기와 세분성은 유연합니다. 단일 Servable에는 룩업 테이블의 단일 샤드에서 단일 모델, 튜플의 추론 모델에 이르기까지 모든 것이 포함될 수 있습니다. Servable은 모든 유형 및 인터페이스가 될 수 있으므로 다음과 같은 유연성 및 향후 개선이 가능합니다.

  • 스트리밍 결과
  • 실험적 API
  • 비동기 작동 모드

Servable은 자체 라이프 사이클을 관리하지 않습니다.

일반적인 서비스는 다음과 같습니다.

  • TensorFlow SavedModelBundle ( tensorflow::Session )
  • 임베딩 또는 어휘 조회를위한 조회 테이블

제공 가능한 버전

TensorFlow Serving은 단일 서버 인스턴스의 수명 동안 하나 이상의 서빙 가능 버전 을 처리 할 수 ​​있습니다. 이를 통해 새로운 알고리즘 구성, 가중치 및 기타 데이터를 시간에 따라로드 할 수 있습니다. 버전을 사용하면 두 개 이상의 서빙 가능 버전을 동시에로드 할 수 있으므로 점진적 롤아웃 및 실험을 지원합니다. 제공 시간에 클라이언트는 특정 모델에 대해 최신 버전 또는 특정 버전 ID를 요청할 수 있습니다.

제공 가능한 스트림

제공 가능한 스트림 은 버전 번호를 증가시켜 정렬 된 제공 가능한 버전의 시퀀스입니다.

모델

TensorFlow Serving은 모델 을 하나 이상의 서빙 가능 항목으로 나타냅니다. 기계 학습 모델에는 하나 이상의 알고리즘 (학습 된 가중치 포함)과 조회 또는 임베딩 테이블이 포함될 수 있습니다.

복합 모델 을 다음 중 하나로 나타낼 수 있습니다.

  • 여러 개의 독립적 인 게재 가능
  • 단일 복합 게재 가능

서빙 가능 항목은 모델의 일부에 해당 할 수도 있습니다. 예를 들어 큰 조회 테이블은 여러 TensorFlow Serving 인스턴스에 걸쳐 분할 될 수 있습니다.

로더

로더 는 서비스의 수명주기를 관리합니다. Loader API는 관련된 특정 학습 알고리즘, 데이터 또는 제품 사용 사례와 독립적 인 공통 인프라를 지원합니다. 특히, 로더는 서비스를로드 및 언로드하기 위해 API를 표준화합니다.

출처

소스 는 서비스를 찾아 제공하는 플러그인 모듈입니다. 각 소스는 0 개 이상의 제공 가능한 스트림을 제공합니다. 제공 가능한 각 스트림에 대해 소스는로드 할 수있는 각 버전에 대해 하나의 로더 인스턴스를 제공합니다. (소스는 실제로 0 개 이상의 SourceAdapter와 함께 연결되어 있으며 체인의 마지막 항목이 로더를 내 보냅니다.)

TensorFlow Serving의 Sources 인터페이스는 임의의 저장소 시스템에서 제공 가능한 항목을 검색 할 수 있습니다. TensorFlow Serving에는 일반적인 참조 소스 구현이 포함됩니다. 예를 들어 소스는 RPC와 같은 메커니즘에 액세스하고 파일 시스템을 폴링 할 수 있습니다.

소스는 여러 서비스 또는 버전에서 공유되는 상태를 유지할 수 있습니다. 이것은 버전간에 델타 (diff) 업데이트를 사용하는 서 블러 블에 유용합니다.

주목받는 버전

Aspired 버전 은로드되고 준비되어야하는 제공 가능한 버전 집합을 나타냅니다. 소스는 한 번에 제공 가능한 단일 스트림에 대해이 제공 가능한 버전 세트를 전달합니다. 소스가 관리자에게 추천 버전의 새 목록을 제공하면 제공 가능한 스트림의 이전 목록을 대체합니다. Manager는 더 이상 목록에 나타나지 않는 이전에로드 된 버전을 언로드합니다.

버전 로딩이 실제로 어떻게 작동하는지 확인하려면 고급 튜토리얼 을 참조하십시오.

관리자

관리자 는 다음을 포함하여 Servable의 전체 수명주기를 처리합니다.

  • Servable로드
  • 서비스 제공
  • Servable 언로드

관리자는 소스를 듣고 모든 버전을 추적합니다. 관리자는 소스의 요청을 이행하려고하지만 필요한 리소스를 사용할 수없는 경우 원하는 버전의로드를 거부 할 수 있습니다. 관리자는 "언로드"를 연기 할 수도 있습니다. 예를 들어 관리자는 항상 하나 이상의 버전이로드되도록 보장하는 정책에 따라 최신 버전이로드를 완료 할 때까지 언로드를 기다릴 수 있습니다.

TensorFlow Serving Manager는 클라이언트가로드 된 서빙 가능한 인스턴스에 액세스 할 수 있도록 간단하고 좁은 인터페이스 인 GetServableHandle() 제공합니다.

핵심

표준 TensorFlow Serving APis를 사용하여 TensorFlow Serving Core 는 다음과 같은 서비스 항목을 관리합니다.

  • 수명주기
  • 메트릭

TensorFlow Serving Core는 servable 및 로더를 불투명 개체로 취급합니다.

서빙의 삶

tf 제공 아키텍처 다이어그램

광범위하게 말하면 :

  1. 소스는 제공 가능한 버전에 대한 로더를 생성합니다.
  2. 로더는 Aspired 버전으로 Manager에 전송되어 관리자가로드하여 클라이언트 요청에 제공합니다.

더 자세하게:

  1. 소스 플러그인은 특정 버전에 대한 로더를 생성합니다. 로더에는 Servable을로드하는 데 필요한 모든 메타 데이터가 포함됩니다.
  2. 소스는 콜백을 사용하여 관리자에게 Aspired 버전을 알립니다.
  3. Manager는 구성된 버전 정책을 적용하여 수행 할 다음 작업을 결정합니다. 이전에로드 된 버전을 언로드하거나 새 버전을로드 할 수 있습니다.
  4. Manager가 안전하다고 판단하면 로더에 필요한 리소스를 제공하고 로더에 새 버전을로드하도록 지시합니다.
  5. 클라이언트는 버전을 명시 적으로 지정하거나 최신 버전을 요청하여 관리자에게 Servable을 요청합니다. Manager는 Servable에 대한 핸들을 반환합니다.

예를 들어 소스가 자주 업데이트되는 모델 가중치가있는 TensorFlow 그래프를 나타냅니다. 가중치는 디스크의 파일에 저장됩니다.

  1. 소스는 모델 가중치의 새 버전을 감지합니다. 디스크의 모델 데이터에 대한 포인터를 포함하는 로더를 생성합니다.
  2. Source는 Dynamic Manager에게 Aspired 버전을 알립니다.
  3. Dynamic Manager는 버전 정책을 적용하고 새 버전을로드하기로 결정합니다.
  4. Dynamic Manager는 충분한 메모리가 있음을 로더에 알립니다. 로더는 새 가중치로 TensorFlow 그래프를 인스턴스화합니다.
  5. 클라이언트는 최신 버전의 모델에 대한 핸들을 요청하고 Dynamic Manager는 새 버전의 Servable에 대한 핸들을 반환합니다.

확장 성

TensorFlow Serving은 새로운 기능을 추가 할 수있는 여러 확장 점을 제공합니다.

버전 정책

버전 정책은 제공 가능한 단일 스트림 내에서 버전로드 및 언로드 순서를 지정합니다.

TensorFlow Serving에는 가장 알려진 사용 사례를 수용하는 두 가지 정책이 포함되어 있습니다. 이는 가용성 보존 정책 (0 개의 버전을로드하지 마십시오. 일반적으로 이전 버전을 언로드하기 전에 새 버전을로드)과 리소스 보존 정책 (두 버전을 동시에로드하지 않도록하여 리소스를 두 배로 필요로 함,로드하기 전에 이전 버전 언로드)입니다. 새로운 것). 모델의 제공 가용성이 중요하고 리소스 비용이 낮은 TensorFlow Serving의 간단한 사용을 위해 가용성 보존 정책은 이전 버전을 언로드하기 전에 새 버전이로드되고 준비되었는지 확인합니다. 예를 들어 여러 서버 인스턴스에서 버전 관리와 같이 TensorFlow Serving을 정교하게 사용하려면 리소스 보존 정책에 최소한의 리소스가 필요합니다 (새 버전로드를위한 추가 버퍼 없음).

출처

새로운 소스는 새로운 파일 시스템, 클라우드 제품 및 알고리즘 백엔드를 지원할 수 있습니다. TensorFlow Serving은 새 소스를 쉽고 빠르게 만들 수 있도록 몇 가지 공통 구성 요소를 제공합니다. 예를 들어 TensorFlow Serving에는 간단한 소스에 폴링 동작을 래핑하는 유틸리티가 포함되어 있습니다. 소스는 특정 알고리즘 및 데이터 호스팅 서비스에 대한 로더와 밀접하게 관련되어 있습니다.

사용자 지정 소스 를 만드는 방법에 대한 자세한 내용은 사용자 지정 소스 문서를 참조하십시오.

로더

로더는 알고리즘 및 데이터 백엔드를 추가하기위한 확장 지점입니다. TensorFlow는 이러한 알고리즘 백엔드 중 하나입니다. 예를 들어, 새로운 유형의 제공 가능한 기계 학습 모델의 인스턴스를로드, 액세스 제공 및 언로드하기 위해 새 로더를 구현합니다. 조회 테이블 및 추가 알고리즘에 대한 로더를 만들 예정입니다.

맞춤 게재 가능 항목을 만드는 방법은 맞춤 게재 가능 문서를 참조하세요.

배처

여러 요청을 단일 요청으로 일괄 처리하면 특히 GPU와 같은 하드웨어 가속기가있는 경우 추론 수행 비용을 크게 줄일 수 있습니다. TensorFlow Serving에는 클라이언트가 요청 전체에서 유형별 추론을 알고리즘 시스템이보다 효율적으로 처리 할 수있는 일괄 요청으로 쉽게 일괄 처리 할 수있는 요청 일괄 처리 위젯이 포함되어 있습니다. 자세한 내용은 배치 가이드 를 참조하십시오.