TFX

    [TFX 스터디] 4. Transform cont.

    저번에 실패했던 preprocess_fn에 tokenizer 넣기에 성공했다. 막상해보니 간단한 일에 시간을 많이 소비했다는 생각이 들었다. 저번 스터디에서 발생했던 에러는 다음과 같다. TypeError: Expected Tensor, SparseTensor, RaggedTensor or Operation got {'input_ids': , 'attention_mask': } of type 처음에는 해당 에러가 어디서 발생했는지 알 수 없었다. 하지만 Huggingface의 Transformers를 써봤다면 익숙한 이름이 보일 것이다. {'input_ids': , 'attention_mask': } 이는 Tokenizer가 문장을 토큰화한 결과를 내보낼때의 형식이다. input_ids에는 토큰화와 정수..

    [TFX 스터디] 3. Transform

    이번에는 Transform Component를 건드려보았다. Transform에서는 ExampleGen에서 Example을 가져와 Hugging Face Transformers의 Tokenizer를 통해 토크나이징을 하고자 한다. 먼저 preprocessing_fn() 함수를 정의한 transform.py를 만든다. import tensorflow as tf import tfx.v1 as tfx from transformers import AutoTokenizer MODEL_NAME = "beomi/KoAlpaca-llama-1-7b" TEXT_FEATURES = { 'en': None, 'ko': None, } tokenizer = AutoTokenizer.from_pret..

    [TFX 스터디] 2. Interactive Notebook

    사실 ExampleGen을 만들때부터 Jupyter를 통해 TFX의 Interactive Notebook 기능을 사용하려 했다. Interactive Notebook이란 Notebook 환경에서 Component를 직접 실행하고 이에 대한 중간 결과를 볼 수 있는 기능을 말한다. Interactive Notebook을 사용하면 각 단계별로 데이터가 어떻게 처리되는지를 디버깅하면서 짤 수 있기 때문에 이번 프로젝트에서 사용하고자 했다. 그런데 저번 주차에 사용하지 않았는데, 그 이유가 Jupyter Notebook를 실행하는데 문제가 발생했다. 처음에는 Jupyter Notebook 서버가 열리지 않아 Jupyter를 재설치하고 서버를 켰다. 그런데 이번에는 노트북에서 ipykernel 버전이 맞지 않아 ..

    [TFX 스터디] 1. ExampleGen 컴포넌트 추가하기

    사용할 데이터셋 준비하기 데이터셋은 AI Hub의 일상생활 및 구어체 한-영 번역 병렬 말뭉치 데이터를 사용했다. 꽤 많은 양의 데이터를 무료로 얻을 수 있다는 점은 매우 좋았지만, 한가지 문제점이 있었다. TFX가 기본적으로 지원하는 파일 타입에 JSON이 없다. 다행이도 JSON 파일을 읽고 tf.Example로 변환하는 ExampleGen을 편하게 만들 수 있다. # pipelines/pipeline.py import tfx.v1 as tfx from tfx.components.example_gen.component import FileBasedExampleGen from tfx.dsl.components.base import executor_spec from pipelines.custom_exec..

    [TFX 스터디] 0. TFX를 활용하는 프로젝트 시작

    현재 TFX 스터디에서 '살아 움직이는 머신러닝 파이프라인' 책을 마치고 새로 TFX 프로젝트를 시작해 직접 머신러닝 프로젝트를 만들면서 TFX를 배우기로 했다. 아무래로 책에 나온 코드가 현재 버전과 달라진 점이 있다보니 TFX를 직접 써보면서 배우는 쪽으로 결정했다. Machine Translator with TFX 그래서 이번에 필자가 결정한 개인 프로젝트는 기계 번역을 지속적으로 학습하고 개선하는 머신러닝 파이프라인 시스템을 만들어볼 것이다. 머신러닝 파이프라인 내에서 학습한 한국어-영어 번역 모델을 Tensorflow Serving으로 배포할 것이다. 사용자는 Gradio를 통해 모델에게 번역을 요청하고 받아볼 수 있으며, 번역 결과에 대해 피드백을 전달할 수 있도록 만들 것이다. 사용한 모델은..

    [살아 움직이는 머신러닝 파이프라인 설계] 2. TFX - 텐서플로 익스텐디드

    TensorFlow eXtended (TFX) 파이프라인을 직접 작성하면 가장 문제가 많이 발생하는 부분이 글루 코드다. 글루 코드란 파이프라인 각 단계를 연결하는 코드를 말한다. 머신러닝 프로젝트에서 데이터 수집부터 모델 배포까지 각 단계를 거쳐야 하는데, 어느 단계에서 코드를 수정한다면 이를 파이프라인에 적용할 때 정상적으로 작동되는지 확인해야 한다. 만약에 각 단계마다 의존성이 심하면 버그를 해결하기 위해 다른 단계도 손봐야 할 수 있다. 이러한 일이 계속 발생한다면 머신러닝 파이프라인은 유지보수되기 어렵다. 구글에서도 이러한 문제를 계속 겪어왔다. 그래서 이러한 일을 해결하기 위해 Tensorflow Extended를 만들었다. TFX로 파이프라인의 정의를 단순화하고 기본적으로 필요한 코드의 양을..