LINE Corporation이 2023년 10월 1일부로 LY Corporation이 되었습니다. LY Corporation의 새로운 기술 블로그를 소개합니다. LY Corporation Tech Blog

Blog


LINE 머신 러닝 엔지니어 임준석 님을 만나보았습니다

준석 님은 2019년에 머신 러닝(machine learning) 엔지니어로 LINE에 합류했습니다. 서비스 개발 부서와 긴밀하게 협력하며 LINE 서비스 곳곳에 머신 러닝 기술을 적용하고 계신데요. 온라인에 흔적을 남기는 것을 즐기지는 않지만 LINE의 머신 러닝 개발 환경을 널리 홍보하고 싶은 마음에 인터뷰를 수락했다는 준석 님. LINE에서 어떤 새롭고 즐거운 경험을 하고 있는지 함께 만나보시죠!

업무에 관한 이야기

Q. LINE의 머신 러닝 엔지니어가 하는 업무에 대해 간단히 소개해 주세요!

저희 팀은 LINE 메신저 플랫폼의 메신저 기능을 비롯한 다양한 서비스에 머신 러닝 모델을 개발하여 적용하는 일을 합니다. 구체적으로 올해 진행한 프로젝트를 예시로 들어 설명 드리면, LINE 메신저의 OpenChat 서비스에서 사용자가 관심 있어 할 채팅방을 추천해 준다든지, 문제가 될만한 채팅방을 사전에 가려내는 프로젝트를 진행했습니다. 또한 메신저상 친구들 간의 친밀도를 측정하여 친밀도가 높은 친구를 더 상단에 노출하는 기능, 사용자 패턴을 학습해서 어뷰저(abuser)나 스패머(spammer)들을 분류할 수 있는 기능과 관련된 프로젝트를 진행하기도 했습니다. 저희가 서비스에 필요한 내용을 고민한 뒤 서비스 개발 부서와 협업하는 프로젝트도 있지만, 개발 부서에서 저희에게 머신 러닝으로 효율화할 수 있는 부분을 먼저 제안하고 의뢰해 주시는 경우도 많습니다. 이런 경우엔 부서에 도움을 드리며 서비스의 성장 속도를 더 가속화시킬 수 있어 뿌듯합니다.

머신 러닝 기술이 특히 필요한 부서에는 머신 러닝 부서가 따로 존재하기도 하는데요. 제가 속한 조직 외에도 광고 추천이나 가격 설정 등 광고 로직을 개발하는 부서, 타임라인 서비스에서 콘텐츠를 추천하는 로직을 개발하는 부서 등 사내 곳곳에서 머신 러닝 개발자분들이 일하고 계십니다.

Q. 업무 중 주로 어떤 경우에 보람을 느끼시나요?

성과가 눈에 보일 때 큰 보람을 느낍니다. 저희가 하는 업무는 정량적으로 결과를 확인할 수 있어서 모델을 적용한 후에 수치를 지속적으로 트래킹하는데요. 기존과 비교해 수치가 극적으로 개선되면 그만큼 기쁜 게 없죠. LINE에서 처음 맡았던 프로젝트가 개인화 추천 모델을 개발해 OpenChat에 적용하는 것이었습니다. 서비스 론칭 후 평가 지표를 설정하고 컴퓨터 한구석에 대시 보드를 띄워서 시시각각 새로 고침을 누르며 체크한 기억이 있는데요. 론칭 직후부터 발생한 로그를 통해 비교군 대비 수치가 향상되는 것을 보며 만족감을 얻을 수 있었습니다. 이후 충분한 모니터링을 거치면서 '혹시라도 수치가 악화되면 어떡하지'라는 걱정이 사라지고 기존 대비 확실히 개선되었다고 확정이 되었을 때 맥주 한잔하러 가는 것도 큰 보상입니다.

Q. 다른 직군이나 부서와 협업하실 때 어떤 점을 가장 신경 쓰시나요?

머신 러닝이 비교적 전문적인 분야이기 때문에 설명하고 설득하는 데 공을 들이는 편입니다. 어떤 서비스를 협력하며 제작하기 위해서는 참여자 간에 합의가 되어야 하는데요. 저는 머신 러닝 모델을 왜 적용해야 하고, 이것이 어떤 효과를 가져올 것인지에 대해 이해시켜야 하는 의무가 있습니다. 다른 도메인에서 오신 분들은 머신 러닝 분야에 대해 공부할 기회가 당연히 적었을 것이기 때문에 최대한 쉽게 설명하기 위해 노력하는 편이에요. 특히 머신 러닝 분야는 전문 용어가 많아서 이런 용어들을 풀어서 설명하려고 노력하고, 프로젝트 진행 상황을 사내 위키 페이지 등에 정리하여 수시로 공유하는 것에도 집중하고 있습니다. 이를 통해 서비스의 성공이라는 공동의 목표에 조금이라도 원활하게 다가갈 수 있도록 기여하고자 합니다.

Q. 언어나 도구는 주로 어떤 것을 사용하시나요?

대부분의 머신 러닝 엔지니어들과 비슷한 것 같아요. 저희 팀 내 대부분의 레퍼지토리는 Python으로 되어 있습니다. 다만 처리 속도가 중요한 경우에는 C++이나 C를 사용하기도 하죠. 대용량 처리 엔진으로는 Spark를 주로 사용하는데요. Spark를 효율적으로 사용하기 위해 부분적으로 Scala를 활용하기도 합니다. 테스트 코드 작성이나 내부 필요에 의해 일시적으로 수행하는 애드혹(ad hoc)한 작업을 할 때는 Jupyter나 Zeppelin 노트북을 주로 사용하고 있습니다. 특히 Zeppelin은 Spark를 직접 지원하기 때문에 대용량 처리를 위한 환경을 Jupyter 노트북에 비해서 간편하게 구성할 수 있습니다. 또한 여러 가지 언어를 지원하기 때문에 상대적으로 사용하기 편리한 면도 있다고 생각합니다.

역량에 관한 생각

Q. 준석 님의 업무에서 좋은 퍼포먼스를 내기 위해서는 어떤 역량이 필요하다고 생각하시나요?

세 가지 정도를 꼽을 수 있을 것 같은데요. '학술적인 연구를 실용적으로 적용할 수 있는 역량, 문제를 근본적으로 해결하고자 하는 태도, 한 발 먼저 나서서 시도해 보는 태도’입니다.

먼저 머신 러닝하시는 분들은 다들 아시겠지만, 이 분야에 특히 학술 논문을 비롯해 새로운 기술이 엄청나게 쏟아지고 있는데요. 이런 수많은 기술을 공부하는 것 못지 않게 그것들을 실제 서비스에 적용할 수 있는 능력이 중요하다고 생각해요. 학술적인 연구는 실제로 적용하기 어려운 가정을 바탕으로 진행하는 경우도 많은데요. 이것들을 잘 이해해서 필요한 부분만 활용하는 게 중요한 역량입니다. 논문을 보고 익히는 것뿐 아니라, 핵심 아이디어를 추려내서 효율적으로 활용할 수 있는 방안에 대해 고민해 보면 좋을 것 같습니다. 또한 학습한 것을 직접 구현할 수 있는 개발 능력도 있어야 해요. 개발 능력이 갖춰지면 현재 사용하고 있는 모델이 어떤 부분에서 개선이 필요한지 직접 확인할 수 있습니다. 이렇게 되면 남이 개발해 주기를 기다리는 시간도 줄일 수 있어서 업무 속도도 빨라져요.

다음으로 문제를 근본적으로 해결해야겠다는 마음가짐이 필요하다고 생각해요. 해결해야 하는 문제가 발생했을 때 적당히 넘어가면 경험적으로 그 문제가 또 발생하더라고요. 심한 경우 서비스 장애로 이어지기도 하는데요. 이런 악순환을 끊을 수 있는 지식과 끈기가 중요한 것 같습니다.

마지막으로 제가 가장 좋아하는 LINE STYLE 항목을 빌려 말씀드리고 싶은데요. '한 발 차이 : 완벽한 계획보다 빠른 시도가 중요하다'라는 항목입니다. 보통 이슈가 발생하면 이슈를 해결하기 위한 회의를 열어 의견을 도출하고 합의한 뒤, 담당자를 정해서 그 사람이 해결해 주길 기다리곤 하는데요. 경험상 누구든지 책임 의식을 갖고 미리 이것저것 시도해 보면 시간 손실이 크게 줄어드는 것 같습니다. 시도한 결과가 좋다면 본인의 성과가 될 것이고, 결과가 좋지 않다면 의사 결정 과정에서 그와 같은 시도를 배제할 수 있어 좀 더 효율적으로 프로젝트를 진행할 수 있습니다. 빠른 프로젝트 완결에 기여하기 위해서는 이런 태도가 뒷받침되어야 한다고 생각합니다.

LINE에서 겪은 특별한 경험

Q. LINE에서 성장하고 있다고 느끼는 계기가 있으신가요?

LINE에서 업무를 시작하고 나서 이전보다 담당하는 업무의 폭이 훨씬 넓어졌고 제가 스스로 결정할 수 있는 부분도 많아진 것 같습니다. 특히 개발하는 모델을 서비스에 바로 적용할 수 있는 환경이라는 게 매우 긍정적인 부분이라고 생각합니다. 현재는 서비스 담당자분들과 커뮤니케이션하는 것부터 대안을 제시하고 문제를 해결하는 것까지 전 과정에 기여하고 있습니다. '기술적으로 리딩'한다고 표현해야 할까요? 문제 정의나 데이터 전처리 방식에 대한 부분에서부터 시작해 전체 프로젝트를 함께하는 과정은 때론 길고 힘들기도 하지만, 그 결과 원하는 수준으로 개선됐을 때 아주 즐겁고 개인적으로 성장한 느낌이 듭니다.

Q. LINE이 글로벌 서비스이기 때문에 특별히 다른 점이나 어려운 점이 있나요?

여러 가지로 세심하게 신경 써야 할 부분이 많습니다. 같은 모델이더라도 국가별로 사용자가 보이는 반응이 상이한 경우가 많더라고요. 그렇기 때문에 모든 프로젝트에서 실제 서비스에 적용하기 전에 LINE 해외 법인의 서비스 운영자들, 그리고 때때로 서비스와 관련이 없는 LINER(LINE 임직원)들을 대상으로 파일럿 테스트와 같은 일종의 정성적 평가를 거칩니다. 이런 정성적 평가를 통해 나온 피드백들은 모델에 반영되어 국가별로 세분화된 모델을 만드는데 기여합니다. 또한 국가별로 지표에 반응하는 특성들이 각각 다르다 보니 같은 서비스에 적용하는 모델이더라도 국가별로 조금씩 튜닝해 다른 모델을 적용하기도 하는데요. 이런 부분은 정말 국내에서는 어디서도 쉽게 하기 어려운 경험이라고 생각합니다.

그리고 글로벌 회사이다 보니 외국어를 봐야 하는 일이 많은데요. 제가 알 길이 없는 언어들을 마주할 때면 조금 당황스러울 때도 있어요. 데모 페이지를 제작하려고 보면 알아볼 수 있는 것이 이미지밖에 없는 신기한 경험도 종종 합니다. 특히 NLP(Natural Language Processing) 관련 개발을 해야 하는 경우엔 난감했는데요. 그래도 이젠 적응해서 번역기나 서비스 측 도움을 받아 잘 해결해 나가고 있어요. 모든 언어를 다 익힐 수는 없지만, 일본어 같은 경우에는 조금씩 익히려고 노력하는 중입니다.

Q. 준석 님이 특별히 자랑하고 싶은 LINE만의 복지 혹은 문화가 있나요?

우선, 조식 종류 중 하나로 과일이 나오는 게 너무 좋습니다. (웃음) 또 자율출퇴근제도 잘 정착되어 있어 좋은 것 같아요. 월 단위 근무 시간만 준수하면 컨디션 좋을 때 일을 더 하고, 좋지 않을 때 일을 덜 할 수 있어서 좋아요. 병원이나 은행 등에 다녀오기도 편하고요. 과일과 자율출퇴근은 업무 효율에 큰 도움이 됩니다.

마무리하며

Q. 지금 반드시 이루고 싶은 목표가 있으신가요?

LINE 메신저 플랫폼 안에는 정말 다양한 서비스가 있는데요. 그 다양한 서비스 각각에 맞게 다양한 머신 러닝 프로덕트를 적용해 나가고 싶어요. 우리 LINE 서비스가 머신 러닝 기술로 점점 더 고도화되고 효율이 극대화되었으면 좋겠습니다.

Q. LINE의 머신 러닝 엔지니어 포지션에 관심 있는 분들께 마지막으로 한 말씀해 주세요!

LINE에서는 정말 다양한 경험을 할 수 있습니다. 문제를 정의하는 것부터 최종 결과까지 엔드 투 엔드의 경험을 하실 수도 있고, 글로벌 환경에서 다른 곳에서 쉽게 하기 어려운 새로운 경험을 하실 수도 있습니다. 성장해 나가는 서비스와 조직에 주도적으로 기여할 수 있는 환경이라서 개발자라면 모두 환영할 만한 환경이라고 자랑하고 싶습니다. 또한 더 좋은, 더 멋진, 더 최신의 모델을 활용해 보기 위한 공부와 시도도 게을리하지 않습니다. 그리고 이런 모델링만큼 데이터를 파악하는 작업과 프로젝트 구성원들과의 커뮤니케이션도 중요하다고 생각하기에 이런 부분도 소홀히 하지 않으려고 노력하고 있습니다. 필요한 경우에는 개발 지식도 계속해서 업데이트하고 있죠. 이렇게 좋은 환경에서 함께 성장하는 경험을 하길 바라시고, 능동적으로 스스로를 갈고닦기를 즐기는 분과 함께 프로젝트를 진행할 수 있게 된다면 참 좋겠습니다!

▶️ LINE AI/ML 개발 신입(석/박사) 공개 채용: https://lin.ee/vYKviiB