요즈음은 C++을 좀더 심도 깊게 공부하려고 틈틈히 책을 보고 있다. 내년에 어떤 프로젝트를 하게 될지 모르고 지금 하는
프로젝트가 C++을 심도깊게 다루는 처음이자 마지막 프로젝트가 될지 모른다는 느낌에 이번 기회를 최대한 활용하려고 한다.
사실
국내에서 C++관련 책은 많이 나와 있지만, 이 언어를 이용해서 실제 프로덕트를 만드는 프로젝트는 그리 많지 않다고 알고 있다.
그래도 다들 C++ 이야기를 하는 이유는 프로그래머의 로망 정도로 이야기 할 수 있지 않을까 한다. 이렇듯 아주 오묘한 매력을
가진 언어가 C++인거 같다.
아주 즐겁게도 진행중인 프로젝트의 Machine Learning 모델 성능이 기존의 프로덕트보다 더 나은 결과가 나와서 프로젝트의 부담을 조금은 덜은거 같다.
해보신 분들은 아시겠지만, Machine Learning을 가미한 프로젝트는 일반적인 프로젝트에서 라인 하나하나 모듈 하나하나를 개발해 나가는 것과는 좀 성격이 다르다.
일단 처음부터 끝까지 빌드가 성공적으로 완료가 되면 코드상의 버그는 찾아내기가 힘들다. 특정 퍼포먼스가 코드에서 나온건지,
데이터에서 나오게 된건지 그리고 버그가 있는지 없는지 조차 알아내기 힘들기 때문인데, 이 때문에 이런 프로젝트의 모듈 개발은 정말 신중하고
또 신중하게 해야 하고 그런 완벽한 코드를 기반으로 모델을 만들때 비로소 데이터를 기반으로 하는 디버깅을 집중해 할 수 있다.
그럼 완벽한 코드를 만들었다고 해도 하나의 고비가 나오는데, 과연 데이터를 기반으로 디버깅을 어떻게 해아할 것인가이다.
요건 말로는 간단하지만 실제로는 가장 time consuming한 과정이다. 일단 오분류가 되는 것들에 대한 데이터 특징을 파악해서 이를 분류할 수 있는 속성을 추가하는 것이다. 꽤 간단히 성능을 올릴 수 있을지 모르지만 그 해당 속성이 또 다른 구현을 요구할 수도 있다. 그리고 모델 빌드 시간이 길다면, 디버깅 시간도 길어질 수 밖에…
무엇보다 객관적이고 정확한 성능 측정 방법이 꼭 필요하다. 이를 기반으로 성능의 개선 여부를 파악 할 수 있기 때문이다.
재밋는 사실을 알려주자면, 지금 수행중인 프로젝트의 성능 측정 결과, 다음, 네이버의 성능이 너무 좋지 않게 나와서 실망을 많이 했었다. 게다가 이 결과를 본사에 가서 회의시간에 이야기 할때도 특히나 네이버(한국의 네이버에 대해서는 본사 사람들도 잘 알고 있다)의 퍼포먼스를 이야기 하면서 반신반의 하는 모습들이였다. 하지만 더블 체킹 해본 결과 테스트 결과는 맞는 결과였다.
그러나 역시나 구글 코리아의 퍼포먼스 테스트가 가장 잘 나왔다. 역시 구글은 대단한 회사라는 생각을 다시 해본다.
론치에 전혀 이상이 없을 퍼포먼스지만, 구글 때문에 욕심이 나긴 한다. 그래서 아마도 올 해 말까지는 계속 이 작업이지 않을까 한다.
C++ 그리고 Machine Learning 프로젝트 by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.