🐶

【初心者】今話題のFPGAって何?AIを爆速で動かそう!

2021/05/18に公開

AIとっても便利だよね

いろんな賢い人の研究によって、AI(人工知能)の精度が近年かなり良くなってきました。たとえば、分類、検出、セグメンテーション、姿勢推定、顔認識など、いろんなことができるようになりました。とっても便利(^^)

その一方で、まだ課題も残っています。

  1. AIが判断するのに時間がかかってしまう...⏰
  2. AIが計算する時の消費電力が大きくなってしまう...💡

これらはかなり致命的な問題です。なにか事象が発生してから、反応→判断までが遅いと、自動運転では 重要な事故に つながってしまいます。また、消費電力が大きいと、 でかいバッテリーが必要なので小型化が難しく なります。あと発熱もすごいので、メッチャ熱くなってしまします。🔥

注目を浴びているFPGAってなに?

この課題を解決するために、今注目を浴びているのがFPGAです。
FPGAとは、回路を自由にカスタマイズできるIC です。つまり、AI専用の回路に特化(カスタマイズ)させることで、高速化&省電力化をすることができます。

FPGAって何の略?

FPGAは「Field Programmable Gate Array」の略です。日本語にすると「現場でプログラムできる集積回路(IC)」となります。何言ってんのかよくわかりませんね🤔


ここでいう「現場」とは、「私たちプログラマ自身で」みたいな意味です。たとえば、パソコンのCPUなどの普通のICは、工場でICを作って、出荷されて、私たちの元に届きます。このICは、既に決まったパターンが物理的に彫られており、後で変更することはできません。


しかし、このICパターンを「工場から出荷して私たちの所に届いた後でも変更できるよ」って言ってんのがFPGAです。今回は、この辺の初歩的だけど難しい内容を、できるだけ噛み砕いて解説します。



AIエンジニアとして、AIの知識をもっている方はたくさんいます。一方で、大半のAIエンジニアは、AIを動かしているデバイスや、物理的な電気回路についての理解は浅いです。ワンランク上のAIエンジニア を目指すべく、今注目のFPGAのポイントを分かり易くまとめました。

AI、機械学習、ディープラーニングの基礎から学びたい方は、こちらからどうぞ↓
https://zenn.dev/nekoallergy/books/904df952389317


Created by NekoAllergy

知っておいたほうがいいこと

FPGAの説明に入る前に、FPGAの理解を深めるために知っておいたほうがいい言葉を3つ紹介します。

ハードウェアとソフトウェアの違いって?

FPGAの原理を理解するためには、ハードウェアとソフトウェアを分けて考えることが重要です。


ハードウェアとソフトウェアの違い (※1)(※2)

  • ハードウェアとは:
    目に見えるもの。形あるもの。
    ICチップのこと。人間で例えると「体」にあたる部分。
  • ソフトウェアとは:
    目に見えないもの。形がないもの。
    ICチップの中のデータ(電子)の動き。人間で例えると「心」にあたる部分。

物理的にハードウェアが存在し、その中で、ソフトウェアが動くイメージです。私たちがプログラミングをする時は、ソフトウェアを書き換えています。ハードウェアの構成は物理的に固定されているので、形や順番を変えたり、配置を変更したりすることはできません。

ところが、FPGAを使うと...

ところが、FPGAではハードウェアそのものを私たち自身で変更する事ができます。 ハードウェアを変更できると、物理的に最短経路で回路を組むことができるので、高速化することができます。

ってことは、いろいろ道具を使ってカチャカチャ組み立てて、電子工作するってこと?と思った方もいるでしょう。そうではありません! FPGAでは、通常のプログラミング言語を扱う感じでハードウェアを変更することができるんです。


ICチップって何を指しているの?


こんなのをICチップって呼びます (※1)

FPGAを理解するには、ICチップについても知っておくと良いでしょう。

ICとは、簡単に言えば小さな電気回路です。ICチップと呼ばれ、目に見えないくらいに小さい回路が詰まっています。ちなみにICはIntegrated Circuitの略で、「回路がたくさん集まってギュウギュウに詰まっている電気回路」って意味です。

ICチップは物理的に存在して、目に見えているので、「ハードウェア」です。ICは、構成や役割によって呼び名が変わり、CPUと呼んだり、GPUと呼んだり、ASICと呼んだりします。その中の一つとして、FPGAという種類のICがあります。

AppleシリコンM1もICチップです

2020年にはAppleから「AppleシリコンM1」というのが発表され、話題になりました。このM1というのもICチップにあたります(SoCって呼ばれます)。紹介ムービーなんかでは、黒い四角い物体にM1って書かれていて、その中に、キラキラ輝いているICチップが入っているのが見えると思います。これがICの本体です。(※1)


M1の外観。この中のチップを守っている。


M1の中身。虹色になっているのがICチップの本体。

論理ゲートってなに?

さて、ICの中身をもっと詳細にみてみましょう。ICはいろいろな要素から構成されていますが、ICを形作るための最小単位は論理ゲートというものです。小さな計算機だと思えばよいでしょう。

ちなみに

実際には最小単位はトランジスタですが、分かり易くするためここでは割愛します。
IC>論理ゲート>トランジスタ という大小関係です。


論理ゲートには、ANDゲート、ORゲート、NOTゲートのような種類があります。私たちが普段使う計算に、足し算、引き算、掛け算、割り算のような種類があるのと同じイメージです。

この様々な論理ゲート(計算機)を組み合わせることで、いろいろな機能を持ったICが作れます。組み合わせを変えることで、それがCPUと呼ばれたり、GPUと呼ばれたり、メモリと呼ばれたりします。なお、論理ゲートも物理的に存在して、目に見えているので、「ハードウェア」です。

FPGAでは...

FPGAでは、この論理ゲートの組み合わせ私たち自身で変えることができます。論理ゲートの構成を変えるということは、ハードウェアそのものを変えることになります。

組み合わせを変えることで、CPUに生まれ変わったり、GPUやメモリになったりすることもできます。

また、自身でカスタマイズできるので、特定の機能に特化したICも作ることができます。AIを高速で動かせるICを作れます。

代表的なICたち

CPU、GPU、ASIC、FPGAの概要について簡単にご紹介します。

○CPU

CPUは、汎用的に色々な処理に対応できるようにしたICです。

イメージとしては、「取りまとめ役」「何でも屋」「平均点が高い感じ」という感じです。どんな作業をさせられるのか分からないので、いろんな作業を幅広くできるようにしたマルチプレイヤーICです。

CPUは単体では機能できず、メモリと併せて使用します。メモリ内にプログラムとデータを入れておいて、CPUの回路を使って自由に計算を行います。CPUの回路の構成は最初から決まっていて変更はできませんが、メモリ内のプログラムを変えることで、どんな処理でも行うことができます。メモリは絶対に必要なので、CPUとメモリはセットとして考えましょう。

プログラミングの時は...

私たちがプログラミングをする際は、メモリ内のデータを書き換えることで、処理を変えることができます。

CPUは何でもできる。でも...

CPUの回路は汎用性に特化した作りになっているので、メモリに入れたプログラム通りに何でもやってくれます。 しかし、作業によっては、無駄な遠回りをしてしまったりなど、非効率な部分がでてきます。回路の作りが決まっているので苦手な作業だと時間がかかったり、逆に簡単な作業だと使われない回路が大量に発生したりするので、無駄が多くなってしまいます。

○GPU

GPUは、CPUのサポートするもう1つの頭脳です。

さきほどのCPUは、どんな計算もできる何でも屋ですが、作業を一列に並べて順番に行う ことしかできません。そのため、時間がかかったり、効率が悪い動作を行ったりしちゃいます。そんなCPUを助けるのがGPUの役割です。

GPUは、1つの作業を横に並べて一気に攻める「並列計算」が得意です。そのため、画像やグラフィックなどの処理を素早く行うことができます。AI(機械学習)の計算も、同じ作業を繰り返すことが多いので、「CPUだけで計算する」のと、「CPUとGPUを併せて計算する」のとでは、時間がかなり変わってきます。CPUでは10分かかる計算が、GPUを使うと数秒で終わることはよくあります。


AIはどのように動いているのか?

2021年現在、AIを動かしている主流は、CPUとメモリとGPUを使う方法です。CPUとメモリで処理し、GPUがサポートすることで、AIの最大火力を出すイメージです。GPUの性能がどんどん向上してきたので、超高速で処理できるようになりました。

しかし、CPUやGPUはそもそもAIの作業に特化して作られたものではないので、どうしても非効率な動作をするときがあります。そもそもCPUが非効率なので、最適化すればもっと早く処理することができるはずです。

マルチとプロはトレードオフの関係にある

なんでもできるもの(汎用型)(マルチプレイヤー)
 ⇒できることは多いが、1つ1つの性能は低く、速度も遅い。
1つに特化したもの(特化型)(プロプレイヤー)
 ⇒できることは限られているが、その範囲内では最高パフォーマンスを発揮する。

プロとマルチはトレードオフの関係にあります。トレードオフとは、「どちらかを取ると、どちらかが劣ってしまう」という意味です。かっこいいやつは勉強できないし、勉強できるやつは面白くないしとかあるでしょう(偏見)。それと同じで、2つのものは同時に手に入れられません。

ICでも同じです。CPUなどの汎用的に何でもできるマルチプレイヤーICは、どうしても速度が遅くなってしまったり、非効率になってしまう処理があったりします。一方でGPUは並列処理に特化しているプロプレイヤーです。同時処理は得意ですが、CPUのように幅広い作業はできません。

○ASIC

ある特定の用途に特化させた「ASIC」というICも登場してきました。ASICはオーダーメイド品のICです。カスタマイズしているので、何でも屋ではなく、求められた性能を最大限に発揮できるプロプレイヤーです。

どんな作業をさせられるかわからないコンピュータやスマホは、すべてマルチプレイヤーであるCPUが使われています。汎用性の高いICは使い勝手が良いからです。しかし、高い性能が要求されたり、消費電力や発熱を抑えたかったり、コストパフォーマンスを高めたいという場合にはそれ専用のICが使われます。

たとえば...

たとえば、カメラの中には専用のIC、プリンターの中には専用のIC、スマホの中には専用のICといったように、それぞれの範囲内で超効率的に動作するICが求められます。それがASICです。ASICは、「こんなICが欲しいな」と思った回路を私たち自身で設計して、ASICを作ってくれる工場(会社)にその設計図を渡します。そして工場では、渡された設計図の通りにICを作り、私たちの元に届けられます。

AppleシリコンM1はAppleが作ったASICです。

AppleシリコンM1はAppleが作ったASICです。MacなどのApple製品が効率的に動作するように特化して作ったICなので、超高速で動いたり、消費電力が小さかったり(発熱がなかったり)できるんですね。


ところが、ASICにはデメリットがあります。

  1. 完成までに時間がかかる
  2. 製造代がかかる
完成までに時間がかかってしまう...

たとえば、自分でAI専用の回路を設計したとしましょう。その設計図をASIC製造屋さんに渡して、製造してもらいます。ところが製造する前には、PC上での動作シミュレーションや試作品の作成などを行うので、完成までには少なくても数か月はかかってしまいます。また、いざ完成したとしても、設計ミスがあった場合は、また最初の設計段階からやり直しです。

製造代がかかってしまう...

ASICは完全オーダーメイド品なので、製造代がかかります。そのため、大量発注には向いていますが、ICが1つや2つだけ欲しいという場合は、逆にお金が多くかかってしまいます。

○FPGA

そこで、CPUとASICの良いとこ取りしたICが「FPGA」です!

FPGAの中には、あらかじめたくさんの論理ゲートが用意されていて、それらをつなぎ変えることで、好きなICを作ることができます。たとえるなら、CPUやGPUやASICは「文字が印刷された教科書」で、FPGAは「何も書かれていないノート」と思えばイメージが掴みやすいかもしれません。知識があれば、そのノートに自分オリジナルのCPUやGPUを書くことだってできます。

いいところ1. お金が抑えられる!

設計も製造(回路パターンの書き込み)も、全て自分自身でやるので、設計コストも製造コストも抑えることができます。お金がかからないのは嬉しいですね。

いいところ2. 高速化&低消費電力できる!

自分で自由にパターンを設計できるので、データを最短経路で流すこともできます。その結果、超高速で動作させることができます。また、効率が良くなるので、消費電力が抑えられ発熱も大幅に抑えることができます。CPUのようにまわりくどい方法で無駄な処理する必要はありません。

いいところ3. 開発期間を短縮できる!

また、設計ミスがあったときも大丈夫です。ASICの場合は、大抵完成した後に設計ミスが発覚して、問題箇所を修正した後に、ASIC製造屋さんにまた作ってもらわなくてはなりません。一方でFPGAでは、自分で設計して、その回路パターンをその場で焼き付けるので、ICの開発期間を大幅に短縮することができます。トライ&エラーのサイクルを早くすることができます。

まとめ

FPGAは今後が期待されているICです。
AIエンジニアとして、AIを動かしているデバイスや、物理的な電気回路について理解することで、ワンランク上のAIエンジニア を目指していきましょう!

最後までご覧いただきありがとうございます!

AI、機械学習、ディープラーニングの基礎から学びたい方は、こちらからどうぞ↓
https://zenn.dev/nekoallergy/books/904df952389317

人工知能/AI/機械学習をもっと詳しく

ねこアレルギーのAI

ねこアレルギーのAI
YouTubeで機械学習について発信しています。
お時間ある方は覗いていただけると喜びます。

created by NekoAllergy

参考資料

※1 AppleシリコンM1の写真引用元

※2 電気基板の写真引用元

Discussion