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
20260716_Kaggle_tutorial_v7_lt.pdf
kohecchi
1
280
Polars を Kaggle コンペで使ってみた(LMSYS Chatbot Arena)
kohecchi
1
900
Other Decks in Programming
See All in Programming
AI 輔助遺留系統現代化的經驗分享
jame2408
1
1.2k
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
yield再入門 #phpcon
o0h
PRO
0
470
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
380
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
140
【やさしく解説 設計編・中級 #1】一つの車に、運転手は一人 ~ある倉庫システムの事例から~
panda728
PRO
0
180
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
130
フィードバックで育てるAI開発
kotaminato
1
120
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.8k
Claude Team Plan導入・ガイド
tk3fftk
0
210
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
330
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
300
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
The Spectacular Lies of Maps
axbom
PRO
1
860
Statistics for Hackers
jakevdp
799
230k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.7k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
900
30 Presentation Tips
portentint
PRO
1
350
The untapped power of vector embeddings
frankvandijk
2
1.8k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
370
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
410
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