Nchasoの作業ログ

ML / ソフトウェア エンジニアのブログ

Cookpad Inc.さんの夏季インターンに参加してきました

はじめに

9/1 - 9/11にCookpad inc.さんのサマーインターン(研究開発コース)に参加してきました。

internship.cookpad.jp

志望動機と選考

志望動機

元々はクックパッドはエンジニアリング技術に力を入れている会社という認識でしたが、 以下のWebページをみて研究開発にも力を入れていることを知りました。

research.cookpad.com

海外でも70か国以上でサービスを展開しているので、自分の多言語の言語処理に関する知見が活かせるのでないかと考えたのが応募のきっかけでした。

また、過去にクックパッドインターンに参加していた先輩から インターン中に料理を作った話を聞き、楽しいインターンのイメージがあったのも1つの理由です。 (コロナの影響で今回は料理は作りませんでした。)

選考について

選考フローは書類選考→面接→合否連絡でした。

選考時には、クックパッドのレシピ翻訳に関する既存研究の論文を読み、改善できそうな手法を提案しました。

今回の夏の就業型インターンシップ(研究開発コース)に参加したのは僕一人しかいないらしく、無事通過できてとても幸運でした。

何をしたか

クックパッドアプリ ではレシピを書く際に以下のような材料予測機能があります。

ペペロンチーノの材料推薦

このような機能を実現している「レシピタイトルから材料を推薦するモデル」の改善を行い、作成したモデルで材料を予測するAPIを開発環境にデプロイしました。

モデルの改善

Kerasで実装された既存のモデルをPyTorchで全て実装し直し、工夫を加えた新しいアーキテクチャで精度が改善されていることを定性的・定量的に示しました。

新モデル作成後は、以下のスライドのデプロイフロー(41ページ以降)を体験させていただきました。

speakerdeck.com

学習バッチの実装

定期的にRedshiftからレシピデータをダウンロード→モデルを学習→s3にアップロードするような学習バッチとして動作するコードを実装しました。

AWS EC2上で開発作業を行いました。 学習バッチにしろ、後述する推論APIにしろ、基本的には全てdockerのコンテナ上で動作するようになっていたのでDockerfileを書いたりもしました。

作成した学習バッチのメモリがのりきらず、メモリ削減に取り組んでいましたが、時間の関係で実際のデプロイは断念しました。

推論APIのデプロイ

レシピタイトルを含むリクエストを送ると材料群が返ってくるような推論APIflaskを用いて実装し、開発環境へのデプロイまでを行いました。

部署の方々に推論APIのレビューをしていただいたり、デプロイのためにインフラチームにプルリクを送ったりと、実際にデプロイするまでのプロセスを体験することができました。

オフィス

オフィスは恵比寿ガーデンプレイスの12階にあります。

入口

キッチン

社内のcookpad mart

まとめ

2週間という短い期間でしたが、新しい技術をたくさん学べて圧倒的成長ができたインターンでした。

様々な技術に触れる中で、エンジニアとして生きていくにはML関連の技術以外にも強みを持った方が良いことを痛感しました。

このような状況の中、インターンを実施してくださり本当にありがとうございました。