TFX 사용자 가이드 요약

Tae-Kyun Kim·2022년 4월 2일
0

TFX 사용자 가이드 | TensorFlow

TFX?

tensorflow에 기반한 구글의 production-scale ML platfrom

설치

pip install tfx

About TFX

TFX는 프로덕션 환경에서 ML workflows를 구축하고 관리하기 위한 플랫폼임.

TFX pipelines

  • ML 파이프라인 빌드를 위한 툴킷
  • Apache Airflow, Apache Beam, Kubeflow pipelines 등에서 ML workflows를 orchestrate 가능

TFX standard components

  • 파이프라인 또는 ML 학습 스크립트에서 부분적으로 사용
  • ML 프로세스 빌드를 쉽게 시작할 수 있는 검증된 기능 제공

TFX libraries

  • 대부분의 standard components에 대해 기본 기능을 제공하는 라이브러리.
  • 자체 맞춤 component에 추가하거나 별도로 사용 가능

TFX Standard Components

TFX pipeline은 하나의 ML pipeline 을 구축하는 구성요소의 sequence임. 이 ML piepline은 scalable, 고성능 머신러닝 테스크들을 위해 분명히 디자인됨. 이는 online, native mobile 그리고 JavaScript targets를 위해 모델링, 학습, 서빙 추론 그리고 개발을 관리하는 것을 포함.

TFX pipline은 일반적으로 다음과 같은 components를 포함함

  • ExampleGen
    • 파이프라인의 초기의 input component. input 데이터셋을 삼키(ingests)거나 경우에따라 split함
  • StatisticsGen
    • 데이터베이스를 위해 통계를 계산
  • SchemaGen
    • 통계를 검사하고 data schema를 생성함
  • ExampleValidator
    • 데이터셋의 이상치와 누락값을 찾음
  • Transform
    • 데이터에 feature engineering을 수행함
  • Trainer
    • 모델을 학습함
  • Tuner
    • 모델의 하이퍼파라미터를 튜닝함
  • Evaluator
    • 트레이닝 결과의 깊은 분석을 수행하고 너의 exported models을 검증하는 것을 도와주고, 프로덕션으로 push되기 충분히 좋은 것을 보장함
  • InfraValidator
    • 인프라에서 모델이 실제로 서빙가능한지 체크하고 나쁜 모델이 push 되는 것을 예방함
  • Pusher
    • 서빙 인프라에서 모델을 배포함
  • BulkInferrer
    • labeling 되지 않은 inference 요청과 함께 batch processing를 수행함.
    • batch processing? 컴퓨터 프로그램 흐름에 따라 순차적으로 자료를 처리하는 방식

Standard components 간의 flow

TFX Libraries

TFX libraries 와 pipeline components 의 관계

  • pipeline components를 이용하기 위한 라이브러리
  • TensorFlow Data Validation (TFDV)
    • ML 데이터를 분석하고 검증함
  • TensorFlow Transform (TFT)
    • 데이터를 사전 처리하기 위한 라이브러리
  • TensorFlow
    • TFX를 학습시킴
    • 학습 데이터 및 모델링 코드를 수집하여 SavedModel 결과를 생성
    • 입력 데이터 사전 처리를 위해 Tensorflw Tranform에서 생성한 특성 추출 파이프라인을 통합
  • TensorFlow Model Analysis (TFMA)
    • TF 모델 평가
    • EvalSavedModel을 생성, 분석의 기초가 됨
    • 트레이너에 정의된 것과 동일한 측정항목을 사용하여 분산된 방식으로 대량의 데이터에서 모델을 평가할 수 있음
    • 다양한 데이터 슬라이스에 걸쳐 계산되어 Jupyter 메모장에서 시각화
  • TensorFlow Metadata (TFMD)
    • 메타데이터를 위한 표준 표현을 제공
  • ML Metadata (MLMD)
    • 메타데이터를 기록하고 검색하기 위한 라이브러리
    • 대체로 메타데이터는 TFMD 표현을 사용
    • SQL-Lite, MySQL 및 기타 유사한 데이터 저장소를 사용하여 지속성 관리

지원기술

필수

Apach Beam

  • 일괄 및 스트리밍 데이터 병렬 처리 파이프라인을 모두 정의할 수 있는 오픈소스 통합 모델
  • TFX는 Beam을 사용하여 데이터 병렬 파이프라인을 구현
  • 파이프라인은 Apache Flink, Apache Spark, Google Cloud Dataflow 등의 분산 처리 백엔드 중 하나에 의해 실행

선택

Apache Airflow

  • 워크플로를 프로그래매틱 방식으로 작성, 예약 및 모니터링하는 플랫폼
  • TFX는 Airflow를 사용하여 워크플로를 작업 DAG(Directed Acyclic Graph)로 작성

Kubeflow

  • K8s에서 ML Workflows 배포를 간단하고 이동 가능하며 확장 가능하도록 지원하는데 전념
  • ML을 위한 최상의 오픈소스 시스템을 다양한 인프라에 배포할 수 있는 간단한 방법을 제공
  • Kubeflow Pipelines를 사용하면 실험 및 메모장 기반 환경과 통합된, Kubeflow에서 재현 가능한 워크플로를 구성하고 실행 가능
  • Kubernetes의 Kubeflow Pipelines 서비스에는 호스팅된 메타데이터 저장소, 컨테이너 기반 조정 엔진, 메모장 서버 및 UI가 포함되어 있어 사용자가 복잡한 ML 파이프라인을 대규모로 개발, 실행 및 관리

이동 및 상호운용성

  • 온프레미스를 포함하는 다양한 컴퓨팅 플랫폼 및 Google Cloud Platform(GCP)과 같은 클라우드 플랫폼으로 이식할 수 있음
  • TFX는 학습 및 예측을 위한 Cloud AI Platform 및 여러 다른 ML 수명 주기 측면의 분산 데이터 처리를 위한 Cloud Dataflow와 같은 여러 관리형 GCP 서비스와 상호운용됨

모델과 SavedModel

모델

  • 학습 프로세스의 결과.
  • 학습 프로세스 과정에서 학습된 가중치의 직렬화된 기록
  • 나중에 새로운 입력 예시의 예측을 계산하는 데 사용됨
  • 해당하는 지점까지 학습된 가중치가 포함된 체크포인트

→ 우리가 일반적으로 생각하는 모델

SavedModel

  • TF 모델의 언어 중립적이며 복구 가능한 밀폐식 범용 직렬화
  • 상위 수준 시스템에서 단일 추상화를 사용하여 TensorFlow 모델을 생성, 변환 및 사용할 수 있게 해줌

SavedModel은 프로덕션에서 TensorFlow 모델을 제공하거나 기본 모바일 또는 자바스크립트 애플리케이션 학습을 위해 학습된 모델을 내보내는 데 권장되는 직렬화 형식

  • ex) 예측을 위해 모델을 REST 서비스로 변환하려면 모델을 SavedModel로 직렬화하고 TF Serving을 사용하여 모델을 제공

스키마

  • 일부 TFX 구성요소는 스키마라고 하는 입력 데이터의 설명을 사용.
  • schema.proto 의 인스턴스
  • 프로토콜 버퍼의 한 유형. protobuf 으로 더 잘 알려짐
  • 특성 값의 데이터 유형, 즉 해당 특성이 모든 예시, 허용되는 값의 범위, 기타 속성에 모두 나타나야 하는지에 있어야 하는지 여부, 허용되는 값의 범위 및 기타 속성을 지정
  • TFDV를 사용하면 학습 데이터에서 유형, 카테고리 및 범위를 추론하여 자동으로 스키마를 생성할 수 있다는 이점
...
feature {
  name: "age"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
feature {
  name: "capital-gain"
  value_count {
    min: 1
    max: 1
  }
  type: FLOAT
  presence {
    min_fraction: 1
    min_count: 1
  }
}
...
  • TDV 와 Tensorflow Transfom은 스키마를 사용
  • 일반적으로 TDV 는 다른 구성요소에 의해 사용되는 스키마를 생성

TFX를 사용한 개발

  • 로컬 머신의 연구, 실험 및 개발에서 배포에 이르기까지 머신러닝 프로젝트의 모든 단계를 위한 강력한 플랫폼 제공
  • 모델 학습과 학습된 모델 배포에 모두 TFX 파이프라인을 구현하고 학습과 추론에 모두 Tensorflow Transform 라이브러리를 활용하는 Transform 구성요소를 사용하는 것을 적극 권장
    • 코드 중복 피함
    • 학습-제공 편향의 가능성 제거
  • 동일한 사전 처리 및 분석 코드를 일관되게 사용하고 학습에 사용되는 데이터와 프로덕션의 학습된 모델에 공급되는 데이터 간의 차이를 방지

Data Exploration, Visualization, and Cleaning

ExamplGen

  • 입력 데이터를 받아 tf.Examples 로 형식을 지정
  • 데이터가 학습 및 평가 데이터셋으로 분활된 후에 이루어지는 경우가 많음
  • ExampleGen 구성요소가 학습 및 평가를 위해 하나씩 총 2개 존재하도록 하기 위해

StatisticGen, SchemaGen

데이터를 검사하고 데이터 스키마 및 통계를 추론

ExampleValidator

데이터에서 이상치, 누락된 값 및 잘못된 데이터 유형을 찾음

TFDV

  • 위 구성요소들은 모두 TFDV 기능을 활용
  • 데이터 세트의 초기 탐색 분석, 시각화 및 정리에 매우 유용
  • 데이터를 검사하고 데이터 유형, 카테고리 및 범위를 추론한 후 이상치 및 누락된 값을 자동으로 식별할 수 있음
  • 데이터세트를 검사하고 이해하는 데 도움이 되는 시각화 도구 제공
  • 파이프라인이 완료되면 MLMD에서 메타데이터를 읽고 Jupyter 메모장의 TFDV 시각화 도구를 사용하여 데이터를 분석

Data Visualization

  • TFDV를 사용하는 파이프라인 섹션을 통해 데이터의 첫번째 실행 완료후 Jupyter 스타일 메모장에서 결과를 시각화할 수 있음
  • 추가 실행에서는 데이터가 모델 및 애플리케이션에 최적화될 때까지 조정하면서 이러한 결과를 비교할 수 있음
  • MLMD를 쿼리하여 components의 실행 결과를 찾은 후 TFDV의 시각화 지원 API를 사용하여 메모장에서 시각화 생성
  • 시각화를 사용하면 데이터세트의 특성을 더 잘 이해하고 필요에 따라 수정할 수 있음

Developing and Training Models

Tensorflow Transform (TFT)

  • 파이프라인에서 특성 추출을 수행하
  • TFT는 SchemaGen 의해 생성된 스키마를 사용하고 데이터 변환을 적용하여 모델 학습에 사용될 특성을 생성, 결합 및 변환
  • 누락된 값의 정리 및 유형 변환이 추론 요청을 위해 전송된 데이터에도 존재할 가능성이 있다면 TFT 에서도 이러한 정리 및 변환을 완료해야됨

Trainer

  • TF의 모델링 코드에서 가져와 사용할 SavedModel
  • SavedModel에는 Transform 구성요소에서 생성된 모든 데이터 엔지니어링 변환이 포함되므로 동일한 변환이 학습 및 추론 중에 모두 정확히 동일한 코드를 사용하여 실행
  • TFT의 SavedModel을 비롯한 모델링 코드를 이용하면 학습 및 평가 데이터를 사용하고 모델을 학습

Estimator

  • Estimator 기반 모델로 작업하는 경우 모델링 코드의 마지막 섹션에서 모델을 SavedModel과 EvalSavedModel로 저장해야함
  • EvalSavedModel로 저장하면 학습 시간에 사용된 측정항목을 평가 중에도 사용 가능
  • EvalSavedModel을 저장하려면 Trainer 구성요소에 TFMA 라이브러리 가져와야 함
import tensorflow_model_analysis as tfma
...

tfma.export.export_eval_savedmodel(
        estimator=estimator,
        export_dir_base=eval_model_dir,
        eval_input_receiver_fn=receiver_fn)

Tunor

  • 선택사항
  • 모델을 위한 하이퍼파라미터를 튜닝하기 위해 Trainer 전에 추가 가능

Analyzing and Understanding Model Performance

초기 모델 개발 및 학습 이후에는 모델의 성능을 분석하고 실제로 이해하는 것이 중요

Evaluator

  • TFMA 라이브러리의 기능을 활용
  • 이 개발 단계를 위한 강력한 도구 세트를 제공
  • 앞서 내보낸 모델을 사용하며, 모델의 성능을 시각화하고 분석할 때 사용할 수 있는 tfma.SlicingSpec 목록을 지정할 수 있게 함
  • SlicingSpec 은 범주형 특성의 특정 카테고리 또는 숫자 특성의 특정 범위와 같이 검사하려는 학습 데이터의 슬라이스를 정의

Model Analysis and Visualization

  • Evaluator 를 실행하여 데이터의 첫 번째 실행을 완료한 이후 Jupyter 스타일 메모장에서 결과 시각화 가능
  • 추가 실행에서는 결과가 모델 및 애플리케이션에 최적화될 때까지 조정하면서 이러한 결과를 비교
  • MLMD를 쿼리하여 components의 실행 결과를 찾은 후 TFMA의 시각화 지원 API를 사용하여 메모장에서 시각화를 생성

Validating Model Performance

  • 현재 사용 중인 모델과 같은 기준과 비교하여 성능을 검증할 수도 있음
  • 후보 모델과 기준 모델을 모두 Evaluator 구성 요소에 전달하면 모델 검증이 처리
  • Evaluator는 후보 모델과 기준 모델 모두에 관해 AUC, 손실 등 측정항목과 해당하는 차이 측정항목 세트를 계산
  • 기준점을 적용하여 프로덕션을 대상으로 한 모델 푸시를 제어할 수도 있음

Validating That A Model Can Be Served

학습된 모델을 배포하기 전에 서비스 제공 인프라에서 모델이 실제로 제공 가능한지 검증하는 것이 좋음

새로 게시된 모델로 인해 시스템이 예측을 제공하지 못하는 것을 방지하기 위해 프로덕션 환경에서 특히 중요

InfraValidator

샌드박스 환경에서 모델의 카나리아 배포를 실행하고 선택적으로 실제 요청을 전송하여 모델이 올바르게 동작하는지 확인

Deployment Targets

TFX는 세 가지 클래스 배포 대상으로의 배포를 지원. SavedModel로 내보낸 학습 모델을 이러한 배포 대상 중 일부 또는 전체에 배포 가능

Inference: TensorFlow Serving

Tensorflow Serving(TFS)

  • 프로덕션 환경을 위해 설계된 머신러닝 모델을 위한 유연한 고성능 제공 시스템
  • SavedModel을 사용하여 REST 또는 gRPC 인터페이스를 통한 추론 요청을 수락
  • 하나 이상의 네트워크 서버에서 일련의 프로세스로 실행되며 여러 고급 아키텍쳐 중 하나를 사용하여 동기화 및 분산 계산을 처리

Trainer 에서 학습된 SavedModel이 먼저 InfraValidator 에서 인프라 검증됨. InfraValidator는 카나리아 TFS 모델 서버를 실행하여 실제로 SavedModel 제공. 검증이 통과되면 Pusher가 최종적으로 SavedModel을 TFS 인프라에 배포. 여기에는 여러 버전 및 모델 업데이트의 처리 포함

0개의 댓글