adtech studio

【2018年新卒研修】ひとりDSPをやりました!!!

By fujita

カルチャー ブログ

アドテクスタジオDynalystに配属になりました、18新卒エンジニアの藤田です。学生時代は計量経済学・実証産業組織論を勉強していて、Dynalystではデータ分析の仕事をしたいと思っています!

今回は、アドテクスタジオ全体の新卒研修「ひとりDSP」について書きます。

ひとりDSPとは

名前の通りひとりでDSPを作る研修で、最終日にはその作ったDSPをSSPにつないで実際にオークションを行います。仕様は以下の通りです。

  • SSPから送られるリクエストの上限は2000/秒
  • レスポンスは100ミリ秒以内
  • 20広告主のそれぞれの予算の消化率と、広告主ごとの利益率に点数がつけられる
  • 学習用に本番と同じ生成過程の2000万行のデータが渡される
  • インフラのプラットフォームはGCPを使用、予算は一万円まで

開発

メンターの先輩社員から説明を受けた後、早速開発が始まりました。ひとりDSPとは言いながらも、一人で黙々と作業するというよりは新卒みんながお互いの得意なところを教えあいながら開発していました。僕は入社するまで開発経験が全くなかったので、かなり助けてもらいました。とてもありがたかったです。

 

 

僕は、まずはシンプルな設計で2000qps/secをさばくことに注力しました。APIサーバはGoで実装、予算管理はAerospikeで行い、分散処理はせずどちらも(予算制約内で)一番高性能なGCEインスタンス一台のみで動かしました。Aerospikeの永続化がうまくいかなかったので、予算残高を取得するAPIを追加で作っています。配信ロジックに関しては、周りではXGBoostやglmnetを用いてCTR予測をしている人もいましたが、僕は広告主ごとのCTRの平均値から正規乱数を発生させたCTRの予測(?)値に、競技中に変えられる定数をかけてCPMを計算しました。

競技・プレゼン

最終日には競技とプレゼンが行われました。競技では、新卒10人が作ったDSPをSSPにつなぎ、4時間のオークションが行われました。配信をストップさせる予算消化率の閾値やCTRの予測値を競技中に変更している人が結構いて、オークション中もみんな忙しそうでした。また、それと並行する形で自分が作ったDSPのこだわりポイントを紹介するプレゼンをしました。先輩社員からクリティカルな質問がたくさん飛んでましたね。その後、先輩社員からの総評がありました。個人的に心に残ったのは、情報を探すときには公式のdocumentからの情報とブログや友達から聞いたインフォーマルな情報のバランスを考えようという話でした。

 

結果発表

結果発表では、利益賞上位3人とロジック賞、アーキテクチャ賞が発表されました。僕は利益賞1位になりました!広告主ごとの期待予算消化時間を計算し、ちょうど4時間でその予算を消化できるようにCPMを競技中に調整したことがこの結果につながったのだと思います。それによって、競技途中で予算を消化しきるなどして残りのオークションに参加できなくなるという機会損失を回避できました。とはいえ、同期に教えてもらわないとそもそもDSPが完成しなかったので、みんなに感謝です。