---
title: EEDI コンペ参戦記 - 関東kaggler会#3 kaerururu
tags: 
author: [kaerururu](https://convert.docswell.com/user/kaeru_nantoka)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/GE8RQ5ZGJD.jpg?width=480
description: EEDI コンペ参戦記 - 関東kaggler会#3 kaerururu by kaerururu
published: February 13, 25
canonical: https://convert.docswell.com/s/kaeru_nantoka/53GLVL-2025-02-13-182323
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/GE8RQ5ZGJD.jpg)

Eedi コンペ参戦記
kaerururu
from
terekaerumasahmet


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LELKXYDXJR.jpg)

目次
自己紹介
コンペ参戦記
まとめ


# Page. 3

![Page Image](https://bcdn.docswell.com/page/4JM2LNP3JW.jpg)

自己紹介
名前: かえるるる
仕事: MLE
趣味:
,
, kaggle
kaggle: Competitions Grandmaster
NLP、画像系のコンペが好き
Discussion メダルちまちま集めるのにハ
マってます


# Page. 4

![Page Image](https://bcdn.docswell.com/page/PJRMKD1RE9.jpg)

参加コンペ (抜粋)
•
6年半で 61個のコンペ参加
•
•
22枚のメダル
NLP コンペが比較的得意
•
w2v 時代 ~ deberta 時代 ~ LLM


# Page. 5

![Page Image](https://bcdn.docswell.com/page/PEXVL1YY7X.jpg)

計算環境
Eedi コンペ参加時の計算環境
•
自宅マシン
•
•
TitanRTX x2 48GB (写真→)
クラウド (自腹)
•
Lambda Cloud H100 インスタンス (80GB)
かっこいい！


# Page. 6

![Page Image](https://bcdn.docswell.com/page/3EKQL234ED.jpg)

コンペ概要


# Page. 7

![Page Image](https://bcdn.docswell.com/page/L73P34GDE5.jpg)

タスク概要
数学の多肢選択問題が与えられる
不正解の背景にある誤解がどのようなもので
あるかを予測
誤解ラベルの候補 (2,587件) が用意されてい
て、この中から選択
kuto-san のまとめ記事 がわかりやすい
「四則演算の順番に従わず、
左から右に計算する」
という誤解が隠れている


# Page. 8

![Page Image](https://bcdn.docswell.com/page/87DL4Q12EG.jpg)

データ概要
{train/test}.csv
QuestionId に対して、複数の Answer と MisconceptionId が紐づいていた
横持ちのデータを縦持ちに変換して利用するのが主流だった (train_long)


# Page. 9

![Page Image](https://bcdn.docswell.com/page/VJP2MLQLJ8.jpg)

データ概要
misconception_mapping.csv
2,587件の Misconception
しかし、38% は欠損 (983件)
csv はスプシで EDA してます


# Page. 10

![Page Image](https://bcdn.docswell.com/page/2EVD9Q56EQ.jpg)

評価指標と提出方法
Mean Average Precision @25
各質問-誤答のペアにつき、誤解の候補を
25個提出できる
予測の順位が大事


# Page. 11

![Page Image](https://bcdn.docswell.com/page/57GYZW627L.jpg)

7th place solution
チームメンバーそれぞれのパイプラインの Rank Average + 後処理


# Page. 12

![Page Image](https://bcdn.docswell.com/page/4EQML349JP.jpg)

コンペ参戦記


# Page. 13

![Page Image](https://bcdn.docswell.com/page/KJ4VD1LRE1.jpg)

はじめに
期間ごとに、考えていたことや取り組んでいたことについてお話します！


# Page. 14

![Page Image](https://bcdn.docswell.com/page/LE13ZGLVJG.jpg)

何もわからない期
やったこと
•
sinchir0-san の公開 notebook で始める
•
•
tfidf retriever + debertav3 reranker と BGE retriever
sinchir0-san の BGE retriever が base の takaito-san のスコアが超えられない
•
→ 何もわからなくなる
•
そもそも transformers の Trainer の挙動がわからずキャッチアップ
•
EDA で misconception の欠損に気づく


# Page. 15

![Page Image](https://bcdn.docswell.com/page/GEWP9KV3J2.jpg)

何もわからない期
考えていたこと
•
Zero-shot Qwen2.5 32B 複数回実行で 0.36 超える公開 notebook 登場
•
•
•
→ もしや LLM の finetune 必要なのでは...?
過去問で素振りしよう
•
かねてから LLM finetune をどこかでやっておきたかった
•
評判のよかった atmaCup17 の 1st place solution にしよう
misconception の欠損対策は後でやろう


# Page. 16

![Page Image](https://bcdn.docswell.com/page/47ZK9Z4G73.jpg)

Retriever + Reranker に気づく
考えていたこと ①
•
baseline notebook に retriever + reranker があるのに、スコア高めの公開 notebook は
retriever only model ばかりだった
•
retriever は公開モデルで固定して reranker を gemma2 を試そう


# Page. 17

![Page Image](https://bcdn.docswell.com/page/YJ6QKZ3QJV.jpg)

Retriever + Reranker に気づく
やったこと ①
•
retriever は公開モデルで固定して reranker として gemma2 の finetune
•
retriever の候補を負例、正解ラベルを正例として「どちらが誤解として適切か? yes,
no で答えよ」の NSP で学習
•
2B と 9B を試して、9B が当たる (0.30 → 0.416
)
•
公開 notebook でハイスコア retriever が更新される度に、差し替え
•
unsloth, sfairXC など色々なモデルを試す
•
0.492 (491min) まで上がる


# Page. 18

![Page Image](https://bcdn.docswell.com/page/GJ5RPWL274.jpg)

Retriever + Reranker に気づく
考えていたこと ②
•
reranker の qlora tuning は時間も GPU も必要
•
一人では厳しそう、チームマージしたい
•
チームマージに備えて、自分の推論パイプラインの高速化をしておかないと
•
過去コンペサーベイしよう
•
関西 kaggler 会参加者の X の呟きから vllm で推論すると早くなるらしい


# Page. 19

![Page Image](https://bcdn.docswell.com/page/LE3P34L1J5.jpg)

Retriever + Reranker に気づく
やったこと ②
•
lmsys など他の LLM 系のコンペの解法をサーベイ
•
retriever を cuda:0 と cuda:1 とで並行実行するように修正
•
現在の推論コードを vllm で書き換える &amp; 精度をある程度 keep する検証
•
チームマージ打診
•
睡眠コンペ#1 で一緒に戦った tereka-san に声をかけ、快諾してもらう


# Page. 20

![Page Image](https://bcdn.docswell.com/page/8EDL4QNKJG.jpg)

model の巨大化、高速化
やったこと ①
•
チームマージ
•
•
欠損への対応は tereka-san がやっていてくれた
tereka-san が reranker で qwen2.5 32B の実験を開始、少量データでの学習で kaeru の
gemma2 9B の当時ベストスコアを超える (0.501 → 0.522)
•
kaeru はひたすら推論コードの blash up
•
vllm による高速化と共通部分の流用


# Page. 21

![Page Image](https://bcdn.docswell.com/page/V7P2ML5378.jpg)

model の巨大化、高速化
チームで話していたこと ①
•
当時の金圏が 0.6 超え
•
一部データで 0.522 なら、全データなら期待できるのではないか


# Page. 22

![Page Image](https://bcdn.docswell.com/page/2JVD9QPNJQ.jpg)

model の巨大化、高速化
やったこと ②
•
qwen2.5 32B + 全データで学習で金圏へ (0.522 → 0.607)
•
enable_prefix_cache パラメータによる高速化
•
rerank 候補増やして (0.607 (260min) → 0.620 (401min))
•
更なるチームマージ


# Page. 23

![Page Image](https://bcdn.docswell.com/page/5EGYZWP5EL.jpg)

model の巨大化、高速化
チームで話していたこと ②
•
qwen2.5 72B も一部 topN件のみならいけるかも
•
→ private はよかったが public 伸びず


# Page. 24

![Page Image](https://bcdn.docswell.com/page/4JQML32L7P.jpg)

Ensemble
考えていたこと
•
enable_prefix_cache により推論時間大幅 save
•
チームマージにより 3パターンの金圏解法
•
•
terekaeru pipeline
•
masaya-san pipeline
•
ahmet-san pipeline
どうやってアンサンブルする?


# Page. 25

![Page Image](https://bcdn.docswell.com/page/K74VD1L5J1.jpg)

Ensemble
やったこと
•
Rank average によるアンサンブル (0.625 → 0.635)
•
•
•
予測値 (test_preds) の代わりに順位を使用
閾値で filtering
•
pipelineA の preds が低い QId_Answer を pipelineB の推論対象から除く
•
精度を keep しながら時間を save
浮いた時間で全員分の pipeline を 9h に詰め込めた！


# Page. 26

![Page Image](https://bcdn.docswell.com/page/LJ13ZGL27G.jpg)

後処理 by Ahmet-san
•
「すべての train に含まれていない誤解 (未知の誤解) は、少なくとも 1 つのテストセット
行と一致する」という仮定のもと、未知の誤解の予測値を定数倍 (0.655 → 0.662)
•
3rd place だった人はこれ一本で最終日2日前くらいに public 1st に
•
private test には未知の誤解が答えの問題が多かったらしい
•
意図的に未知データを作っていた host としては与えていない未知データに対する汎化性
能が欲しい (それはそう)


# Page. 27

![Page Image](https://bcdn.docswell.com/page/GJWP9KV272.jpg)

まとめ


# Page. 28

![Page Image](https://bcdn.docswell.com/page/4EZK9Z44E3.jpg)

まとめ
• 9h に可能な限り推論を詰め込む
•
LB 上位の人が何をしているか想像して、戦略を立てる
•
時間をかける


# Page. 29

![Page Image](https://bcdn.docswell.com/page/Y76QKZ3G7V.jpg)

9h に可能な限り推論を詰め込む
まだまだアンサンブルは強い
•
LLM コンペは自由度が高く多様な解法が生まれやすい
•
kaggle 推論環境のリソース制約がきつい (16GB×2… え?)
まずは計測が基本
•
kaggle ではサブの実行時間が表示されない
•
カレーさんの sub 時間計測スクリプトを kaggle notebook で実行
• https://zenn.dev/currypurin/scraps/47d5f84a0ca89d
• サブが成功/失敗するまでバックグラウンドで実行してくれる


# Page. 30

![Page Image](https://bcdn.docswell.com/page/G75RPWLXE4.jpg)

9h に可能な限り推論を詰め込む
様々な高速化テクニック
•
vllm の利用
•
vllm の enable_prefix_cache パラメータ
•
データを半分ずつにして cuda:0 と cuda:1 で並行実行
複数ステージ推論の場合、後段の候補を絞る
•
全データ推論で timeout になる場合でも、TopN件だけを別のパイプラインで推論して並
び替える


# Page. 31

![Page Image](https://bcdn.docswell.com/page/9J2D6QLQJR.jpg)

LB 上位が何をしているか想像して、戦略を立てる
戦略を立てる
•
欠損対策, Retriever, Reranker, 後処理どこが差分になっている?
Public LB 1st になった時に考えていたこと
•
32B モデルのアンサンブルで public 1st になった
•
72B モデルを学習している人はいなさそう
•
→ ここまでやり切ったら差をつけられるかも!


# Page. 32

![Page Image](https://bcdn.docswell.com/page/DEY29WQYEM.jpg)

時間をかける
LLM 系のコンペはそもそも時間がかかる
•
写真は pair-wise の Reranker の学習にかかった時間
•
1 week チャレンジなどは超上級者向け
時間をかける ≠ ずっと kaggle に張り付く
•
とはいえ kaggle 漬け生活とはいかないことも
•
タスクランナーを活用し、複数の実験を一度に回す
•
sh で 5fold 実行、定量評価、重みの kaggle に push までを自動で
•
外出の予定などがあっても実験が動いていると安心！


# Page. 33

![Page Image](https://bcdn.docswell.com/page/VJN8L9KR78.jpg)

ご清聴ありがとうございました！


