[살아 움직이는 머신러닝 파이프라인 설계] 10. 고급 TFX
인공지능/Tensorflow Extended

[살아 움직이는 머신러닝 파이프라인 설계] 10. 고급 TFX

TFX는 머신러닝 파이프라인 구성을 강제하지 않는다. 프로젝트의 요구사항에 따라 얼마든지 원하는 머신러닝 파이프라인의 구성을 추가하고 변경할 수 있다. 모델 학습과 같은 작업을 병렬적으로 처리할 수 있으며, 머신러닝 파이프라인에서 사용자에게 중요한 내용을 공지할 수 있으며, 프로젝트에 필요한 TFX 컴포넌트도 만들 수 있다.

여러 모델을 동시에 학습하기

TFX는 한 머신러닝 파이프라인에서 여러 모델을 병렬적으로 학습하고 검증할 수 있다. 이런 경우는 보통 더 작은 모델이나 다른 종류의 모델을 학습시킬때 사용하는 방법이다.
TFX에서 머신러닝 파이프라인은 단순 선형적으로 흘러가지 않는다. 오히려 DAG(Directed Acyclic Graph, 유향 비순환 그래프)로 구성할 수 있어 필요한 경우 병렬 작업을 수행할 수 있다. 여러 모델을 학습할 때도 데이터 전처리가 끝나면 여러 종류의 모델을 병렬적으로 학습시키고 검증하고 모델 서버로 배포할 수 있다.

TFLite 모델과 동시에 학습하기

모델을 모바일용으로 따로 학습해 이를 배포할때도 기존 모델과 병렬적으로 처리할 수 있다. 이때 사용하는 방법 중 하나는 두개의 모델을 학습시킨 후 하나의 모델을 TFLite로 모바일 환경에 최적화를 시키고 배포하는 방법이다.

모델 학습에 웜 스타트 적용하기

굳이 모델을 학습시킬 때 모델의 가중치가 초기 상태일 필요가 없다. 때로는 기존 모델의 가중치를 가져다 추가 학습을 시킬 수 있다. 이를 웜 스타트(Warm Start)라고 부른다. 보통 모델 학습 시간이 오래걸리는 경우에 많이 사용한다. 또한 사용자의 요청으로 모델 학습에 자신의 개인정보를 학습시키기를 거부한 경우 해당 사용자의 데이터를 제외하고 fine tuning할 때에도 유용하다.

휴먼 인 더 루프

머신러닝 프로젝트에서 사람이 직접 확인해야할 때가 있다. 이처럼 자동화된 파이프라인 내에서 사람이 개입하는 작업이 추가된 형식을 휴먼 인 더 루프(Human in the loop) 라고 한다. 예를 들어 모델 검증 데이터가 나오면 이를 사람이 확인해 모델을 배포할지 말지 결정할 수 있다. 이때 모델이 학습되고 검증될때까지 기다리는 것보다 완료됐을 때 알림이 온다면 작업이 좀 더 편리해질 것이다.
이를 위해 TFX는 필요한 기능을 컴포넌트로 만들어 사용할 수 있다. 그 중에 휴먼 인 더 루프 기능을 담은 컴포넌트의 예시로 슬랙(Slack) 알림 컴포넌트가 있다. 슬랙 알림 컴포넌트는 사용자에게 슬랙을 통해 메시지를 전달하고 이에 대한 응답을 받는 컴포넌트다. 위에 예시 상황에 적용한다면, 모델 검증이 마치면 이를 데이터 과학팀에게 슬랙으로 메시지를 전달할 수 있다. 이때 검토를 마치면 데이터 과학팀은 슬랙을 통해 모델을 배포할지 말지 응답할 수 있고, 컴포넌트는 대답에 따라 Pusher에게 전달하거나 버린다.