전체 글115 TFT를 머신러닝 파이프라인에 통합하기 TFT를 머신러닝 파이프라인에 통합하기앞선 데이터 검증 단계에서 우리는 데이터셋의 피처 별 타입 및 분포부터 문자열 표현과 벡터형 표현까지 피처의 특성을 파악했다. 이는 전처리 단계에서 feature engineering을 정의하는 데에 중요하다. 다음 코드에서는 피처를 정의한다. 간편한 처리를 위해 원-핫 인코딩 피처, 버킷 처리 피처, 원시 문자열 표현 세 그룹으로 그룹화하였다.import tensorflow as tfimport tensorflow_transform as tftLABEL_KEY = 'consumer_disputed'# 'feature_name':feature_dimensionONE_HOT_FEATURES = { 'product':11, 'sub+product':45, .. MLOps 2022. 1. 8. TFT 독립 실행형으로 실행하기 TFT 독립 실행형으로 실행하기변환 함수를 실행하는 방법에는 두 가지가 있다. 머신러닝 파이프라인의 일부로서 TFX 컴포넌트 형태로 전처리 변환을 실행하는 것과 독립 실행형으로 실행하는 것이 그것이다. 두 방법 모두 로컬 아파치 빔 설정 또는 구글 클라우드 데이터플로 서비스에서 수행할 수 있다. 기본적으로는 TFT를 머신러닝 파이프라인의 일부로 통합하여 사용하는 것이 일반적이나, 파이프라인이 아닌 외부에서 데이터를 처리해야 할 경우 독립 실행형을 채택하는 것이 효율적이다. 간단한 소규모 샘플 데이터셋에 정규화 처리를 적용하는 예제를 수행해보자.# small data sampleraw_data = [ {'x': 1.20}, {'x': 2.99}, .. MLOps 2022. 1. 6. TFT를 이용한 데이터 전처리 TFT를 이용한 데이터 전처리TFT는 텐서플로우 생태계 내에서 데이터를 전처리하는 라이브러리로, TFDV와 마찬가지로 TFX의 일부이다. TFT는 이전에 생성한 데이터셋 스키마를 사용하여 파이프라인에 수집된 데이터를 처리하고 다음 두 가지 아티팩트를 출력한다.TFRecord 형식의 전처리된 데이터셋:파이프라인의 Trainer 컴포넌트에서 사용전처리 그래프 (에셋 파일 포함):머신러닝 모델을 내보낼 때 사용TFT의 핵심 함수는 preprocessing_fn()으로, 원시 데이터에 적용할 모든 변환을 정의할 수 있다. Transform 컴포넌트를 실행하면 preprocessing_fn은 Tensor 혹은 SparseTensor 형태의 원시 데이터를 받아, 정의된 변환을 적용 후(이때 적용되는 변환은 모두 텐.. MLOps 2022. 1. 5. 데이터 전처리 데이터 전처리외부로부터 수집되는 데이터는 일반적으로 머신러닝 모델이 사용할 수 없는 형식인 경우가 많다. 따라서, 데이터를 모델이 사용할 수 있는 형태로 처리하는 과정이 필요한데, 이를 데이터 전처리라고 한다. 데이터는 일관적인 전처리 과정을 통해 처리되는 것이 일반적이며, 이를 위해 보통 데이터 검증 이후 전처리 과정이 수행된다. TFX는 데이터 전처리를 위한 컴포넌트인 TensorFlow Transform(TFT)을 지원한다. 이를 이용하면 전처리 단계를 텐서플로우 그래프의 형태로 구성할 수 있다. 다만 이러한 방식은 다소 오버헤드가 발생할 수 있기 때문에 실험단계에서의 사용은 권장하지 않는다.데이터 전처리 통합의 필요성TFT는 데이터 전처리 단계를 텐서플로우로 구현해야 한다는 점에서 TFX 컴포넌.. MLOps 2022. 1. 4. 머신러닝 파이프라인에 TFDV 통합하기 머신러닝 파이프라인에 TFDV 통합하기TFX는 StatisticsGen이라는 파이프라인 컴포넌트를 제공한다. 이는 이전 ExampleGen 컴포넌트의 출력을 입력으로 받아 통계를 생성한다.from tfx.components import StatisticsGenfrom tfx.orchestration.experimental.interactive.interactive_context import InteractiveContextcontext = InteractiveContext()statistics_gen = StatisticsGen(examples=example_gen.outputs['example'])context.run(statistics_gen) InteractiveContext를 이용해 다음과 같이 .. MLOps 2022. 1. 3. GCP를 사용한 대용량 데이터셋 처리 GCP를 사용한 대용량 데이터셋 처리데이터 수집량이 많아질수록 데이터 검증 단계에서 소요되는 시간은 더 커진다. 이때, 노드에의 병렬 배포를 수행하는 클라우드 솔루션을 활용하면 이러한 소요시간을 단축시킬 수 있다. TFDV는 아파치 빔에서 실행되기 때문에 구글 클라우드 데이터플로로의 전환이 쉽다. 구글 클라우드 데이터플로(Dataflow)에서 TFDV를 실행하는 방법을 알아보자.Google Cloud 서비스 계정 생성로컬 머신 또는 Cloud Shell에서 Cloud SDK를 사용하여 다음 명령어를 실행하여 서비스 계정을 만들고 권한을 부여한 후 키 파일을 JSON 형태로 받을 수 있다. 1. 서비스 계정 생성SERVICE_ACCOUNT_NAME에 설정하고자 하는 서비스 계정명을 입력한다.gcloud .. MLOps 2022. 1. 2. 데이터 인식 데이터 인식데이터의 요약과 통계는 데이터 자체의 특성을 잘 드러내기는 하나, 잠재적인 문제를 발견하기에는 다소 부족한 면이 있다. TFDV가 어떻게 데이터에서 잠재적인 문제를 발견하고 어떤 도움을 줄 수 있는지 알아보도록 하자.데이터셋 비교머신러닝의 데이터셋에는 훈련 세트와 검증 세트가 있다. 검증 데이터는 학습 데이터로 학습된 모델이 제대로 학습되었는지를 검증하는 역할을 하기 때문에, 둘의 대표성이 동등해야 한다. 검증 데이터의 스키마가 학습 데이터와 같은지, feature의 열 또는 값이 유의미한 수준으로 누락되었는지 등을 살펴보고 이를 처리할 수 있는 방법이 필요하다. TFDV는 이러한 질문에 빠르게 답을 줄 수 있다. 다음과 같은 방식을 이용해 두 데이터셋을 불러와 통계를 비교해보자.train_s.. MLOps 2021. 12. 31. 데이터 검증 데이터 검증데이터는 모든 머신러닝 모델의 기본이다. 또한 모델의 유용성과 성능은 학습, 검증, 테스트에 사용되는 데이터의 질과 밀접한 연관이 있다. 머신러닝계에서 자주 언급되는 원칙인 GIGO(Garbage in, Garbage Out)는 이러한 특성을 잘 설명한다. 이처럼 데이터의 수집과 모델 학습 사이 제대로 된 데이터 검증은 필수적이다. 이번 게시글에서는 데이터 검증의 필요성과 그 아이디어를 짚어본 후 TFX에서 제공하는 TFDV(TensorFlow Data Validation)에 대해 알아보도록 하겠다. 데이터 검증 단계는 파이프라인의 데이터가 feature engineering 단계에서 기대하는 데이터인지 확인하는 단계이다. 데이터의 형태 및 feature는 물론 통계적인 특성 또한 점검함으로.. MLOps 2021. 12. 27. 데이터 준비 데이터 준비ExampleGen 컴포넌트를 이용하여 데이터셋의 입력 설정(input_config)과 출력 설정(output_config)을 구성할 수 있다. 이외에도 데이터셋을 점진적으로 수집하는 스패닝(spanning)과 데이터셋 분할 방법 또한 정의할 수 있다.1) 데이터셋 분할머신러닝 파이프라인의 후반부에는 모델을 학습시키고 이를 검증시키는 단계가 포함되어 있다. 이를 위해서는 데이터셋을 이에 필요한 하위 집합(학습 세트, 검증 세트 등)으로 분할을 해두는 것이 좋다. 단일 데이터셋을 하위 집합으로 분할다음 코드는 데이터 수집 단계에서 데이터셋을 학습, 검증, 테스트 세트로 나누는 방법을 보여준다. 여기서 각 세트 별 비율 hash_buckets로 정의한다.import osfrom tfx.orches.. MLOps 2021. 12. 21. 데이터 수집 데이터 수집 TFX를 이용한 머신러닝 파이프라인에서는 기본 TFX 설정과 ML 메타데이터스토어를 사용하여 다양한 컴포넌트에서 활용할 수 있는 데이터셋을 수집할 수 있다. TFX는 파일이나 서비스로부터 데이터를 수집하는 컴포넌트를 제공한다. 이는 수집뿐만 아니라 학습 데이터와 검증 데이터로의 분할, 그리고 추출된 데이터를 하나의 데이터셋으로 결합하는 작업까지의 프로세스를 모두 수행한다.TFRecord & ExampleGenTFRecord는 대용량 데이터셋 스트리밍에 최적화된 경량화 포맷이다. TFRecord는 직렬화된 프로토콜 버퍼를 포함하여 거의 모든 바이너리 데이터의 저장을 지원한다.import tensorflow as tfwith tf.io.TFRecordWriter('test.tfrecord') .. MLOps 2021. 12. 19. 아파치 빔 아파치 빔다양한 TFX 컴포넌트와 라이브러리는 아파치 빔을 사용하여 파이프라인 데이터를 효율적으로 처리한다. 아파치 빔을 파이프라인 오케스트레이션 툴로 사용하는 방법은 추후 자세히 알아보도록 하고, 여기서는 TFX 컴포넌트에서 아파치 빔이 어떻게 작동하는지 알아보도록 하겠다. 아파치 빔(Apache Beam)은 2016년 오픈소스 형태로 공개된 unified programming model로, ETL, 배치 프로세스, 스트리밍 작업을 포함하여 다양한 데이터 처리 파이프라인을 정의하고 실행하기 위한 프로그램이다. TFX는 아파치 빔에 의존하며, 다양한 컴포넌트 내에서 이를 사용하고 있다.설치아파치 빔은 다음 명령어로 설치할 수 있다.pip install apache-beampip install 'apach.. MLOps 2021. 12. 15. 대화형 파이프라인 대화형 파이프라인머신러닝 파이프라인 전체를 설계하고 구현하는 일은 다소 어려운 일 중 하나이다. 한 번에 에러 없이 잘 동작하는 파이프라인을 구축하는 것은 프로젝트가 거대해질 경우 거의 불가능에 가깝고, 컴포넌트를 디버깅하는 일조차 일체형 파이프라인에서는 쉽지 않다. 이러한 문제를 해결하기 위해 TFX는 대화형 파이프라인 기능을 도입하였다. 대화형 파이프라인은 단계별 구현이 가능하며 구성 요소의 아티팩트를 즉시 검토할 수 있다는 장점이 있다. 각 단계의 구현과 디버깅이 완료된 후에는 아파치 에어플로에서 실행할 수 있도록 대화형 파이프라인을 실제 프로덕트 레벨의 파이프라인으로 변환하는 과정을 거치면 전체 파이프라인의 성공적인 구축이 완료된다고 할 수 있다.실습모든 대화형 파이프라인은 주피터 노트북이나 코랩.. MLOps 2021. 12. 13. 이전 1 ··· 5 6 7 8 9 10 다음