Slide 1

Slide 1 text

AI 2025.02.27 立松 郁也 GO株式会社 Kaggle自然言語処理コンペ向け ローカルLLM活用入門

Slide 2

Slide 2 text

AI 2 自己紹介 ● 氏名 ○ 立松 郁也 ● 経歴 ○ 2019年4月 電機メーカー入社 ■ 需要予測モデル開発 ■ 最適在庫の分析 ○ 2021年3月 GO株式会社入社(旧:株式会社Mobility Technologies) ■ 次世代AIドラレコサービス『DRIVE CHART』の分析業務 ● SNS ○ X: https://twitter.com/monnu0621 ○ Kaggle : https://www.kaggle.com/fuumin621

Slide 3

Slide 3 text

AI 3 00 はじめに

Slide 4

Slide 4 text

AI 4 本日の内容 ● 最近、Kaggle Eediコンペに参加し、はじめてローカルLLMを触った ● 金メダルは逃してしまったが、LLMに関してゼロから色々学べた ● コンペで得られた知見やTips等を初心者向けに共有したい はじめに Kaggle Eediコンペの振り返りは宇都さんの資料などがおすすめ https://speakerdeck.com/kuto5046/kaggle-eedikonpezhen-rifan-ri

Slide 5

Slide 5 text

AI 5 注意事項 ● ここではLLMを「数十億以上のパラメータを持つ生成型言語モ デル」として話します ○ 例 : Llama,Gemma 等 ○ 従来のBERT, DeBERTa等はLLMに含めない ● 私はNLP,LLMの専門家ではないため、誤った説明があればツッ コミお願いします はじめに

Slide 6

Slide 6 text

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の採用が増えている

Slide 7

Slide 7 text

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を扱えることが必須!?

Slide 8

Slide 8 text

AI 8 本日の目標 ● ローカルLLMを触ったことがない方向けに、Kaggle NLPコンペに参 加するための最低限の知識を共有する はじめに

Slide 9

Slide 9 text

AI 9 1. 学習編 1.1. トレーニングタスクについて 1.2. よく使われるモデル 1.3. FineTuneのためのLoRA 1.4. LoRAのハイパーパラメータ 2. 推論編 2.1. 推論時のvLLM活用 2.2. vLLMの便利な使い方 2.3. 推論時の量子化 もくじ

Slide 10

Slide 10 text

AI 10 01 学習編

Slide 11

Slide 11 text

AI 11 どのトレーニングタスクでLLMを扱うか? 1. 因果言語モデル(AutoModelForCausalLM) ○ 次の単語を予測しながらテキストを生成する 2. マスク言語モデル(AutoModelForMaskedLM) ○ 文中の隠された単語を予測する 3. シーケンス分類(AutoModelForSequenceClassification) ○ テキスト全体を分類する 4. トークン分類(AutoModelForTokenClassification) ○ テキスト中の各トークンにラベルを付与する LLMのトレーニングタスクの種類がいつくかある まずは因果言語モデルで扱えないかを考えるのがおすすめ シーケンス分類の場合でも、因果言語モデルとしても扱える まずはこれで解け ないか? 因果言語モデル としても扱える

Slide 12

Slide 12 text

AI 12 どのトレーニングタスクでLLMを扱うか? LLMモデル 入力テキスト Nextトークン ケース 入力テキスト例 出力トークン例 一般的な因果言語モデル 「日本の首都は?」 「東京」 シーケンス分類での因果言語モデル 「次の文章は正しいか? はい or いいえで答えて。(文章) ..」 「はい」or「いいえ」 ケース別入出力例 因果言語モデル LLMのトレーニングタスクの種類がいつくかある まずは因果言語モデルで扱えないかを考えるのがおすすめ シーケンス分類の場合でも、因果言語モデルとしても扱える

Slide 13

Slide 13 text

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のトレーニングタスクの種類がいつくかある まずは因果言語モデルで扱えないかを考えるのがおすすめ シーケンス分類の場合でも、因果言語モデルとしても扱える

Slide 14

Slide 14 text

AI 14 ● Gemma(LMSYSコンペ) ○ Googleによって開発 ○ 2Bモデルと7Bモデルで活躍 ● Qwen2.5系(Eediコンペ) ○ Alibabaによって開発されたモデル ○ 7B,32B,72Bなど複数サイズが公開 ○ 数学やコーディングに特化したweightも存在 よく使われるモデル 直近のコンペではGemma,Qwenなどのモデルが上位解法で利用

Slide 15

Slide 15 text

AI 15 限られた計算資源でのファインチューニングではLoRAが有効 FineTuneのためのLoRA LoRA(Low Rank Adaptation)とは? ● 元モデルの重みは更新せず、代わりにAdapterと呼ばれる低ラン ク行列だけを学習・更新する ● ファインチューニングに必要なパラメータ数を大幅に削減 低ランク行列 のみ学習 https://arxiv.org/pdf/2106.09685

Slide 16

Slide 16 text

AI 16 限られた計算資源でのファインチューニングではLoRAが有効 FineTuneのためのLoRA HuggingFaceで 簡単に実装可 コード例 LoRA(Low Rank Adaptation)とは? ● 元モデルの重みは更新せず、代わりにAdapterと呼ばれる低ラン ク行列だけを学習・更新する ● ファインチューニングに必要なパラメータ数を大幅に削減

Slide 17

Slide 17 text

AI 17 LoRAのハイパーパラメータ 主なパラメータ ● rank(r) ○ 重み行列を低ランクで分解する際のランクの大きさ ● スケーリング係数(alpha) ○ 低ランク行列の更新分を元の重みにどの程度加えるか ● target モジュール ○ どの層やどの部分の重み行列にLoRAを適用するか ● ドロップアウト率 ○ LoRAパラメータに対して適用するドロップアウトの割合 LoRAにはいくつかのチューニングすべきパラメータが存在 LMSYSコンペにおけるChris DeotteさんによるTipsが参考になる

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

AI 19 02 推論編

Slide 20

Slide 20 text

AI 20 推論時のvLLM活用 vLLMとは? ● 大規模言語モデルを高速に推論するためのライブラリ ● 主な特徴 ○ 高速動作 :効率的なバッチ処理で高速化 ○ あるベンチマークではHuggingFaceの14-24倍高速化 ○ 効率的なメモリ管理 : Paged Attention等でメモリ効率最適化 ○ 使いやすさ : HuggingFaceと簡単に連携可能 vLLMを活用することでLLMでの推論を大幅に高速・効率化 https://blog.vllm.ai/2023/06/20/vllm.html

Slide 21

Slide 21 text

AI 21 推論時のvLLM活用 vLLMはHuggingFaceとtokenizerやweightの互換があり容易に移行可 HuggingFaceと の互換 tokenizer、 weightが互換 https://huggingface.co https://docs.vllm.ai/en/latest/

Slide 22

Slide 22 text

AI 22 vLLMには便利なオプションがいくつかあり、活用すればさらに高速化可能 vLLMの便利な使い方 便利オプションの一例 ● tensor_parallel_size ○ GPU数を指定するだけで複数GPUでの並列推論が可能 ● enable_prefix_caching ○ 入力テキストに共通のprefixがある場合、キャッシュで高速化 ○ prefix例 : 「あなたは数学教師です、次の質問に答えて...」 ● cpu_offload_gb ○ GPUメモリに乗り切らない場合、一部をCPUメモリで処理 ○ 設定すればKaggle推論環境(T4 x2)で72Bモデルでも推論可

Slide 23

Slide 23 text

AI 23 出力トークンを強制すれば、各トークン(Yes/No等)の出力確率も算出可能 分類タスクなどで重宝。独自LogitsProcessorを定義すればOK vLLM(に限らない)便利な使い方 独自LogitsProcessor 参考 : https://www.kaggle.com/code/cdeotte/infer-34b-with-vllm 各トークンの出力確率

Slide 24

Slide 24 text

AI 24 量子化はパラメータをより少ないビット数で表現し、計算を効率化する技術 限られた計算資源で推論するにあたり量子化が重要 LLM推論時の量子化 LLMでの主要な量子化手法 ● GPTQ ○ 重みをグループ毎に量子化し、各グループの精度を最適化 ● AWQ ○ アクティベーションへの影響からチャネル毎に精度を最適化 量子化モデルで推論するパターン ● 量子化済みのモデルをLoRA等でFineTuneした後、推論 ● 未量子化モデルをFinetuneした後、自前で量子化した上で推論 vLLMでそのまま可 次ページで軽く解説

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

AI 26 ● ローカルLLMを学習・推論するにあたり入門的な知識を共有した ● タスクとしてはまずは因果言語モデルとして扱うのがおすすめ ● LoRA、vLLM、量子化などの技術やツールを駆使することで、限 られた計算資源でも効率的な学習、推論が可能 まとめ