인공지능

    [살아 움직이는 머신러닝 파이프라인 설계] 5. 데이터 전처리

    TFX가 머신러닝 파이프라인을 위한 데이터 전처리 컴포넌트를 따로 만든 이유 데이터 전처리는 수집한 원시 데이터를 모델이 학습할 수 있도록 변환하는 작업을 말한다. 그렇기 때문에 텐서플로 또한 데이터 전처리를 위한 다양한 함수와 클래스를 제공한다. 그렇다면 왜 TFX는 굳이 Tensorflow Transform(TFT) 이라는 전처리 라이브러리를 따로 만들었을까? 그 이유는 데이터 전처리 자체가 아닌 전처리를 수행하는 환경에 있다. 먼저 TFT는 데이터가 데이터셋 전체 컨텍스트에서 전처리할 수 있다. 예를 들어 수치 데이터를 Min-Max Scailing을 통해 Normalizing하려 한다면 데이터셋의 최대값과 최소값을 계산해야 한다. TFT는 데이터셋 전체의 최대값과 최소값을 구해 데이터를 [0, 1..

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