Batch, Online Inference 비교

쓰여진 날: by Creative Commons Licence

  • 태그:

현재 팀에서 다른 조직에 제공하기 위한 어떤 기계학습 모델을 만들었다면 혹은 만들 예정이라면 다음으로는 그 모델을 타 조직이 어떻게 사용하게 하나를 생각할 것이다. 보통의 경우는 모델 추론만을 하는 서빙서버를 만들고 타 조직에 API를 제공해 사용하게 한다. 이 때, 모델 서빙을 배치 인퍼런스 혹은 온라인 인퍼런스로 하게 된다. 상황에 따라 둘 중 하나의 방법을 사용해야 효과적이게 되는데 이번 포스트에서는 배치와 온라인 인퍼런스의 차이를 보자.

## 배치 인퍼런스

배치 인퍼런스는 말그대로 데이터를 배치 단위로 인퍼런스하는 것이다. 이러한 배치 단위의 작업들은 한두시간마다 반복적으로 돌아가는 작업에서 생성된다. 이렇게 생성된 예측값들은 데이터베이스에 저장되어 다른 사람이 가능하게 된다. 배치 인퍼런스는 스파크와 같은 빅데이터 기술과 같이 쓰기 좋으며 데이터 사이언티스나 엔지니어는 확장 가능한 컴퓨터 파워로 많은 데이터를 한번에 처리할 수 있다.

배치 인퍼런스의 장점

데이터 사이언티스트의 입장에서 배치 인퍼런스는 몇가지 장점이 있다. 레이턴시 요구가 시간 혹은 일 단위로 있기 떄문에 레이턴시에 대해 걱정할 필요가 없다. 그래서 데이터 사이언티스트는 스파크와 같은 툴로 엄청나게 큰 배치들을 생성해 인퍼런스할 수 있다. 꼭 스파크와 같은 기술을 사용하지 않아도 배치 인퍼런스는 온라인 인퍼런스에 비해 요구되는 인프라가 덜 복잡하다. 예를 들어 데이터사이언티스트는 모델을 REST API를 통해 제공하기 보단 배치 인퍼런스를 하는 작업을 단순하게 처리할 수도 있다. 또 배치 인퍼런스로 생성된 데이터는 실제 사용자에게 넘겨지기전에 분석되고 후처리될 수 있다.

배치 인퍼런스의 단점

배치 인퍼런스는 간단하다. 하지만 실시간으로는 사용할 수 없는데 새로운 데이터에 대해 예측이 불가능할 수도 있기 때문이다. Cold start라고 불리는 문제가 한 예로 볼 수 있다. 새로운 유저가 쇼핑사이트에 가입했다고 하자. 만약 추천 시스템이 매일밤 배치를 생성한다고 하면 새로운 유저는 제대로 된 개인화 추천을 받지 못할 것이다. 비슷한 유저의 데이터를 사용해 새로운 유저에게 제공함으로 이런 문제를 어느정도 해결할 수 있긴 하다.

배치인퍼런스의 실제 예시

아마존과 같은 이커머스에서는 매시간마다 유저의 로그를 사용해 추천을 하기보단 정해진 시간에 배치 작업을 수행하여 추천을 할수도 있다. 넷플릭스도 유저의 로그에 따라 매번 추천하기보다는 정해진 시간에 배치 작업을 수행하여 추천을 할 것이다.

온라인 인퍼런스

온라인 인퍼런스는 기계학습 모델을 요청이 올 때마다 수행하는 것을 말한다. 실시간 인퍼런스 혹은 다이나믹 인퍼런스라고도 불린다. 이 경우에서는 주로 하나의 인풋값이 들어올 때 마다 아웃풋이 나온다.

온라인 인퍼런스의 장점

온라인 인퍼런스는 실시간이라는 것이 가장 큰 장점이다. 이건 어플리케이션에게 완전히 새로운 지평을 열어주는 것이다. 유저가 원할 때 마다 바로 예측값을 제공할 수 있기 때문이다. 넷플릭스에 비유를 다시 하면 유저가 어떤 로그를 남기면 그에 대해서 실시간으로 계속 인퍼런스를 하고 그 결과를 이용해 바로바로 추천을 하게 된다.

온라인 인퍼런스의 단점

보통 온라인 인퍼런스가 배치 인퍼런스보다 더 어렵다. 먼저 구조적으로 더 복잡하고 레이턴시 요구사항도 신경써야 한다. 100ms 안에 인퍼런스를 해야하는 시스템은 24시간마다 인퍼런스하는 시스템보다 확실히 어려울 것이다. 왜냐면 시스템은 데이터를 받고, 추론하고, 검증하고 네트워크로 보내는 걸 100ms 안에 다 해야하기 때문이다. 또 이 과정들에서 아래와 같은 문제들이 있다.

  1. 데이터 얻는 과정 보통 데이터를 많은 곳에 산재되어 있고 이것들을 모아 처리해야 한다. 예를 들면 모델이 인퍼런스를 하는데 다른 데이터베이스에 있는 유저 데이터를 요구할 수 있다. 이 데이터를 얻으려 쿼리를 날리고 받는데 시간이 들고 캐시를 사용하면 저장공간이 커진다.

  2. 모델 알고리즘 모델이 수행하는 연산 또한 고려해야 한다. RNN을 회귀분석보다 훨씬 많은 연산을 요구로하고 그만큼 오래 걸린다. 레이턴시 요구는 간단한 모델을 요구할 수 있다.

  3. 모델 아웃풋 기계학습의 특성상 유효하지 않은 예측값을 낼 수 밖에 없다. 예를 들어 회귀 모델이 집값을 예측하는데 0 이하의 값이 나올 수가 있다. 혹은 개와 고양이를 구분하는 모델에 소 사진을 넣어도 결과는 개 혹은 고양이로 나올 것이다. 보통 이런 경우 떄문에 세이프가드의 역할을 하는 정책 레이어를 두기도 한다.

  4. 웹 기술 모델이 REST API를 통해 노출되면 데이터 사이언티스트는 REST, HTTP, client-server 네트워크 모델에 대해 최소한의 개념은 알아야 한다.

추가적으로 온라인 인퍼런스 시스템은 모니터링 시스템을 요구한다. 데이터 사이언티스트들은 인풋, 아웃풋 데이터가 학습데이터의 분포와 비슷한지를 보아야한다. 만약 분포가 너무 다르다면 인풋 데이터가 다른 소스로부터 들어왔거나, 데이터 파이프라인에 에러가 생겼다는 의미일 수 있다. 이런 개념은 model drift라고 불린다. 만약 이런 상황이 발생한다면 데이터 사이언티스틑 모델을 새 데이터를 사용해 재학습한다.

결론

기계학습을 이용해 어떤 서비스를 해야겠다는 결론이 나오면 고려할 것들이 점점 더 많아진듯 하다. 타켓은 누구인가? 어떤 형태로 사용할 것인가? 온라인 인퍼런스로 해야하나? 레이턴시는 어느정도를 예상하나? 등등 말이다. 각 경우에 맞는 형태를 미리 기획해 알맞는 기계학습 파이프라인 구조를 생각해보자.