RecSys'18@Vancouver trip report

10月上旬にRecSys'18というレコメンデーション分野の国際会議に初参加してきた。出張報告がてらに聴講した内容をまとめる。twitterに記録していたので文章はそこから起こした。時差ぼけもあり、全部は聞けていないので悪しからず。

レコメンデーション分野はNetflixSpotify、Hulu、Pandora、Criteoなどインダストリでの研究が盛ん。実データを持ってたり、実際にビジネス適用しているので研究背景に説得力がある。 Industrial Sessionもそうだったけど推薦だと企業もエッジな研究していて良い..(critriaがどこも異なるのでやりやすい )*1日本の推薦業界の人もこの辺まできて発表してほしい。 Netflixにおける取り組みなど企業の取り組みの方がアカデミアよりも進んでいるところもあった。日本からもGyao!(Yahoo!J)、U-next、Abema、リクルート、スマートニュースから聴講参加者がいましたが頑張ってください*2

全体的な会議の傾向として、サービスの内容に応じて色んなCriteriaが考えられるため、様々なオレオレ評価指標が導入されているという印象を受けた。 メンタルワークロード、ethnicity(社会的倫理)、serendipity、HCI的側面とか..

今年から論文はopen accessになったらしい(great)。過去最大規模ということだが参加者は4-500名ぐらい(登録は800名以上)でシングルセッションで優れた発表のみがoral発表になっているため、移動の苦もあまりなく楽しめた。このぐらいの規模がコンパクトで良い。

我々のApache Hivemallに関するデモ発表のpaperはこちら動画もある。

  • Day1: Session 1 Why Did I Get This? Explaining Recommendations
  • Day1: Industry Session 1: Core Algorithms
  • Day1: Paper Session 2: From Browser to Buyer: Online Product Recommendations
  • Day2: Opening Keynote
  • Day2: Paper Session 3: Learning and Optimization
  • Day2: Industry Session 2: System Considerations
  • Day2: Paper Session 4: Travel and Entertainment
  • Day3: Paper Session 5: Towards RecSys that Care
  • Day3: Paper Session 6: Does it Work? Metrics and Evaluation
  • Day3: Demoセッション
  • Day3: Paper Session 7: Beyond Users and Items
  • その他気になったポスタ
  • まとめ

*1:例えば、動画の視聴回数で推薦すると釣り動画とかがあるので視聴時間を正規化してレコメンドに使うとかだけでも異なるcriteriaになる。

*2:TDはデータは沢山あるがお客さんのデータなので発表とかには...orz

続きを読む

TDサマーインターン(2018年) 募集開始

今年もトレジャーデータでサマーインターンの募集を開始しました。

締め切りは6/30(PDT)です。 ただし、6月1日より選考を開始し、各テーマ定員になり次第応募を締め切りますのでご注意ください。

jobs.lever.co

インターンの内容や応募については過去のインターンのまとめ記事も参考にしてください。

2015年のインターンのまとめ。待遇面や最終発表について参考になるかと思います。

myui.hateblo.jp

続きを読む

2017年を振り返る(山登り)

こんにちは。好きな本(山ジャンル)は山野井泰史の「垂直の記憶」*1植村直己 の「青春を山に賭けて」*2、ちょっと前からハマっている漫画は「山と食欲と私」のmyuiです。2017年の山行を振り返ります。

青春を山に賭けて

青春を山に賭けて

TD登山部のメンバにtakutiとakama氏を引き入れて何個か一緒に登った。特に長野出身のtakutiは結構ハマっているようで、今回のエントリは彼の記事に影響されたものであり、記録がてらに記憶を振り返り、印象に残っている山行を紹介します。

1月 御岳山

御岳山に初心者の友人と登った。何度か行っている日向山に縦走してつるつる温泉に降りるコース。雪が少し振ってきたのを覚えている。実はこのコース、11月にもTD登山部のメンバとUSオフィスの同僚と再び登った。

f:id:myui:20180110003802j:plain
御岳神社

3月 御在所岳

名古屋出張の序でに、元TD登山部で現在は名古屋に住んでいる元同僚S氏と久しぶりにあって、三重の御在所岳を案内して頂いた。途中から雪が振ってきて雪山登山となり、帰りはケーブルカーで下山。

f:id:myui:20180110005638j:plainf:id:myui:20180110005642j:plain

元同僚S氏とはTDのオフィスがまだ丸ビル34Fの狭い部屋の頃、何度か冬山登山をご一緒した。冬の北横岳、硫黄岳、涸沢、鬼怒沼。どれも印象に残っているし、学生時代から一人登山部だったという彼のおかげで本格冬山にも挑戦できた。また、いつか冬山をご一緒したい。

f:id:myui:20180110010512j:plain

4月 鍋割山

キナバル山に向けた足慣らしを兼ねて、takutiと鍋割山に登り、名物の鍋焼きうどんを食す。takuti、初めての本格登山(?)

f:id:myui:20180110012340j:plain

5月 キナバル山、男体山

海外登山はスコットランド留学時にBen Navis、台湾出張時に台湾の象山、あとはUSオフィス滞在時にカリフォルニアのCastle Rock State Parkのトレッキングぐらいしかしたことなかったのだが、4000m以上の海外登山を一度してみたいと常々思っていたので、勢いでツアーに登録。結果、素晴らしい景色やボルネオの自然に出会えたので本当に行ってよかった。

f:id:myui:20180110011319j:plain

キナバル山は標高4,095.2mでマレーシアの最高峰。富士山より高い山で体力的な不安もあったが、ポーターもいるし、途中の山小屋で一泊して高地順応できてスケジュール的にも余裕があったので杞憂であった。日の出を目指して日帰り弾丸で登った富士山の方がもっとキツい。

同じツアーの参加者の方がyoutuberで動画をアップされていたので、たまに見返して思い出に浸っている。


2017GW マレーシア・キナバル山の旅 Mt.Kinabalu

takutiがまた山に登りたいということで、TD登山部の訓練で男体山へ。登り出しは雨でしたが、waterproof登山ウェアを実際に利用する経験もつめてよかったのでは。

f:id:myui:20180110020647j:plain

6月 赤岳

テントでゆっくり本でも読もうと月曜に休暇をとって日曜に行者小屋のテント場で一人テント泊。翌日、未踏だった八ヶ岳最高峰の赤岳に登る。

f:id:myui:20180110020419j:plain

ちなみに愛用のテントはアライテントのエアライズ1。モンベルのステラリッジ2と使い分けています。

7月 燕岳、天狗岳

2度目の燕岳。前回は日帰りだったが、今回は燕山荘で一泊。結局、今年はアルプスにはこの燕岳にしかいかなかった(しょぼん)。

f:id:myui:20180110012656j:plain

takutiと天狗岳。ほんとは黒百合ヒュッテに一泊予定だったが、寝坊して遅れたため山梨でほったらかし温泉に入ったり、甲州ワイン牛のハンバーグを食べたりしたのち、翌日、夜明け前からヘッドライトつけ、急いで黒百合ヒュッテまで登ってtakutiに合流。二度目の天狗岳。今回の天狗岳はあいにくの天候でした。苔生す道を堪能。

f:id:myui:20180110013018j:plain

8月 四阿山根子岳

長野旅行の序でに、四阿山に登り、百名山ハント。四阿山自体はあまり印象深くはなかったが、根子岳への縦走路の方は山容が綺麗でよかった。

f:id:myui:20180110013524j:plain

9月 屋久宮之浦岳日光白根山

屋久島旅行の序でに、淀川登山口から日帰りピストンで登る。天候が曇りがちでいまいちだったので、翌日のスノーケリングの方がよい記憶として残っている。

f:id:myui:20180110014640j:plain

TD登山部のメンバをよい景色の山に連れて行ってあげようと思い日光白根山へ。2度目の日光白根山だが、前回と同様、天候に恵まれ、五色沼が綺麗が拝めた。

f:id:myui:20180110015921j:plain

山と食欲と私」の影響かMSRのスキレットを使ってレトルトカレーに炒めた野菜を入れて野菜カレーにしたり凝ったことをしました。

10月 栗駒山

シルバーウィークに紅葉ハントに登ってきた。栗駒山百名山ではないが、紅葉が見応えある山ということで登ったがそのとおりで良い山行であった。 予定していた登山ルート(笊森分岐)が震災の影響で潰れていて、同行者には悪いが結局戻って往路と同じ道を引き返すこととなった。最新のルート情報を集めましょう。。。

f:id:myui:20180110015732j:plain

11月、12月

TD登山部のメンバ+USの同僚と御岳山を軽いハイキング。12月には三頭山を都民の森から周遊。

最後に

冬山登山や海外登山までご一緒できるエンジニアをTD登山部は募集中です。We are hiring! *3

*1:登山をしない人にもおすすめです。精神力が凄いし、それを表現する文才あると思う。

*2:山ジャンルには収まりきらない…

*3:2017年の仕事の振り返り記事もかかないと!

Treasure Data Summer Intern 2015

8/3〜9/30 の2ヶ月間、トレジャーデータ(以下、TD)ではSummer Internで3名の学生を受け入れ、その受入責任者を担いました。 初めての試みでしたが、いずれの学生も優秀で与えられたタスク*1を成功裏にこなしてくれました。

熱が冷めないうちに、来年度のためにもここに内容をまとめます。

TDインターンの特徴

TDインターンの特徴は、基本的に開発成果をオープンソースソフトウェアとして公開することです。Fluentdnanosecondサポートマルチプロセスでのソケット共有HivemallへのFactorization Machineの実装それぞれgithubでオープンに開発しております。

成果を全てオープンソースとすることはTD的には利点ばかりではありませんが、インターン生にはインターン期間が終わっても自身が携わったプロダクトに興味を持って頂けえば、と思っております。

インターン生にも2ヶ月しっかりと開発に携わって頂きました。社内Slack部屋などで普段のTDエンジニアリングの雰囲気を肌で感じて頂けたのではないかと思います。

*1:それぞれに成果が見込めるだろう小さめのタスクと挑戦的なタスクの二つをそれぞれに設定。

続きを読む

Treasure Dataを支える(中の人に必要な)技術

Treasure Data(以下、TD)に入社して早2週間が経ちました。

入社してから、平成14年度IPA未踏ユース第1期で同期でスーパークリエイタであった西田さんがTDで働いているのを知りました。MapReduceHadoopが登場した頃、「Googleを支える技術」という技術書*1でお世話になったのですが、いつの間にかTreasure Dataを支える人になっていたんですね*2

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

TDではおかげさまで結構なペースでお客さんが増えていて事業規模拡大に備えて幅広い職種で人材募集中です。今回はTDのバッグエンド側で働く人材に求められている技術やスキル(どのような人がフィットするのか)について、2週間働いて見えてきた部分を紹介します*3

*1:よく書けていて、当時、Googleの新人もこれを読んでそのインフラを学んだとかなんとか。

*2:古橋くん含め、TDには、私の把握している限りではIPA未踏のスーパークリエイタが3人います。

*3:私なりの理解で書いているのでTreasure Dataで働くことに興味の持った方は人材募集をよく読んでapply下さい。

続きを読む

Treasure Dataに入社しました

3/31付けで4月から国立研究開発法人になった産業技術総合研究所を退職致しまして、4/1からTreasure Dataに入社しました。第一号のResearch Engineerとして東京オフィスで働きます。

CTOの太田さんから2013年頃に一度お誘いを受けておりましたが、2014年になってまた声を掛けて頂き、2年越しでの入社となりました。

なんでTreasure Data?

現在のTreasure Dataでは、毎秒45万レコード、4,000億レコード/日ものデータが投入されていて、Hiveで処理されるデータ量も3+ペタバイト/日と急速な発展をとげております。研究でもこの規模のデータ量を扱うことはGoogleFacebook等の一部の研究者を除いてはありませんから、非常に挑戦的な課題に取り組める環境であることにDB研究者として第一に魅力を感じました。優秀なエンジニアが集まっていて刺激的な環境であることや報酬面ももちろん魅力的です :-)

続きを読む

Prestoのcodegen

以前、Prestoバイトコード生成部分のソースコードを読んだので、hack再開時のためにメモしておく。

  • コード生成にはobjectwebのASMを利用している。Parser generatorはANTLR

  • ExpressionCompiler#internalCompileFilterAndProjectOperator codegenしているのはfilter句とprojection句のみ。Joinは残念ながらcodegenされていない。

  • SqlStageExecution#startTasks evaluate planの中身はremote taskというのがsubStages(StageExecutionPlan)があると作られる

  • join関係のrewriteはPredicatePushDown。Volcanoのexchange抽象operatorでremoteの実行を抽象化。LocalExecutionPlannerのvisitJoinあたりで実行operatorを生成

  • operatorがstageddbみたいにblocking queueみたいので独立に動いている(?) inputが必要なのはpageというのをやりとり

  • PageBuilderでPageを生成。Pageはtuplesのplaceholder

  • Operator#getOutput がeval相当。HashJoinOperatorはbuild/probeのin-memory hash join。 grace hash joinもサポートしていないので、バケットがメモリに乗り切らないと駄目な…な実装ですね*1。ChannelIndexのSlice(nio.bytebuffer)にtupleを保持

  • Sliceはnon-jvmheapにメモリを確保するairliftというライブラリを利用


合わせて読みたい。

*1:大量メモリを確保できる前提なのでしょう