Share
Embed
Kaggle_LLMコンペの攻略法を解説.pdf
payanotty
November 30, 2023
Transcript
43 slides
-
自己紹介 • 名前 ◦ 早野 康太 • お仕事 ◦ 自然言語モデルの改善
• 今期アニメ ◦ フリーレン ◦ 100カノ ◦ ウマ娘 ◦ アンデラ ◦ 薬屋のひとりごと • 映画 ◦ ゴジラ -1.0 -
Kaggleとは • Kaggleは、データサイエンスの目標を達成するための 強力なツールとリソースを提供する世界最大の データサイエンス・コミュニティです Kaggle is the world's largest
data science community with powerful tools and resources to help you achieve your data science goals. (https://www.kaggle.com/) -
Kaggleとは • コンペティション ◦ 企業や政府などが主体となって データサイエンスのコンペティションを開催し 世界中のデータサイエンティストが順位を競います 出典:
チェンソーマン © 藤本タツキ / 集英社 -
Kaggleとは • コンペティション ◦ 企業や政府などが主体となって データサイエンスのコンペティションを開催し 世界中のデータサイエンティストが順位を競います •
順位に応じてメダルがもらえます ◦ ゴールド: 上位1パーセント以内 ◦ シルバー: 上位5パーセント以内 ◦ ブロンズ: 上位10パーセント以内 -
Kaggleとは 参加者 Public Score モデルや コードを提出 (submission) テストデータセット Public Private
開催期間中は 参加者はこれしか見えない Private Score Public + Privateで算出 最終的な順位はこれで決まる スコアは運営側が用意した 環境で計算される -
Kaggle LLM コンペティションに参加しました • Kaggle - LLM Science Exam |
Kaggle ◦ 開催期間 ▪ 2023/08/11 - 2023/10/10 ◦ 概要 ▪ 大規模言語モデルで作成された 難しい科学に基づいた質問に答えることに挑戦します Inspired by the OpenBookQA dataset, this competition challenges participants to answer difficult science-based questions written by a Large Language Model. (https://www.kaggle.com/competitions/kaggle-llm-science-exam) -
今日のお話 • 本コンペでは 特にRAGと呼ばれる手法をうまく使うことが 鍵となっていました ◦ さまざまな議論や試行錯誤を 体験することができとても有意義なコンペとなりました 今日のお話としては
• 発表者がコンペにどう取り組んだか • うまいコンペの解法は何だったのか を中心にしていきたいと思います -
今日のお話 • どういうコンペだったか • コンペに取り組む中で どういう手法があったか ◦ RAG
• 上位勢はどう解いたか ◦ 1st, 2nd, 6th の解法を紹介 • まとめ -
タスク設定 科学系の質問に対して LLMに選択肢を選ばせて 正解率を競う! 電磁気学の 統一理論を発表したのは誰? 質問 選択肢 A: マクスウェル
B: アインシュタイン C: ガリレオ D: ファラデー E: ニュートン -
以下の文章について 質問と選択肢を作ってください 質問はLLMが生成 プロンプト Wikipedia文章 GPT-3.5 電磁気学の 統一理論を発表したのは誰? 質問 選択肢
A: マクスウェル B: アインシュタイン C: ガリレオ D: ファラデー E: ニュートン -
質問はLLMが生成 • GPT-3.5で評価データ作成 (参加者には見えない) • 参加者が提出した モデルで正解率評価 運営 •
質問に答えられるような モデルを学習 • 評価データに対して 推論するコード・モデルを提出 • リーダーボードスコアで 上位を目指す 参加者 -
fine-tuningするモデルの選択 • 運営側が用意した環境上で推論 ◦ 推論時間 < 9 hours
• パラメータ数の少ないBERT-large系列 ◦ DeBERTa-v3-large: 304M params ◦ RoBERTa-large: 355M params ◦ Longformer-large: 102M params • GPU ◦ P100 ◦ T4 x2 ◦ TPU VM v3-8 -
fine-tuningするモデルの選択 • 運営側が用意した環境上で推論 ◦ 推論時間 ≦ 9 hours
• パラメータ数の少ないBERT-large系列 ◦ DeBERTa-v3-large: 304M params ◦ RoBERTa-large: 355M params ◦ Longformer-large: 102M params • GPU ◦ P100 ◦ T4 x2 ◦ TPU VM v3-8 このスペックだと70B paramsとか デカいLLMをまともに動かすのはムリ! -
fine-tuningするモデルの選択 プロンプト LLM 質問: 電磁気学の 統一理論を発表したのは誰? A: マクスウェル
B: アインシュタイン C: ガリレオ D: ファラデー E: ニュートン Linear Layer + 0.8 0.4 0.3 0.2 0.2 Logits この部分に使うモデルを いろいろ試す -
学習データをLLMで生成 • ふつうのコンペと違って 学習データがほとんど与えられていない → 自分で作れってこと • Wikipedia
APIでWikipedia文章を取得し プロンプトとともにGPT-3.5に与え 質問と解答の選択肢を生成させた → 最終的に学習に使った質問は10万問程度 -
学習データをLLMで生成 • ふつうのコンペと違って 学習データがほとんど与えられていない → 自分で作れってこと • Wikipedia
APIでWikipedia文章を取得し プロンプトとともにGPT-3.5に与え 質問と解答の選択肢を生成させた → 最終的に学習に使った質問は10万問程度 OpenAIの規約的にどうなの? • 規約による禁止事項 ◦ Use Output to develop models that compete with OpenAI. (Terms of use) (アウトプットをOpenAIと競合するモデルの開発に 使用すること) 以下の点から今回のコンペでは学習データ生成は OKと判断しました • 運営がChatGPTで生成したデータを 学習データサンプルとして提供している -
以下の文章について 質問と選択肢を作ってください 学習データをLLMで生成 プロンプト Wikipedia文章 GPT-3.5 電磁気学の 統一理論を発表したのは誰? 質問 選択肢
A: マクスウェル B: アインシュタイン C: ガリレオ D: ファラデー E: ニュートン -
• 例えばこういう問題は 文章のみからでは正解を判定不能 (前提知識を必要とする) LLMへのインプット
電磁気学の 統一理論を発表したのは誰? 質問 選択肢 A: マクスウェル B: アインシュタイン C: ガリレオ D: ファラデー E: ニュートン なんなんこいつら 知らんわ -
• 例えばこういう問題は 文章のみからでは正解を判定不能 (前提知識を必要とする) LLMへのインプット
電磁気学の 統一理論を発表したのは誰? 質問 選択肢 A: マクスウェル B: アインシュタイン C: ガリレオ D: ファラデー E: ニュートン 序盤はこの形式で fine-tuningしていた → 精度が70%台で停滞 -
LLMへのインプット 電磁気学の 統一理論を発表したのは誰? 質問 選択肢 A: マクスウェル B: アインシュタイン
C: ガリレオ D: ファラデー E: ニュートン マクスウェル方程式は、 電磁場を記述する古典電磁気学の... 背景(Context) 質問に関連する文章を 追加して 答えやすくしてあげる -
LLMへのインプット 電磁気学の 統一理論を発表したのは誰? 質問 選択肢 A: マクスウェル B: アインシュタイン
C: ガリレオ D: ファラデー E: ニュートン マクスウェル方程式は、 電磁場を記述する古典電磁気学の... 背景(Context) コンペ途中からインプットに Contextを追加する形式に → 最終的に 精度90%台まで向上 -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット Wikipedia記事から 検索してContextを取得 -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット Wikipedia記事から 検索してContextを取得 ベクトル検索用に調整された言語モデルを使う (質問に回答するモデルとは別物) -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット ポイント1 なるべく質問に関連しそうな 文書集合を使う -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット ポイント1 なるべく質問に関連しそうな 文書集合を使う 文章埋め込み空間上で k-meansクラスタリングを使って 科学記事のクラスタを作成 Finding 270K Wikipedia STEM articles! -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット ポイント2 性能の高いLLMを使って embeddingを作成する LLMのRetrieval性能リーダーボード MTEB Leaderboard - a Hugging Face Space by mteb -
RAG (Retrieval Augmented Generation) 質問 + 選択肢 Wikipedia passages dump
Wikipedia embeddings あらかじめベクトル化 ベクトル化 embedding ベクトル類似度検索 関連する文章 (Context) LLMへのインプット ポイント3 • LLMによるembedding類似度 • TF-IDFで作成したベクトルによる類似度 -
RAG工夫どころまとめ • ポイント1: 検索対象の文書集合になるべく科学関連の記事が含まれるようにする ◦ ↓ノートブックによるSTEM記事クラスタを活用 Finding 270K Wikipedia
STEM articles! • ポイント2: 性能の高いLLMを使って埋め込みを作成する ◦ MTEB Leaderboard - a Hugging Face Space by mteb • ポイント3: 検索の手法を工夫する ◦ LLMからのembeddingによる類似度検索 ◦ TF-IDFで作成したベクトルによる類似度検索 -
RAG工夫どころまとめ • ポイント1: 検索対象の文書集合になるべく科学関連の記事が含まれるようにする ◦ ↓ノートブックによるSTEM記事クラスタを活用 Finding 270K Wikipedia
STEM articles! • ポイント2: 性能の高いLLMを使って埋め込みを作成する ◦ MTEB Leaderboard - a Hugging Face Space by mteb • ポイント3: 検索の手法を工夫する ◦ LLMからのembeddingによる類似度検索 ◦ TF-IDFで作成したベクトルによる類似度検索 -
モデルの学習・アンサンブル GPT3.5で作成したデータセット DeBERTa-v3-large • max_tokens = 384 • x 3folds
Longformer-large • max_tokens = 1024 GPT3.5で作成したデータセット Race QAデータセット DeBERTa-v3-large DeBERTa-v3-large • max_tokens = 1024 • x 3folds fine-tuning GPT3.5で作成したデータセット -
モデルの学習・アンサンブル • 最終的に提出したのは2種類のモデルのアンサンブル ◦ DeBERTa-v3-large ▪ GPT-3.5データセットのみでfine-tuning ◦ DeBERTa-v3-large
▪ RACE QAでfine-tuning → GPT-3.5データセットでfine-tuning 惜しかったところ • public scoreが振るわなかったため提出できていなかったが Longformerモデルをアンサンブルしたものが最もリーダーボードのスコアが高 かった • もし提出できていたら150位 (top 6%) だった -
上位勢はどう解いたか 1st Place Solution • RAGの工夫 ◦ 独自のWikipediaコーパスを作成 ▪ 最終的にCirrusSearchダンプを512文字単位のチャンクに区切り
▪ 科学記事のフィルタリングは行っていない (Wikipedia全記事分のダンプを使用した) ◦ 複数のembeddingモデルから取得したContextを使用 • モデルの工夫 ◦ 5種類の7Bモデルと13Bモデルをアンサンブル (8bitで量子化して推論を実行) ▪ fine-tuneにはLoRAを使用 ◦ LLMモデルの最終隠れ層の値からロジットを計算 -
上位勢はどう解いたか 2nd Place Solution • RAGの工夫 ◦ Huggingfaceで公開されているデータセットからWikipediaチャンク作成 (graelo/wikipedia ·
Datasets at Hugging Face) ◦ DeBERTa-largeをベースにしてContextを取得するための リランカーモデルをfine-tuneした • モデルの工夫 ◦ DeBERTa-largeを使用 ▪ 選択肢の答えが似通っている場合に専用のMasked LMを使用 ◦ 選択肢に正解が含まれていない質問セットでモデルをfine-tuneし アンサンブルに使用した -
上位勢はどう解いたか 6th Place Solution • モデルの工夫 ◦ DeBERTaと7B LLMをアンサンブル ▪
7B LLM • LoRA + bf16量子化でfine-tune ◦ ゼロショット 70B LLMを一部の問題に対して使用した (!) ▪ ロジットの値が低い予測選択肢をピックアップして LLMに真偽判定をさせた -
コンペを通しての学び・反省点 • 学び ◦ QA 形式のデータセットでのfine-tuningはあまり経験がなかったが コンペティションを通して前処理や学習手法を学ぶことができた ◦ RAGによるプロンプト拡張により 劇的にLLMの精度を向上させることができる
▪ faiss indexによる文書検索実装も勉強になった • 反省点 ◦ 学習データ取得やハイパラ探索に拘泥しRAGの改善がほぼできなかった ▪ このコンペではいかにRAGをうまく活用するかが鍵になっており 学習データ数はそこまで重要ではなかった ◦ public scoreだけをみてベストサブミッションを提出できなかった ▪ アンサンブルを検討する時間がなかった