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 はロボットにペンをスムーズに回転させる方法を教えます。

>>: 

ブログ    
ブログ    

推薦する

...

Google Gemini から OpenAI Q* まで: 生成 AI 研究の包括的なレビュー

最近、オーストラレーシア工科大学、マッセー大学、ロイヤルメルボルン工科大学などの研究機関の研究者が、...

顧客エンゲージメントにおける 5 つの主要な AI トレンド

クラウド通信および顧客エンゲージメント プラットフォームである Twilio が発表した新しい調査レ...

...

人工知能が詩を書きました。この詩の知的財産権は誰が所有しているのでしょうか?

以下は、テンセント研究所法律研究センター副所長兼主任研究員である蔡雄山氏の講演の記録です。多くの場合...

AI を活用した新たなフィッシング攻撃に対抗するにはどうすればよいでしょうか?

サイバーセキュリティは、攻撃と防御の継続的なゲームです。防御戦略が進化し続ける一方で、攻撃者も攻撃の...

成功するビジネス インテリジェンス戦略を開発する方法

ビジネス インテリジェンス戦略の策定は、企業が検討する必要がある重要なステップであり、ビジネス イン...

...

AIがプライバシーを尊重しながら優れた顧客体験を生み出す方法

ゼブラテクノロジーズグレーターチャイナのテクニカルディレクター、チェン・ニン氏近年の人工知能(AI)...

論文の90%はモデル中心です。AIの分野では、データとモデルのどちらが重要ですか?

モデルとデータは AI システムの基盤であり、これら 2 つのコンポーネントはモデルの開発において重...

機械学習を使用してビデオ内の顔を再構築する

翻訳者 | 崔昊校正:孫淑娟導入 中国と英国の共同研究により、ビデオ内の顔を再現する新しい方法が考案...

産業用ロボットアプリケーション業界の概要

現在の技術の進歩と産業の発展に伴い、産業用ロボットの応用分野も急速に拡大しています。企業は、労働コス...

脚本を書いて、AIが動画を自動編集:編集者の7時間かけて作成した動画を13分で完成

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...