Ryzen Zen5 一般向け CPU で過去最高の浮動小数点能力

AMD Ryzen Zen5 世代の Desktop CPU で vfpbench を走らせてみました。使用したのは Ryzen 7 9700X で TDP はデフォルト (65W) 設定です。

Zen5 は AVX512 の 512bit FMA 積和命令を同時に 2命令実行可能で、この場合 32bit の浮動小数点演算をサイクルあたり 64 回。これまでの CPU の倍の演算能力になります。

以下は 9700X のシングルスレッド単精度からの抜粋です。512bit の AVX512 命令がスカラーや 128bit など他の命令と同じ IPC になっていることがわかります。512bit の FMA (vfmaddps) も同じ IPC で 2命令走っています。

 9700X Zen5                      TIME(s)   MFLOPS      MOPS     FOP   IPC
FMA vfmaddss (32bit x1) n12       0.450    22301.1    11150.5  (  2.0 2.0)   スカラー fma
FMA vfmaddps (32bit x4) n12       0.451    89189.2    11148.6  (  8.0 2.0)   128bit fma
FMA vfmaddps (32bit x8) n12       0.450   178399.7    11150.0  ( 16.0 2.0)   256bit fma
AVX512 vmulps (32bit x16) n12     0.450   178398.1    11149.9  ( 16.0 2.0)   512bit mul
AVX512 vaddps (32bit x16) n12     0.451   178338.0    11146.1  ( 16.0 2.0)   512bit add
AVX512 vfmaddps (32bit x16) n12   0.451   356760.6    11148.8  ( 32.0 2.0)   512bit fma

さらに FMA ではなく乗算命令+加算命令の場合は以下のようになります。

 9700X Zen5                      TIME(s)   MFLOPS      MOPS     FOP   IPC
AVX512 vml+adps (32bit x16) n12   0.225   356510.6    22281.9  ( 16.0 4.0)   512bit mul + add

512bit 加算 x2 と 512bit 乗算 x2 が同時に走っており IPC は 4。ピーク FLOPS 値は FMA x2 と同等で、加算+乗算命令の組み合わせの場合は AVX512 512bit 命令を同時に 4命令実行できることになります。

Zen4 では 512bit AVX512 命令はクロックあたり 1命令相当だったので、Zen5 の浮動小数点演算能力は Zen4 比で 2倍です。以下は Ryzen 7 7840HS (Zen4) の結果からの抜粋です。こちらは Zen5 の結果とは違い、256bit 命令に対して 512bit 命令の IPC が半減していることがわかります。

 7840HS Zen4                     TIME(s)   MFLOPS      MOPS     FOP   IPC
FMA vfmaddps (32bit x8) n12       0.337   162355.4    10147.2  ( 16.0 2.7)   FMA3   256bit fma
AVX512 vfmaddps (32bit x8) n12    0.342   160130.1    10008.1  ( 16.0 2.6)   AVX512 256bit fma
AVX512 vfmaddps (32bit x16) n12   0.680   160984.2     5030.8  ( 32.0 1.3)   AVX512 512bit fma

↑ 7840HS の IPC が割り切れない値 (1.3 や 2.6) になっているのは、数値がベースクロックの 3.8GHz 換算になっているためです。実測時は Boost 5.1GHz で動作していたため 5.1/3.8 = およそ 1.3 となります。

また現在の一般向け Intel CPU は AVX512 に対応しておらず、AVX2 (256bit) までとなります。少々世代が古いですが以下は RaptorLake Core i7-13700 の結果で、P-Core で 256bit fma が 2、E-Core で 1 命令です。

 i7-13700 RaptorLake P-Core      TIME(s)   MFLOPS      MOPS     FOP   IPC
FMA vfmaddps (32bit x8) n12       0.442   165987.5    10374.2  ( 16.0 2.0)   P-Core 256bit fma
FMA vfmaddps (32bit x8) n12       0.902    65432.2     4089.5  ( 16.0 1.0)   E-Core 256bit fma

よって、Zen5 は 一般向けとしてはこれまでで最も浮動小数点演算能力が高い CPU と言えるのではないでしょうか。

256 add256 mul256 fma256 ml+ad512 add512 mul512 fma512 ML+AD
Zen522242224
Zen422241112
RaptorLake P-Core2223
RaptorLake E-Core1111

なお Zen4 (Ryzen 7 7840HS) の結果もこちらに追加しました。

関連エントリ

VRAM 8GB の GPU 3枚で 30B 前後の LLM を動かす。Ollama でマルチ GPU 速度の比較

PC 上でローカル LLM を実行する場合、VRAM 容量が足りなくてもビデオカードを複数枚集めれば GPU 上で動作することがわかったので、色々組み合わせて速度を比較してみました。

家に眠っていた古いビデオカードを集めて 30B 前後のモデルが動いています。流石にパフォーマンスでは GeForce RTX 4090 等の上位モデルに敵わないと思いますが、13 tps ほど出ていますので動かすだけなら十分かと思います。

以下その結果です。速度は変動があるので数値はあくまで参考程度にお願いします。

27B gemma2:27b

VRAM 8GB のビデオカード 3枚で動作させることができました。使用したのは GeForce RTX 2070 Super (8GB)、GeForce GTX 1080 (8GB)、GeForce GTX 1070 (8GB) といった組み合わせです。GTX 1000 世代は TensorCore がありませんが、それでも CPU よりずっと高速です。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X19GB100% CPU1.97 tps
3 GPU2070S + 1080 + 10708+8+8=24GB23GB100% GPU12.89 tps
2 GPU4060Ti + 2070S16+8=24GB23GB100% GPU15.94 tps

うまく動いたので、あとから他の PC で使っていた RTX 4060ti (16GB) も持ってきました。「メモリ容量」と「容量の割合」は「ollama ps」コマンドで表示される値です。

32B qwen2.5:32b

32B はギリギリ入りませんでした。同じ 24GB でも GeForce RTX 4060 Ti (16GB) + GeForce RTX 2070 Super (8GB) の場合はメモリに載ります。やはり分割は少ない方がメモリの利用効率が上がるようです。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X22GB100% CPU1.77 tps
3 GPU2070S + 1080 + 10708+8+8=24GB25GB3% CPU + 97% GPU7.69 tps
2 GPU4060Ti + 2070S16+8=24GB23GB100% GPU13.56 tps

14B phi4:14b

14B はもちろん動きます。4060Ti (16GB) の場合は一枚に収まりました。8GB 2枚でも動くかもしれませんが残念ながら未確認です。余裕があれば後ほど試したいと思っています。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X11GB100% CPU3.06 tps
3 GPU2070S + 1080 + 10708+8+8=24GB16GB100% GPU17.38 tps
1 GPU4060Ti16GB14GB100% GPU37.38 tps

70B llama3.3:70b

70B はさすがに大きく、手持ちのビデオカード 4枚全部繋いでもメモリに入りませんでした。

種類GPU合計VRAMメモリ使用量容量の割合速度
CPU のみRyzen 7 9700X46GB100% CPU0.88 tps
3 GPU2070S + 1080 + 10708+8+8=24GB50GB52% CPU + 48% GPU1.09 tps
2 GPU4060Ti + 2070S16+8=24GB48GB49% CPU + 51% GPU1.46 tps
3 GPU4060Ti + 2070S + 108016+8+8=32GB49GB35% CPU + 65% GPU1.69 tps
4 GPU4060Ti + 2070S + 1080 + 107016+8+8+8=40GB51GB21% CPU + 79% GPU2.22 tps

データ

より詳しい結果を以下のページにまとめました。

使用した環境など

Proxmox VE 上の VM に Ubuntu 22.04 をインストールし、その上で ollama を走らせています。GPU は最大 4枚を VM にパススルーしています。ビデオカードはそれぞれ以下の方法で接続しています。

  • マザーボード上の PCIe x16 スロット 1 (PCIe 3.0 x16 で RTX 2070Super)
  • マザーボード上の PCIe x16 スロット 2 (PCIe 4.0 x4 で RTX 4060Ti)
  • M.2 スロット + Oculink 経由で外部の DEG1 に接続 (PCIe 3.0 x4 で GTX1080)
  • マザーボード上の PCIe x1 スロットからライザーケーブル (PCIe 3.0 x1 で GTX1070)

GPU を接続した PC は Ryzen 9 3950X + X570 です。CPU のみの結果は別の PC (Ryzen 7 9700X) によるものです。

VM へのパススルーではなく Linux を直接インストールした場合ではもう少しパフォーマンスが上がるかもしれません。

GeForce RTX 4090 や RTX 3090 といった上位 GPU がなくても、家にあった古いビデオカードを利用して組み合わせるだけで 30B 前後のモデルが使えるようになりました。その分パフォーマンスは限られていますが、13 tps あればそれなりに使えると思いますので、アプリケーションから呼び出すテストに使ったりと色々活用できそうです。

関連エントリ

Proxmox VE の GPU パススルー設定

Proxmox VE の GPU パススルーを色々試しています。以下のページにまとめました。

GeForce の外付け GPU であれば、Proxmox 上の GUI だけで簡単に設定できることがわかりました。

AMD CPU はもともと設定不要ですし、Intel CPU でも Proxmox VE 8.2 から intel_iommu=on がデフォルトで有効化されており grub 上のカーネルオプションの設定が不要になっています。

実際に Ryzen 9 3950X + X570 にビデオカードを最大 4枚繋いでパススルーを行うことができました。

2枚はマザー上の x16 スロットに直接、もう一つは PCIe x1 からライザーケーブル経由、最後は M.2 スロットから OCulink で DEG1 に外部 GPU として接続しています。

それぞれ異なる VM に割り当ててもいいですし、全部同じ VM で使うこともできます。

例えば VRAM 8GB のビデオカードでも、3台集めれば 27b の LLM モデルを GPU で走らせることができます。GeForce RTX 2070 Super + GeForce GTX 1080 + GeForce GTX 1070 はいずれも VRAM 8GB ですが、3台使うことで ollama 上の Gemma2:27b が 13 token/s ほどになりました。CPU のみだと 1.5 token/s くらいです。

試した GPU は以下の通りです。動かなかったのは今のところ RADEON RX Vega 56 のみです。詳しくはまとめたページの方をご覧ください。

  • GeForce RTX 4060 Ti
  • GeForce RTX 2070 Super
  • GeForce GTX 1080
  • GeForce GTX 1070
  • GeForce GTX 970
  • GeForce GTX 960
  • RADEON RX 6400
  • RADEON RX 480

関連ページ

Google Tensor G3 の浮動小数点演算性能と SVE

SVE/SVE2 は ARM の新しい SIMD 命令です。特徴は、従来よりも長いサイズのベクタを扱えるようになったことです。AVX512 のマスクレジスタと同じように Predicate Register を持っており、任意長のベクタとしても扱うことができます。

AVX512 と違って CPU 側の実際のレジスタサイズは任意です。128bit の倍数なら何でもよく、最大で 2048bit になります。レジスタ長に応じてループ回数やマスク値を設定する命令が存在しており、CPU 毎の実装の違いを吸収することができます。

Tensor G3 は ARMv9 の CPU Coretex-X3/A715/A510 を搭載しているため SVE/SVE2 命令に対応しています。Cortex-X3/A715/A510 のレジスタサイズは 128bit でした。これは NEON 命令と同じなので、浮動小数点演算のピーク性能自体はどちらを使っても変わらないと思われます。

vfpbench に SVE 命令を追加したので Pixel 8 で試してみました。

Cortex-A510 SingleT SP                          FLOPS                      IPC
NEON fmul.4s (32bit x4) n12       :    0.454    13519.8     3379.9  (  4.0 2.0)
NEON fadd.4s (32bit x4) n12       :    0.453    13543.1     3385.8  (  4.0 2.0)
NEON fmla.4s (32bit x4) n12       :    0.453    27055.6     3382.0  (  8.0 2.0)
SVE fmul.s (32bit xN) n12         :    0.453    13529.6     3382.4  (  4.0 2.0)
SVE fadd.s (32bit xN) n12         :    0.454    13523.3     3380.8  (  4.0 2.0)
SVE fmla.s (32bit xN) n12         :    0.453    27080.5     3385.1  (  8.0 2.0)


Cortex-A715 SingleT SP                          FLOPS                      IPC
NEON fmul.4s (32bit x4) n12       :    0.452    18864.7     4716.2  (  4.0 2.0)
NEON fadd.4s (32bit x4) n12       :    0.452    18868.5     4717.1  (  4.0 2.0)
NEON fmla.4s (32bit x4) n12       :    0.452    37731.6     4716.5  (  8.0 2.0)
SVE fmul.s (32bit xN) n12         :    0.451    18897.2     4724.3  (  4.0 2.0)
SVE fadd.s (32bit xN) n12         :    0.452    18847.1     4711.8  (  4.0 2.0)
SVE fmla.s (32bit xN) n12         :    0.452    37717.2     4714.6  (  8.0 2.0)


Cortex-X3 SingleT SP                            FLOPS                      IPC
NEON fmul.4s (32bit x4) n12       :    0.676    46546.0    11636.5  (  4.0 4.0)
NEON fadd.4s (32bit x4) n12       :    0.678    46425.0    11606.2  (  4.0 4.0)
NEON fmla.4s (32bit x4) n12       :    0.902    69792.8     8724.1  (  8.0 3.0)
SVE fmul.s (32bit xN) n12         :    0.675    46594.6    11648.6  (  4.0 4.0)
SVE fadd.s (32bit xN) n12         :    0.679    46365.2    11591.3  (  4.0 4.0)
SVE fmla.s (32bit xN) n12         :    0.901    69842.9     8730.4  (  8.0 3.0)

右端の IPC を見るとわかりやすいでしょう。シングルスレッド単精度による結果の比較ですが、やはり 128bit 演算になるため NEON、SVE どちらも結果に違いはありませんでした。もちろん 256bit や 512bit 対応 CPU では結果が異なりますし、マスクレジスタを利用できるという大きなメリットもあります。

SVE とは関係ないですが、少々気になるのは Cortex-A510 の結果です。128bit 命令の IPC が 2 となっており、これは Tensor G2 の Cortex-A55 と比べると 2倍の数値となります。この結果だけ見るとクロックあたりの浮動小数点演算演算能力が上位 CPU と同じ水準まで強化されているように見えます。

そのため A55 世代と比べると全体のピーク FLOPS 値が大きく伸びているはずですが、結果を見ると思ったほど上がっていません。以下の表は A55 との比較です。シングルスレッド性能は 2倍になっているのにマルチスレッド性能はあまり変わっていないことがわかります。

SoCCPU CoreClockcore数Single-T SPMULTI-T SP
Tensor G3Cortex-A5101.70 GHz427.1 GFLOPS61.3 GFLOPS
Tensor G2Cortex-A551.80 GHz414.0 GFLOPS54.7 GFLOPS
↑ 浮動小数点演算命令単精度のピーク値、FLOPS の値が大きい方が高速

その要因はマルチスレッド時の各命令の詳細をみると明らかです。マルチスレッド実行時は Cortex-A510 の演算能力 (IPC) が半減しています。

Cortex-A510 SingleT SP                          FLOPS                      IPC
NEON fmul.4s (32bit x4) n12       :    0.454    13519.8     3379.9  (  4.0 2.0)
NEON fadd.4s (32bit x4) n12       :    0.453    13543.1     3385.8  (  4.0 2.0)
NEON fmla.4s (32bit x4) n12       :    0.453    27055.6     3382.0  (  8.0 2.0)
SVE fmul.s (32bit xN) n12         :    0.453    13529.6     3382.4  (  4.0 2.0)
SVE fadd.s (32bit xN) n12         :    0.454    13523.3     3380.8  (  4.0 2.0)
SVE fmla.s (32bit xN) n12         :    0.453    27080.5     3385.1  (  8.0 2.0)

Cortex-A510 MultiT SP                           FLOPS                      IPC
NEON fmul.4s (32bit x4) n12       :    0.885    27730.1     1733.1  ( 16.0 1.0)
NEON fadd.4s (32bit x4) n12       :    0.907    27041.8     1690.1  ( 16.0 1.0)
NEON fmla.4s (32bit x4) n12       :    0.906    54190.8     1693.5  ( 32.0 1.0)
SVE fmul.s (32bit xN) n12         :    0.909    26991.1     1686.9  ( 16.0 1.0)
SVE fadd.s (32bit xN) n12         :    0.904    27150.5     1696.9  ( 16.0 1.0)
SVE fmla.s (32bit xN) n12         :    0.801    61290.4     1915.3  ( 32.0 1.1)

AMD Bulldozer 系のように演算ユニットが複数のコアで共有されているか、もしくはマルチスレッド高負荷時のクロック制限の可能性などを考えましたが、結果は前者でした。Arm CortexA510 Core Software Optimization Guide によると A510 の浮動小数点演算ユニットはどうやら 2 core で共有されているようです。

よって Cortex-A510 では 64bit 命令の場合は core あたり 2命令ですが、128bit 命令はシングルスレッドでピーク 2命令、マルチスレッドでは競合した場合 1命令までに制限されます。

以下の表は他の CPU との比較です。

SOCPRIMEBIGLITTLE合計CORE数S-SPM-SP
Tensor G3X3 2.91GHz x1A715 2.37GHz x4A510 1.70GHz x4969.8281.9
Tensor G2X1 2.85GHz x2A78 2.35GHz x2A55 1.80GHz x4848.8227.5
Kirin 980A76 2.60GHz x2A76 1.92GHz x2A55 1.80GHz x4841.5186.7
Helio G99A76 2.20GHz x2A55 2.00GHz x6835.2163.8
↑ 浮動小数点演算命令単精度のピーク値、S-SP/M-SP の単位は GFLOPS。FLOPS の値が大きい方が高速

Cortex-X3 は 128bit で 4命令実行できる点は X1 と変わりませんが、fma のスループットが向上しておりそれが S-SP の結果に反映されています。X1 では fma の IPC が 2 でしたが X3 では 3 命令同時に実行できています。

Cortex-X3/A715/A510 では他にも i8mm や bf16 など ML 系の命令が増えていますので、そちらも後ほど調べてみたいと思います。

関連エントリ

UE5 Intel N100 1台だけでも分散ビルドの効果はあるかどうか

Unreal Engine を使った開発ではビルドに時間がかかります。特にソースコード版のエンジンを使うとエンジン全体のコンパイルも同時に行われる場合があり、1時間近く待たされることも少なくありません。

時間がかかるコンパイルを複数台の PC を使って高速化する仕組みが分散ビルドです。UE5 5.4 ではエンジンの機能として分散ビルドツール UnrealBuildAccelerator (UBA) が付属するようになりました。

前回の記事で UE5 の分散ビルド UBA を使うとビルドを大幅に高速化できることがわかりました。ですが家に PC が何台もあるケースはそんなに多くないと思われます。そこで非力な PC 1台との組み合わせでも、分散ビルドを行う意味があるのかどうか調べてみました。

Intel N100 (Alder Lake-N) の場合

以下は開発用 PC に Intel N100 搭載 PC を組み合わせて分散ビルドを行った結果です。(Intel N100 の性能について詳しくはこちら)

CPUARCHCore数Thread数単独でのビルド時間分散ビルド利用時削減時間
Ryzen 5 3600Zen261291m 28s74m 46s-16分42秒
Core i7-13700RaptorLake162448m 00s44m 37s-3分23秒
↑UE5 5.4.2 の Win64 Development Editor の C++ コンパイル時間の比較

Ryzen 5 3600 単独でビルドを行うと 91分かかりますが、N100 との分散ビルドで約 17分短縮できることがわかりました。思ったよりも効果が出ています。

流石に性能が高い Core i7-13700 の場合は 3分少々しか変わりませんが、それでもきちんと速くなっています。

分散ビルドでは通信のオーバーヘッドがありますし、非力な PC の完了待ちで逆に遅くなる可能性も考えられます。ですがこの結果を見ると少ないながら速度が向上しているため、安心して分散化できそうです。なお HordeServer も同じ N100 PC 上で走らせています。

さらに、他の PC との組み合わせでもビルド時間を調べてみました。

他の PC との組み合わせの結果一覧

ビルドPC組み合わせた分散PC合計Core数合計Thread数ビルド時間削減時間
Ryzen 5 3600なし61291m 28s
Ryzen 5 3600Core i5-1030NG7102077m 37s-13分51秒
Ryzen 5 3600Intel N100101674m 46s-16分42秒
Ryzen 5 3600Core i7-4790K102061m 40s-29分48秒
Ryzen 5 3600Ryzen 5 2600122457m 24s-34分04秒
Ryzen 5 3600Ryzen 5 5560U122456m 55s-34分33秒
Ryzen 5 3600Core i7-13700223634m 17s-57分11秒
Core i7-13700なし162448m 00s
Core i7-13700Inte N100202844m 37s-3分23秒
Core i7-13700Core i7-1030NG7203244m 20s-3分40秒
Core i7-13700Core i7-4790K203239m 29s-8分31秒
Core i7-13700Ryzen 5 2600223637m 38s-10分22秒
Core i7-13700Ryzen 5 5560U223637m 26s-10分34秒
Core i7-13700Ryzen 5 3600223633m 32s-14分28秒
↑UE5 5.4.2 の Win64 Development Editor の C++ コンパイル時間の比較

結果から、分散ビルドに使えるマシンが 1台だけ (合計 2台) でもエンジンのビルドではそれなりに効果があることがわかります。UE5 の開発で頻繁にエンジンビルドが走る場合は、空いている PC を使って UBA を入れておくと良さそうです。詳しい導入手順については前回の解説記事をご覧ください。

開発に使っている PC の性能が低い方が恩恵は多いのですが、Ryzen 5 3600 と Core i7-13700 の組み合わせ結果を見ると、どちらでビルドを開始してもビルド時間がほぼ変わりませんでした。このケースではかなり効率よく分散できていることがわかります。

台数でカバーする

使える CPU コア数が多い方がビルドは速くなっています。以下の表は、性能が高い PC 1台使った場合と、非力&古い PC を多数組み合わせた場合を比較したものです。

ビルドPC組み合わせた分散PC合計CORE数合計THread数ビルド時間削減時間
Ryzen 5 3600Core i7-13700223634m 17s-57分11秒
Ryzen 5 3600N100+1030NG7+2600+4790K+6700K285236m 23s-55分05秒
↑UE5 5.4.2 の Win64 Development Editor の C++ コンパイル時間の比較

使用した PC は Intel N100、Core i5-1030NG7、Ryzen 5 2600、Core i7-4790K、Core i7-6700K の 5台です。コア数が少ないものだけ選んでいますが、非力な PC でも数を集めることで、おおよそ Core i7-13700 1台分くらいの性能を出すことができていることがわかります。

速い PC の中に N100 を入れた場合

今度は速い PC 複数台でかなり高速に分散ビルドできている状態で、N100 や Core i5-1030NG7 など性能が低い PC を追加してみます。ビルドに使った PC は Core i7-13700 です。

組み合わせた分散PC台数合計CORE合計THREADビルド時間
13700+3950X+4750G+3600+2600+5560U+4790K76211614m 37s
13700+3950X+4750G+3600+2600+5560U+4790K+N10086612014m 07s
13700+3950X+4750G+3600+2600+5560U+4790K+1030NG786612414m 26s
13700+3950X+4750G+3600+2600+5560U+4790K+1030NG7+N10097012813m 42s
↑UE5 5.4.2 の Win64 Development Editor の C++ コンパイル時間の比較

遅い PC が足を引っ張ることもなく安定して動作しました。むしろわずかながら速度が向上しているため、性能が低くてもとりあえず Agent を追加して増やしていく方針で大丈夫そうです。

使った PC のスペック一覧その他

以下はテストに使った PC のスペック詳細になります。Ryzen 5 3600, Core i7-6700K など一部電力制限をかけた状態となっていますのでご了承ください。すべて 有線 LAN を使っています。

CPUTDPARCHCORE数THREAD数RAM容量SSD
Ryzen 5 360045WZen261264GBNVMe3
Core i7-1370065WRaptorLake162464GBNVMe4
Intel N10020WAlderLake-N4416GBNVMe3
Core i5-1030NG710WIceLake4816GBNVMe3
Core i7-4790K88WHaswell4816GBSATA
Core i7-6700K60WSkyLake4832GBSATA
Ryzen 5 260065WZen1+61232GBNVMe3
Ryzen 5 5560U25WZen361232GBNVMe3
Ryzen 7 4750G65WZen281632GBNVMe3
Ryzen9 3950X105WZen2163232GBNVMe3

UnrealBuildAccelerator は PC 性能によらず分散の効果がわかりやすいので、導入のハードルがかなり下がったのではないかと思います。今回は C++ のコンパイルのみ試しましたが、ビルド時間を短縮できますので UE5 での開発効率が大きく向上しそうです。

関連エントリ