LLMコンペとは何なのか?
Kaggle初のLLMコンペは、2023年7月に登場した「LLM Science Exam」です。当時は、「LLMコンペ」=「LLM Science Exam」でした。それ以来、LLMコンペの開催頻度は徐々に増え、今後もその数は増加することが予想されます。
誤解を恐れずに表現すると、KaggleにおけるLLMコンペとは、エンジニアリング要素が強いNLPコンペです。
LLMコンペには通常のNLPコンペの要素が多く含まれています。たとえば、「LMSYS - Chatbot Arena Human Preference Predictions」やatam cup #17のようなコンペは、従来のNLPタスクに似たアプローチで進められました(ファインチューニングなど)。一方で、エンジニアリング要素が特に重要なコンペもあり、データセットの拡張やRAG(Retrieval-Augmented Generation)の実装など、通常のアプローチに加えてエンジニアリング要素が多分に含まれます。
筆者が参加したLLMコンペ一覧
以下は筆者が参加したLLMコンペの一覧と、それぞれの特徴です。
コンペ名 | 主流モデル | データセットの拡張 | 主なエンジニアリング要素 |
---|---|---|---|
LLM Science Exam | Llama2, Mistral, DeBERTa-v3 | Wikipedia | RAGの実装、データセットのクレンジングが必要 |
LLM Prompt Recovery | Mistral | 生成AI | 埋め込み表現へのadversarial attack(Magic) |
AI Mathematical Olympiad - Progress Prize 1 | DeepSeekMath | 公開数学データセット | 実行時間制約下での試行回数最大化、出力パース処理 |
LLM 20 Questions | Llama3 | 外部データセット・生成AI | 外部データ準備、二分探索、質問選択の統計的手法の実装 |
Kaggle Master振り返り記事でも少し触れているので、興味があればそちらもご覧ください。
全LLMコンペ一覧
以下にその他のLLMコンペを含めて、名前だけですが、一挙紹介します。
※抜け漏れがあれば、コメントかTwitterで教えて下さい!
【チュートリアルコンペ】
【開催中のコンペ】
- Kaggle
【過去のコンペ】
-
Kaggle
-
Nishika
-
SIGNATE
-
AtmaCUP
-
Raggle
初手は、『N=1のデータセットでLLMの出力を確認』
LLM(特にオープンソースのモデル、小さいモデル)を使う際、しばしば予想外の挙動を示すことがあります。
以下のような問題が代表例です:
- 不要なフレーズ(例: "Sure!")が出力される
- 指示したフォーマットを守らない
- 突然中国語で出力される
- 無限ループに陥る
など
これらの挙動を早期に把握するために、まずは小さなデータセット(N=1でもOKです!)を使った、簡単なLLM出力のエラー分析を行うことをおすすめします。そして、可能であれば継続的にログ出力すると良いと思います。
具体例
以下の記事では、文字列をLLMで反転させる架空のLLMコンペについて紹介しました。とても簡単に見えますが、LLMにとっては難しいタスクです。
このタスクでは、Llama3を使用しましたが、余計な文字列("Here is")が追加されたり、正解を生成できなかったりする問題が見られました。以下はその一例です。
Here is
ydsapptfqt
上記の結果から、モデルの挙動を詳細に分析する必要性がわかります。
次の一手
簡単なLLM出力のエラー分析を終えて、次の一手の候補となるチェックリストを下記に示します。
- ChatGPTなど高性能なクローズドモデルでタスクを試す
- 外部データセットの拡張を試みる
- そのコンペにおける主流のLLMモデルを把握する
- 類似タスクのSOTAモデルを調査(Hugging FaceやPapers With Code)
- 外部知識が必要な場合、RAGを導入する
- プロンプトエンジニアリング(参考:Optunaを用いたプロンプトエンジニアリング)
- フローエンジニアリング(モデル推論のパイプラインやロジック)の見直し
- インストラクションチューニング、LoRA
- 入力データの前処理・出力データの後処理(ノイズ除去やフォーマット変換など)
- メトリクスのハックを試みる(参考:LLM Prompt Recoveryでは、adversarial attackが可能でした)
- LB Probingを試みる
-
LLM以外の手段(機械学習モデルやルールベース手法)を検討する
など
おわりに
この記事では、LLMコンペの取り組み方を紹介しました。特に、初めてLLMコンペに参加する方が、効率的に成果を上げるための戦略や注意点について解説しました。
LLMコンペは、他のコンペ(テーブル・画像・NLPなど)と比較して、まだ定跡が整備されていない分野です。そのため、(通常のコンペでもそうですが)タスクの深い理解が強く求められます。
また、エンジニアリングスキル(データ拡張、RAG、フロー設計、プロンプトエンジニアリング など)が要求され、実装力も身につきます。
データセットの拡張が可能なことが多いなど、実務に近しいところもあり、大変勉強になります。興味を持った方は、ぜひLLMコンペに参加してみてください!
本記事は以上です。皆様の良いKaggleライフを応援しております。