2018-10-22 15.02.01

アドテク本部所属の金子です。先日、アドテク本部配属になった新卒10人が企画運営を行って短期インターンの「アドテクコンペ」を開催したのでその紹介をしたいと思います。

アドテクコンペとは

アドテクコンペは、学生4人が1チームになって計3日でDSPというプロダクトを作ってそのパフォーマンスについて競うという趣旨のものです。サーバーサイドエンジニアとデータサイエンティストがチームを組み、1 ~ 2日目と3日目の午前中に開発、3日目の午後の4時間を使って本番競技を行うというインターンです。盛りだくさんでハイレベルなインターンにも関わらず,今回はなんと9チーム、34人ものインターン生が参加してくれました!

アドテク領域はそもそも学生にとって馴染みがない上に、現在のアドテク領域は細分化と多様化が進んでいるため、3日間という短い期間で学生にアドテク領域のことを理解してもらうことは難しいです。そこで、まずは現在のアドテクにとって、最も基本と思われるインターネット広告の取引方法の一つであるRTB(Real Time Bidding)という仕組みを理解してもらう事で、アドテク領域で必要とされるデータ分析や負荷分散、非同期処理といった基本技術がどう利用されているのかを知り、アドテクを体感してもらう事が狙いでした。RTB、特にDSPは以下の画像のような仕組みで説明されます。

 RTB説明

まず、Webサイトにアクセスが起きると、広告枠に埋め込まれたタグからSSPというオークションの開催主へアクセスが生じます。

RTB説明3

次に、SSPからDSPに入札リクエストが送られます。

RTB説明3

各DSPではクリック率の予測が行われ、広告枠の入札額を決定します。

RTB説明4

各DSPで入札額が決定されると、次にDSPによる入札が行われます。そして、オークションで勝利したDSPが広告を表示する権利を得ます。

RTB説明5

上記は広告システムのビジネスモデルの簡単な図解です。このように、RTBのシステムのうち、DSPを作ることで、システムだけでなく現在のアドテク領域のビジネス的な側面も理解することが可能になっています。

アドテクコンペのDSPの仕様

  • 2000リクエスト/秒
  • レスポンスは100ミリ秒以内, それ以上はオークションに参加できない
  • 20 広告主 / CPCは広告主ごとに異なる
  • インフラのプラットフォームにはGCPを利用。予算は(常識的な範囲を守れば)無制限

2000リクエスト/秒という数字がどれくらいの流量かあまり想像がつかないかもしれませんが、1日で換算すると約1.7億リクエストにもなります。ちなみに一般的なDSPは数万〜数十万リクエスト/秒といった規模になるのでこれでもコンペ用に簡単にしています。
100ミリ秒というレスポンスタイムの制約もアドテク業界では一般的な制約ですが、一般的なウェブアプリケーションのレスポンス速度の事を考えると、短さに驚かれるかと思います。

アドテクコンペのデータサイエンティストのタスク

  • 事前にクリック率予測用の学習データが渡される
  • 学習データの中身は運営側がシミュレーションで生成した過去のDSPのログとユーザーのデモグラデータ(性別、年齢など)
  • 上記のデータを元に、クリック率予測のために必要なモデルを構築する。

データサイエンティスト側で注意しないといけないのは、DSPの仕様の「レスポンスは100ミリ秒以内」という制約を守るようなモデルを構築しないといけないことです。予測精度を追い求めてこの制約を守れないモデルを作ってしまっても、オークション自体に参加できません。そこで、データサイエンティストはサーバーサイドと協同してDSPを作っていく必要があります。「データサイエンティストとサーバーサイドエンジニアの協力」というのが、インターン生にとって普通のインターンでは得られない経験になっています。

アドテクコンペの採点基準

  • 100点満点
    • eCPC(1.5点×20広告主)=(30点)
      • 1クリックあたりのコスト
      • 落札金額の合計 / クリック数
      • eCPCが低いチームほど高得点
    • 予算消化率 1点×20広告主=(20点)
      • CPC * クリック数 / 広告主予算
      • 100%に近いほど高得点
    • 完走率 (20点)
      • 総有効なレスポンス数 / 総リクエスト
      • できるだけ多くのリクエストを捌き、機会損失をどれだけ減らせたかの得点
    • プレゼン点 (30点)

 単純な利益率や予算消化などのビジネス的な側面、完走率といったサーバーサイドがしっかりレスポンスを捌けるDSPを作れたかという側面、プレゼン点というデータサイエンティストが「どういう理由で」そのような分析を実行したかを説得的に説明できたかという側面など多様な観点での視点を総合した評価になっています。

競技開始! ~ 当日の様子~

開発作業は1〜2日目はTECH PLAY SHIBUYA、3日目はインターン生にも普段自分たち社員が働いている空間の空気を味わってほしいと言うことで、アドテクスタジオのオフィスで行いました。

競技開始前の説明

競技開始前の社員からの説明シーン

作業風景

1 ~ 2日目のTECH PLAY SHIBUYAでの作業風景。みんな集中して作業や議論をしています。

3日目

3日目のアドテクスタジオのオフィスでの作業風景。

競技中風景

競技開始直後。運営がインターン生のDSPのパフォーマンスを常に監視しています。

プレゼン風景

プレゼン中のシーン。各チームの独自の色が出たアーキテクチャや分析内容の発表でした…!

競技結果

総合点やロジックなどの観点から、計4チームが受賞しました!

ロジック賞

データサイエンティスト側のロジックが評価されて受賞に至りました。XGboost , LightGBM, ロジスティック回帰のアンサンブル学習を実装し、「これがどういうパフォーマンスを出すのか、なぜ必要なのか」ということを可視化などを交えてハイレベルなプレゼンを行ってくれました。Kaggleなどのデータ分析コンペでもアンサンブル学習を行う競技者はいますが、正直実装してくるインターン生がいるとは思わなかったのでとても驚きました。

ロジック賞

受賞したインターン生

メンター特別賞

独自性やアイディアが評価されて受賞に至りました。他のチームが一切考えていなかった予算のペーシングということを実践したり、予測ロジックにEmbeddingを使用するなど、上手くいくかは分からないことを短期間でしっかり調査した上で実行しようとしたチャレンジングな姿勢が非常によかったです。

メンター特別賞

受賞したインターン生

総合点2位

競技結果

総合点計算のために出していたTableauです。GCPでデータを集計してリアルタイムでTableauで監視していたのですが、競技時間中に常に秒間2000リクエストを捌ききるなど高い安定性が総合点2位という結果に繋がりました!

総合点2位

受賞したインターン生

総合点1位

競技結果その2

こちらもTableauの結果。このチームは自分たちでパフォーマンス監視用の画面を作成して予算管理などを行い、データサイエンティストチームのロジックも非常に優秀で高い利益率を叩き出しました。

総合点1位

受賞したインターン生(なんとサーバーサイド側の1人は高校生でした。高校生とは思えないプレゼンや技術力に社員全員が驚愕していました…!)

競技終了後

懇親会

終わった後の懇親会

集合写真

終了後の写真

新卒集合写真

企画運営したアドテク18新卒の集合写真

終わりに

アドテクスタジオでは今回のアドテクコンペ以外にも年間を通じて長期インターンを募集しています。この記事を見て興味を持たれた方はぜひご応募ください!