Share
Embed
Kaggle自然言語処理コンペ向けローカルLLM活用入門
社内の技術共有会での発表資料です。ローカルLLM触ったことがない方向けに、Kaggle NLPコンペ参加にあたり最低限の知識を共有することを目的として発表になります。
monnu
February 27, 2025
Transcript
26 slides
-
AI 2 自己紹介 • 氏名 ◦ 立松 郁也 • 経歴
◦ 2019年4月 電機メーカー入社 ▪ 需要予測モデル開発 ▪ 最適在庫の分析 ◦ 2021年3月 GO株式会社入社(旧:株式会社Mobility Technologies) ▪ 次世代AIドラレコサービス『DRIVE CHART』の分析業務 • SNS ◦ X: https://twitter.com/monnu0621 ◦ Kaggle : https://www.kaggle.com/fuumin621 -
AI 4 本日の内容 • 最近、Kaggle Eediコンペに参加し、はじめてローカルLLMを触った • 金メダルは逃してしまったが、LLMに関してゼロから色々学べた • コンペで得られた知見やTips等を初心者向けに共有したい
はじめに Kaggle Eediコンペの振り返りは宇都さんの資料などがおすすめ https://speakerdeck.com/kuto5046/kaggle-eedikonpezhen-rifan-ri -
AI 5 注意事項 • ここではLLMを「数十億以上のパラメータを持つ生成型言語モ デル」として話します ◦ 例 : Llama,Gemma
等 ◦ 従来のBERT, DeBERTa等はLLMに含めない • 私はNLP,LLMの専門家ではないため、誤った説明があればツッ コミお願いします はじめに -
AI 6 はじめに : 最近のKaggle NLPコンペの傾向 Kaggle NLPコンペ 締め切り 主な上位モデル
Eedi - Mining Misconceptions in Mathematics 2024/12/13 Qwen2.5 LMSYS - Chatbot Arena Human Preference Predictions 2024/8/24 gemma-2、Llama3 Learning Agency Lab - Automated Essay Scoring 2.0 2024/7/3 DeBERTa-v3 AI Mathematical Olympiad - Progress Prize 1 2024/6/28 DeepSeekMath The Learning Agency Lab - PII Data Detection 2024/4/24 DeBERTa-v3 LLM Prompt Recovery 2024/4/17 Mistral,Gemma LLM - Detect AI Generated Text 2024/1/23 DeBERTa-v3,Mistral CommonLit - Evaluate Student Summaries 2023/10/12 DeBERTa-v3 非LLMモデル LLMモデル ここ最近のKaggle NLPコンペでは、上位にLLMの採用が増えている -
AI 7 はじめに : 最近のKaggle NLPコンペの傾向 Kaggle NLPコンペ 締め切り 主な上位モデル
Eedi - Mining Misconceptions in Mathematics 2024/12/13 Qwen2.5 LMSYS - Chatbot Arena Human Preference Predictions 2024/8/24 gemma-2、Llama3 Learning Agency Lab - Automated Essay Scoring 2.0 2024/7/3 DeBERTa-v3 AI Mathematical Olympiad - Progress Prize 1 2024/6/28 DeepSeekMath The Learning Agency Lab - PII Data Detection 2024/4/24 DeBERTa-v3 LLM Prompt Recovery 2024/4/17 Mistral,Gemma LLM - Detect AI Generated Text 2024/1/23 DeBERTa-v3,Mistral CommonLit - Evaluate Student Summaries 2023/10/12 DeBERTa-v3 非LLMモデル LLMモデル ここ最近のKaggle NLPコンペでは、上位にLLMの採用が増えている 最近のNLPコンペ参加には LLMを扱えることが必須!? -
AI 9 1. 学習編 1.1. トレーニングタスクについて 1.2. よく使われるモデル 1.3. FineTuneのためのLoRA
1.4. LoRAのハイパーパラメータ 2. 推論編 2.1. 推論時のvLLM活用 2.2. vLLMの便利な使い方 2.3. 推論時の量子化 もくじ -
AI 11 どのトレーニングタスクでLLMを扱うか? 1. 因果言語モデル(AutoModelForCausalLM) ◦ 次の単語を予測しながらテキストを生成する 2. マスク言語モデル(AutoModelForMaskedLM) ◦
文中の隠された単語を予測する 3. シーケンス分類(AutoModelForSequenceClassification) ◦ テキスト全体を分類する 4. トークン分類(AutoModelForTokenClassification) ◦ テキスト中の各トークンにラベルを付与する LLMのトレーニングタスクの種類がいつくかある まずは因果言語モデルで扱えないかを考えるのがおすすめ シーケンス分類の場合でも、因果言語モデルとしても扱える まずはこれで解け ないか? 因果言語モデル としても扱える -
AI 12 どのトレーニングタスクでLLMを扱うか? LLMモデル 入力テキスト Nextトークン ケース 入力テキスト例 出力トークン例 一般的な因果言語モデル
「日本の首都は?」 「東京」 シーケンス分類での因果言語モデル 「次の文章は正しいか? はい or いいえで答えて。(文章) ..」 「はい」or「いいえ」 ケース別入出力例 因果言語モデル LLMのトレーニングタスクの種類がいつくかある まずは因果言語モデルで扱えないかを考えるのがおすすめ シーケンス分類の場合でも、因果言語モデルとしても扱える -
AI 13 Q. 因果言語モデルで扱うメリットは? A. メジャーなタスクのため参照コードや対応ツールが豊富 Q. 予測確率は出せる? A. 候補のトークン(Yes/Noなど)を固定することで確率も出せる(後述)
Q. 参考になるコードは? A. atmaCup#17 1st place solutionが非常に参考になる • https://www.guruguru.science/competitions/24/discussions/21027ff1-2074-4e21-a249-b2d4170bd516/ どのトレーニングタスクでLLMを扱うか? LLMのトレーニングタスクの種類がいつくかある まずは因果言語モデルで扱えないかを考えるのがおすすめ シーケンス分類の場合でも、因果言語モデルとしても扱える -
AI 14 • Gemma(LMSYSコンペ) ◦ Googleによって開発 ◦ 2Bモデルと7Bモデルで活躍 • Qwen2.5系(Eediコンペ)
◦ Alibabaによって開発されたモデル ◦ 7B,32B,72Bなど複数サイズが公開 ◦ 数学やコーディングに特化したweightも存在 よく使われるモデル 直近のコンペではGemma,Qwenなどのモデルが上位解法で利用 -
AI 15 限られた計算資源でのファインチューニングではLoRAが有効 FineTuneのためのLoRA LoRA(Low Rank Adaptation)とは? • 元モデルの重みは更新せず、代わりにAdapterと呼ばれる低ラン ク行列だけを学習・更新する
• ファインチューニングに必要なパラメータ数を大幅に削減 低ランク行列 のみ学習 https://arxiv.org/pdf/2106.09685 -
AI 16 限られた計算資源でのファインチューニングではLoRAが有効 FineTuneのためのLoRA HuggingFaceで 簡単に実装可 コード例 LoRA(Low Rank Adaptation)とは?
• 元モデルの重みは更新せず、代わりにAdapterと呼ばれる低ラン ク行列だけを学習・更新する • ファインチューニングに必要なパラメータ数を大幅に削減 -
AI 17 LoRAのハイパーパラメータ 主なパラメータ • rank(r) ◦ 重み行列を低ランクで分解する際のランクの大きさ • スケーリング係数(alpha)
◦ 低ランク行列の更新分を元の重みにどの程度加えるか • target モジュール ◦ どの層やどの部分の重み行列にLoRAを適用するか • ドロップアウト率 ◦ LoRAパラメータに対して適用するドロップアウトの割合 LoRAにはいくつかのチューニングすべきパラメータが存在 LMSYSコンペにおけるChris DeotteさんによるTipsが参考になる -
AI 18 LoRAにはいくつかのチューニングすべきパラメータが存在 LMSYSコンペにおけるChris DeotteさんによるTipsが参考になる LoRAのハイパーパラメータ チューニングのTips by Chris Deotte
• target モジュール ◦ できるだけ全てのモジュールを使用 • 学習率、バッチサイズを選択 ◦ 学習率 : 2e-4 or 2e-5 推奨 ◦ フルバッチサイズ(gpuごとのバッチサイズxgpu数) : 8 推奨 ◦ 勾配累積、勾配チェックポイント、複数GPU等も活用 • rとalphaの調整 ◦ r=16に固定し、alphaを調整(2, 4, 8, 16, 32, 64) ◦ 1 epoch(ウォームアップ付き線形スケジュール)で最適なalpha決定 ◦ alphaを固定しrを調整 https://www.kaggle.com/competitions/lmsys-chatbot-arena/discussion/527596 -
AI 20 推論時のvLLM活用 vLLMとは? • 大規模言語モデルを高速に推論するためのライブラリ • 主な特徴 ◦ 高速動作
:効率的なバッチ処理で高速化 ◦ あるベンチマークではHuggingFaceの14-24倍高速化 ◦ 効率的なメモリ管理 : Paged Attention等でメモリ効率最適化 ◦ 使いやすさ : HuggingFaceと簡単に連携可能 vLLMを活用することでLLMでの推論を大幅に高速・効率化 https://blog.vllm.ai/2023/06/20/vllm.html -
AI 22 vLLMには便利なオプションがいくつかあり、活用すればさらに高速化可能 vLLMの便利な使い方 便利オプションの一例 • tensor_parallel_size ◦ GPU数を指定するだけで複数GPUでの並列推論が可能 •
enable_prefix_caching ◦ 入力テキストに共通のprefixがある場合、キャッシュで高速化 ◦ prefix例 : 「あなたは数学教師です、次の質問に答えて...」 • cpu_offload_gb ◦ GPUメモリに乗り切らない場合、一部をCPUメモリで処理 ◦ 設定すればKaggle推論環境(T4 x2)で72Bモデルでも推論可 -
AI 24 量子化はパラメータをより少ないビット数で表現し、計算を効率化する技術 限られた計算資源で推論するにあたり量子化が重要 LLM推論時の量子化 LLMでの主要な量子化手法 • GPTQ ◦ 重みをグループ毎に量子化し、各グループの精度を最適化
• AWQ ◦ アクティベーションへの影響からチャネル毎に精度を最適化 量子化モデルで推論するパターン • 量子化済みのモデルをLoRA等でFineTuneした後、推論 • 未量子化モデルをFinetuneした後、自前で量子化した上で推論 vLLMでそのまま可 次ページで軽く解説 -
AI 25 LLM推論時の量子化 なぜ自前で量子化? • 量子化には専用のキャリブレーションデータが必要 • これを解きたいタスクと近いデータを行うことで劣化を最小にしたい ◦ Eediコンペの1位,2位チームなどは自前量子化を採用
自前量子化の流れ 1. LoRAの元モデルとAdapterをマージ(LoRAでFineTuneした場合) 2. キャリブレーション用のテキストデータ準備 3. AutoAWQ, AutoGPTQなどのツールで量子化実行 LoRAのままでは不可 量子化はパラメータをより少ないビット数で表現し、計算を効率化する技術 限られた計算資源で推論するにあたり量子化が重要 https://github.com/AutoGPTQ/AutoGPTQ https://github.com/casper-hansen/AutoAWQ