複数の推論チップを使用するには、慎重な計画が必要です
過去2年間は、推論チップビジネスで非常に忙しかった。しばらくの間、隔週で別の会社が新しくより良いソリューションを導入したように見えました。この革新はすべて素晴らしいものでしたが、問題は、ほとんどの企業が、どのソリューションが他のソリューションよりも優れているかわからなかったため、さまざまなソリューションをどうすればよいかわからなかったことです。この新しい市場で確立されたベンチマークのセットがないため、推論チップで非常に迅速にスピードアップするか、さまざまなベンダーが提供するパフォーマンスの数値を信じる必要がありました。
ほとんどのベンダーは、ある種のパフォーマンスの数値を提供しており、通常、それはベンチマークによって見栄えが良くなったものでした。一部のベンダーは、モデル、バッチサイズ、またはプロセス/電圧/温度条件を指定せずに、TOPSおよびTOPS / Wattについて話しました。他の人はResNet-50ベンチマークを使用しました。これは、ほとんどの人が必要とするよりもはるかに単純なモデルであるため、推論オプションの評価におけるその価値には疑問があります。
私たちはそれらの初期の頃から長い道のりを歩んできました。企業は、推論チップのパフォーマンスを測定するときに本当に重要なのは、1)MAC使用率が高い、2)電力が低い、3)すべてを小さく保つ必要があることを徐々に理解しています。
測定方法を知っています—次は何ですか?
ある推論チップのパフォーマンスを別の推論チップよりも測定する方法についてかなり良いアイデアが得られたので、企業は現在、同じ設計で複数の推論チップを一緒に使用することの利点(または欠点)を尋ねています。簡単な答えは、推論チップが正しい方法で設計されている場合、複数の推論チップを使用すると、パフォーマンスを直線的に向上させることができるということです。複数の推論チップを使用する場合、高速道路の例えはそれほど遠くありません。会社は1車線の高速道路または4車線の高速道路のパフォーマンスを望んでいますか?
明らかに、すべての企業が4方向の高速道路を望んでいるため、問題は「交通やボトルネックを発生させずに、この4車線の高速道路をどのように提供するか」ということです。答えは、適切な推論チップを選択することに依存しています。説明するために、ニューラルネットワークモデルを見てみましょう。
ニューラルネットワークはレイヤーに分割されます。 ResNet-50などのレイヤーには50のレイヤーがあり、YOLOv3には100を超えるレイヤーがあり、各レイヤーは前のレイヤーからのアクティベーションを取り込みます。したがって、レイヤーNでは、その出力はレイヤーN +1に入るアクティベーションです。そのレイヤーが入るのを待ち、計算が行われ、出力はレイヤーn +2に行くアクティベーションです。それは、最終的に結果が得られるまで、レイヤーの長さにわたって続きます。この例の最初の入力は、画像またはモデルによって処理されているデータセットであることに注意してください。
複数のチップが違いを生む場合
あるレベルの性能を備えたチップを持っている場合、2倍の性能または4倍の性能を求める顧客が常に存在するのが現実です。ニューラルネットワークモデルを分析すると、場合によってはそれを実現できます。モデルを2つのチップまたは4つのチップに分割する方法を確認する必要があります。
これは、パフォーマンスに関しては減算されるのではなく、実行している処理を分割してすべてが合計されるようにする方法を理解することが困難であったため、長年にわたって並列処理の問題でした。
並列処理や汎用コンピューティングとは異なり、推論チップの優れた点は、通常、顧客が2つのチップを使用するかどうかを事前に知っているため、コンパイラがその場でそれを理解する必要がないことです。これはコンパイル時に行われます。ニューラルネットワークモデルを使用すると、すべてが完全に予測可能であるため、モデルを分割する方法と、モデルが2つのチップで適切に実行されるかどうかを正確に分析および把握できます。
モデルが2つ以上のチップで実行できることを確認するには、アクティベーションサイズとMACの数の両方をレイヤーごとに確認することが重要です。通常発生するのは、最大のアクティベーションが最も初期のレイヤーにあることです。つまり、レイヤーの数が増えるにつれて、アクティベーションサイズはゆっくりと減少します。
また、MACの数と各サイクルで実行されるMACの数を確認することも重要です。ほとんどのモデルでは、各サイクルで実行されるMACの数は、通常、アクティベーションサイズと相関関係があります。 2つのチップがあり、最大頻度で実行する場合は、各チップに等しいワークロードを与える必要があるため、これは重要です。一方のチップがモデルの大部分を実行し、もう一方のチップがモデルの一部のみを実行している場合、最初のチップのスループットによって制限されます。
モデルを2つのチップ間でどのように分割するかも重要です。ワークロードの分散を決定するため、MACの数を確認する必要があります。また、チップ間で何が渡されるかを確認する必要があります。ある時点で、通過したアクティベーションが可能な限り小さい場所でモデルをスライスして、必要な通信帯域幅の量と送信の遅延を最小限に抑える必要があります。アクティベーションが非常に大きいポイントでモデルをスライスすると、アクティベーションの送信がボトルネックになり、2チップソリューションのパフォーマンスが制限される可能性があります。
下のグラフは、YOLOv3、Winograd、2メガピクセルの画像について、アクティベーション出力サイズと累積Mac操作をレイヤーごとに示しています(畳み込みレイヤーがプロットされています)。 2つのチップ間のワークロードのバランスをとるために、モデルは累積MAC操作の約50%で削減されます。この時点で、一方のチップからもう一方のチップに渡されるアクティベーションは1MBまたは2MBです。 4つのチップに分割する場合、カットは約25%、50%、75%になります。アクティベーションサイズは最初は最大であるため、25%のカットポイントには4MBまたは8MBのアクティベーションが必要です。
<中央>
画像を拡大するにはここをクリック
YOLOv3 / Winograd / 2Mpixel画像のアクティベーション出力サイズ(青いバー)とレイヤーごとの累積MAC操作(赤い線) 、ワークロードが複数のチップ間でどのように分割されているかを示しています(画像:Flex Logix)
パフォーマンスツール
幸い、高スループットを確保するためのパフォーマンスツールが利用できるようになりました。実際、1つのチップのパフォーマンスをモデル化する同じツールを一般化して、2つのチップのパフォーマンスをモデル化することができます。特定のレイヤーのパフォーマンスはまったく同じですが、問題はデータの送信がパフォーマンスにどのように影響するかです。必要な帯域幅が十分でない場合、その帯域幅がスループットを制限するため、モデリングツールはこれを考慮に入れる必要があります。
4つのチップを使用している場合、モデルの第1四半期のアクティベーションは、モデルの後半のアクティベーションよりも大きくなる傾向があるため、より大きな帯域幅が必要になります。したがって、投資する通信リソースの量により、パイプライン化された多数のチップにアクセスできますが、スタンドアロンチップであっても、すべてのチップが負担しなければならないオーバーヘッドコストになります。
結論
複数の推論チップを使用すると、パフォーマンスを大幅に向上させることができますが、ニューラルネットワークが上記のように正しく設計されている場合に限ります。高速道路の例えを振り返ると、間違ったチップと間違ったニューラルネットワークモデルを使用してトラフィックを蓄積させる機会がたくさんあります。あなたが正しいチップから始めれば、あなたは正しい軌道に乗っています。 TOPSやRes-Net50ベンチマークではなく、スループットが最も重要であることを覚えておいてください。次に、適切な推論チップを選択すると、アプリケーションのニーズに最大のパフォーマンスを提供する、同様に強力なニューラルネットワークモデルを設計できます。
— GeoffTateはFlexLogixのCEOです
埋め込み
- SaaSとクラウドを使用するには、慎重なデータラングリングが必要です
- 複数の組み合わせ回路の使用
- C# を使用して
- RISC-VInternationalとCHIPSAllianceがOmniXtendで協力
- 小さなモジュールは複数のバイオセンサーを統合します
- PCB設計パッケージがクラウドに移行
- シミュレートされた都市環境下での複数の状況における自動運転車のリアルタイム動作計画
- 慎重な計画から利益を得るデジタル製造現場のイニシアチブ
- AIは、コンピューターチップがコードを実行する速度を予測します
- 単一のソースを使用して複数のウェアラブルデバイスにワイヤレスで電力を供給する
- 情報モデルを使用して OPC UA クライアントからファンクション ブロックを呼び出す方法