Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で ...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kohecchi
November 08, 2024
Programming
3k
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
1.4k
Polars を Kaggle コンペで使ってみた(LMSYS Chatbot Arena)
kohecchi
1
920
Other Decks in Programming
See All in Programming
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
16
13k
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
150
AI活用は、個人から組織へ|マルチプレイヤーエージェントハーネス「QM」の社内活用事例 / AI use is moving from individuals to orgs
rkaga
1
160
Are APIs Still Relevant in the AI Era?
soyuka
0
300
Java 27新機能 / Java 27 new features
kishida
2
170
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
310
巨大モノリシックアプリ モダン化大作戦
ktcryomm
1
1.1k
XP祭りでしか伝わらないフリップネタ #xpjug
murabayashi
0
150
手動確認はもう限界 〜XCUITestでCustom URL Schemeの遷移を起動種別ごとに自動テストする〜 / Testing Custom URL Schemes with XCUITest
otouto
0
330
JRuby: Past, Present, and Future
headius
0
190
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
500
What We Talk About When We Talk About XP
m_seki
2
680
Featured
See All Featured
The Mindset for Success: Future Career Progression
greggifford
PRO
0
510
HDC tutorial
michielstock
2
880
Building an army of robots
kneath
307
46k
The untapped power of vector embeddings
frankvandijk
2
1.9k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
700
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Un-Boring Meetings
codingconduct
0
420
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
580
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
560
[SF Ruby Conf 2025] Rails X
palkan
3
1.4k
Code Reviewing Like a Champion
maltzj
528
40k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
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