
IoTデバイスの数が増え続けるにつれて、クラウドやデータセンターに負担をかけているこれらのデバイスを軽減するために、コンピューターのパワーがエッジへとシフトしています。エッジコンピューティングは、コンピューティングパワー、ストレージ容量、速度の向上により、多くの進歩を遂げてきました。エッジコンピューティングは、情報をローカルで処理・分析することでデータセンターにかかる負担を軽減し、処理・分析のためにクラウドやデータセンターにデータを送信する必要をなくすことができます。
B気づけば、エッジコンピューティングは私たちの身の回りにあり、私たちの家庭、公共インフラ、工場、企業にある多数のデバイスからのデータを処理することになります。エッジコンピューティングの爆発的な成長により、多くの企業がこのトレンドに乗るために既存のITインフラを改善する最善の方法を模索しています。企業は、特にエッジコンピューターで実行できる予測分析や推論分析向けの様々なAIソリューションを開発しています。
しかし、機械学習モデルは高度化するだけでなく、より多くのスペースを占めるようになっています。過去数年間で、画像認識や音声認識のための機械学習モデルのサイズは、今日のモデルと比較して大幅に増加しています。これにより、エッジで大量のデータを処理する際の速度とボトルネックに課題が生じています。強力なコンピューティング、リアルタイムの意思決定、高速処理を実現するため、企業はエッジでの最高のパフォーマンスのためにパフォーマンスアクセラレータを搭載したシステムを構成しています。
パフォーマンスアクセラレータとは?
ハードウェアアクセラレータとしても知られるパフォーマンスアクセラレータは、特定のワークロードを高速化できるマイクロプロセッサです。通常、高速化できるワークロードは、AI、マシンビジョン、ディープラーニングなど、ワークロードの実行効率がはるかに高いパフォーマンスアクセラレータにオフロードされます。パフォーマンスアクセラレーションは、汎用プロセッサとより特定の目的のプロセッサを統合して、同時に連携してタスクを実行します。これは、パフォーマンスアクセラレータが直列計算ではなく並列計算を実行できるため、実現可能です。
並列計算プロセスとは、複数のタスクを異なるプロセッサ内で同時に処理できるシステムです。このプロセスを適用すると、パフォーマンスが向上し、処理速度が大幅に向上し、プロセッサあたりのワークロードが低減されます。これにより、自動運転車、e-ゲート、交通管理など、コンピュータービジョンを伴う多くのアプリケーションに見られるAI組み込みシステムアプリケーションにおける推論機械学習に最適な方法となります。
プロセッサアクセラレータ
1. マルチコアCPUs
2. GPUs (グラフィックス処理ユニット)
3. VPUs (ビジョン処理ユニット)
4. FPGA & ASIC (フィールドプログラマブルゲートアレイ)
ストレージ&コネクティビティアクセラレータ
5. NVMe ストレージ
6. 計算ストレージ
7. PCIe プロトコル
なぜそれらが有益なのか?
ムーアの法則の終焉は過去10年間で言及されてきました。ムーアの法則によれば、今日のCPUは1990年よりも300倍高速ですが、プロセッサのシングルスレッド性能(SpecINT)と周波数速度(MHz)の成長が近年停滞しているため、この法則はもはや適用されません。引き続き成長している部分は、トランジスタとコアの数です。これにより、全体的な性能成長に不均衡が生じます。そうは言っても、並列処理を実装することで、成長する不均衡を活用し、他の成長分野のギャップを軽減することができます。

出典:Chuck Moore, 2011, “Data Processing in Exascale-Class Computer Systems,” The Salishan Conference on High Speed Computing, April 27, 2011
通常、組み込みシステムアプリケーションでは、マシンビジョンやディープラーニングを実行する際に高い計算能力とストレージ容量が必要となります。したがって、パフォーマンスアクセラレーションを適用したい場合は、機械学習のパフォーマンスに影響を与える3つの主要な要因、すなわち計算能力、メモリ帯域幅、および通信速度を考慮するようにしてください。エッジコンピュータによりドメイン固有のアクセラレーションプロセッサを搭載することで、増大するデータフローの課題に対処し、強力なエッジコンピュータを作成することができます。そうは言っても、以下では、マルチコアCPU、GPU、VPU、FPGA、ASIC、およびNVMe、計算ストレージ、PCIe 4.0などの高速ストレージおよび処理プロトコルを含む重要なハードウェアアクセラレータについて説明します。パフォーマンスアクセラレーション。
1. CPU - 中央処理装置
コンポーネントを縮小し、効率を高めるために時間と費用を浪費する代わりに、より高品質なソリューションを開発するという前提がありました。Multiple Instructions, Multiple Data (MIMD)と呼ばれる設計による並列計算を使用すると、特定の命令セットはそれぞれ異なるプロセッサまたはコアによって実行できます。これは、タスクを複数のサブタスクに分割し、同時に並列に実行することで、単一のクロックサイクルで全て行われます。したがって、この技術をサポートできるCPU仕様を選択する必要があり、考慮すべき要素は次のとおりです。
- クロック速度
- コア数
- マルチスレッド
- メモリサポートとチャネル

クロック速度
クロック速度は本質的に1秒あたりのサイクル数であり、例えば3.4GHzのプロセッサは1秒あたり31億サイクルを実行できます。これは、エッジコンピューティングが膨大な数のタスクと操作を実行しているため、特に機械学習アルゴリズムを実行している場合に重要です。より多くのタスクを完了するには、プロセッサはより高いクロック速度を持つ必要があり、これにより一般的な計算速度が向上します。
異なるメーカーや世代のCPUのクロック速度を比較してはならないことを理解することが重要です。なぜなら、必ずしもクロック速度で速いとは限らないからです。例えば、第7世代Intel Core i5-7500 3.4GHzは、クロック速度が低かった第10世代Intel Core i5-10500よりも強力ではありません。そうは言っても、システムに構成するCPUを選択する際に考慮すべき他の要因があります。
コア数
コア数の経験則は、プロセッサのコア数が多ければ多いほど、処理速度が速くなり、より多くの計算を並列に実行できることです。マルチコア処理は、複数のコアを利用できる大量のワークロードに優れています。複数のコアは、並列処理のために分解された大きなタスクのサブタスクを同時に実行します。したがって、タスクを実行するコアが多いほど、処理速度が速くなり、消費電力は低くなります。例えば、デュアルコアプロセッサは、シングルコアプロセッサが命令を処理するよりも速い速度で実行でき、消費エネルギーも少なくなります。
さらに、同じクロック速度でも効率が向上し、消費エネルギーも少なくなります。マルチコアプロセッサでは、より多くのトランジスタ、短い接続、より高い容量、および高速で動作するより小さな回路があります。AIアプリケーションの場合、少なくとも8コア、または10コアと20スレッドを持つIntel第10世代Intel Core i9プロセッサのような優れたCPUプロセッサが必要になります。
マルチスレッド化
CPUの計算能力を決定する上で、CPUコアとスレッドの間には強い関係があります。コアは実際の物理ハードウェアコンポーネントであり、スレッドはタスクを管理する仮想コアの数を指します。これは、並列コンピューティングで実行される同時実行の並行プログラミングにおける実行単位です。これにより、マルチスレッドは複数のタスクを同時に実行でき、各スレッドはタスクを完了する際にリソースを共有しながら個別に実行できます。
さらに、Intelはハイパースレッディングにより並列計算をエンドユーザーベースのコンピューターに導入しました。これは、オペレーティングシステムでは2つの論理CPUがあるかのように動作するCPUです。つまり、OSは、各CPUコアに単一の実行リソースを持つハードウェア上に1つのコアしかないにもかかわらず、各コアに対して2つのCPUを認識します。AMDチップでは、これは「同時マルチスレッディング」(SMT)と呼ばれ、基本的にはIntelのハイパースレッディングと同様の技術です。そうは言っても、コア数とスレッド数は、CPUの効率とマルチタスク能力に正の相関があります。
メモリサポートとチャネル
メモリコントローラは最新のCPUに直接内蔵されており、さまざまな種類のCPUが異なるメモリ速度をサポートします。メモリ速度はデータ転送速度を示し、MHzで測定されます。速度が速いほど、より速くデータを転送できます。したがって、サポートされているメモリサイズとメモリタイプに注意してください。例えば、DDR4の最大2133MT/sの速度をサポートするCPUは、DDR3メモリでこれらの速度をサポートするとは限りません。
さらに、CPUのチャネルは通常、プロセッサとメモリ間の通信を接続するレーンと呼ばれます。データ交換速度を速くするには、より多くのレーンが必要です。そのため、少なくともデュアルチャネルメモリ以上をサポートする最新のCPUを活用して、マザーボードのDIMMスロットに追加のRAMモジュールをインストールすることをお勧めします。そうは言っても、単一の機能だけでなく、CPUの仕様を詳細に理解することが重要であり、より多くの知識があれば、アプリケーションのニーズに基づいて最も互換性のあるCPUを選択できます。
2. GPU - グラフィックス処理ユニット
動物界の例えでCPUとGPUの違いを説明すると、CPUはパワフルだが数が少ないゾウのようなものであり、対照的にGPUは小さいが数が膨大なアリのようなものです。これは、特にGPUが持つコアの数をCPUコアと比較して、計算能力を比較する方法です。元々はビデオ処理とレンダリングのために設計されましたが、今日のGPUは、特に大量のデータを伴う計算において、より広範なアプリケーションで使用されています。
現代のGPUの膨大な並列処理能力により、コンピュータは数十億のレコードを瞬時に処理し、アプリケーションの重い部分を加速させながら、残りの部分はCPUなどの他のコンポーネントで実行され続けます。GPUは、データサイエンス、特に機械学習アルゴリズムで一般的な、より大きなデータセット、非構造化データ、より洗練された統計分析を組み合わせたベクトル計算で特に優れています。例えば、ゲノムシーケンスを処理する場合、GPUは数分で完了できますが、CPUでは完了までに数日かかります。したがって、GPUは重いグラフィックス計算だけでなく、AI、機械学習、ディープラーニングアプリケーションにも最適です。
組み込みコンピューティングに最適なGPUを選択する際には、長期的に持続可能で、統合とクラスタリングによる拡張性を持つGPUを選択する必要があります。したがって、デバイスの耐久性と信頼性のためには、プロダクショングレードまたはデータセンターGPUが不可欠です。今日のGPU市場には、NvidiaとAMDという2つの主要なプレイヤーがいます。どちらのメーカーもさまざまなGPUコレクションを提供しており、異なるニックネームで多くの同様の技術が実装されています。

さらに、Nvidia GPUのコアはCUDAコア、AMD GPUはストリームプロセッサと呼ばれますが、どちらもGPU内部のコアを指す同じものです。NvidiaはTensorコアも開発しており、これは機械学習計算のために特別に設計されており、1クロックサイクルで混合精度の演算を実行できます。
CPUとは異なり、異なるメーカーのGPUコアを比較しても、それぞれのGPUのグラフィカルな能力を正確に示すことはできません。より正確な比較のためには、同じアーキテクチャを持つ2つのGPUカードを比較する方が良いでしょう。エッジコンピュータのパフォーマンスアクセラレータに適切なGPUを選択することは、展開にとって有益です。以下に、GPUが組み込みシステムモデルに適切であることを確認するためのいくつかの重要な要素を挙げます。

機械推論分析のケーススタディの詳細:One Fish, Two Fish
クロック速度
CPUと同様に、GPUのクロック速度はMHzで測定され、GPUコアが1秒間に実行する計算回数を示します。これは、GPUがより高速で強力なパフォーマンスを提供するためには、より高いクロック速度が必要であることを意味します。GPUが提供するパワーをよりよく理解するために、コアクロック速度とブーストクロック速度を確認できます。例えば、NVIDIA GeForce GTX 1050 Tiは、ベースクロック速度が1290MHzで、重いワークロード時には1392MHzまでブーストクロック速度が上がります。PremioのVCO 6000シリーズなどの産業用コンピュータにこのGPUが組み込まれている場合、魚加工工場での推論アプリケーション、顔認識、空港でのセキュリティIDチェックなどのビジョンアプリケーションタスクの画像認識機械学習アルゴリズムを迅速に実行できます。
空港セキュリティIDチェックにおけるパフォーマンスアクセラレータアプリケーションの詳細はこちら ケーススタディ
メモリ:種類、サイズ、帯域幅
グラフィックパーツにおけるメモリは、GPUの仕様を選択する際に含めるべき最も重要な要素です。GPUのグラフィックスダブルデータレート(GDDR)では、メモリの基礎であるSDRAM(同期ダイナミックランダムアクセスメモリ)が使用されます。これが、GDDR5、GDDR5x、GDDR6 VRAMなどのGPUのVRAMにメーカーが使用しているものです。VRAMのメモリはGB単位で測定され、サイズが大きいほど、多くのグラフィカルデータを保存するのに適しています。GPUに十分なメモリがない場合、より大きな機械学習モデルサイズをGPUに収めることはできません。
大容量メモリには、膨大なメモリ帯域幅も必要です。メモリ帯域幅は、メモリクロック速度、メモリバス幅、メモリのクロックあたりの転送速度の総合的な積です。メモリバス幅は、より多くのデータ転送を可能にするレーンのようなもので、ビット単位で測定されます。これら3つの要素すべてが高いほど、GPUはより強力になります。これにより、GPUは複雑な機械学習ワークロードを処理できるようになります。例えば、NVIDIA GeForce GTX 1050 Tiは、4GB GDDR5タイプで、112GB/秒のメモリ帯域幅、128ビットのメモリインターフェイス幅を持っています。このGPUは、Premioのスマートオートメーションプラントのケーススタディで使用されています。
3. VPU - ビジョン処理ユニット
GPUはグラフィックスやディープラーニングに使用できますが、エンジニアは、エッジに展開するのに最適な、より小型でコンパクトな処理ユニットを考案しました。それがビジョン処理ユニット(VPU)です。VPUは、機械学習および人工知能のワークロードを高速化するために特別に設計されたマイクロプロセッサの一種です。VPUは、コンピュータビジョン用の画像処理タスクをサポートするために特化しています。そうは言っても、Intelは、非常に強力でありながら小型で低消費電力のプロセッサを作成しました。内部に埋め込まれているチップはMovidius Myriad Xと呼ばれ、ニューラルネットワーク、イメージング、ビジョンアクセラレータのために特別に設計された高レベルのアーキテクチャで構成されています。

したがって、VPUを適用すると、プライバシーの向上、レイテンシーの解消、パフォーマンスの高速化、消費電力の低減が実現します。これは、すべてがクラウドとのインタラクションなしでエッジで発生し、USBスティック形状の複数のVPUを積み重ねることで、コンピューティングパワーを簡単に2倍にできるためです。これは、特にVPUによってビジョンタスクを軽減し、CPUやGPUに他のプログラムを実行させることで、ビジョンを伴うパフォーマンスアクセラレータにとって非常にエキサイティングです。
4. FPGAとASIC
最近人気を集めているのが、FPGAとASICの導入です。FPGAはフィールドプログラマブルゲートアレイの略で、論理ブロック、I/Oセル、相互接続リソースで構成される柔軟な集積回路であり、目的のアプリケーションの機能に基づいて完全にカスタマイズおよびプログラム可能です。このチップは、I/O接続と論理ブロックを異なる組み合わせで変更することで、複数回再構成できます。FPGAは、バックエンド部分でカメラと一緒に組み込まれることが多い様々なマシンビジョン機器に存在します。

FPGAは、チップを再構成する際にハードウェアを変更する必要がなく、ソフトウェアの観点から機能を更新できるため、非常に便利です。最適な構成が得られた後、FPGAの設計がASICアーキテクチャに実装されることもあります。ASICは特定用途向け集積回路の略で、特定のタスクを実行するために強化されたはるかに効率的なチップです。
FPGAとは異なり、ASICは永久的なもので、一度製造すると、元々設計されたタスクしか実行できません。そのため、開発者は通常、AIアルゴリズムに最適なチップ設計を見つけるためにまずFPGAを使用します。次に、最適な組み合わせを見つけたら、ASICの設計構成を開始できます。一部の開発者はFPGAを使用し続けています。なぜなら、ASICハードウェアを製造することは非常に高価であり、特に一方通行であるためです。最も有名なASICの革命的な革新の1つは、Googleが独自に開発したASICであるGoogle Cloud TPUです。これは、機械学習ワークロードを非常に効率的に加速するために非常に特化して設計されたASICです。
ストレージと高速接続
パフォーマンスアクセラレータを最大限に活用するために次に確認すべきことは、可能な限り最速のストレージと接続があることを確認することです。システム全体で多くのコンポーネントを改善することで、パフォーマンスを向上させ、ボトルネックを減らすことができます。ボトルネックを排除することで、最適に機能するシステムが構築されます。前述のように、これらの要因には、ストレージテクノロジーNVMe、計算ストレージ、PCIe接続プロトコルが含まれます。
5. NVMe SSD
NVMeはPCIe SSDの標準インターフェースで、非揮発性メモリ エクスプレス(Non-Volatile Memory Express)の略です。SSDの真の可能性を引き出すために並列処理に焦点を当てて、高速データストレージメディアにアクセスするために設計されたプロトコルです。まず、非揮発性ストレージとは、システム全体がオフになってもデータを保持し続けるデータストレージデバイスです。これは永続ストレージとも呼ばれます。HDDとSSDの両方が永続ストレージですが、対照的にSSDは読み書き速度がはるかに速く、可動する機械部品がありません。このため、SSDはエッジコンピュータの展開に非常に適しています。
次に、SSDとNVMeプロトコルを組み合わせることで、HDD時代に考案されたSATAなどの従来のプロトコルと比較して、さまざまな利点が得られます。並列コンピューティングを利用し、PCIe電気バスとフラッシュストレージの特性上で動作することで、NVMeはSATAが提供する32個の単一コマンドキューと比較して、最大64,000個のコマンドを同時にサポートできます。これは大規模なアップグレードです。最後に、NVMeストレージはM.2 NVMe SSDストレージなどのさまざまなフォームファクタで提供されます。これは、システムのボトルネックを軽減する高速エッジコンピューティングに必要なストレージデバイスの種類です。
6. 計算ストレージ
もう1つ、注目すべき重要な最新技術は、コンピュテーショナル・ストレージです。これらの新しい技術はすべて、常に速度のボトルネックを排除し、コンピューティング性能を向上させ、ストレージ容量を増やすことを目指しています。これらの課題を解決するために、エンジニアはコンピュテーショナル・ストレージのような新しいソリューションを考案しました。コンピュテーショナル・ストレージは、基本的に処理能力をストレージデバイス自体にもたらします。

データ・ストレージとコンピューティング能力に別々のプロセッサーを搭載するのは、大量のデータをCPUとストレージ・デバイス間で転送する必要がある場合にボトルネックが増加するため、非効率です。これらは基本的に、多数の特定プロセッサーまたはCPUのような汎用プロセッサーで構成されるストレージ・サブシステムを作成します。これらのプロセッサーは、コンピュテーショナル・ストレージ・ドライブ(CSD)として知られる単一のドライブに成形され、ストレージ・メディア上に直接配置されます。コンピュテーショナル・ストレージは、NVMeベースのストレージに配置されたARM Cortexを中心に構築されており、アプリケーションのニーズに基づいてFPGAやASICアクセラレーターなどの追加プロセッサーを含むことも可能です。この設計は、処理をデータソース自体に直接移動させるもので、超高速コンピューティングを実現しました。
7. PCIeプロトコル
Peripheral component interconnect expresses (PCIe)プロトコルは、非常に高速な接続速度でコンポーネント間のボトルネックを削減する高速インターフェース規格です。マザーボードが適切なPCIe構成であることを確認することは、上記のすべてのアクセラレーターを完全に最適化するために重要です。PCIe世代1から6まで最大6世代のPCIeがあり、帯域幅は8GB/sから256GB/s、ギガ転送速度は2.5GT/sから64GT/sまで、各世代で2倍になります。現在、市場に出回っているデバイスで使用されているPCIe規格は、2017年に発表されたPCIe 4.0で、64GB/sの帯域幅と16GT/sのギガ転送速度を提供します。これは非常に高速な接続です。とはいえ、PCIeデバイスはまだPCIe 4.0の最大潜在速度には遠く及ばないのが現状です。

これらのパフォーマンスアクセラレータは、PCIe 4.0プロトコルから大いに恩恵を受けるでしょう。さらに、マザーボードのPCIeスロットは、x1、x4、x8、16、最大x32まで、さまざまな物理サイズで利用可能です。これらは、マザーボードのPCIeスロットが持つレーンの数を示しています。PCIeスロットは接続が可逆的であり、PCIe 3.0デバイスをPCIe 4.0スロットに挿入できます。また、スロットのシリアル接続により、より大きなPCIeデバイスをより小さなスロットに挿入できます。たとえば、PCIe x16カードをPCIe 8スロットに挿入したり、その逆でより小さなカードをより大きなスロットに挿入したりできます。唯一の違いは、より大きなスロットと比較して、より小さなスロットから得られる帯域幅です。PCIe 5.0または6.0をサポートする将来のデバイスは、将来のより高速なプロセッサーに対して、莫大な速度を追加し、ボトルネックを削減します。PCIe 4.0でも、NVMe SSDストレージを最大限に活用し、帯域幅速度を最大8GB/sに増やすことができます。
よくある質問:
コンピューターのパフォーマンスを高速化する方法は何ですか?
重いアプリケーション、特にAI、機械学習、深層学習が関わるアプリケーションを実行すると、コンピューターにいくつかの課題が生じる可能性があります。コンピューターのパフォーマンスを高速化することで、ボトルネックなどのこれらの課題を解消し、レイテンシーを改善し、消費電力を抑えることができます。コンピューターのパフォーマンスを高速化するには、ソフトウェア・アクセラレーターとハードウェア・アクセラレーターを利用する2つの主要な方法があります。
機械学習コンピューティングにおけるソフトウェアアクセラレーターとハードウェアアクセラレーターの違いは何ですか?
コンピューターシステムの高速化を試みる際には、ソフトウェアとハードウェアの両面から解決策があります。ソフトウェアでパフォーマンスを高速化するには、機械学習の精度を維持しながらアルゴリズムの効率を高める必要があります。
これらのステップには、推論アルゴリズムの場合、枝刈り、重み共有、量子化、低ランク近似、バイナリ/ターナリネット、ウィノグラード変換などがあり、トレーニングアルゴリズムの場合、並列化、混合精度、モデル蒸留、高密度-疎-高密度法などがあります。ハードウェアアクセラレーションの観点からは、一般的な目標はメモリアクセスを最小限に抑え、パフォーマンスのボトルネックを削減し、計算速度を向上させることです。これは、GPUやVPUのような特定のプロセッサでの並列コンピューティング、強力なCPUの適用、NVMeおよびPCIeプロトコルによる速度のボトルネックの削減によって達成できます。
深層学習におけるトレーニングと推論の違いは何ですか?そしてなぜ気にする必要があるのですか?
基本的に、トレーニングとは、大量のデータで訓練することで、機械学習アルゴリズムをゼロから作成するプロセスです。一方、推論とは、訓練された機械学習を実装して、以前に見たことのないデータに対して予測を行うプロセスです。機械学習のトレーニングは通常、大規模なデータセンターで行われますが、推論機械学習はエッジで適用される準備ができており、コンピューターに視覚を提供します。推論は通常、自動運転車、スマート製造、画像認識システムで使用されます。
GPUとVPUの違いは何ですか?
GPUとVPUはどちらも機械学習アルゴリズムの実行に優れています。しかし、GPUはサイズが大きく、より汎用的な用途向けに作られており、機械学習に特化して設計されているわけではありません。GPUは、負荷の高いゲームをプレイする際に発生する重いグラフィックレンダリングの処理にも使用できます。対照的に、VPUは推論機械学習のために特別に設計されており、はるかに小型です。したがって、VPUは非常に強力で、コンピューターに視覚を提供する際の消費電力も少なくて済みます。
いつコンピューターにパフォーマンスアクセラレーションを適用する必要がありますか?
パフォーマンス・アクセラレーションは、データ分析、人工知能、機械学習、深層学習の実装時に直面するような、重いタスクを実行するコンピューターに通常適用されます。しかし、パフォーマンス・アクセラレーションは、オートメーション産業のように、インフラストラクチャにおいて高速で信頼性の高いコンピューティング能力を常に必要とする産業においても非常に役立ちます。