Vengineerの戯言

人生は短いけど、長いです。人生を楽しみましょう!

Graphcoreが IPU-POD128/IPU-POD256をアナウンス

はじめに

Graphcoreは、Cloudサービスを提供しています。基本的には、16個のチップを搭載した IPU-POD16 と 64個のチップを搭載した IPU-POD64 によるものです。

IPU-POD128/IPU-256POD

今回は、IPU-POD64を2個接続した IPU-POD128 と 4個接続した IPU-POD256 をアナウンスしました。

www.graphcore.ai

性能

RESNET50 v1.5のTensorFlow Traiingに対しては、

  • IPU-POD16 : 29,565 images/sec
  • IPU-POD64 : 102,320 images/sec (87% up)
  • IPU-POD128 : 186,553 images/sec (91% up)
  • IPU-POD256 : 355,021 images/sec (95% up)

BERT-LARGE Ph1 (SL128) TensorFlow

  • IPU-POD16 : 3,665 seq/sec
  • IPU-POD64 : 12,908 seq/sec (88% up)
  • IPU-POD128 : 25,097 seq/sec (97% up)

IPU-POD256 のデータはありませんね。

RESNET50 v1.5 よりもBERT-LARGEの方がスケールしていますね。

どのように、IPU-POD間を接続しているのか?

下図を説明のために引用します。IPU-POD64間の接続は、IPU-M2000内のIPU-Gatewayから出ている GW-Links (100Gb)にて両サイドのIPU-POD64内の同じ位置のM2000と接続しています。

最大64のIPU-POD64と接続できるようです。

f:id:Vengineer:20211024104332p:plain

おわりに

Graphcoreは現在、TSMC 3nm (ここでは、MK3と呼ぶことにします)での実装をしているようです。

TSMC 16nm の MK1 => TSMC 7nm の MK2 では、基本的には内部SRAMを増やした(300MB => 900MB) に増やしたためです。内部SRAMで足りなくなると、IPU-Gatewayに接続しているDDR4メモリにアクセスすることになります。MK2からIPU-Gatewayとの間は、PCIe Gen4 x8 相当(MK2はPCIe Gen4 x16であるが、IPU-Gateway側がPCIe Gen3 x16であるため、結果的に PCIe Gen4 x8になっている)で接続しています。

Graphcoreでは内部SRAMが多いので、IPU-GatewayのDDR4へのアクセスレイテンシーは隠蔽できると言っているが、MK3 ではどうなるのでしょうか? もしこの部分がボトルネックになっているのなら、MK3のPCIe GenX を変えるのではなく、IPU-Gateway の方を変える必要があるんじゃないのかな?と思っています。

候補としては、Ampere ComputingのAltraなんかいいと思います。PCIe Gen4 x16 が8個付いています。ただし、100GbEが無いので外部にチップを付ける必要はありますね。