LLMとGPUとネットワーク
@yuyarin
2023-08-25 ENOG79
自己紹介
2
5G MECおよびSRv6 Mobile User Planeの開発を担当
ソフトバンクのデータセンターネットワーク全部みる
川上 雄也
ソフトバンク株式会社 共通プラットフォーム開発本部
シニアネットワークアーキテクト
ソフトウェア&ネットーワークエンジニア@インターネットエクスチェンジ
SDN Technical Lead Engineer@エンタープライズ向けクラウドサービス
2021年より現職
経歴
続々と公開される日本語LLM
3
生成AIのためのGPU投資が加熱
4
LLM (Large Language Model / 大規模言語モデル)
5
この発表の目的
6
最近の主要な世界のLLM
7
モデル | 開発組織 | 公開年月 | パラメータ数 | 学習データ | モデルの公開先 |
OpenAI | 2020年6月 | 175B | 570GB | - | |
GPT-3.5 | OpenAI | 2022年3月 | 355B | N/A | - |
OpenAI | 2023年3月 | 非公開 | N/A (推定825TB) | - | |
2023年5月 | 非公開(推定340B) | - | - | ||
Meta | 2023年7月 | 7B/13B/70B | - |
最近の主要な日本語特化型LLM
8
モデル | 開発組織 | 公開年月 | パラメータ数 | 学習データ | モデルの公開先 |
Rinna | 2023年5月 | 3.6B | - | ||
CyberAgent | 2023年5月 | 7B | - | ||
NEC | 2023年7月 | 13B | - | - | |
LINE | 2023年8月 | 1.7B/3.6B | 650GB | ||
Stability AI | 2023年8月 | 7B | 750B Token | ||
東京大学�松尾研究室 | 2023年8月 | 10B | - |
LLMをつかう(推論)
9
M1 MacBook Proでjapanese-large-lm動かしてみた
10
7.25GB食うpython3
※ M1の場合はCPUとGPUが1つのチップになっていて、CPU用のメモリとGPU用のメモリが共用されている
もっと大きいモデルだとどうなる?
11
※いったんここでは置いておく
LLMをつくる(学習)
12
Attention is all you need
行列演算
LLMの学習にかかる時間
LINE社のjapanese-large-lmの事例では1.7Bのモデルの構築のために�650GBのデータを使用してNVIDIA社のA100 80GB換算で4000GPU時間を使用
13
最終的な学習には約650GBのコーパスを利用していますが、英語の大規模コーパスとして一般的に用いられているもの(Pileコーパス)が約800GBであることを踏まえると、我々のデータも遜色ない大きさであると言えます。
本モデルの構築に要した時間について、例えば1.7BモデルについてはA100 80GBで換算し、約4000GPU時間を費やしています。
さらに大規模なモデルの構築にはとてつもないGPU時間とメモリが必要
LLMの学習にかかる時間を短縮するには?
14
筐体内のGPU間の通信や筐体間の通信がボトルネックになる
※この分野はNVIDIAの独壇場なのでNVIDIAの宣伝っぽい感じになってしまいますが
最先端で何が起きているのかを知るためにも紹介します
いかにしてGPUの内部バスに近い性能の通信を実現するかが課題
AI/MLのためのネットワーク
15
いままで
GPUのための超広帯域、低遅延、ロスレスなネットワークが必要
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Compute
Storage Centric
CPU Centric
これから
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
GPU
Storage Centric
CPU Centric
GPU Centric
Lossy
Lossless
NVIDIA データセンター向けGPU
3世代前までの代表的なモデルのスペック
16
アーキ テクチャー | モデル | 発表 | CUDA コア数 | Tensor コア数 | メモリ 容量 | メモリ 帯域幅 | NVLink 帯域幅 | PCIe 帯域幅 | 消費電力 |
Pascal | P100 | 2016/4 | 3,584 | - | 16 GB | 732 GB/s | 160 GB/s | 32 GB/s | 250W |
Volta | V100 | 2017/5 | 5,120 | 640 | 32 GB | 900 GB/s | 300 GB/s | 32 GB/s | 300W |
Ampere | A100 | 2020/5 | 6,912 | 432 | 80 GB | 2,039 GB/s | 600 GB/s | 64 GB/s | 400W |
Hopper | H100 | 2022/10 | 14,592 | 456 | 80 GB | 3,350 GB/s | 900 GB/s | 128 GB/s | 700W |
V100 SXM
A100 SXM
H100 SXM
※メモリ帯域幅や消費電力はSXMフォームファクタ
SXM
17
A100 SXM
A100 PCIe
NVIDIA A100-PCIe 用
NVLink Bridge
PCIeでもNVLink Bridgeを使うことで
2 GPUまで広帯域接続が可能
GPU Direct v2 - Peer-to-Peer
18
NVLink
19
NVSwitch
20
DGX A100用 NVSwitch (第2世代)
NVLinkとNVSwitchの世代とスペック
21
GPU Direct v3 - RDMA
22
InfiniBand (IB)
23
世代 | | レーンあたり実効帯域 | 4レーン(4X)実効帯域 | 12レーン(12X)実効帯域 |
SDR | Single Data Rate | 2Gbps | 8Gbps | 24Gbps |
DDR | Double Data Rate | 4Gbps | 16Gbps | 48Gbps |
QDR | Quad Data Rate | 8Gbps | 32Gbps | 96Gbps |
FDR | Fourteen Data Rate | 14Gbps | 56Gbps | 168Gbps |
EDR | Enhanced Data Rate | 25Gbps | 100Gbps | 300Gbps |
HDR | High Data Rate | 50Gbps | 200Gbps | 600Gbps |
NDR | Next Data Rate | 100Gbps | 400Gbps | 1200Gbps |
XDR | eXtended Data Rate | 250Gbps | 1000Gbps | 3000Gbps |
InfiniBandの特徴
24
InfiniBandの階層とパケットフォーマット
25
InfiniBand - Subnet Manager
26
Connect-X
27
ConnectX-6 (2-port IC)
世代 | 製品 | I/F | Infiniband Speed | Ethernet Speed | Host interface |
HDR | ConnectX-6 | 1x 200G QSFP56 or 2x 100G QSFP56 | 1x HDR 200Gb/s, 2x EDR 100Gb/s | 1x 200GbE 2x 10/25/40/50/100GbE | PCIe Gen4.0 x16 |
NDR | ConnectX-7 | 1x400G OSFP | NDR 400Gb/s, HDR 200Gb/s, EDR 100Gb/s | 10/25/50/100/200/400GbE | PCIe Gen5, up to x32 lanes |
ConnectX-7
InfiniBand スイッチ
28
世代 | ASIC | 搭載製品 | I/F | Ports | CPU |
HDR | Quantum | QM8700 QM8790 | 40xQSFP56 | 40x200Gbps | Broadwell ComEx D-1508 2.2GHZ x2 |
NDR | Quantum-2 | QM9700 QM9790 | 32xOSFP | 64x400Gbps | x86 Coffee Lake i3 x2 |
QM8700
QM9700
InfiniBand用のケーブル
29
MCP1650-H HDR QSFP56 DAC
MFS1S00-HxxxE HDR QSFP56 MMF AOC
DGX
30
DGX A100
DGX SuperPod
31
DGX SuperPod A100のアーキテクチャ
32
DGX H100 SuperPod
33
フルバイセクション (Full Bisection)
34
Each SU has full bisection bandwidth to ensure maximum application flexibility.
SHARP (Scalable Hierarchical Aggregation and Reduction Protocol)
35
SHIELD
36
RoCEv2 (RDMA over Converged Ethernet)
37
Lossless Ethernet
38
Adaptive Routing / Dynamic Load Balancing
39
RoCE用スイッチ
40
SN4700
SN3700
ASIC | 容量 | 搭載製品 | I/F | Ports |
Spectrum-2 | 6.4Tbps | SN3700 | 32xQSFP56 | 32x200Gbps |
Spectrum-3 | 12.8Tbps | SN4700 | 32xQSFP-DD | 32x400Gbps |
Spectrum-3
CyberAgentさんの事例
41
【閑話休題】OSFP-RHS問題
42
ネットワークトポロジー
43
InfiniBand Topology Generator
44
Ultra Ethernet Consortium (UEC)
45
まとめ
46
Appendix
47
M1 Macでjapanese-large-lmを動かす 1
48
brew install pyenv
pyenv install 3.11.4
pyenv local 3.11.4
pip install torch transformers sentencepiece
pip install --upgrade --no-deps --force-reinstall --pre torch torchvision \
--index-url https://download.pytorch.org/whl/nightly/cpu
M1 Macでjapanese-large-lmを動かす 2
deviceでmpsを指定する必要がある
49
import torch
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline, set_seed
model = AutoModelForCausalLM.from_pretrained("line-corporation/japanese-large-lm-3.6b", torch_dtype=torch.float16)
tokenizer = AutoTokenizer.from_pretrained("line-corporation/japanese-large-lm-3.6b", use_fast=False)
generator = pipeline("text-generation", model=model, tokenizer=tokenizer, device="mps")
set_seed(101)
text = generator(
"おはようございます、今日の天気は",
max_length=30,
do_sample=True,
pad_token_id=tokenizer.pad_token_id,
num_return_sequences=5,
)
for t in text:
print(t)
参考文献
50
参考文献
51
参考文献
52
参考文献
53