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
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で ...
Search
Kohecchi
November 08, 2024
Programming
2.9k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
Kohecchi
November 08, 2024
More Decks by Kohecchi
See All by Kohecchi
Polars を Kaggle コンペで使ってみた(LMSYS Chatbot Arena)
kohecchi
1
900
Other Decks in Programming
See All in Programming
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.7k
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
460
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.1k
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
230
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
110
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.8k
1B+ /day規模のログを管理する技術
broadleaf
0
120
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
320
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
230
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
7k
It's Worth the Effort
3n
188
29k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
300
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
エンジニアに許された特別な時間の終わり
watany
107
250k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
160
How to build a perfect <img>
jonoalderson
1
5.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
1.9k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.1k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
380
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Transcript
Kaggle Kernel で vLLM × Gemma 2 を動かす。 関西Kaggler会 in
Osaka 2024 #3 Kohecchi
None
自己紹介 ❖ 金融企業 IT企画部(海外系のお仕事) ❖ 関西 Kaggler 会で知り合ったチームで 金メダル&銀メダル Kohecchi
(こへっち) X: @kohecchi
モチベーション Q1. なんで Gemma 2? → LMSYS や atmaCup #17 で
Gemma 2 が大活躍 Q2. なんで vLLM? → 推論がめっちゃ速いらしい
Gemma2-9b-it を vLLM で推論高速化して たくさんアンサンブルすれば 勝てるんじゃないか・・・? モチベーション
Gemma2-9b-it を vLLM で推論高速化して たくさんアンサンブルすれば 勝てるんじゃないか・・・? モチベーション ・・・と考える人が無駄にする時間を削減したい
アジェンダ 1章 Gemma2 を vLLM で動かしたくなる話 2章 Gemma 2 を
vLLM で動かしたくなくなる話
LMSYS https://www.kaggle.com/competitions/lmsys-chatbot-arena ❖ 開催期間: 2024/5/3 ~ 8/3 ❖ 主催: LMSYS
Chatbot Arena ❖ タスク:2つのLLMに与えた Prompt と モデルの回答 から 勝敗を予測する
LMSYS Chatbot Arena とは https://chat.lmsys.org/
LMSYS上位解法 - LLM&推論高速化 LLM max_len 量子化 その他 高速化 1st Gemma2-9b-it
x2 (TTA) 2000 GPTQ 8 bit Data Parallelism 2nd Gemma2-9b-it RLHFlow/ArmoRM-Llama3-8B-v0.1 4096 4096 ? Data Parallelism 高速化ライブラリのOperator移 植 3rd sfairXC/FsfairX-Gemma2-RM-v0.1 Gemma2-9b-it 4096 3072 bnb 4bit vllm(学習データ生成時) 4th Gemma2-9b-it 3072 情報なし 情報なし 5th Gemma2-9b-it 4096 ※8kも可 bnb 8bit Data Parallelism 長さでソート&バッチ化 Gemma2-9b-it が強かった。T4 x2 だと 2 models アンサンブルで9時間がギリギリ。 高速化手法なしだと、1 model の推論も終わらない。
マルチGPUでの並列処理手法 https://www.kaggle.com/competitions/lmsys-chatbot- arena/discussion/527596
model_0 = Gemma2ForSequenceClassification.from_pretrained( cfg.gemma_dir, device_map = torch.device('cuda:0'), use_cache = False,
) model_1 = Gemma2ForSequenceClassification.from_pretrained( cfg.gemma_dir, device_map = torch.device('cuda:1'), use_cache = False, ) … data = data.sort_values("length", ascending = False) sub_1 = data.iloc[0::2].copy() sub_2 = data.iloc[1::2].copy() with ThreadPoolExecutor(max_workers=2) as executor: results = executor.map(inference, (sub_1, sub_2), (model_0, model_1), (device_0, device_1)) Data Parallelism - 各GPUにモデルをロードして並列処理 GPU 0 にモデルをロード GPU 1 にモデルをロード データを2つに分割して 各GPUで並列処理
とにかくはやい https://blog.vllm.ai/2023/06/20/vllm.html
サポートもしっかりしてる • 量子化モデル(bitsandbytes)をサポート • LoRA アダプタをサポート • Gemma2, Llama3.1 など主要モデルをサポート
https://docs.vllm.ai/en/latest/models/supported_models.html
llm = vllm.LLM( model = model_name, tensor_parallel_size = 2, gpu_memory_utilization
= 0.95, dtype = "half", enforce_eager = True, max_model_len = MAX_LENGTH, ) tokenizer = llm.get_tokenizer() sampling_params = vllm.SamplingParams( top_p = 0.9, temperature = 0, seed = 777, skip_special_tokens = True, max_tokens = 1, ) responses = model.generate( prompts, sampling_params = sampling_params, ) コードもシンプル モデルのロード tokenizer の取得 推論 パラメータ設定
そろそろこう思ってきませんか? Gemma2-9b-it を vLLM で推論高速化して たくさんアンサンブルすれば 勝てるんじゃないか・・・?
アジェンダ 1章 Gemma2 を vLLM で動かしたくなる話 2章 Gemma 2 を
vLLM で動かしたくなくなる話
調べてみると、意外と情報がない
vllm==0.6.3.post1 で検証 (11/8時点 最新版) Kaggle Kernel で vLLM × Gemma
2 を動かす。
基本的にエラーになります
vLLM x Gemma2 x Kaggle GPU の相性が良くない Kaggle で使える GPU(T4,
P100)が古すぎて、Flash Attention 2 がサポートして いない(= Kaggle環境の vLLM で Gemma 2 が動かせない) [Bug]: Gemma-2-2b-it load model hangs by vLLM==0.5.1 on Tesla T4 GPU #7464 「もっと新しいGPUを使え」とし か言えない。もしくは、flash attention が T4 をサポートする のを祈るんだな。
config をいじれば動かせる config.json を書き換えれば、T4 x2 で動かせる! • "attn_logit_softcapping": 50.0 →
null • "final_logit_softcapping": 30.0 → null
つまづきポイント • import vllm でエラー → pip install 順の修正、 --force-reinstall
オプション追加 • モデルロードでエラー → config.json 修正 • 推論でエラー → Parameter 修正 : : 数多のエラーを 乗り越えて ようやく動いた
検証結果 LMSYS の Test データ(約25,000件)で推論時間を検証。vLLMめっちゃ速い! # LLM vllm 量子化 max_len
その他 結果 1 Gemma2-9b-it なし なし 1000 ー T4 16GB に載らない 2 Gemma2-9b-it なし bnb 4 bit (Unthlos) 2048 ソート Data Parallelism 4時間40分 3 Gemma2-9b-it なし bnb 4 bit (Unthlos) 3072 ソート Data Parallelism 6時間00分 4 Gemma2-9b-it あり なし 1000 なし 1時間36分 5 Gemma2-9b-it あり なし 2048 なし 2時間14分 6 Gemma2-9b-it あり なし 3072 なし 2時間20分
Unsloth × vLLM × Gemma-2-9b-it (エラー解消できず) Unsloth は vLLM をサポートしているが、エラー解消できず断念。
https://docs.vllm.ai/en/v0.6.2/quantization/bnb.html
Classification Model は使えない・・?(未検証) どうやらすんなりは使えない模様。ただ使えるかもしれない
まとめ # LLM 種類 LoRA vllm Unsloth 結果 1 Gemma2-9b-it
Causal なし あり なし 〇 動く。めっちゃ速い 2 Gemma2-9b-it Causal あり あり なし 〇 動く。めっちゃ速い 3 Gemma2-9b-it Causal なし あり あり × 動かず 4 Gemma2-9b-it Classifier なし あり なし △ひと手間必要そう(未検証) • vLLM × Gemma2 × T4 の相性が悪いが、Causal モデルであれば使える • 推論はめっちゃ速い • しばらくは LMSYS の公開ノートブックを使う方が安全かも
atmaCup #17 データで Gemma 2 + LoRA × vllm ×
T4 を動かす推論コードを公開 https://www.kaggle.com/code/kohecchi/atmacup17-gemma2-lora-x-vllm-causal-infer
Thank you