FPGA と GPU を使用したニューラル ネットワークの作成

FPGA と GPU を使用したニューラル ネットワークの作成

現代の CPU は、命令を順番に実行し、アルゴリズムを 1 つずつロードされて実行される命令に分解して、1 次元的に計算を実行します。しかし、将来のコンピューティングの傾向では、並列実行をサポートするためにハードウェア アクセラレータにますます依存するようになり、それがコンピューティングの標準となることが予想されます。この開発動向により、アルゴリズムとハードウェア構造の使用が統合され、より高速で効率的なソリューションが実現します。

この開発トレンドでは、2次元コンピューティングをサポートするGPUの台頭により、このトレンドが部分的に実現されました。 GPU は大規模な並列コンピューティング機能を備えており、本来並列化が困難だった多くのアプリケーションのパフォーマンスを大幅に向上させます。

写真

[左] GPU は、画像処理アルゴリズムの複雑な並列処理に最適です。ビデオ画像は滑らかです。 [右] CPU のシリアル制限により、顕著な遅延とパフォーマンスの低下が発生します。

ただし、GPU は特定の状況でのみ特定のアルゴリズムを高速化できます。将来的には、相互接続された CPU とさまざまなハードウェア アクセラレータを通じて超最適化が可能になります。 FPGA は、ハードウェア構造のプログラミングを通じて高度にカスタマイズされた 2 次元コンピューティングを可能にするため、この未来において重要な役割を果たすことになります。

写真

[左の画像] は、CPU が命令を 1 つずつ順番に実行して問題を解決する様子を示しています。 [右] は、GPU、FPGA、ASIC などのハードウェア アクセラレータが空間と時間で 2 次元計算を実行する方法を示しています。

この記事では、睡眠追跡に特定のニューラル ネットワークを使用し、それを FPGA にマッピングする方法を説明します。さらに重要なことは、ハードウェアをアルゴリズムにマッピングするために必要な主要なツールを示し、異種コンピューティングを実現する方法を紹介することです。

1. 睡眠追跡: 鉛筆の先にニューラルネットワーク

ウェアラブル FPGA ベースの睡眠トラッカーを作成しました。このプロセスでは、元々 Python (Keras) で記述されたニューラル ネットワークをシリコン チップ (FPGA) にマッピングできるパイプラインが構築されましたデータの取得からニューラル ネットワークの予測まで、睡眠追跡プロセス全体は、プロセッサを介さずに、完全に小さな FPGA 上で実行されます。

写真

3 層のフィードフォワード ニューラル ネットワーク (左) は、鉛筆の先よりも小さい FPGA に展開されており、iCE40 Ultra ウェアラブル開発プラットフォーム (右側の緑色で囲まれた部分) に搭載されています。

これは、ミシガン大学で開発された査読済みのアルゴリズム (Walch et al.、Sleep 2019) を使用して実装されました。これは、睡眠データセットと対応するアルゴリズムの最初のオープンソース リポジトリです。

ここでの FPGA ニューラル ネットワーク (NN) コアは、このプロジェクトのラベル付きデータを使用して検証されました。使用されたニューラル ネットワークは、加速度計データ、心拍数、概日リズム データを入力として、覚醒、急速眼球運動 (REM) 睡眠、非 REM 睡眠を全体的な精度 91.3% で予測する多層パーセプトロンでした。

写真

FPGA 睡眠トラッカーの高レベル アーキテクチャ図。フロントエンドでは、STM IMU チップが FPGA に接続されたデータ ソースです。バックエンドでは、ホスト コンピューターを接続してデータを読み取り、睡眠トラッカーにコマンドを送信できます。私は、SystemVerilog を使用して、サンプラー、特徴抽出器、NN コア、UART コアをゼロから自分で開発しました。これにより、小型 FPGA 上に展開可能な効率的なソリューションが可能になります。

構築されたパラメータ化された FPGA NN コアはベンダーに依存せず、パイプラインにより特定の制約下でモデルの形状とパラメータを簡単に更新できるため、このアプリケーションの範囲を超えた他のアプリケーションにも適しています。

2 加速器上の2次元アルゴリズムの将来

現在、FPGA などの適応型アクセラレータを導入することは、非常に手間がかかり、時間のかかる作業です。 FPGA 開発の 3 つの側面について、現在の実践と将来の改善の観点から説明します。

2.1 2Dアルゴリズムは高水準な方法(例えばPython)で記述され、自動的に展開される

FPGA コードの記述は、データ サイエンティストやほとんどのソフトウェア エンジニアとは異なる専門知識を必要とする難解なタスクです。これは、FPGA ベースの 2D アクセラレーションから大きなメリットを得られるチームにとって障害となる可能性があります。 FPGA をターゲットとしたアルゴリズムを Python などの使い慣れた高級言語で記述できることは、FPGA の普及に重要です。 FPGA の専門家も、このインフラストラクチャによってもたらされる大幅な効率性の向上の恩恵を受けることになります。

アプリに新しい睡眠トラッカー ネットワークを展開するには、ユーザーはスクリプトを実行し、いくつかのファイルを少し変更するだけです。ハードウェアの知識は必要ありませんし、新しい SystemVerilog コードを記述する必要もありません。

写真

ニューラル ネットワークの展開フローにより、FPGA の専門家でない人でも新しいモデルをトレーニングし、FPGA に展開できるようになります。フロー内の手順には、Keras モデルのトレーニングとエクスポート、スクリプトを使用して出力モデルを FPGA コンパイラ ツールチェーンに必要なデータに解析、最上位 FPGA プロジェクト ファイル内のモデル定数の更新、FPGA ビットストリームの再コンパイルが含まれます。

これが機能する理由は、高度に制約されたモデルのみが許可されるためです。将来的には、ザイリンクスの Vitis HLS や Google の XLS など、より汎用的な高レベル合成 (HLS) ツールにより、ユーザーは適応型アクセラレータに展開できる汎用的な高レベルアルゴリズム記述を提供できるようになります。

2.2 Pythonなどの言語で2Dアルゴリズムを効率的にテストおよびデバッグする

シミュレーション、検証、デバッグは、FPGA アプリケーション設計プロセスの重要な部分です。これらのプロセスは、高度なインターフェースとツールによって大幅に改善されます。

写真

睡眠トラッカー アプリのトップレベル テストベッドの画像。 Cocotb と Python を使用して FPGA 設計をテスト、検証、デバッグできることは大きな利点です。 Python の async/await 構文の利便性と、Python でのサブコンポーネントのモック作成やテスト データのインポートの容易さにより、私たちの作業は大幅に加速されました。

大きな進歩がありました。たとえば、すべてのコンポーネントは SystemVerilog で直接記述されていますが、Python を離れることなく、すべてのオフデバイス検証とテストベンチ (各モジュールとスリープ アプリケーション全体) に Cocotb が使用されました。 Cocotb を使用すると、サイクル精度のシミュレーションを Python エコシステムで使用できます。これは、FPGA 検証にとって非常に重要であり、開発者にとって非常に効率的です。

2.3 Rustは異種システムをつなぐ接着剤となる

組み込みエンジニアにとって一般的なシナリオは、ハードウェア アクセラレータ (FPGA など) とホスト CPU 間の通信を確立することです。この仕事は退屈で間違いが起きやすいことで有名です。

FPGA スリープ アプリケーション用のデバイス ドライバーと高レベルのセッション API が Rust で構築されました。前者はカスタム パケット プロトコルを実装し、後者は FPGA スリープ アプリケーションと対話するさまざまなプログラムを作成するために使用されました。 Rust は、その型システムと静的チェックにより、安全な低レベルコードと人間工学に基づいた高レベル API を簡単に記述できるため、優れたソリューションです。この講演の後半では、これらの機能のいくつかについて詳しく説明します。

私たちは、異機種コンピューティング システムを接続するには Rust が最適な選択肢であると考えています。この役割において、Rust は低レベルの通信の安全性を提供し、ドライバーの脆弱性を軽減し、ハードウェア境界を越えて通信するアルゴリズムに人間工学に基づいた API を提供します。

写真

共通 I/O クラスのコード生成機能を含む、CPU<->FPGA 接着剤としての Rust のビジョン。

<<:  GPT4 はロボットにペンをスムーズに回転させる方法を教えます。

>>: 

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

機械翻訳から読心術まで、AIは人類のバベルの塔を再建できるのか?

聖書の旧約聖書創世記には、人類が団結して天国に通じるバベルの塔を建てたという話があります。この計画を...

調査会社がAI主要9分野を数え、世界各国のAI法規制を分析

世界中の政府は、AI技術革命に直面しても既存の法律、規制、枠組みが引き続き有効であることを保証し、新...

...

...

PyTorch を使用したノイズ除去拡散モデルの実装

ノイズ除去拡散確率モデル (DDPM) の仕組みを詳しく検討する前に、生成 AI の進歩、具体的には...

...

AIのデジタルシールド:インフラのサイバーセキュリティ戦略の強化

技術革新の時代において、人工知能 (AI) は変革の力として際立っています。パーソナライズされた推奨...

人工知能の主な研究段階と将来の発展方向は何ですか?

人工知能は常にコンピュータ技術の最前線にあり、人工知能研究の理論と発見はコンピュータ技術の発展の方向...

...

機械学習アルゴリズムを使用して「実験室地震」を予測するにはどうすればよいでしょうか?

[[186458]]機械学習アルゴリズムが「実験室の地震」を予測できるという事実は、間違いなく画期...

[NCTSサミットレビュー] Testin Xu Kun: AIが次世代のテストをリード、iTestinがテストの未来を書き換える

2019年10月26日、Testinが主催する第2回NCTS中国クラウドテスト業界サミットが北京で開...

アルゴリズム設計者が新たな人気者になる

Aisle50 の共同創設者であるクリストファー・シュタイナー氏は、新著の中で、デジタルが優位性を...

...

研究者:AIモデルの「推論」はより多くの電力を消費し、業界の電力消費は2027年に「オランダに匹敵する」ようになる

今週10月13日、Cellの姉妹誌Jouleは「人工知能の増大するエネルギーフットプリント」と題する...