도커와 쿠버네티스를 처음 사용해본다. 근데 몇 백 달러의 비용을 지불하거나(원래 클라우드 서비스가 블랙홀 같아서..) 직접 하드웨어를 구입해서 설치하는 것은 무리이다. 이에 쿠버네티스 서비스를 조그맣게(?) 내 노트북에 설치해서 이용해 볼 수 있도록 한 오픈소스 서비스들이 있다. 그 중 minikube를 통해서 기본적인 리소스 생성 등에 대해서 알아 볼 것이다. 그 전에 먼저 쿠버네티스의 몇 가지 특징에 대해서 알아보자. 선언형 인터페이스 쿠버네티스는 선언형 인터페이스를 선호한다. 말이 교과서적이라 맘에 안들지만, 쉽게 얘기하면 결과론적으로 'A와 같은 상태로 만들어줘'라고 선언하는 것을 kubenetes-native하다고 한다. 'A같은 상태가 되기 위해서 중간에 과정은 B, C를 거치고, D라는 예외..
Build once, Run anywhere. 도커 이미지는 패키지나 라이브러리 보다 더 상위(?)의 개념이다. 어떤 어플리케이션을 개발하는 데 필요한 환경(버전, 라이브러리 등)을 통째로 패키징한 데이터다. 따라서 받으면 누구나 어디서나 같은 결과가 나오는 것을 지향한다. 내가 만든 머신러닝 어플리케이션 코드를 도커 이미지로 만들고, 남들과 공유하는 방법에 대해서 알아보자. Dockerfile Dockerfile 기본 명령어는 아래와 같다. 명령어 기능 FROM base image로 어떤 이미지를 사용할 것인지를 명시 COPY 파일 혹은 디렉토리를 복사하는 명령어 RUN 도커 컨테이너에서 명령을 실행시키는 명령어 CMD 컨테이너가 시작될 때 실행하도록 하는 명령어, RUN과 다르게 하나의 도커 이미지에..
TFX Trainer TFX Trainer 컴포넌트는 파이프라인의 학습 단계를 처리한다. 이 컴포넌트의 주요 프로세스에 대해서 정리하면 아래와 같다. run_fn() 함수를 찾아서 학습 프로세스를 실행하는 진입점으로 사용한다. run_fn() 함수는 input_fn() 함수를 찾아 사용할 데이터 로딩을 일괄적으로 수행한다. 이 함수는 transform 단계에서 생성한 압축되고 전처리된 데이터셋을 로드할 수 있다. get_model()을 사용하여 컴파일된 케라스 모델을 가져온다. fit함수로 학습한다. 학습된 모델을 SavedModel 형식으로 저장하고 내보낸다. 예제 프로젝트의 run_fn() 함수 코드는 아래와 같다. def run_fn(fn_args): tf_transform_output = tft...
머신러닝 모델이 학습을 하려면, 학습할 수 있는 포맷의 데이터를 제공해야 한다(e.g. 카테고리 값들을 수치화). 일관된 전처리는 머신러닝 파이프라인에서 매우 중요한 요소이며, TFX 컴포넌트에서는 어떻게 제공 되는지 알아보자. TFT(Tensorflow Transform) TFT를 사용하면 전처리 단계를 텐서플로 그래프로 구성할 수 있다. TFT를 통해서 전처리를 표준화 해야하는 이유는 크게 3가지이다. 전체 데이터셋의 context에서 효율적으로 전처리 : TFT는 백그라운드에서 데이터를 통과하는 path를 관리하는 피처를 제공한다. 전처리 단계를 효과적으로 확장 : TFT는 내부적으로 아파치 빔을 사용하여 전처리 알고리즘을 실행하기에, 빔 백엔드에서 전처리를 배포할 수 있다. 잠재적인 학습-서빙 왜..
Garbage in, Garbage Out 머신러닝을 경험한 사람이라면 지겹도록 들은 말일 것이다(대부분은 Garbage가 안들어가도 Garbage Out되지만). 데이터를 선별하고 검증하지 않으면 모델이 제대로 학습하지 못한다. 데이터 검증은 파이프라인의 데이터가 피처 엔지니어링 단계에서 기대하는 데이터인지 확인하는 작업이다. 아래와 같은 작업들이 데이터 검증이라고 할 수 있다. 여러 데이터셋을 비교 시간이 지나 업데이트되면서 데이터가 변경될 때도 표시 이상치를 확인하거나 스키마(schema)의 변경 확인 새 데이터셋과 이전 데이터셋의 통계가 일치하는지도 확인 TFDV(Tensorflow Data Validation)를 통한 데이터 검증 TFX가 제공하는 패키지인 TFDV을 통하여 데이터를 검증해보자...
TFX로 파일이나 서비스에서 데이터를 수집하는 컴포넌트를 실행할 수 있다. 데이터를 split하고, 여러 데이터를 결합하고, 다양한 형태의 데이터를 수집하는 전략들을 알아보자. 데이터를 컴포넌트로 전달하기 전에 다음의 절차를 따른다. 데이터를 데이터셋(train, valid)로 split TFRecord 파일로 변환 TFRecord는 데이터셋 스트리밍에 최적화된 형식이다. TFRecord는 대량의 데이터를 빠르게 다운로드하거나 write할 때 쓰는데 최적화 되어있고, 모든 TFX 컴포넌트에서 사용한다. TFRecord로 변환, 혹은 기존의 TFRecord 가져오기 tfx.components의 CsvExampleGen 패키지를 통해서 기존의 .csv 파일을 tf.Example로 변환할 수 있다. impor..
(포스팅의 모든 내용은 Hannes Hapke, Catherine Nelson 의 저서인 Building Machine Learning Pipelines(O’Reilly, 2020)를 직접 읽고 작성한 후기 및 정리글입니다.) TFX(Tensorflow Extended) TFX(Tensorflow Extended) 라이브러리는 ML 파이프라인에 필요한 모든 구성 요소를 제공한다. 파이프라인 업무 간의 취약한 연결(Glue code)은 고장을 일으키고, 자주 업데이트하기 어렵다. 구글이 이를 해결하기 위해서 코드의 양을 최소화하는 플랫폼을 개발하기로 결정했는데, 그게 바로 TFX이다. TFX는 아래와 같이 다양한 파이프라인 컴포넌트를 제공한다. 설치는 일반 라이브러리 설치하듯 pip로 설치하면 된다. $p..
- Total
- Today
- Yesterday
- deeplearning
- container
- docker
- PM
- nlp
- productowner
- mlpipeline
- 자연어처리
- 머신러닝파이프라인
- ML
- Oreilly
- 도커
- Tennis
- productmanager
- dl
- Kubernetes
- MLOps
- productresearch
- 스타트업
- PO
- 파이프라인
- DDUX
- 딥러닝
- 인공지능
- torch
- pmpo
- 쿠버네티스
- Bert
- 전처리
- 머신러닝
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |