Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kaggle自然言語処理コンペ向けローカルLLM活用入門
Search
tatematsu
February 27, 2025
1
280
Kaggle自然言語処理コンペ向けローカルLLM活用入門
社内の技術共有会での発表資料です。ローカルLLM触ったことがない方向けに、Kaggle NLPコンペ参加にあたり最低限の知識を共有することを目的として発表になります。
tatematsu
February 27, 2025
Tweet
Share
More Decks by tatematsu
See All by tatematsu
Kaggle役立ちアイテム紹介(入門編)
k951286
14
5.3k
AI搭載エディタCursorの紹介と機械学習コンペでの使用レビュー
k951286
20
6.8k
Kaggle Benetechコンペ振り返り
k951286
1
660
Kaggle NFL3コンペ振り返り
k951286
0
310
kaggle PPPMコンペ反省会
k951286
0
990
kaggle Outdoorコンペ振り返り
k951286
0
3k
Featured
See All Featured
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Building Adaptive Systems
keathley
40
2.4k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
KATA
mclloyd
29
14k
Designing on Purpose - Digital PM Summit 2013
jponch
117
7.1k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
Adopting Sorbet at Scale
ufuk
74
9.2k
A better future with KSS
kneath
238
17k
Become a Pro
speakerdeck
PRO
26
5.2k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
Rails Girls Zürich Keynote
gr2m
94
13k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
360
Transcript
AI 2025.02.27 立松 郁也 GO株式会社 Kaggle自然言語処理コンペ向け ローカルLLM活用入門
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 3 00 はじめに
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 8 本日の目標 • ローカルLLMを触ったことがない方向けに、Kaggle NLPコンペに参 加するための最低限の知識を共有する はじめに
AI 9 1. 学習編 1.1. トレーニングタスクについて 1.2. よく使われるモデル 1.3. FineTuneのためのLoRA
1.4. LoRAのハイパーパラメータ 2. 推論編 2.1. 推論時のvLLM活用 2.2. vLLMの便利な使い方 2.3. 推論時の量子化 もくじ
AI 10 01 学習編
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 19 02 推論編
AI 20 推論時のvLLM活用 vLLMとは? • 大規模言語モデルを高速に推論するためのライブラリ • 主な特徴 ◦ 高速動作
:効率的なバッチ処理で高速化 ◦ あるベンチマークではHuggingFaceの14-24倍高速化 ◦ 効率的なメモリ管理 : Paged Attention等でメモリ効率最適化 ◦ 使いやすさ : HuggingFaceと簡単に連携可能 vLLMを活用することでLLMでの推論を大幅に高速・効率化 https://blog.vllm.ai/2023/06/20/vllm.html
AI 21 推論時のvLLM活用 vLLMはHuggingFaceとtokenizerやweightの互換があり容易に移行可 HuggingFaceと の互換 tokenizer、 weightが互換 https://huggingface.co https://docs.vllm.ai/en/latest/
AI 22 vLLMには便利なオプションがいくつかあり、活用すればさらに高速化可能 vLLMの便利な使い方 便利オプションの一例 • tensor_parallel_size ◦ GPU数を指定するだけで複数GPUでの並列推論が可能 •
enable_prefix_caching ◦ 入力テキストに共通のprefixがある場合、キャッシュで高速化 ◦ prefix例 : 「あなたは数学教師です、次の質問に答えて...」 • cpu_offload_gb ◦ GPUメモリに乗り切らない場合、一部をCPUメモリで処理 ◦ 設定すればKaggle推論環境(T4 x2)で72Bモデルでも推論可
AI 23 出力トークンを強制すれば、各トークン(Yes/No等)の出力確率も算出可能 分類タスクなどで重宝。独自LogitsProcessorを定義すればOK vLLM(に限らない)便利な使い方 独自LogitsProcessor 参考 : https://www.kaggle.com/code/cdeotte/infer-34b-with-vllm 各トークンの出力確率
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
AI 26 • ローカルLLMを学習・推論するにあたり入門的な知識を共有した • タスクとしてはまずは因果言語モデルとして扱うのがおすすめ • LoRA、vLLM、量子化などの技術やツールを駆使することで、限 られた計算資源でも効率的な学習、推論が可能 まとめ