Kaggle Tokyo Meetup 2023 参加記
この記事は Kaggle Advent Calendar 2023 の2日目の記事です。
帰ってきた!Kaggle Tokyo Meetup!
コロナ禍で2019年以来開催できなかった Kaggle Tokyo Meetup が約4年半ぶりに開催されました!この間に幾人もの方が Kaggle を始め、あるいは Kaggle を去り、また幾人もの方が tier を上げたことでしょう。 (僕は Master にはなれたものの未だに GM になれず...*1 )
2か月前に行われた関東Kaggler会と同様に本当に久々に行われたオンサイトイベントであり、幸運にも参加することができました。非常に楽しくまた学びのある機会だったので、振り返りも兼ねて参加記(という名の感想)を書こうと思います。
因みに会場は奇しくも4年前に Kaggle Days Tokyo が行われたのと同じ Google 六本木オフィスであり、その時のノベルティのTシャツを着ていたので色んな思い出がぶわっと溢れ出しました。また、会場が本格的過ぎてセッションのガチ感が半端なかったです。
Kaggle Days の会場と同じだから懐かしさが溢れ出してる(ついでに言うと今日はKaggle Days の Tシャツを着ている) #kaggle_tokyo
— 俵 (@tawatawara) November 26, 2023
というか会場のせいでセッションのガチ感が半端ない #kaggle_tokyo pic.twitter.com/tZC2hirRKh
— 俵 (@tawatawara) November 26, 2023
また本イベントはありがたいことにアーカイブでの視聴が可能です!興味のある方は当日の Tweet まとめと併せてライブ感を楽しみつつ是非ご覧ください!
目次
- メインセッション
- オープニングトーク by smly さん
- 招待講演1「火山コンペ準優勝ソリューション」by yukke42さん、tattakaさん、mipypfさん (Vesuvius Challenge 準優勝チーム)
- 招待講演2「5 x 3」by yiemon773さん, charmqさん, kenshinさん (Identify Contrails 3位チーム)
- 招待講演3「CommonLit Solutionの紹介と考え方- Fulltrain戦略と(Seed/Model)Ensembleの可視化 -」by chumajin さん (CommonLit 入賞チーム)
- 招待講演4「LLM参戦記」 by mitmulさん, yahataさん, kakuさん, yiemon773さん (LLMコンペ入賞チーム)
- スポンサーセッション
- LT
- 懇親会
- 終わりに
メインセッション
オープニングトーク by smly さん
資料: TBA
概要
(4年ぶりの開催ということもあってか) Kaggle 歴10年以上の レジェンドである smly さんが活き活きと本イベントの趣旨や各セッションの概要、会場の説明などを軽快なトークでしてくださいました。またその知識の深さから各発表後のコメントも深みがあり、司会として最高でした。ありがとうございます!
Kaggle Tokyo Meetup 誕生秘話(伝説の第0回が開催された経緯)などの面白い話や、どのコンペに興味がありますかという会場への投げかけなど*2 これからの発表に備えて場を暖める良いセッションでした。
因みに参加者(および応募者)は年々増えており、今回の参加者は発表者含めて120人強で tier ごとの人数はこんな感じだったようです。GM 多すぎィ!
Master が一番多いw
— 俵 (@tawatawara) November 26, 2023
#kaggle_tokyo pic.twitter.com/Pqkj5J7h97
そして忘れちゃいけない大切なこと。
ルールを守って楽しく Kaggle! #kaggle_tokyo
— 俵 (@tawatawara) November 26, 2023
いついかなるときでも private sharing は行わないように気を付けましょう。
招待講演1「火山コンペ準優勝ソリューション」by yukke42さん、tattakaさん、mipypfさん (Vesuvius Challenge 準優勝チーム)
概要
約2000年前の火山の噴火によって炭化したパピルスの巻物を読み解くのを目的としたコンペ、Vesuvius Challenge - Ink Detection の 2nd Solution とチームでの取り組み方の紹介。僕は参加していなかったので知らなかったのですが、可視化を含めた host による提供情報が豊富で、以下のような特設サイトもあったそうです。
本コンペのタスクは炭化した巻物の 3D スキャンデータから文字を表している 2D のバイナリマスクを予測するものだったのですが、そもそも3個しかないスキャンデータ(一個一個が巨大)からどのように学習させるかが肝でした。会場で特に反応があったのはラベルのバイナリマスクを思い切って 1/32 にダウンサンプリングしてしまうというアイデアで、質疑では以下のようなやりとりがあったのがとても印象に残っています。
「コンペの画像見たときに思いつきましたね」
— 俵 (@tawatawara) November 26, 2023
「天才ですね」
#kaggle_tokyo
また、学習データとなるスキャンデータが3つしかない中でどのように fold を切って学習を行い、どの fold で学習したモデルを最終サブに用いるのかという考え方も非常に参考になりました。データの種類が少ないケースは特に医療系の画像コンペではあるあるなケースで、非常に応用の効く考え方だと思っています。デカい画像データをタイルでスライドさせて学習・推論させるコンペはめんどくさくて今まで避けてきたのですが、この発表を参考に挑戦してみたくなりました。
モデル的な面では俗に2.5Dモデルと呼ばれるアーキテクチャが強力で、学習では Exponential Moving Average(EMA) を始めとした様々な正則化が有効だったそうです*3。
因みに EMA は timm に実装されているやつがとても簡単に使えるのでおススメです。
PyTorchのEMA実装はtimmのをよく使ってますね(nn.Moduleの方)https://t.co/lvmGBrxfBK
— tattaka (@tattaka_sun) November 27, 2023
あと、これは発表者のろんさんが言われていて共感しかなかったのですが、EfficientNet (v1) を上手く使えた試しが無いので情報求ム!です。
お客様の中に EfficientNet をうまく使える方はいらっしゃいますか~?(僕もうまく使えたことが一回もない。v2 はまだいける) #kaggle_tokyo
— 俵 (@tawatawara) November 26, 2023
招待講演2「5 x 3」by yiemon773さん, charmqさん, kenshinさん (Identify Contrails 3位チーム)
資料: TBA
概要
めちゃくちゃ強すぎる PFN の3人の Kaggler が、外からは楽々と金メダルを獲っているように見えるが実際は体力の限界まで頑張って Kaggle をしているというのを 5つのコンペの経緯と共に語るという発表でした。
kaggle rank 41,40,8位が並んでるの強すぎる
— ぶる🦬 (@RedBull_7584) November 26, 2023
#kaggle_tokyo
本イベントの中で唯一パネルディスカッションという面白い形式を取っており、会場を大いに沸かせる楽しい発表だったと思います。
私自身、PFN の方々はいつも余裕で金メダルを獲っているというイメージがあったのですが、その裏側の血の滲むような努力や試行錯誤であったり、限界まで心身のリソースを投入していることがよくわかりました。ただでさえ能力が高い人たちなのにここまで努力されてしまっては凡人たる我々はどうすれば勝てるのか...という絶望感もちょっとだけありましたね。
因みにこのチームは一応 Identify Contrails to Reduce Global Warming の3位チームとして招待されたので、解法の詳細が気になる方は以下をご覧になって下さい。
また、有志による上位陣の解法まとめも公開されています。
招待講演3「CommonLit Solutionの紹介と考え方- Fulltrain戦略と(Seed/Model)Ensembleの可視化 -」by chumajin さん (CommonLit 入賞チーム)
資料
概要
生徒が書いた原文の要約を自動的に評価するコンペ、CommonLit - Evaluate Student Summaries の4位解法と、Ensemble の可視化で得られた知見や発表者(chumajin さん) の Kaggle への取り組み方の紹介。 chumajin さんのキャラクターと発表の上手さ、そして内容の面白さから、(会場が温まった来ていたのもあって)非常に質疑が盛り上がった発表でした。
single model の学習のさせ方として非常に面白かったのが①入力は要約文+原文とその他情報を用いるが出力の手前の pooling では要約文に対応する部分だけ使用する、② original prompt を入力内に含めて出力の手前の pooling でこの original prompt の部分だけ pooling する、というものでした。
①については、聞くと納得が行くのですがどうやって思いついたのか質問したところ「何回も試行しているうちに思い付いた」とのことで、時間をかけるほど暗黙知的に何らかの経験値が貯まっていくんだろうなあと感じました。 ②については、instruction tuning をしているわけでも無いのに score が上がるということで、非常に不思議かつユニークだと思いました。
Instruction tuningされてないDeBERTaでオリジナルプロンプトを追加して性能が上がるの不思議。#kaggle_tokyo
— Rabotni(kuma|熊) (@analokmaus) November 26, 2023
prompt を入れるのって LLM 以外でも出来るもんなんですね。何かしらで試してみたいです。
また、冒頭のコンペ概要で紹介されているようにこのコンペは train は 1つ、public test は 1つ、private test は 121 の原文を元に書かれた要約文がそれぞれデータセットになっており、これに対してどうやって shake 対策をしたかというのも大きな知見だったと思います。仮想の public/private を作って、各モデルの seed での性能のばらつきと seed/model ensemble の効果を確かめてサブを選んだのは見事でした。これだけ可視化した発表もなかなか無いので見所の一つだと思います。
招待講演4「LLM参戦記」 by mitmulさん, yahataさん, kakuさん, yiemon773さん (LLMコンペ入賞チーム)
資料: TBA
概要
LLM を用いて生成されたSTEMに関する5択問題を解くコンペ、Kaggle - LLM Science Exam の 4th Solution のにおいて、かなり特定の部分に絞った発表でした。昨今 Hot な LLMだっただけにコンペの開催が発表されたときにはかなり話題になったと思います。
問題文(prompt)とA~Eの選択肢(option)が STEM 分野の Wikipedia 記事からGPT3.5によって作成されたことが明記されており、上位陣の解法としては Retrieval-Augmented Generation(RAG) と呼ばれる手法を用いて、R の部分では dump された Wikipedia 本文から情報を引っ張ってくるのが常套手段でした。今回の発表ではこの R の部分において、高速に全文検索をおこなうために Elasticsearch をKaggle Notebook 上で動かす際の Disk I/O 最適化のための悪戦苦闘に絞って話されていました。
elasticsearch を Kaggle で見ることになるとは #kaggle_tokyo
— 俵 (@tawatawara) November 26, 2023
kaggleのソリューションでelasticsearch見たの初めてかも... #kaggle_tokyo
— hakubishin3 (@jy_msc) November 26, 2023
発表中に述べられていた通り Kaggle でしか使えないニッチな知識と言えばそうなのですが、普段ほとんど何も意識せず使っている Kaggle Notebook の裏側を(予想も含めた形ですが)知ることが出来て大変面白い発表だったと思います。
面白すぎる #kaggle_tokyo pic.twitter.com/a8LR01XcTR
— charm (@charmq00) November 26, 2023
また、最近「結局 RAG は Retrieval がめちゃ重要だよね~」という内容を時々見かけることがあり、PFNのもう1チーム(5位、llama2-70B を Kaggle Notebook 上で動かした(!))に勝利したことで計らずともそれを示す結果になったように思います*4。
elasticsearch+deberta vs llama2-70b #kaggle_tokyo
— charm (@charmq00) November 26, 2023
この発表のオチとしては、質疑において会場内から「もっと簡単に動かせる方法あったよ」というコメントがあったり、
ElasticSearch を kaggle notebook (kaggle kernel)上で動かす話、自分もやったのですが "/home/jupyter/" 以下で ES を動かすことでうまく動作させることができてました〜。
— セコン (@hotchpotch) November 26, 2023
整形してない雑notebookですが、もしかしたらどなたかの参考になれば。https://t.co/JZqOX1lJ3W
#kaggle_tokyo #kaggle
Kaggle Notebook の裏側について「この記事が参考になるのでは?」というコメントがあったりしました。
NVIDIA から出ている↓の辺りの情報が詳しい気がする
— u++ (@upura0) November 26, 2023
>Recently, we re-architected the backend service that provisions sessions for thousands of concurrent notebooks.https://t.co/wh7SnMpAbXhttps://t.co/Koi4WtOcPL#kaggle_tokyo
発表が行われたことでこういった知見を共有される機会が出来たというのもイベントの醍醐味かな~と思います。
勿論解法の全体が気になる方もいらっしゃると思うので、ぜひ以下をご覧ください。
また、このコンペについても有志による上位陣の解法まとめが公開されています。
スポンサーセッション
【Google様; 会場&サポート提供】「「極意本」サンプルコードをクラウド上で動かそう」by upura0 さん
資料
概要
何人かの方から u++さんに「転職したんですか!?」と質問があったそうですがそうではなく、ユーザ目線での発表をしてほしいと呼ばれたそうです笑
u++ さんが著者の一人である Kaggleに挑む深層学習プログラミングの極意 を紹介も兼ねてちょっとだけ題材にしつつ、Google の提供する GPU 付きのクラウドをお手軽な JupyterNoetbook/ JupyterLab で試せる三つの選択肢 (Kaggle Notebooks / Google Colab / Vertex AI Workbench) の違いを紹介するという発表でした。
この発表については Kaggle Advent Calendar 2023 の1日目の記事としてもまとめられています。
僕自身はオンプレマシンが(初期投資額や管理はともかく)色々楽だと思っていますが、「いきなりオンプレ買うのはちょっと...」という方には参考になるかと思います。
【TURING様; 配信サポート】「Turing 株式会社会社紹介~Kaggler の皆さんに知ってもらいたいこと~」by いのいちさん
資料: TBA
概要
Tech Blog*5 等の発信が盛んなので知っている方も多いと思われる TURING さんからの会社紹介。以下の3つを覚えて帰って欲しいとのことでした。
- Turing は自動運転を作ってます!
- GPU Cluster 作ります!
- LLM Accelerator 作ります!
1 の走行映像のみを入力に End-to-End Deep Learning で自動運転をやるは最早お馴染みで、そのために 2 の GPU Cluster(H100 x 96基!) は最近公表された情報でした。発表で言われていたように自分達でこの GPU Cluster を使い倒せるのは夢がありますね。3 の LLM Accelerator に関しては僕は初耳だったのですが、GPU Cluster と併せてどんどん面白くなっていく会社だと思います。 因みにもうすぐオフィスが大崎に移るそうで、お近くの方は遊びに行かれると良いんじゃないでしょうか?(多分 Kaggler をめっちゃ歓迎してくれます)
LT
LT発表1「GPT APIを使った広告テキスト生成コンペ@YANS2023に参加した話」by NSKさん
資料
標題の通りの珍しいコンペの概要とソリューションの紹介。
スライドを読んで頂けると分かると思うのですが、ただでさえ様々な制限、特殊なルール、(おそらく)初対面の方とのチーム、という要素を含んだコンペで制限時間が4時間は過酷だと思いました(僕だったらただベースラインを提出するだけで終わるかも...)。
NSK さんのチームは与えられた訓練データを一切使わず、人手でプロンプトに記載する few shot examples を作成 → 作成したプロンプトで生成した広告文を人手で評価 という手順を繰り返したそうで、最終評価が人間による定性評価なことにマッチした手法であるという一方限界まで修正を続ける戦いだったのではないかと想像されます。結果は惜しいことに2位で、1位チームの解法を見る限りセールスポイントの抽出が差分だったのかな~と思っています。
最後に今度発売する翻訳書籍(Human-in-the-Loop機械学習)の宣伝をされていたのですが、著者に入っていると知らなくてビックリしました。
概要
LT発表2「Kaggle Notebookの計算資源だけ使って画像コンペでソロ金を取る秘訣」by たっかーさん
資料
概要
タイトルがなかなかに「おっ」と期待させてくれるものですが、中身としては「現実は厳しいぜ...」と感じるものでした。昨今の Kaggle の画像コンペはデータ量が大きいものが多く、前提条件を満たすものは相当に少ないです。しかもデータ量が少なくても発表中に触れられていたように癖のあるコンペだったりするので...😢
時間の使い方やアンサンブル戦略については別に Notebook 縛り関係なく参考になる情報かなと思いました。GM に暇つぶしとして Notebook 縛りプレイをお勧めするのはクスっと来ましたね。
LT発表3「BigQueryで参加するレコメンドコンペ 」by shimacos さん
資料
概要
特徴作成がメモリとの戦いになるレコメンドコンペにおいて、 BigQuery 上で特徴を作ることのメリット・デメリットやクエリの Tips を共有してくれた発表。
僕が LB だけ評価のバグで破壊して*6撤退した Otto2 コンペもデータがめちゃくちゃ重かったのでかなり有効だったようです。 申し訳ないことに僕が BigQiery を使ったことないので「へー」ぐらいの気持ちで見ていたのですが、ちょうど使おうとしてる方には刺さったようでした。
うおお、やりたかったこととか知りたかったこととかどんどん出てきてめちゃくちゃためになります・・・!
— kotaro (@kotaro_holland) November 26, 2023
僕もそのうち BigQuery を使うことになったらこの資料のことを改めて見返そうと思います。
LT発表4「今年参加したコンペで学んだ教訓」by Anonamenameさん
資料
概要
直近1年ちょっとで一気に Gold 5枚取って GM になられた、 smly さん曰く「新進気鋭の Grand Master」こと anonamename さんの発表。共有してくださった教訓は、
- 最後の最後まで絶対に諦めない
- チームマージは信頼できる人と行う*7
- 信じた手法は徹底的に実験する
- シリーズもののコンペは過去コンペを隅々まで調査する
の4つ。1 は今日の2つ目のメインセッションを見ればわかるようにあのつよつよGM達も実践していることです。2 は僕自身は人見知りなこともあって知り合いとしか組まない(しかも相当稀)なのですが、過去コンペでの順位やら solution をちゃんと書いてるかなども信頼の基準になるかなと思っています。3 はハイパラ調整など含めなかなか「徹底的にやりきる」ことが難しいのですが、やりきったことが別のコンペでも活きるケースが多いのでちゃんとやりたいところ。4 については、これがあるからシリーズ物はめんどくさいんだよな~と参加を避ける傾向があったので勝手に反省してました笑
懇親会
(リアル・Twitter問わず) 知っている方も全体の何割かはいたので半分同窓会みたいな気持ちでしたが、Kaggle Days Tokyo 以来オンサイトで会ってない方に「え、転職したの!?」 と言われたりと長い時間が過ぎたんだなあとしみじみ感じました。今まで Twtter や Kaggle 上でだけ見たことあった方にも何人もお会いできて良かったです(例えば某R社の Kaggle Team の方々とか))。また、アイコンを見て「俵さんですか」と言ってもらえて会話に繋がるケースもあり、ツイ廃してて良かったなと思う瞬間でした。
話題としては今日の発表のことであったり、直近に参加したコンペのことであったり(前日には yukiCup なんてもの*8が開催されてましたね)、コンペ・仕事問わず今何やられてるんですかなど、話題は尽きませんでした。LT中の時間も含めると3時間は交流時間があったので流石に長いかな~と思ったのですが楽しくてあっと言う間でした。それでもまだ交流できなかった方・挨拶できなかった方も沢山いらっしゃるのでまた別の機会にお会いできれば良いと思います。
終わりに
率直に言って久しぶりの Kaggle Tokyo Meetup、めちゃくちゃ学びがあって楽しかったです!
発表自体の質がめちゃくちゃ高かったのも勿論ですが、オンサイトでしか感じられない現地での臨場感とか発生しない交流など、オンラインイベントにでは得られない刺激を沢山もらえて Kaggle への意欲がめちゃくちゃ高まりました。
最近は 関西 Kaggler 会、関東 Kaggler 会、yukiCup など、有志による Kaggler の(ハイブリッドな)オンサイトイベントが増えて来ています。まだ交流していない方々、ぜひまた別の機会でお会いしましょう!
*1:2019年の Kaggle Tokyo Meetup #6 参加時は Expert でした
*2:tabular が抜けてたなどのアクシデントはありましたが笑
*3:2.5DモデルとEMAは✈☁コンペでも大活躍しました
*4:勿論5位チームにも Retrieval の部分には工夫がありますが全文検索ではありませんでした
*5:https://zenn.dev/p/turing_motors
*6:https://x.com/tawatawara/status/1587837663226171392?s=20
*7:shimacos さん達が Otto2 で身を犠牲にして cheater であることを明らかにした人でした。ここでもか...