[AI Lab 소개]
하이퍼커넥트 AI Lab은 사람과 사람 사이를 연결하는 서비스에서 기존의 기술로는 접근하기 어렵지만 머신러닝 기술을 통해 풀 수 있는 문제들을 찾아내고 해결하여 사용자 경험을 혁신합니다. 이를 위해 영상/음성/자연어/추천 등을 포함하여 다양한 도메인의 수많은 모델을 개발하고, 모바일 및 클라우드 서버를 통해 안정적으로 제공하면서 마주하는 문제들을 해결하여 AI Lab이 만들어 내는 기술이 실제 서비스의 성장에 기여하는 것을 목표로 합니다. 이러한 목표 아래 하이퍼커넥트 AI Lab은 아자르를 포함한 하이퍼커넥트의 제품에 기여하는 머신러닝 기술들을 수년간 발전시켜나가고 있습니다.
[ML1 Team 소개]
AI Lab 소속의 ML1 Team은 사용자들의 만족스러운 경험을 위해 콘텐츠가 어떤 내용을 담고 있는지를 이해하고 활용하는 연구 개발을 수행합니다. 모바일, 웹 브라우저 및 서버 환경에서 영상이나 이미지, 음성 및 자연어로 구성된 비정형 데이터를 입력으로 받아 유용한 정보를 추출하기 위해 다음과 같은 문제를 함께 풀 수 있는 분들을 찾고 있습니다(인터뷰).
- 모바일, 웹 브라우저 환경에서 짧은 레이턴시를 유지하면서도 높은 성능을 달성하는 경량 모델과 최적화에 대한 문제
- Label noisiness를 고려하여 labeling 퀄리티를 추적 및 관리하는 문제
- 서로 다른 도메인에서 수집된 데이터 간의 차이를 극복하는 도메인 적응 문제
- Multi-task 혹은 multi-label 분류 모델에 대한 문제
- Unlabeled 데이터를 활용한 semi-supervised learning, self-supervised learning 문제
- Multi-modal 데이터를 활용하는 문제
- 스트림으로 유입되는 사용자 행동 로그와 content understanding 결과에 기반한 실시간 이상 사용자(ex. 스팸/가짜 계정)를 탐지하는 문제
[ML3 Team 소개]
AI Lab 소속의 ML3 Team은 제품에 포함되는 다양한 추천 문제를 해결함으로써 사용자들에게 보다 나은 경험을 제공하고, 궁극적으로 장기 매출 향상에 기여합니다. 다음과 같은 문제들을 고민하고 있습니다(인터뷰).
- 신규 사용자에게 좋은 경험을 주기 위한 cold-start 추천 문제(session-based recommendation, graph-based recommendation, contextual bandit과 같이 few-shot 데이터만으로도 사용자의 선호를 파악할 수 있는 시스템, 신규 사용자에 대한 데이터가 부족할 때 신규 사용자에 대한 추천 성능을 향상시키기 위한 학습 방법 등)
- 양쪽 사용자가 모두 만족할 수 있는 상호(reciprocal) 추천 문제
- 실시간으로 변경되는 추천 후보군에 대해 매우 빠른 시간 안에 추론을 수행하는 실시간 추천 문제(session-based recommendation, graph-based recommendation, reinforcement learning, …)
- 여러 목표 지표들 사이의 trade-off를 고려하는 추천 문제
- 장기 지표를 향상시키는 1차 목표 지표를 찾는 문제
ML1 Team과 ML3 Team은 제품에 포함되는 AI 기술을 연구하기 위한 노력들도 꾸준히 진행하고 있습니다. 실제 프로덕션 환경에서는 Kaggle과 같은 정제된 데이터셋이 존재하지 않으며, 대부분의 경우 매일 새로운 데이터가 시스템에 유입됩니다. 어제보다 오늘 더 나은 모델을 자동으로 생성하는 flywheel을 구축하기 위해, 함께 다음과 같은 문제를 해결할 수 있는 분들을 찾고 있습니다.
- Highly imbalanced 또는 noisy label 데이터를 다루는 방법
- Active learning을 통한 효율적인 데이터 라벨링 방법 혹은 모델 학습에 필요한 데이터를 줄일 수 있는 core-set selection 방법
- 기존에 deploy된 모델을 지속적해서 개선할 수 있는 continual/life-long learning 방법
- 모델 task 요구사항의 변화와 신규 서비스에 대응할 수 있는 meta-learning 방법
- Large scale model을 학습하고, 실제 서비스 환경에서 초당 수백 또는 수천 개의 입력을 안정적으로 처리할 수 있도록 할 수 있는 modeling, optimization, distillation 방법
- ML 프로덕션 프로세스를 혁신하기 위해 large language models을 활용하는 방법
[Responsibilities]
ML Engineer는 최첨단의 모델을 연구하고 개선하는 과학자로서의 연구 능력과, 만들어진 모델의 시간/공간적 복잡도를 고려해 추론 성능을 극한으로 끌어올리는 공학자로서의 개발 능력이 필요합니다. 이런 능력을 바탕으로 실제 서비스에서 겪는 문제를 발견/정의하고, 문제해결을 위한 SotA 모델을 재현 또는 개발하고, 모델을 온디바이스 및 서버 환경에 배포하고, 이후 모니터링하며 지속적으로 모델을 개선하는 AI flywheel 을 구축하는 등 다양한 업무를 수행합니다. 이 과정에서 백엔드/프론트엔드/DevOps 엔지니어, 데이터 분석가, PM 등 다양한 전문조직과 적극적으로 협업하며 도움을 받습니다. 일하는 모습에 대한 조금 더 자세한 이야기는 다음의 내용을 참고하시면 좋습니다.
연구의 결과물을 정리하여 논문 혹은 코드로 공개하는 것 또한 팀 목표 중 하나입니다. 제품에 사용하기 위한 목적으로 머신러닝 모델을 만들다 보면, 기존 연구로는 부족한 경우가 많습니다. 부족한 부분을 채우기 위해 진행된 연구의 결과물을 프로젝트 참여자들이 모두 함께 협업하여 연구의 의미 있는 부분을 정돈하고 가능하다면 코드와 함께 공개합니다. 그 결과, 지금까지 아래와 같은 대외적 연구 성과를 거둘 수 있었습니다.
- 2018년 저전력 이미지 인식 대회(LPIRC) 2등
ML 연구가 잘 진행되기 위해서는 딥러닝 학습을 위한 인프라도 잘 갖추어져야합니다. 하이퍼커넥트에서는 ML Engineer들이 충분히 모델 개발 및 실험을 진행할 수 있도록 자체적인 딥러닝 연구용 클러스터를 구축하여 활용하고 있습니다. DGX-A100 20대로 구성된 클러스터(총 160대의 A100 GPU)를 포함한 다양한 on-premise 장비들을 연구개발에 활용할 수 있습니다. 추가적으로, 데이터 수집, 전처리를 포함한 자체적인 데이터 파이프라인을 클라우드 서비스를 활용하여 구축 및 운영하고 있습니다. 또, ML 모델의 제품화를 도와주실 다양한 소프트웨어 엔지니어(백엔드/프론트엔드/DevOps/MLSE)분들과 함께 일하고 있습니다.