TFX 사용자 가이드

소개

TFX는 TensorFlow를 기반으로 하는 Google의 프로덕션 규모 머신러닝 플랫폼입니다. 머신러닝 시스템을 정의, 시작, 모니터링하는 데 공통으로 필요한 구성요소를 통합할 수 있는 구성 프레임워크 및 공유 라이브러리를 제공합니다.

설치

Python PyPI

pip install tensorflow
pip install tfx

핵심 개념

TFX 파이프라인

TFX 파이프라인은 특정 ML 작업(예: 특정 데이터의 회귀 모델 빌드 및 배포)을 구현하려는 목표에 따라 여러 구성요소를 통한 데이터 흐름을 정의합니다. 파이프라인 구성요소는 TFX 라이브러리를 기반으로 합니다. 파이프라인의 결과는 추론 요청의 TFX 배포 대상 또는 서비스입니다.

아티팩트

파이프라인에서 아티팩트는 구성요소 간에 전달되는 데이터 단위입니다. 일반적으로 구성요소에는 하나 이상의 입력 아티팩트와 출력 아티팩트가 있습니다. 모든 아티팩트에는 아티팩트의 유형속성을 정의하는 관련 메타데이터가 있어야 합니다. 아티팩트는 ML 메타데이터 저장소에 등록된 아티팩트 유형으로 철저하게 지정되어야 합니다. 아티팩트아티팩트 유형의 개념은 이 문서에 설명된 것처럼 ML 메타데이터에서 정의한 데이터 모델에서 비롯됩니다. TFX는 자체 아티팩트 유형 온톨로지를 정의하고 구현하여 더 높은 수준의 기능을 실현합니다. TFX 0.15부터는 TFX 시스템 전체에서 11개의 알려진 아티팩트 유형이 정의되어 사용됩니다.

아티팩트 유형에는 고유한 이름과 상응하는 인스턴스의 속성 스키마가 있습니다. TFX는 파이프라인의 구성요소가 아티팩트를 사용하는 방식으로 아티팩트 유형을 활용하지만 파일 시스템에서 아티팩트 콘텐츠가 실제로 무엇인지를 확인하지는 않습니다.

예를 들어 예시 아티팩트 유형은 tensorflow::Example 프로토콜 버퍼, CSV, JSON 또는 기타 물리적 형식의 TFRecord에서 구체화된 예시를 나타낼 수 있습니다. 이와는 관계없이 통계 생성을 위해 분석되고, 예상되는 스키마를 기준으로 검증되고, 학습 전에 사전 처리되고, 학습 모델 Trainer에 제공되는 등 예시가 파이프라인에서 사용되는 방식은 정확히 동일합니다. 마찬가지로 모델 아티팩트 유형은 (Python의 다양한 모델 객체 유형의) TensorFlow 저장된 모델, ONNX, PMML 또는 PKL과 같이 다양한 물리적 형식으로 내보내진 학습된 모델 객체를 나타낼 수 있습니다. 어쨌든 파이프라인에서 제공하기 위해서는 모델을 항상 평가, 분석 및 배포해야 합니다.

참고: TFX 0.15부터 TFX 구성요소 구현에서는 예시 아티팩트가 gzip 압축 TFRecord 형식의 tensorflow::Example 프로토콜 버퍼인 것으로 가정합니다. 마찬가지로 모델 아티팩트가 TensorFlow 저장된 모델인 것으로 가정합니다. 향후 버전의 TFX는 이러한 아티팩트 유형을 확장하여 더 많은 변형을 지원할 수 있습니다.

동일한 아티팩트 유형의 가능한 변형을 구별하기 위해 ML 메타데이터는 아티팩트 속성 세트를 정의합니다. 예를 들어 예시 아티팩트와 관련하여 하나의 아티팩트 속성형식일 수 있고 값은 TFRecord, JSON, CSV 등 중 하나일 수 있습니다. 예시 유형의 아티팩트는 항상 예시를 입력 아티팩트(예: Trainer)로 가져오도록 설계된 구성요소로 전달될 수 있습니다. 그러나 사용되는 구성요소의 실제 구현은 형식 속성의 특정 값에 응답하여 동작을 조정하거나 예시의 특정 형식을 처리할 구현이 없다면 런타임 오류를 발생시킬 수 있습니다.

요약하면 아티팩트 유형은 전체 TFX 파이프라인 시스템에서 아티팩트의 온톨로지를 정의하는 반면, 아티팩트 속성아티팩트 유형에 고유한 온톨로지를 정의합니다. 파이프라인 시스템의 사용자는 새로운 맞춤 속성을 정의하고 채워서 로컬에서 이러한 온톨로지를 파이프라인 애플리케이션으로 확장하도록 선택할 수 있습니다. 또한 사용자는 새로운 아티팩트 유형을 도입하거나 사전 정의된 유형 속성을 수정하여 시스템 전체의 온톨로지를 전역적으로 확장하도록 선택할 수 있습니다. 이때 이러한 확장은 파이프라인 시스템의 마스터 저장소(TFX 저장소)에 다시 제공됩니다.

TFX 파이프라인 구성요소

TFX 파이프라인은 확장 가능한 고성능 머신러닝 작업을 위해 특별히 설계된 ML 파이프라인을 구현하는 일련의 구성요소입니다. 여기에는 온라인, 기본 모바일 및 자바스크립트 타겟을 대상으로 한 모델링, 학습, 추론 제공 및 배포 관리가 포함됩니다.

TFX 파이프라인에는 일반적으로 다음 구성요소가 포함됩니다.

  • ExampleGen은 입력 데이터세트를 수집하고 선택적으로 분할하는 파이프라인의 초기 입력 구성요소입니다.

  • StatisticsGen은 데이터세트의 통계를 계산합니다.

  • SchemaGen은 통계를 검사하고 데이터 스키마를 생성합니다.

  • ExampleValidator는 데이터세트에서 이상치 및 누락된 값을 찾습니다.

  • Transform은 데이터세트에서 특성 추출을 실행합니다.

  • Trainer는 모델을 학습시킵니다.

  • Evaluator는 학습 결과를 심도 있게 분석하고 내보낸 모델을 검증하여 프로덕션에 푸시할 수 있을 '정도로 좋은' 상태인지 확인하는 데 도움이 됩니다.

  • Pusher는 서비스 제공 인프라에서 모델을 배포합니다.

다음 다이어그램은 이러한 구성요소 간의 데이터 흐름을 보여줍니다.

구성요소 흐름

구성요소 심층 분석

TFX 구성요소는 다음 세 가지 주요 요소로 구성됩니다.

  • 드라이버
  • 실행자
  • 게시자

구성요소 심층 분석

드라이버 및 게시자

드라이버는 메타데이터 저장소를 쿼리하여 실행자에 메타데이터를 제공하는 반면, 게시자는 실행자의 결과를 받아 메타데이터에 저장합니다. 개발자는 일반적으로 드라이버 및 게시자와 직접 상호작용할 필요가 없지만 드라이버 및 게시자에 의해 로깅된 메시지는 디버깅 과정에 유용하게 사용할 수 있습니다. 문제해결을 참조하세요.

실행자

실행자는 구성요소가 처리를 실행하는 곳입니다. 개발자는 작업 중인 구성요소 유형을 구현하는 클래스의 요구사항에 따라 실행자에서 실행되는 코드를 작성합니다. 예를 들어 Transform 구성요소 관련 작업 시 preprocessing_fn을 개발해야 합니다.

TFX 라이브러리

TFX에는 라이브러리와 파이프라인 구성요소가 모두 포함됩니다. 다음 다이어그램은 TFX 라이브러리와 파이프라인 구성요소 간의 관계를 보여줍니다.

라이브러리 및 구성요소

TFX는 파이프라인 구성요소를 생성하는 데 사용되는 라이브러리인 Python 패키지를 여러 개 제공합니다. 이러한 라이브러리를 사용하면 코드가 파이프라인의 고유한 측면에 집중할 수 있도록 파이프라인의 구성요소를 생성할 수 있습니다.

TFX 라이브러리에는 다음이 포함됩니다.

  • TensorFlow Data Validation(TFDV)은 머신러닝 데이터를 분석하고 검증하기 위한 라이브러리입니다. TensorFlow Data Validation은 확장성이 뛰어나고 TensorFlow 및 TFX와 원활하게 연동되도록 설계되었습니다. TFDV에는 다음이 포함됩니다.

    • 학습 및 테스트 데이터에 관한 요약 통계의 확장 가능한 계산
    • 데이터 분포 및 통계를 위한 뷰어와의 통합 및 데이터세트 쌍(패싯)의 패싯화된 비교

    • 필수 값, 범위 및 어휘와 같은 데이터에 관한 기대치를 설명하는 자동화된 데이터 스키마 생성

    • 스키마를 검사하는 데 도움이 되는 스키마 뷰어

    • 몇 가지 예를 들면 누락된 특성, 범위를 벗어난 값 또는 잘못된 특성 유형과 같은 이상치를 식별하기 위한 이상 감지

    • 이상치가 있는 특성을 확인하고 문제를 수정하기 위해 자세히 알아볼 수 있는 이상치 뷰어

  • TensorFlow Transform(TFT)은 TensorFlow를 사용하여 데이터를 사전 처리하기 위한 라이브러리입니다. TensorFlow Transform은 다음과 같이 전체 전달이 필요한 데이터에 유용합니다.

    • 평균 및 표준 편차로 입력 값을 정규화합니다.
    • 모든 입력 값에 걸쳐 어휘를 생성하여 문자열을 정수로 변환합니다.
    • 관찰된 데이터 분포를 기반으로 부동 소수점 수를 버킷에 할당하여 부동 소수점 수를 정수로 변환합니다.
  • TensorFlow는 TFX를 통한 모델 학습에 사용됩니다. 학습 데이터 및 모델링 코드를 수집하며 저장된 모델 결과를 생성합니다. 또한 입력 데이터 사전 처리를 위해 TensorFlow Transform에서 생성한 특성 추출 파이프라인을 통합합니다.

  • TensorFlow Model Analysis(TFMA)는 TensorFlow 모델을 평가하기 위한 라이브러리입니다. TFMA는 TensorFlow와 함께 사용되어 EvalSavedModel을 생성하며, EvalSavedModel은 분석의 기초가 됩니다. TFMA를 통해 사용자는 트레이너에 정의된 것과 동일한 측정항목을 사용하여 분산된 방식으로 대량의 데이터에서 모델을 평가할 수 있습니다. 이러한 측정항목은 다양한 데이터 슬라이스에 걸쳐 계산되어 Jupyter 메모장에서 시각화될 수 있습니다.

  • TensorFlow Metadata(TFMD)는 TensorFlow를 사용하여 머신러닝 모델을 학습시킬 때 유용한 메타데이터의 표준 표현을 제공합니다. 메타데이터는 입력 데이터 분석 중에 수동으로 또는 자동으로 생성될 수 있으며, 데이터 유효성 검사, 탐색 분석 및 변환에 사용될 수 있습니다. 메타데이터 직렬화 형식에는 다음이 포함됩니다.

    • 테이블 형식 데이터를 설명하는 스키마(예: tf.Examples)
    • 이러한 데이터세트에 걸친 요약 통계 컬렉션
  • ML Metadata(MLMD)는 ML 개발자 및 데이터 과학자 워크플로와 관련된 메타데이터를 기록하고 검색하기 위한 라이브러리입니다. 대체로 메타데이터는 TFMD 표현을 사용합니다. MLMD는 SQL-Lite, MySQL 및 기타 유사한 데이터 저장소를 사용하여 지속성을 관리합니다.

지원 기술

필수

  • Apache Beam은 일괄 및 스트리밍 데이터 병렬 처리 파이프라인을 모두 정의할 수 있는 오픈소스 통합 모델입니다. TFX는 Apache Beam을 사용하여 데이터 병렬 파이프라인을 구현합니다. 그러면 파이프라인은 Beam에서 지원하는 분산 처리 백엔드 중 하나에 의해 실행되며, 이러한 백엔드에는 Apache Flink, Apache Spark, Google Cloud Dataflow 등이 포함됩니다.

선택

Apache Airflow 및 Kubeflow와 같은 조정자 도구를 사용하면 ML 파이프라인을 더욱 쉽게 구성, 운영, 모니터링 및 유지관리할 수 있습니다.

  • Apache Airflow는 워크플로를 프로그래매틱 방식으로 작성, 예약 및 모니터링하는 플랫폼입니다. TFX는 Airflow를 사용하여 워크플로를 작업 DAG(Directed Acyclic Graph)로 작성합니다. Airflow 스케줄러는 지정된 종속성을 따르는 동안 작업자 배열에서 작업을 실행합니다. 풍부한 명령줄 유틸리티를 통해 DAG의 복잡한 수술을 간편하게 실행할 수 있습니다. 풍부한 사용자 인터페이스를 사용하면 프로덕션에서 실행 중인 파이프라인을 쉽게 시각화하고 진행 상황을 모니터링하며 필요할 때 문제를 해결할 수 있습니다. 워크플로를 코드로 정의하면 유지 관리, 버전 관리, 테스트 및 공동작업이 가능해집니다.

  • Kubeflow는 Kubernetes에서 머신러닝(ML) 워크플로 배포를 간단하고 이식 가능하며 확장 가능하도록 지원하는 데 전념하고 있습니다. Kubeflow의 목표는 다른 서비스를 재현하는 것이 아니라 ML을 위한 최상의 오픈소스 시스템을 다양한 인프라에 배포할 수 있는 간단한 방법을 제공하는 것입니다. Kubeflow Pipelines를 사용하면 실험 및 메모장 기반 환경과 통합된, Kubeflow에서 재현 가능한 워크플로를 구성하고 실행할 수 있습니다. Kubernetes의 Kubeflow Pipelines 서비스에는 호스팅된 메타데이터 저장소, 컨테이너 기반 조정 엔진, 메모장 서버 및 UI가 포함되어 있어 사용자가 복잡한 ML 파이프라인을 대규모로 개발, 실행 및 관리할 수 있습니다. Kubeflow Pipelines SDK를 사용하면 프로그래매틱 방식으로 파이프라인의 구성요소 및 구성을 만들고 공유할 수 있습니다.

이식 가능성 및 상호운용성

TFX는 Apache Airflow, Apache BeamKubeflow를 포함한 여러 환경 및 조정 프레임워크로 이식할 수 있도록 설계되었습니다. 또한 온프레미스를 포함하는 다양한 컴퓨팅 플랫폼 및 Google Cloud Platform(GCP)과 같은 클라우드 플랫폼으로 이식할 수 있습니다. 특히, TFX는 학습 및 예측을 위한 Cloud AI Platform 및 여러 다른 ML 수명 주기 측면의 분산 데이터 처리를 위한 Cloud Dataflow와 같은 여러 관리형 GCP 서비스와 상호운용됩니다.

모델과 저장된 모델 비교

모델

모델은 학습 프로세스의 결과입니다. 학습 프로세스 과정에서 학습된 가중치의 직렬화된 기록입니다. 이러한 가중치는 나중에 새로운 입력 예시의 예측을 계산하는 데 사용될 수 있습니다. TFX 및 TensorFlow에서 '모델'은 해당하는 지점까지 학습된 가중치가 포함된 체크포인트를 나타냅니다.

또한 '모델'은 예측이 계산되는 방식을 표현하는 TensorFlow 계산 그래프(Python 파일)의 정의를 나타낼 수도 있습니다. 두 의미가 컨텍스트에 따라 서로 바뀌어 사용될 수 있습니다.

저장된 모델

  • 저장된 모델의 정의: TensorFlow 모델의 언어 중립적이며 복구 가능한 밀폐식 범용 직렬화입니다.
  • 중요한 이유: 상위 수준 시스템에서 단일 추상화를 사용하여 TensorFlow 모델을 생성, 변환 및 사용할 수 있게 합니다.

저장된 모델은 프로덕션에서 TensorFlow 모델을 제공하거나 기본 모바일 또는 자바스크립트 애플리케이션을 위해 학습된 모델을 내보내는 데 권장되는 직렬화 형식입니다. 예를 들어 예측을 위해 모델을 REST 서비스로 변환하려면 모델을 저장된 모델로 직렬화하고 TensorFlow Serving을 사용하여 모델을 제공하는 방법이 있습니다. 자세한 내용은 TensorFlow 모델 제공을 참조하세요.

스키마

일부 TFX 구성요소는 스키마라고 하는 입력 데이터의 설명을 사용합니다. 스키마는 schema.proto의 인스턴스입니다. 스키마는 프로토콜 버퍼의 한 유형인데, 'protobuf'으로 더 잘 알려져 있습니다. 스키마는 특성 값의 데이터 유형, 특성이 모든 예시에 있어야 하는지 여부, 허용되는 값의 범위 및 기타 속성을 지정할 수 있습니다. TensorFlow Data Validation(TFDV)을 사용하면 학습 데이터에서 유형, 카테고리 및 범위를 추론하여 자동으로 스키마를 생성할 수 있다는 이점이 있습니다.

다음은 스키마 protobuf에서 발췌한 내용입니다.

...
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
  }
}
...

다음 구성요소는 스키마를 사용합니다.

  • TensorFlow Data Validation
  • TensorFlow Transform

일반적인 TFX 파이프라인에서 TensorFlow Data Validation은 다른 구성요소에 의해 사용되는 스키마를 생성합니다.

TFX를 사용한 개발

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

데이터 탐색, 시각화 및 정리

데이터 탐색, 시각화 및 정리

TFX 파이프라인은 일반적으로 ExampleGen 구성요소로 시작하며 이 구성요소는 입력 데이터를 받아 tf.Examples로 형식을 지정합니다. 이러한 작업은 데이터가 학습 및 평가 데이터세트로 분할된 후에 이루어지는 경우가 많습니다. ExampleGen 구성요소가 학습 및 평가를 위해 하나씩, 총 2개 존재하도록 하기 위해서입니다. 일반적으로 이 다음에는 StatisticsGen 구성요소 및 SchemaGen 구성요소가 나오며 이러한 구성요소는 데이터를 검사하고 데이터 스키마 및 통계를 추론합니다. 스키마 및 통계는 ExampleValidator 구성요소에 의해 사용되며 이 구성요소는 데이터에서 이상치, 누락된 값 및 잘못된 데이터 유형을 찾습니다. 이러한 모든 구성요소는 TensorFlow Data Validation 라이브러리의 기능을 활용합니다.

TensorFlow Data Validation(TFDV)은 데이터세트의 초기 탐색 분석, 시각화 및 정리에 매우 유용한 도구입니다. TFDV는 데이터를 검사하고 데이터 유형, 카테고리 및 범위를 추론한 후 이상치 및 누락된 값을 자동으로 식별할 수 있습니다. 또한 데이터세트를 검사하고 이해하는 데 도움이 되는 시각화 도구도 제공합니다. 파이프라인이 완료되면 MLMD에서 메타데이터를 읽고 Jupyter 메모장의 TFDV 시각화 도구를 사용하여 데이터를 분석할 수 있습니다.

초기 모델 학습 및 배포 이후에 TFDV를 사용하여 추론 요청에서 배포된 모델에 이르기까지 새 데이터를 모니터링하고 이상치 또는 드리프트를 찾을 수 있습니다. 이 기능은 트렌드 또는 계절성으로 인해 시간이 지남에 따라 변하는 시계열 데이터에 특히 유용하며, 데이터 문제가 있거나 새 데이터로 모델을 다시 교육해야 할 때를 알아내는 데 도움이 됩니다.

데이터 시각화

TFDV(일반적으로 StatisticsGen, SchemaGen 및 ExampleValidator)를 사용하는 파이프라인 섹션을 통해 데이터의 첫 번째 실행을 완료한 이후 Jupyter 스타일 메모장에서 결과를 시각화할 수 있습니다. 추가 실행에서는 데이터가 모델 및 애플리케이션에 최적화될 때까지 조정하면서 이러한 결과를 비교할 수 있습니다.

먼저 ML Metadata(MLMD)를 쿼리하여 이러한 구성요소의 실행 결과를 찾은 후 TFDV의 시각화 지원 API를 사용하여 메모장에서 시각화를 생성합니다. 여기에는 tfdv.load_statistics()tfdv.visualize_statistics()가 포함됩니다. 이 시각화를 사용하면 데이터세트의 특성을 더 잘 이해하고 필요에 따라 수정할 수 있습니다.

모델 개발 및 학습

특성 추출

일반적인 TFX 파이프라인에는 TensorFlow Transform(TFT) 라이브러리의 기능을 활용하여 특성 추출을 수행하는 Transform 구성요소가 포함됩니다. Transform 구성요소는 SchemaGen 구성요소에 의해 생성된 스키마를 사용하고 데이터 변환을 적용하여 모델 학습에 사용될 특성을 생성, 결합 및 변환합니다. 또한 누락된 값의 정리 및 유형 변환이 추론 요청을 위해 전송된 데이터에도 존재할 가능성이 있다면 이러한 정리 및 변환을 Transform 구성요소에서도 완료해야 합니다. TFX의 학습을 위해 TensorFlow 코드를 설계할 때 고려해야 할 몇 가지 중요한 사항이 있습니다.

모델링 및 학습

Transform 구성요소의 결과는 Trainer 구성요소 중에 TensorFlow의 모델링 코드에서 가져와 사용할 저장된 모델입니다. 동일한 변환이 학습 및 추론 중에 모두 정확히 동일한 코드를 사용하여 실행되도록 하기 위해, 이 저장된 모델에는 Transform 구성요소에서 생성된 모든 데이터 엔지니어링 변환이 포함되어 있습니다. Transform 구성요소의 저장된 모델을 비롯한 모델링 코드를 이용하면 학습 및 평가 데이터를 사용하고 모델을 학습시킬 수 있습니다.

모델링 코드의 마지막 섹션 중에 모델을 저장된 모델과 EvalSavedModel 둘 다로 저장해야 합니다. EvalSavedModel로 저장하려면 Trainer 구성요소에 TensorFlow Model Analysis(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)

모델 성능 분석 및 이해

모델 분석

초기 모델 개발 및 학습 이후에는 모델의 성능을 분석하고 실제로 이해하는 것이 중요합니다. 일반적인 TFX 파이프라인에는 TensorFlow Model Analysis(TFMA) 라이브러리의 기능을 활용하는 Evaluator 구성요소가 포함되며 TFMA 라이브러리는 이 개발 단계를 위한 강력한 도구 세트를 제공합니다. Evaluator 구성요소는 앞서 내보낸 EvalSavedModel을 사용하며, 모델의 성능을 시각화하고 분석할 때 사용할 수 있는 SliceSpecs 목록을 지정할 수 있게 합니다. 각 SliceSpec은 범주형 특성의 특정 카테고리 또는 숫자 특성의 특정 범위와 같이 검사하려는 학습 데이터의 슬라이스를 정의합니다.

예를 들어 이 SliceSpec은 연간 구매, 지리적 데이터, 연령대 또는 성별로 분류할 수 있는 다양한 고객 세그먼트를 대상으로 모델의 성능을 이해하려는 경우에 중요합니다. 이는 롱테일을 포함하고 있는 데이터세트, 즉 중요하지만 크기가 작은 그룹이 허용할 수 없는 수준의 성능을 보이는데도 불구하고 주요 그룹의 성능으로 이런 사실을 알 수 없게 되는 데이터세트의 경우에 특히 중요합니다. 예를 들어, 모델이 일반 직원을 대상으로는 좋은 성능을 보일 수 있지만 임원을 대상으로는 형편없는 결과를 낼 수도 있으므로 이러한 점을 염두에 두어야 합니다.

모델 분석 및 시각화

모델을 학습시키고 학습 결과에서 (TFMA를 활용하는) Evaluator 구성요소를 실행하여 데이터의 첫 번째 실행을 완료한 이후 Jupyter 스타일 메모장에서 결과를 시각화할 수 있습니다. 추가 실행에서는 결과가 모델 및 애플리케이션에 최적화될 때까지 조정하면서 이러한 결과를 비교할 수 있습니다.

먼저 ML Metadata(MLMD)를 쿼리하여 이러한 구성요소의 실행 결과를 찾은 후 TFMA의 시각화 지원 API를 사용하여 메모장에서 시각화를 생성합니다. 여기에는 tfma.load_eval_results()tfma.view.render_slicing_metrics()가 포함됩니다. 이 시각화를 사용하면 모델의 특성을 더 잘 이해하고 필요에 따라 수정할 수 있습니다.

배포 대상

만족스러운 모델을 개발하고 학습시켰다면 이제 추론 요청을 받을 하나 이상의 배포 대상에 모델을 배포할 차례입니다. TFX는 세 가지 클래스 배포 대상으로의 배포를 지원합니다. 저장된 모델로 내보낸 학습된 모델을 이러한 배포 대상 중 일부 또는 전체에 배포할 수 있습니다.

구성요소 흐름

추론: TensorFlow Serving

TensorFlow Serving(TFS)은 프로덕션 환경을 위해 설계된 머신러닝 모델을 위한 유연한 고성능 제공 시스템입니다. TFS는 저장된 모델을 사용하며 REST 또는 gRPC 인터페이스를 통한 추론 요청을 수락합니다. 또한 하나 이상의 네트워크 서버에서 일련의 프로세스로 실행되며 여러 고급 아키텍처 중 하나를 사용하여 동기화 및 분산 계산을 처리합니다. TFS 솔루션 개발 및 배포에 관한 자세한 내용은 TFS 문서를 참조하세요.

일반적인 파이프라인에서 Pusher 구성요소는 Trainer 구성요소에서 학습시킨 저장된 모델을 사용하고 이러한 모델을 TFS 인프라에 배포합니다. 여기에는 여러 버전 및 모델 업데이트의 처리가 포함됩니다.

기본 모바일 및 IoT 애플리케이션의 추론: TensorFlow Lite

TensorFlow Lite는 개발자가 기본 모바일 및 IoT 애플리케이션에서 학습된 TensorFlow 모델을 사용할 수 있도록 도와주는 전용 도구 모음입니다. TensorFlow Lite는 TensorFlow Serving과 동일한 저장된 모델을 사용하며 양자화 및 프루닝과 같은 최적화를 적용하여 휴대기기 및 IoT 기기에서 실행하는 문제와 관련된 결과 모델의 크기 및 성능을 최적화합니다. TensorFlow Lite 사용에 관한 자세한 내용은 TensorFlow Lite 문서를 참조하세요.

자바스크립트의 추론: TensorFlow JS

TensorFlow JS는 브라우저 및 Node.js에서 ML 모델을 학습시키고 배포하기 위한 자바스크립트 라이브러리입니다. TensorFlow JS는 TensorFlow Serving 및 TensorFlow Lite와 동일한 저장된 모델을 사용하며, 저장된 모델을 TensorFlow.js 웹 형식으로 변환합니다. TensorFlow JS 사용에 관한 자세한 내용은 TensorFlow JS 문서를 참조하세요.

Airflow를 사용하여 TFX 파이프라인 생성

자세한 내용은 Airflow 워크숍을 확인하세요.

Kubeflow를 사용하여 TFX 파이프라인 생성

설정

Kubeflow에서 파이프라인을 대규모로 실행하려면 Kubernetes 클러스터가 필요합니다. Kubeflow 클러스터를 배포하기 위한 옵션을 안내하는 Kubeflow 배포 가이드라인을 참조하세요.

TFX 파이프라인 구성 및 실행

Kubeflow에서 TFX 예시 파이프라인을 실행하려면 Cloud AI Platform 파이프라인의 TFX 튜토리얼을 따르세요. Kubeflow 파이프라인을 구성하기 위해 TFX 구성요소가 컨테이너화되었으며 샘플은 대규모 공개 데이터세트를 읽고 클라우드에서 대규모로 학습 및 데이터 처리 단계를 실행하도록 파이프라인을 구성하는 기능을 보여줍니다.

파이프라인 작업을 위한 명령줄 인터페이스

TFX는 Apache Airflow, Apache Beam 및 Kubeflow를 포함하는 다양한 조정자 도구에서 파이프라인 생성, 업데이트, 실행, 나열 및 삭제와 같은 전체 파이프라인 작업을 실행하는 데 도움이 되는 통합 CLI를 제공합니다. 자세한 내용은 이 안내를 따르세요.