Slide 1

Slide 1 text

LLMを「速く」「安く」 動かすには Shintarou Okada Engenieer, Preferred Networks.Inc

Slide 2

Slide 2 text

Preferred Networksのエンジニア LLM追加学習‧評価基盤の開発 llama.cppへPLaMo-13Bサポート追加 ⾃⼰紹介 岡⽥ 真太郎 / Shintarou Okada

Slide 3

Slide 3 text

今、⽣成AIがアツい 総務省の政策白書から引用 https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r06/html/nd219100.html 8年後には 180兆円に 現時点 世界の⽣成AI市場規模の推移と予測

Slide 4

Slide 4 text

OpenAIが開発したLLMを使ったWebサービス これまでのAIと⽐べてめっちゃかしこい ChatGPTの衝撃 リリースから2ヶ⽉で 1億ユーザー を獲得(史上最速)

Slide 5

Slide 5 text

各社も続々とLLMサービスを展開

Slide 6

Slide 6 text

公開LLMも続々登場 https://github.com/QwenLM/Qwen から引⽤ https://ai.meta.com/blog/meta-llama-3/ から引⽤

Slide 7

Slide 7 text

プライバシー‧秘密情報の保護 LLMのオンプレでの利⽤も今後ますます重要に 独⾃データを学習したカスタムモデルの利⽤

Slide 8

Slide 8 text

しかしそのまま動かすと遅い&コストが⾼い……

Slide 9

Slide 9 text

LLMを速く動かすには? 安く動かすには? そもそもLLMってどういう仕組みなの?

Slide 10

Slide 10 text

LLMってなんなのか Large Language Model ⼤規模 ⾔語モデル

Slide 11

Slide 11 text

LLMってなんなのか Large Language Model ⼤規模 ⾔語モデル

Slide 12

Slide 12 text

LLMってなんなのか Large Language Model ⼤規模 ⾔語モデル パラメータが めちゃくちゃ多い

Slide 13

Slide 13 text

スケーリング則:モデルとデータは⼤きいほど※ 賢い モデルも データ(トークン量)も ⼤きい ※ 賢い ※言語モデルとして精度が高い 図は「Training Compute-Optimal Large Language Models」( https://arxiv.org/abs/2203.15556 ) から引⽤

Slide 14

Slide 14 text

スケーリング則:モデルとデータは大きいほど ※ 賢い ※ 賢い ※言語モデルとして精度が高い 図は「Training Compute-Optimal Large Language Models」( https://arxiv.org/abs/2203.15556 ) から引用 大規模にするほど どんどん賢くなる モデルも データ(トークン量)も 大きい

Slide 15

Slide 15 text

「⼤規模」って具体的にはどれくらい Nemotron4 340B Llama3 70B GPT3 Davinci 175B Llama2 7B GPT2 1.5B GPT1 0.1B

Slide 16

Slide 16 text

「⼤規模」って具体的にはどれくらい Nemotron4 340B Llama3 70B GPT3 Davinci 175B Llama2 7B GPT2 1.5B GPT1 0.1B 約140GB

Slide 17

Slide 17 text

LLMの「LM」ってなんなのか Large Language Model ⼤規模 ⾔語モデル パラメータが めちゃくちゃ多い

Slide 18

Slide 18 text

LLMの「LM」ってなんなのか Large Language Model ⼤規模 ⾔語モデル ⽂章の続きを少し 予測するモデル パラメータが めちゃくちゃ多い

Slide 19

Slide 19 text

「⾔語モデル」は⽂章の続きを少し予測するモデル あしびきの
 山鳥
 イルカ

Slide 20

Slide 20 text

「⾔語モデル」は⽂章の続きを少し予測するモデル あしびきの
 ⼭⿃⭕
 イルカ✘

Slide 21

Slide 21 text

実際は「出現確率」を推定 あしびきの
 ⼭⿃ 0.9 を 0.003 イルカ 0.02 酸素 0.002  ︙  ︙ small 0.0005

Slide 22

Slide 22 text

⻑く出⼒するために繰り返し実⾏して伸ばす

Slide 23

Slide 23 text

⻑く出⼒するために繰り返し実⾏して伸ばす トークン(Token)

Slide 24

Slide 24 text

⻑く出⼒するために繰り返し実⾏して伸ばす

Slide 25

Slide 25 text

⻑く出⼒するために繰り返し実⾏して伸ばす

Slide 26

Slide 26 text

⻑く出⼒するために繰り返し実⾏して伸ばす

Slide 27

Slide 27 text

⻑く出⼒するために繰り返し実⾏して伸ばす 前の トークン

Slide 28

Slide 28 text

⻑く出⼒するために繰り返し実⾏して伸ばす 新しい トークン 前の トークン

Slide 29

Slide 29 text

「⾔語モデル」が「⼤規模」だと発⽣する問題 Large Language Model ⼤規模 ⾔語モデル ⽂章の続きを少し 予測するモデル パラメータが めちゃくちゃ多い

Slide 30

Slide 30 text

「⾔語モデル」が「⼤規模」だと発⽣する問題 Large Language Model ⼤規模 ⾔語モデル ⽂章の続きを少し 予測するモデル パラメータが めちゃくちゃ多い

Slide 31

Slide 31 text

「⾔語モデル」が「⼤規模」だと発⽣する問題 Large Language Model ⼤規模 ⾔語モデル ⽂章の続きを少し 予測するモデル パラメータが めちゃくちゃ多い ⼤量のメモリアクセス  

Slide 32

Slide 32 text

⻑い⽂章の⽣成に⼤量のメモリアクセスが必要 依存により並列化できない ... こ ん に ち は 今 日 は とて も い い 天 気 で す 。 


Slide 33

Slide 33 text

⻑い⽂章の⽣成に⼤量のメモリアクセスが必要 依存により並列化できない ... こ ん に ち は 今 日 は とて も い い 天 気 で す 。 


Slide 34

Slide 34 text

⻑い⽂章の⽣成に⼤量のメモリアクセスが必要 依存により並列化できない ... こ ん に ち は 今 日 は とて も い い 天 気 で す 。 
 必要

Slide 35

Slide 35 text

⻑い⽂章の⽣成に⼤量のメモリアクセスが必要 依存により並列化できない ⼀回の⽣成ごとに LLMの全パラメータを メモリから読み出す ... こ ん に ち は 今 日 は とて も い い 天 気 で す 。 


Slide 36

Slide 36 text

⻑い⽂章の⽣成に⼤量のメモリアクセスが必要 ⼀回の⽣成ごとに LLMの全パラメータを メモリから読み出す ... 70B LLMだと 140GBとか 依存により並列化できない こ ん に ち は 今 日 は とて も い い 天 気 で す 。 


Slide 37

Slide 37 text

⽇本速読解⼒協会によると、 ⽇本⼈の読むスピード 400~600⽂字/分 参考 https://www.sokunousokudoku.net/media/?p=9192 Chatでは速度も求められる

Slide 38

Slide 38 text

Chatでは速度も求められる ⽇本速読解⼒協会によると、 ⽇本⼈の読むスピード 400~600⽂字/分=10⽂字/秒 参考 https://www.sokunousokudoku.net/media/?p=9192 ⽇本語対応LLMはだいたい1⽂字が1トークン

Slide 39

Slide 39 text

1トークンの⽣成に140GB読み込むとすると 1秒間に10トークン分 1.4TBメモリを読み込む必要がある Chatでは速度も求められる ⽇本語対応LLMはだいたい1⽂字が1トークン ⽇本速読解⼒協会によると、 ⽇本⼈の読むスピード 400~600⽂字/分=10⽂字/秒 参考 https://www.sokunousokudoku.net/media/?p=9192

Slide 40

Slide 40 text

メモリの壁:現代においても ⼤量のデータに素早くアクセスするのは困難 図は「AI and Memory Wall」( https://arxiv.org/abs/2403.14123 ) から引⽤ 対数 スケール

Slide 41

Slide 41 text

メモリの壁:現代においても ⼤量のデータに素早くアクセスするのは困難 図は「AI and Memory Wall」( https://arxiv.org/abs/2403.14123 ) から引⽤ 計算性能は20年間で 60000倍

Slide 42

Slide 42 text

メモリの壁:現代においても ⼤量のデータに素早くアクセスするのは困難 図は「AI and Memory Wall」( https://arxiv.org/abs/2403.14123 ) から引⽤ インターコネクト速度は 20年間で 30倍 メモリ速度は 20年間で 100倍

Slide 43

Slide 43 text

メモリの壁:現代においても ⼤量のデータに素早くアクセスするのは困難 図は「AI and Memory Wall」( https://arxiv.org/abs/2403.14123 ) から引用 速いメモリは 値段が⾼い 20年間で 100倍 20年間で 30倍 20年間で 60000倍

Slide 44

Slide 44 text

ハードウェアごとの 70B級 LLM(≒140GB)のトークン⽣成速度の理論上限 万円 ⽣成token/sec(理論上限) ⽇本⼈の 読む速度

Slide 45

Slide 45 text

ハードウェアごとの 70B級 LLM(≒140GB)のトークン⽣成速度の理論上限 万円 ⽣成token/sec(理論上限) ⽇本⼈の 読む速度 DDR5-5600 (dual channel) 64GB x4 メモリが多めな 最近のデスクトップPC 0.64 token/sec

Slide 46

Slide 46 text

ハードウェアごとの 70B級 LLM(≒140GB)のトークン⽣成速度の理論上限 NVIDIA A100 80GB PCIe x2 NVIDIA H100 80GB PCIe x2 万円 ⽣成token/sec(理論上限) ⽇本⼈の 読む速度 DDR5-5600 (dual channel) 64GB x4

Slide 47

Slide 47 text

ハードウェアごとの 70B級 LLM(≒140GB)のトークン⽣成速度の理論上限 NVIDIA A100 80GB PCIe x2 NVIDIA H100 80GB PCIe x2 万円 ⽣成token/sec(理論上限) 日本人の 読む速度 DDR5-5600 (dual channel) 64GB x4 80GBに 乗り切らないので 2台必要

Slide 48

Slide 48 text

ハードウェアごとの 70B級 LLM(≒140GB)のトークン⽣成速度の理論上限 NVIDIA A100 80GB PCIe x2 NVIDIA H100 80GB PCIe x2 万円 ⽣成token/sec(理論上限) ⽇本⼈の 読む速度 DDR5-5600 (dual channel) 64GB x4 440万円 1040万円

Slide 49

Slide 49 text

「速く」「安く」するために なんとかしてモデルデータを⼩さくしたい

Slide 50

Slide 50 text

モデルデータサイズを⼩さくして 「速く」「安く」する⼯夫 ● ⼩規模⾔語モデル (SLM) ● 量⼦化(Quantization)

Slide 51

Slide 51 text

モデルデータサイズを⼩さくして 「速く」「安く」する⼯夫 ● ⼩規模⾔語モデル (SLM) ● 量⼦化(Quantization)

Slide 52

Slide 52 text

個々のパラメータを⼩さくする:量⼦化

Slide 53

Slide 53 text

個々のパラメータを⼩さくする:量⼦化 4bitだと 約1/4に

Slide 54

Slide 54 text

Llama3-70B 4bit量⼦化(≒35GB+α)の トークン⽣成速度の実測値(llama.cpp Q4K_M) 万円 ⽣成token/sec(実測値) (DDR5-5600 (dual channel) 32GB x2 *理論上限) NVIDIA H100 80GB PCIe x1 NVIDIA A100 80GB PCIe x1 ⽇本⼈の 読む速度 参考:https://github.com/XiongjieDai/GPU-Benchmarks-on-LLM-Inferen

Slide 55

Slide 55 text

Llama3-70B 4bit量⼦化(≒35GB+α)の トークン⽣成速度の実測値(llama.cpp Q4K_M) 万円 ⽣成token/sec(実測値) (DDR5-5600 (dual channel) 32GB x2 *理論上限) NVIDIA H100 80GB PCIe NVIDIA A100 80GB PCIe 日本人の 読む速度 参考:https://github.com/XiongjieDai/GPU-Benchmarks-on-LLM-Inference x1 x1 bfloat16のときは2個必要だったが 量⼦化で必要な個数 を減らせる

Slide 56

Slide 56 text

万円 ⽣成token/sec(実測値) (DDR5-5600 (dual channel) 32GB x2 *理論上限) NVIDIA H100 80GB PCIe x1 NVIDIA A100 80GB PCIe x1 NVIDIA RTX4090 24GB x2 ⽇本⼈の 読む速度 量⼦化で安いグラボ に乗せられる Llama3-70B 4bit量⼦化(≒35GB+α)の トークン⽣成速度の実測値(llama.cpp Q4K_M) 参考:https://github.com/XiongjieDai/GPU-Benchmarks-on-LLM-Inference

Slide 57

Slide 57 text

Llama3-70B 4bit量⼦化(≒35GB+α)の トークン⽣成速度の実測値(llama.cpp Q4K_M) 万円 ⽣成token/sec(実測値) (DDR5-5600 (dual channel) 32GB x2 *理論上限) NVIDIA H100 80GB PCIe x1 NVIDIA A100 80GB PCIe x1 70万円 NVIDIA RTX4090 24GB x2 ⽇本⼈の 読む速度 参考:https://github.com/XiongjieDai/GPU-Benchmarks-on-LLM-Inference

Slide 58

Slide 58 text

量⼦化でLLMがスマホで動かせる llama.cppのAndroid example モデル: Mistral-7B 4bit量⼦化 Android端末:Umidigi-A13-Pro-Max 12GB RAM

Slide 59

Slide 59 text

4bitまでの量⼦化であれば精度はほとんど落ちない 図は https://github.com/ggerganov/llama.cpp/pull/5747 から引⽤

Slide 60

Slide 60 text

モデルデータサイズを⼩さくして 「速く」「安く」する⼯夫 ● ⼩規模⾔語モデル (SLM) ● 量⼦化(Quantization)

Slide 61

Slide 61 text

元から⼩さい:⼩規模⾔語モデル(SLM) 元からモデルを⼩さくしておけばいいじゃん! https://www.llama.com/ から引⽤ llama3.2の1B, 3Bモデル

Slide 62

Slide 62 text

元から⼩さい:⼩規模⾔語モデル(SLM) 元からモデルを⼩さくしておけばいいじゃん! でも性能が悪くなってしまうのでは?

Slide 63

Slide 63 text

元から⼩さい:⼩規模⾔語モデル(SLM) ● ⽤途を限定 ● 学習トークン量を ⼤幅に増やす 元からモデルを⼩さくしておけばいいじゃん! でも性能が悪くなってしまうのでは?

Slide 64

Slide 64 text

元から小さい:小規模言語モデル( SLM) 元からモデルを小さくしておけばいいじゃん! でも性能が悪くなってしまうのでは? ● 用途を限定 ● 学習トークン量を大 幅に増やす

Slide 65

Slide 65 text

学習トークン量を増やすと精度を維持できる 図は https://www.harmdevries.com/post/model-size-vs-compute-overhead/ から引用 Chinchillaスケーリング則を元に モデルサイズ(とトークン量)を変えて 同⼀の精度のモデルのライン 学習コストの 増加⽐率 モデルサイズの⽐率

Slide 66

Slide 66 text

学習トークン量を増やすと精度を維持できる 図は https://www.harmdevries.com/post/model-size-vs-compute-overhead/ から引用 Chinchillaスケーリング則を元に モデルサイズ(とトークン量)を変えて 同⼀の精度のモデルのライン 学習コストの 増加⽐率 モデルサイズの⽐率 基準

Slide 67

Slide 67 text

学習トークン量を増やすと精度を維持できる 図は https://www.harmdevries.com/post/model-size-vs-compute-overhead/ から引用 モデルを⼤きくすると 同⼀精度を達成するための 学習コストは緩やかに⼤きくなる 学習コストの 増加⽐率 モデルサイズの⽐率 基準

Slide 68

Slide 68 text

学習トークン量を増やすと精度を維持できる 図は https://www.harmdevries.com/post/model-size-vs-compute-overhead/ から引用 モデルを⼩さくすると 同⼀精度を達成するための 学習コストは急激に⼤きくなる 学習コストの 増加⽐率 モデルサイズの⽐率 基準

Slide 69

Slide 69 text

学習コストの 増加⽐率 モデルサイズの⽐率 学習トークン量を増やすと精度を維持できる 図は https://www.harmdevries.com/post/model-size-vs-compute-overhead/ から引用 基準 モデルを⼩さくすると 同⼀精度を達成するための 学習コストは急激に⼤きくなる 登ろう!!

Slide 70

Slide 70 text

PFNのSLM:PLaMo-1B 1BのLLMは Chinchillaスケーリング則では 20B tokenが学習コスト最適

Slide 71

Slide 71 text

PFNのSLM:PLaMo-1B ※ https://www.preferred.jp/ja/news/pr20240828/ リリース時点での情報 1BのLLMは Chinchillaスケーリング則では 20B tokenが学習コスト最適 4T(=4000B)超 tokenで学習

Slide 72

Slide 72 text

PFNのSLM:PLaMo-1B 1BのLLMは Chinchillaスケーリング則では 20B tokenが学習コスト最適 1Bで 13BのLLMよりも⾼い ⽇本語性能 4T(=4000B)超 tokenで学習 ※ https://www.preferred.jp/ja/news/pr20240828/ リリース時点での情報

Slide 73

Slide 73 text

LLMの利⽤は今後ますます重要になる LLMを速く動かすには メモリアクセス速度が重要 ⾼速化、省コスト化は量⼦化や ⼩規模⾔語モデル(SLM)で対応 まとめ

Slide 74

Slide 74 text

補⾜:Apple Mシリーズ 万円 ⽣成token/sec(実測値) (DDR5-5600 (dual channel) 32GB x2 *理論上限) NVIDIA H100 80GB PCIe x1 NVIDIA A100 80GB PCIe x1 参考:https://github.com/XiongjieDai/GPU-Benchmarks-on-LLM-Inference ⽇本⼈の 読む速度 NVIDIA RTX4090 24GB x2 Apple M2 Ultra 192GB 300W
 900W