MLOps

    [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 스터디] 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..

    [살아 움직이는 머신러닝 파이프라인 설계] 4. 데이터 검증

    데이터 검증 데이터 검증 단계에서는 수집한 데이터에 이상이 없는지 확인한다. 데이터셋에 이상치가 있거나 이전 데이터셋과 데이터의 구조가 달라졌거나 통계치가 불일치하는지를 검사해 새로 수집한 데이터셋을 사용할지 말지를 결정한다. 데이터 검증의 필요성 컴퓨터 공학에서 유명한 말 중의 하나가 GIGO(Garbage In, Garbage Out)이라는 말이 있는데, 이 뜻은 입력이 나쁘면 결과값도 나쁘다는 의미다. 이는 머신러닝 프로젝트에서는 특히 강조된다. 수집한 데이터셋의 품질이 좋지 못하면 학습한 모델의 예측 결과를 정확도가 낮거나 심지어 학습이 되지 않을 수 있다. 그렇기 때문에 머신러닝 파이프라인을 통과할 데이터를 검증하는 일은 다른 과정들 중에서도 특히 조심해야 한다. 또한 지속적으로 데이터를 수집하..

    [살아 움직이는 머신러닝 파이프라인 설계] 3. 데이터 수집

    데이터 수집 데이터 수집이란 외부나 내부 파일에서 학습할 데이터를 모으는 단계다. 다양한 곳에서 데이터를 수집해 이를 데이터가 tf.train.Example로 표현된 TFRecord 파일 형식으로 변환한다. tf.train.Example은 한 데이터의 특성(feature)값이 저장된 배열 텐서를 말한다. 일종의 텐서이므로 텐서 플로우로 만들어진 모델이 학습하거나 예측할 수 있다. ExampleGen ExampleGen은 이 데이터 수집 단계를 책임지는 TFX 컴포넌트다. 데이터 수집부터 데이터셋 분할, 데이터셋 스패닝까지 처리할 수 있다. 데이터 수집 데이터는 꽤 다양한 곳에서 수집할 수 있다. 내부 파일을 직접 다운로드한 다음 이를 파이프라인으로 가져오는 방식부터 클라우드 스토리지나 데이터베이스에서 네..

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

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

    [살아 움직이는 머신러닝 파이프라인 설계] 1. 머신러닝 파이프라인

    오늘부터 TFX 스터디에 참여하면서 '살아 움직이는 머신러닝 파이프라인 설계'의 내용을 글로 정리하게 되었습니다. 책의 내용을 정리할 때 코드 부분을 생략하니 참고 바랍니다. 머신러닝 파이프라인이란 머신러닝 파이프라인이란 '머신러닝 생애주기를 표준화 및 자동화하는 방법'이다. 소프트웨어 공학이 '고품질의 소프트웨어를 개발하고 유지보수하도록 생애주기를 체계화하고 자동화'하기 위해 존재하듯, 머신러닝 파이프라인도 머신러닝 프로젝트에서 발생할 수 있는 여러 기술부채를 줄이기 위해 머신러닝 생애주기를 체계화 및 자동화한 것이다. 머신러닝 파이프라인의 필요성 머신러닝 파이프라인을 도입하게 되면 위에서 언급했듯이 머신러닝 프로젝트에서 생길 수 있는 기술부채를 줄일 수 있다. 구체적으로 설명하면 다음과 같다. 기존 ..