본문 바로가기메뉴 바로가기


카카오 사내 기술 세미나 ‘Techtalk’ – 두 번째 이야기

카카오 사내 기술 세미나 Techtalk, 두 번째 이야기를 공유하는 시간을 가졌습니다.
이번 주제는 머신러닝, 딥러닝, 추천 기술 등 AI 기술에 관심 있는 크루들을 위해 현업 개발자들이 학습하고 실행한 과정 중심으로 진행되었습니다.


크루들의 지식과 경험을 나눠 함께 성장해 가는 
Techtalk 두 번째 이야기

1. Tensorflow Serving보다 10배 빠르게 서빙하기 –  카카오 / jesse.ha(하광성)

카카오 추천팀 소프트웨어 엔지니어 입니다. 머신러닝 서비스의 기반 기술을 연구/개발하고 플랫폼화하는 업무를 하고 있습니다. 그동안에 진행한 프로젝트로는 음악검색(clavichord), Taken(MIH 알고리즘 기반 exact knn), Almost-Taken(HNSW 기반 approximate knn) 등이 있으며, 최근에는 Tensorflow 모델을 서빙하는 프로젝트와 추천 플랫폼 개발에 참여하고 있습니다. 과거 손코딩 뇌컴파일 눈디버깅이라는 밋업을 운영한 경험이 있습니다. 

최근 머신러닝/딥러닝 연구가 활발히 이루어지며 기술적 문제가 해결되고, GPU 등 하드웨어의 발전으로 인해 학습 시간도 단축됨에 따라 점차 다양한 서비스로 확대되고 있습니다. 하지만 이런 머신러닝/딥러닝 모델을 서비스에 적용하기 위해서는 여전히 풀어야 할 문제가 있습니다. 학습된 모델을 짧은 시간 안에, 그것도 엄청나게 많은 사용자에게 서빙하는 것입니다.

텐서플로우로 만든 딥러닝 모델을 서비스에서 사용하기 위해 인퍼런스 기능을 구현하는 과정에서 코드 레벨 / 도메인 레벨 / 모델 기능 구현 / 네트워크 등 다양한 관점에서의 최적화를 통해 텐서플로우 서빙보다 10배 빠르게 만드는 과정을 공유합니다.

가장 naive 하게 구현한 첫 프로토타입은 놀랍게도 텐서플로우 서빙과 엇비슷한 성능을 보였고, 과연 구글보다 빠르게 만들 수 있을까라는 의구심을 갖게 했습니다. 최적화 가능한 레이어들을 합치고, 코드 레벨 최적화를 진행하면서 2배 이상의 성능 향상을 달성하였을 때부터 어렴풋하게 희망을 품게 되었고, 도메인 레벨 최적화를 통해 5배 이상 개선했을 때는 정말 이제 끝이라고 생각했습니다. 가장 병목이 되는 구간을 최적화하고 10배 이상 개선을 달성했을 때는 오히려 특정 모델이라면 충분히 가능하겠다는 자신감을 느끼게 되었습니다.

처음 프로젝트를 접하고 소극적이었던 저처럼 망설이지 말고 시도해보시라고 제 경험을 공유합니다.

2. 개인화 추천 시스템은 어디로 가고 있는가? –  카카오 / pi.314(최규민)

카카오 추천팀에서 추천 데이터 분석과 추천 과제 관리를 하고 있습니다. 취미로 데이터 분석을 즐겨 했는데, 메인 job이 되니… 취미를 잃었습니다..

우리는 지금 무엇을 하고 있는지를 고민하나요? 아니면 무엇이 되어가고 있는지를 고민하나요?
네 맞습니다. 우리는 매년 무엇을 할지 고민합니다.
그런데 중요한 것은 방향 즉 어디를 가고 있는지입니다.

그래서 넷플릭스의 추천 시스템이 어디를 향해 가고 있는지를 살펴보고 추천 시스템의 향해 가야 할 Goal에 대하여 같이 이야기를 해보고자 합니다.

3. 300GB 데이터로 어떻게 학습을 할 수 있을까? –  카카오 /  peter.han(한민호)

DB 컨설턴트로 시작해서 검색, 광고, DMP 개발을 중심으로 경력을 쌓았습니다. 카카오에 입사해서는 개발 및 모델링 업무를 같이 하고 있고 2년 전부터 Deep Learning을 열심히 공부하고 있는 개발자입니다.

광고추천팀에서 전환 최적화 타게팅 모델을 딥러닝으로 전환하면서 학습 데이터의 규모가 크고 광고주 별로 많은 모델을 처리하다 보니 데이터 처리부터 모델링까지 많은 어려움을 겪었습니다.

그중에 가장 힘들었던 부분은 모델의 성능을 떨어뜨리지 않고 데이터를 획기적으로 줄일 방법을 찾고 적용하는 데 있었는데요, 작년 한해 여러 방법들을 고민하고 실험하면서 서비스에 적용까지 했던 경험들이 매우 갚진 경험이었습니다.

저희가 모델의 성능/효율을 유지하면서 어떻게 하면 데이터를 줄일 수 있을까 고민하고 튜닝했던 경험들을 Techtalk이라는 좋은 기회가 있어 공유합니다.

  • 데이터의 볼륨과 데이터의 처리 시간
  • 하둡 데이터를 처리할 때 병목구간
  • 데이터를 줄이기 위한 방법들에는 어떤 것들이 있는지 소개하고 우리 상황에 적합한 방법을 선택한 과정

두 번째 Techtalk을 마치며

jesse.ha(하광성)
첫 Techtalk 발표에 참여하면서 느낀 점은, 첫 진행임에도 구성이 탄탄하다는 인상을 받았습니다. 발표자는 그저 발표 준비만 잘하면 되었고, 그 외 필요한 모든 것들을 테크톡TF에서 준비해 주셨습니다. 발표를 위한 플랫폼 준비, 설정, 리허설, 동영상 녹화, Summary 제공, 홍보 페이지, 피드백 수집 및 제공 등등.

카카오가 점점 비대해지는 만큼 신입이나 내부 크루를 위한 교육&성장 관련 콘텐츠는 더욱 필요해질 것입니다. 최근에 인프라팀에서도 관련 콘텐츠들을 준비해 주시는 등 사내에서도 관심을 두고 있는 것 같고, 해외 기업들도 예전처럼 의무교육(?) 같은 것은 점점 없어지지만 스스로 학습할 수 있는 콘텐츠들은 방대하게 보유하고 있다고 들었습니다.

아마 많은 팀이 팀 내에서 자체 세미나를 운영하시리라 생각합니다. “멘토링/스터디 참여”, “업무 경험이 적은 동료들의 역량 향상과 성장을 위해 중요한 역할을 한다.” 등과 같이 People Impact도 주요한 구성요소 중 한 가지고요.

Techtalk이 단기성 행사로 그치지 않고, 카카오의 문화로 자리 잡음과 동시에 지적재산으로 차곡차곡 쌓이길 기대해봅니다.

pi.314(최규민)
저는 이해(understanding)했다고 믿던 지식도 실제로는 단순히 앎(knowing)이 있던 적이 많았습니다. 이런 이해와 앎의 차이를 확인하기 위해 가장 좋은 방법이 발표를 해 보는 것이었습니다.

여러분도 이해했다고 생각했던 지식이 앎이 아닌지 알고 싶다면 그리고 이해하고 있는 유용한 지식을 크루들과 나누고 싶다면 주저 없이 이번에 경험했던 사내 기술 세미나를 추천합니다. jesse의 회고 글처럼 그저 발표 준비만 잘 하면 모든 것은 물 흐르듯이 흘러 갑니다. 그러면 발표자 분들은 익숙한 팀 크루 그리고 발표에 관심 있는 크루들의 즐거운 호응과 좋은 피드백을 받는 경험을 얻을 수 있습니다.

사내 기술 세미나가 자신과 크루들이 함께 성장하는 좋은 문화로 지속되길 응원합니다.
감사합니다.

peter.han(한민호)
카카오에 입사해서 쉼 없이 달려왔던 프로젝트를 진행하면서 정신없이 진행됐기도 했고 여러 가지 우여곡절이 많았지만 지나보니 정리하지 못했던 것들이 아쉬웠는데 Techtalk이라는 좋은 기회를 제공해 주셔서 정리하고 공유할 기회를 갖게 되어 너무 좋은 시간이었습니다.

카카오에 수많은 서비스들이 있고 그것들을 개발하는 많은 팀들이 있는데 각자 여러 가지 노하우들이 있을 것이라 생각됩니다. 다양한 기술들을 Techtalk을 통해서 서로 공유하고 배울 수 있었으면 좋겠습니다.

무엇보다 발표를 통해서 다양한 피드백과 응원을 받고 나니 많이 배우고 성장할 수 있는 계기가 되었던 거 같습니다. 많은 분들이 발표에 지원하셨으면 좋겠습니다~^^


이번 두 번째 Techtalk도 많은 크루들의 적극적인 관심 속에 잘 마쳤습니다.
Techtalk에서 다루었으면 하는 주제들이 점점 많아지고, 참여했던 발표자분들도 다시 한번 참여하고 싶다고 피드백을 주실 때면 우리 모두에게 유익한 시간이 된 것 같아 보람을 느낍니다.

다음 카카오 개발자들의 Techtalk은 5월에 진행될 예정입니다.
세션뿐만 아니라 크루들의 다양한 기술적 공유와 교류의 시간이 될 수 있도록 다채로운 고민을 하고 있습니다. 🙂

이상으로 카카오 사내 기술 세미나 ‘Techtalk’ 두 번째 이야기를 마치겠습니다.
감사합니다.

candice.hong
candice.hong 카카오에서 Developer Relations를 담당하고 있어요.
Top Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
Caver
cd
CDR
ceph
certificate
certification
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
coding test
competition
Compliance
component
conference
consul
container
contents
contest
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
globalpollution
go
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
machine-learning
marathon
meetup
melon
mesos
message
Messaging
microservice
mobil
monad
monorepo
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
parallel
PBA
planning poker
Platform
polyfill
programming-contest
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
Thread-Debugging
time-wait
tmux
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly
work
workplatform
라이선스
오픈소스
오픈소스검증
의존성분석
All Tag
2021
2021-new-krew
Ad Platform
Ad tech
adaptive-hash-index
adt
adtech
agile
agilecoach
ai
Algorithm/ML
Algorithm/Ranking
almighty-data-transmitter
Analyzer
android
angular
anycast
App2App
applicative
Architecture
arena
ast
async
aurora
babel
babel7
Backend
BApp
bgp
big-data
ble
blind-recruitment
block
Block Chain
blockchain
bluetooth
brian
business
Cache
cahtbot
Caver
cd
CDR
ceph
certificate
certification
cgroup
chrome
ci
cite
client
clojure
close-wait
cloud
cloudera-manager
clustered-block
cmux
cnn
code-festival
code-review
codereview
coding
coding test
competition
Compliance
component
conference
consul
container
contents
contest
cookie
core-js@3
Corporate Digital Responsibility
couchbase
COVID-19
cpp
Data
data-engineering
DB
deep-learning
Dependency
dependency-graph
dev
dev-session
dev-track
developer
developer relations
developers
devops
digitalization
digitaltransformation
dns
docker
dr
employeecard
eslint
Feature List
Featured
friendstime
front-end
frontend
functional-programming
funfunday
fzf
garbage-collection
gawibawibo
GC
github
globalpollution
go
graphdb
graphql
Ground X
growth
ha
hadoop
hate speech
hbase
hbase-manager
hbase-region-inspector
hbase-snashot
hbase-table-stat
hbase-tools
hri
id
if kakao
ifkakao
infrastructure
innodb
internship
ios
item
Java
javascript
jsconf
jsconfkorea
json
k8s
kafka
kakao
kakao-Career-Boost-Program
kakao-commerce
kakao-games
kakaoarena
kakaocommerce
kakaocon
kakaoenterprise
kakaok
kakaokey
kakaokrew
kakaomap
kakaotalk
KAS
KCDC
khaiii
Klaytn
Klip
kubernetes
l3dsr
l4
License
links
Linux
load-balancing
machine-learning
marathon
meetup
melon
mesos
message
Messaging
microservice
mobil
monad
monorepo
mtre
mysql
mysql-realtime-traffic-emulator
nand-flash
network
new
new-krew
nfc
nomad
ocp
olive
onboarding
open
open source
opensource
openstack
OpenWork
OSS
page
parallel
PBA
planning poker
Platform
polyfill
programming-contest
project-structure
pycon
python
quagga
react
reactive-programming
reactor
recap
recommendation
recommendation system
recruitment
redis
redis-keys
redis-scan
related-blind
rest
rubics
ruby
rxjs
s2graph
scala
scalaz
seminar
Serve
server
service
sharding
shopping
socket
spark
spark-streaming
SpringBoot
ssd
Statistics/Analysis
Stomp
storage
storm
style-guide
summer internship
support
System
talk
talkchannel
tcp
tech
Techtalk
test
Thread-Debugging
time-wait
tmux
typescript
Untact
update
User Story
vim
vim-github-dashboard
vim-plugin
vue
vue.js
web-cache
webapp
WebSocket
weekly
work
workplatform
라이선스
오픈소스
오픈소스검증
의존성분석

위로