1 of 53

LLMとGPUとネットワーク

@yuyarin

2023-08-25 ENOG79

2 of 53

自己紹介

2

5G MECおよびSRv6 Mobile User Planeの開発を担当

ソフトバンクのデータセンターネットワーク全部みる

川上 雄也

ソフトバンク株式会社 共通プラットフォーム開発本部

シニアネットワークアーキテクト

ソフトウェア&ネットーワークエンジニア@インターネットエクスチェンジ

SDN Technical Lead Engineer@エンタープライズ向けクラウドサービス

2021年より現職

経歴

3 of 53

続々と公開される日本語LLM

3

4 of 53

生成AIのためのGPU投資が加熱

4

5 of 53

LLM (Large Language Model / 大規模言語モデル)

  • 大規模なデータセットとディープラーニングを用いることで精度を高めた自然言語処理(NLP)のモデル

5

6 of 53

この発表の目的

  • AI/MLのいち分野であるLLMが爆発的に広まっています
  • LLMを高精度・短時間で構築するためには超高性能なシステムが必要です
  • HPCの技術をデータセンターネットワーク技術者も知る必要が出てきました
  • AI/MLのためのネットワークの最先端を広く浅く見渡していきます

6

7 of 53

最近の主要な世界のLLM

7

モデル

開発組織

公開年月

パラメータ数

学習データ

モデルの公開先

OpenAI

2020年6月

175B

570GB

-

GPT-3.5

OpenAI

2022年3月

355B

N/A

-

OpenAI

2023年3月

非公開

N/A (推定825TB)

-

Google

2023年5月

非公開(推定340B)

-

-

Meta

2023年7月

7B/13B/70B

-

8 of 53

最近の主要な日本語特化型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

-

9 of 53

LLMをつかう(推論)

  • F16 (FP16) = 16bit/パラメータ × 3.68Bパラメータ = 58.58B bit
  • 約7.76GBのGPUのメモリ(VRAM)があれば動く
    • なんならMacBook Proで動かせる

9

10 of 53

M1 MacBook Proでjapanese-large-lm動かしてみた

10

7.25GB食うpython3

※ M1の場合はCPUとGPUが1つのチップになっていて、CPU用のメモリとGPU用のメモリが共用されている

11 of 53

もっと大きいモデルだとどうなる?

  • GPT-3.5の場合、355BパラメータがFP16だと仮定すると必要なメモリは�約780GB
  • そのままだと1枚のGPUどころか1筐体のGPUのメモリにも乗り切らない
    • 現在のハイエンドのGPUでもメモリは80GB程度で筐体あたり最大8枚=640GB
  • コモディティ化に向けてはパラメータ数を抑える方向に進んでいる
    • GPU1枚で収まるサイズにしつついかに精度を上げていくか

11

※いったんここでは置いておく

12 of 53

LLMをつくる(学習)

  • Transformerという深層学習モデルが最近の主流
  • 行列演算を何度も行うためGPUで処理を行うのが適している

12

Attention is all you need

https://arxiv.org/pdf/1706.03762.pdf

行列演算

13 of 53

LLMの学習にかかる時間

LINE社のjapanese-large-lmの事例では1.7Bのモデルの構築のために�650GBのデータを使用してNVIDIA社のA100 80GB換算で4000GPU時間を使用

13

最終的な学習には約650GBのコーパスを利用していますが、英語の大規模コーパスとして一般的に用いられているもの(Pileコーパス)が約800GBであることを踏まえると、我々のデータも遜色ない大きさであると言えます。

本モデルの構築に要した時間について、例えば1.7BモデルについてはA100 80GBで換算し、約4000GPU時間を費やしています。

さらに大規模なモデルの構築にはとてつもないGPU時間とメモリが必要

14 of 53

LLMの学習にかかる時間を短縮するには?

  • 利用するGPUの枚数を筐体内で増やして分散・並列化する
  • 利用する筐体の台数を増やして分散・並列化する

14

筐体内のGPU間の通信や筐体間の通信がボトルネックになる

※この分野はNVIDIAの独壇場なのでNVIDIAの宣伝っぽい感じになってしまいますが

 最先端で何が起きているのかを知るためにも紹介します

いかにしてGPUの内部バスに近い性能の通信を実現するかが課題

15 of 53

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

16 of 53

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フォームファクタ

17 of 53

SXM

  • GPUに最適化されたNVIDIA独自のフォームファクタ
  • PCIeに比べて
    • メモリ帯域幅が大きい
    • TDB(熱設計電力)が大きい=計算能力が高い(H100)
    • GPU間通信の帯域幅が大きい(NVLink)
  • SXM対応マザーボードとのセットまたはSXMが組み込まれたサーバとして調達

17

A100 SXM

A100 PCIe

NVIDIA A100-PCIe 用

NVLink Bridge

PCIeでもNVLink Bridgeを使うことで

2 GPUまで広帯域接続が可能

18 of 53

GPU Direct v2 - Peer-to-Peer

  • 共有メモリを介さずにPCIeバス経由でGPUメモリ同士で直接データを転送する

18

19 of 53

NVLink

  • GPU同士で直接通信するインターコネクトの独自規格
  • PCIeバスよりも一桁高速
  • A100のNVLink3は600GB/s (4.8Tbps)
  • H100のNVLink4は900GB/s (7.2Tbps)

19

20 of 53

NVSwitch

  • 2つ以上のGPUを相互接続するためのNVLinkのスイッチ
  • 筐体内部で複数GPUを搭載するDGXシリーズで利用される

20

DGX A100用 NVSwitch (第2世代)

21 of 53

NVLinkとNVSwitchの世代とスペック

21

22 of 53

GPU Direct v3 - RDMA

  • RDMA = Remote Direct Memory Access
  • ネットワークを介してリモートホストのGPUのメモリに直接データを送る

22

23 of 53

InfiniBand (IB)

  • HPCやストレージで使われている高信頼性・高可用性の通信技術
  • InfiniBand Trade Associationで規格化
  • AI/MLではGPU間のRDMAを実現するために使用される
  • サーバ側のHCA (Host Channel Adapter)とNW側のSwitch/Routerで構成される

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

24 of 53

InfiniBandの特徴

  • 広帯域
    • 内部バスを外部に延長するコンセプト
  • ロスレス
    • クレジットベースのフローコントロールにより輻輳制御
  • 低レイテンシー
    • HCA(ConnectX-6): 600ns
    • スイッチ(QM8700): 90ns
  • 輻輳制御
    • HoL Blockingを防ぐため
    • 物理リンク毎に最大16個のバーチャルレーン(VL)がありそれぞれキューイングが行われる
    • データ用に15個のVL、管理用に1個のVL(VL15)

24

25 of 53

InfiniBandの階層とパケットフォーマット

  • LRHがL2、GRHがL3、BTH+ETHがL4、ぐらいの理解でOK
  • L2のIDがLID。サーバ(HCA)はポートごとに1つ、スイッチは全体で1つ。
    • 正確にはMACアドレス相当のGUIDがありますがそのへんはInfiniBand入門的な機会に…
    • AI/MLネットワークでは単一サブネット内でLIDを使ってスイッチングされる設計が多い

25

26 of 53

InfiniBand - Subnet Manager

  • ファブリック中のホストや通信経路の検索、監視、および障害回復
    • サブネット内のLIDの割当、フォワーディングテーブルの設定など
  • HCA、Switch、RouterはSubnet Management Agent (SMA)を�サポートする必要がある
  • 要はSDN

26

27 of 53

Connect-X

  • NVIDIA (Mellanox)のHCA製品。PCIeで接続

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

28 of 53

InfiniBand スイッチ

  • 製品としてはほぼNVIDIA(Mellanox)
  • HDR以降のASICはQuantumシリーズ
  • ManagedとUnmanagedがある
    • ManagedはSubnet Managerをスイッチ上で動作させる
    • UnmanagedはSubnet Managerを外部のサーバで動作させるときに使う
    • -00がManaged、-90がUnmanaged

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

29 of 53

InfiniBand用のケーブル

  • HDRではDACまたはAOCを使うことが多い
  • NDRではACCやトランシーバ+ケーブル
    • QM9700で2x400G OSPFを使う場合、�トランシーバにMPOケーブルを2本刺すことになる
    • ACCは1x(2x400G)同士や、1x(2x400G) to 2x400Gの�スプリッタACCがあるらしい

29

MCP1650-H HDR QSFP56 DAC

MFS1S00-HxxxE HDR QSFP56 MMF AOC

30 of 53

DGX

  • NVIDIAが提供するGPUサーバアプライアンス
  • GPU、NVLink、NVSwitch、Connect-Xがバンドルされている
  • DGX A100 はA100が8枚、DGX H100 はH100が8枚。

30

  1. A100 80G x8 (640G)
  2. NVSwitch x6 (4,800GB/s)
  3. ConnectX-6 200/Gb x10 (500GB/s)
  4. 64 コア AMD CPU x2
  5. 30TB GEN4 NVME SSD

DGX A100

31 of 53

DGX SuperPod

  • NVIDIAが提供するDGXのGPUサーバクラスタ
  • ネットワーク、ストレージ、管理系まで全部一式で提供される
  • 現行はほぼDGX A100。最近DGX H100の導入報道が出てきた

31

32 of 53

DGX SuperPod A100のアーキテクチャ

  • Reference Architectureの資料にだいたい書いてある
  • 20台のDGX A100をSU(Scalable Unit)として140台(7SU)までサポート
  • スイッチは40ポートのInfiniBand HDR (200Gbps)のQM8790を使用

32

33 of 53

DGX H100 SuperPod

  • NVSwitchがDGXの外部に出されてNVLinkのFabricが�出来上がるっぽい???
  • サーバあたり 900GB/s x72 まじ???
    • 別ソースでは ConnextX-7 400Gbps x8 でスイッチはQuantum-2

33

34 of 53

フルバイセクション (Full Bisection)

  • バイセクションバンド幅 (Bi-section Bandwidth)
    • 全ての計算ノードが全力で通信した時にシステム全体で達成しうる通信性能の下限
  • Constant Bisection Bandwidth (CBB)
    • バイセクションバンド幅が定数になるネットワーク
    • LeafでオーバーサブしているようなCLOSトポロジーがこれにあたる
  • Full Bisection Bandwidth (FBB)
    • クラスタ内の任意の半数のノードが同時に残り半分のノードにデータを送信してもネットワーク内での競合が発生しない
    • SuperPodもフルバイセクションバンド幅で構成されている

34

Each SU has full bisection bandwidth to ensure maximum application flexibility.

35 of 53

SHARP (Scalable Hierarchical Aggregation and Reduction Protocol)

  • All-Reduceなどの演算をInfiniBandスイッチで行う
    • 複数のノードで分散して計算した結果のvectorを集めて計算して結果をばら撒く
  • NVIDIA独自の機能でライブラリを使うと自動で全部やってくれる
    • SubnetManagerと連携するAggregation Managerが各HCA/SWのSharp Daemonと連携
    • Collective演算でハードウェアMulticastを使うため各HCA/SWにIPoIBの設定が必要

35

36 of 53

SHIELD

  • Self-Healing Interconnect Enhancement for InteLligent Datacenters
  • 障害から高速に回復するための独自機能
  • Subnet Managerによる回復よりも早い

36

37 of 53

RoCEv2 (RDMA over Converged Ethernet)

  • InfiniBandのRDMAをEthernet/IPネットワークで実現するための技術
  • IBのトランスポート(BTH)をUDPの上に乗せる
  • 俺たちのIP CLOS DC Fabricの経験が使えるぜ

37

38 of 53

Lossless Ethernet

  • 輻輳制御とQoSが行われるEthernet
    • AI/ML向けにInfiniBandの同等の性能を出すために必要
  • IEEE DCB (Data Center Bridging)
    • 802.1Qaz ETS (Enhanced Transmission Selection)
    • 802.1Qbb PFC (Priority Flow Control)
    • 802.1Qau ECN (Explicit Congestion Notification)
  • DCQCN
    • PFC + ECN を組み合わせたもの
  • 各機能の詳細はAI/ML基盤の400G DCネットワークを構築した話 がわかりやすい
    • 日本語の資料ではこれが最先端

38

39 of 53

Adaptive Routing / Dynamic Load Balancing

  • ポートの使用率やキューの使用状況に基づいて動的に経路を選択する
  • RoCEv2のECMP+ハッシュによるフローの偏りをなくすことができる
    • Cumulus Linuxの場合ポートごとの帯域使用率のしきい値で発動を制御
  • InfiniBandではSubnet Manager (SM)が管理

39

40 of 53

RoCE用スイッチ

  • NVIDIA(Mellanox)だとSpectrum系のASICのスイッチ
    • レイテンシー、パケロスの面で強いらしい
  • 他社製品だとどう?

40

SN4700

SN3700

ASIC

容量

搭載製品

I/F

Ports

Spectrum-2

6.4Tbps

SN3700

32xQSFP56

32x200Gbps

Spectrum-3

12.8Tbps

SN4700

32xQSFP-DD

32x400Gbps

Spectrum-3

41 of 53

CyberAgentさんの事例

  • DellのサーバにH100を8枚搭載
  • NVIDIA SN4700でフルバイセクション Fat-Tree
  • 400GbE + RoCE + Lossless Ethernet + Adaptive Routing

41

42 of 53

【閑話休題】OSFP-RHS問題

  • 3rd PartyのOSFPトランシーバを買うとConnectX-7に刺さらない問題
  • 2023年春頃にハマる人続出

42

43 of 53

ネットワークトポロジー

  • Fat Tree (folded CLOS)トポロジーではノード数が増えるとホップ数が�増えるし、リンクの本数が多いためコストや消費電力の面で課題がある
  • Dragonfly+トポロジーではホップ数が均一になりリンクの数も減らすことができる(らしい)

43

44 of 53

InfiniBand Topology Generator

44

45 of 53

Ultra Ethernet Consortium (UEC)

  • AI/MLなどのHPCのためのEthernetの通信規格の実現を行う団体
  • 活動内容
    • Ethernet通信におけるプロトコル、電気的/光学的信号特性、APIおよびデータ構造
    • 既存のリンクおよびトランスポートプロトコルを拡張または置き換えるための、リンクレベルおよびエンドツーエンドのネットワークトランスポートプロトコル
    • AIやマシンラーニング、HPC環境に適したリンクレベルおよびエンドツーエンドでの輻輳、テレメトリ、信号のメカニズム
    • さまざまなワークロードおよび動作環境を促進するソフトウェア、ストレージ、セキュリティの構成
  • 設立メンバー
    • AMD、Arista、Broadcom、Cisco、Eviden(an Atos Business)、HPE、Intel、Meta、Microsoft

45

46 of 53

まとめ

  • LLMや生成AIの大流行によりDCNWエンジニアはAI/MLのための�ネットワークも構築・運用できるようにならないといけなくなった
  • その勉強を行うためのベースになる知識や動向をざっくりまとめました
  • みんなでがんばっていきましょう

46

47 of 53

Appendix

47

48 of 53

M1 Macでjapanese-large-lmを動かす 1

  • pyenvで環境構築する場合
  • 関係するパッケージをpipで入れる
  • MPSを使用するのにPyTorchのnightlyビルドが必要なので入れ直す

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

49 of 53

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 of 53

参考文献

50

51 of 53

参考文献

51

52 of 53

参考文献

52

53 of 53

参考文献

53