Google Coralの新しいハードウェアの紹介-M.2 Accelerator

Coral M.2アクセラレータは、既存のシステムおよび製品にEdge TPUコプロセッサーを提供するM.2モジュールです。

![alt](https://coral.ai/static/docs/images/m2/pcie-inhand.jpg)

####特徴
Google Edge TPU MLアクセラレーター
2つのM.2フォームファクターで利用可能：
M.2-2230-A-E-S3（A + Eキー）
M.2-2280-B-M-S3（B + Mキー）
ホストCPUでDebian Linuxおよびその他のバリアントをサポート

M.2アクセラレータはデュアルキーM.2カード（A + EまたはB + Mキー）で、互換性のあるM.2スロットに適合するように設計されています。 このフォームファクタにより、ARMおよびx86プラットフォームに簡単に統合できるため、組み込みプラットフォーム、ミニPC、産業用ゲートウェイなどの製品にローカルMLアクセラレーションを追加できます。

購入情報: Google Coral 海外代理店 Gravitylink (https://store.gravitylink.com/global)

![alt](https://gravity-store.oss-cn-hongkong.aliyuncs.com/images/goods/1575968291_ae.png)

![alt](https://gravity-store.oss-cn-hongkong.aliyuncs.com/images/goods/1575968262_bm.png)

####必要条件
Coral M.2アクセラレータは、次の仕様のホストコンピューターに接続する必要があります。

- 互換性のあるM.2モジュールスロットを備えたLinuxコンピューター
   - Debian 6.0以降、またはその派生物（Ubuntu 10.0+など）
   - ARMv8命令セットを備えたx86-64またはARM32 / 64のシステムアーキテクチャ


#### M.2アクセラレーターを始めましょう
Mini PCIeまたはM.2 Acceleratorを使用するには、カードをシステムに接続し、PCIeドライバー、Edge TPUランタイム、およびTensorFlow Liteランタイムをインストールするだけです。 このページでは、セットアップについて説明し、サンプルモデルの実行方法を示します。

セットアップと操作は両方のフォームファクターで同じです。

#####必要条件
開始するには、次の仕様のLinuxコンピューターが必要です。

- x86-64またはARM64システムアーキテクチャ
- 使用可能なミニPCIeまたはM.2キースロット
- Debian 6.0 Linuxディストリビューション以上、またはその派生物（Ubuntu 10.0+など）
- Python 3.5以降




##### 1. PCIeドライバーをインストールします
ドライバーをインストールする前に、ビルド済みのApexドライバーがインストールされているかどうかを最初に確認する必要があります。 ドライバーの一部のバージョンには、更新を妨げるバグがあり、Edge TPUを呼び出すと失敗します。 まず、次の手順を実行します:

次のコマンドを使用して、Linuxカーネルのバージョンを確認します:

```
uname -r
```
4.18以下と印刷された場合は、大丈夫であり、スキップしてPCIeドライバーのインストールを開始できます。

カーネルバージョンが4.19以降の場合、ビルド前のApexドライバーがインストールされているかどうかを確認します:
```
lsmod | grep apex
```

何も輸出されない場合は、大丈夫であり、PCIeドライバーのインストールを続行します。

次のようにPCIeドライバーをインストールします。

モジュールを接続するホストシステムがシャットダウンされていることを確認してください。

ホストシステムの推奨事項に従って、Coral PCIe / M.2モジュールを接続します。

システムを起動し、インターネットに接続されていることを確認します。 次に、Debianパッケージリポジトリをシステムに追加し、これらのコマンドを使用してPCIeドライバーをインストールします：

```
echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sudo apt update

sudo apt install gasket-dkms```

使用するユーザーアカウントにルート権限がない場合は、次のudevルールを追加し、「apex」グループが存在し、ユーザーが追加されていることを確認する必要がある場合があります:

```
sudo sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' >> /etc/udev/rules.d/65-apex.rules"

sudo groupadd apex

sudo adduser $USER apex
```
システムを再起動します。

アクセラレータモジュールが検出されたことを確認します:
```
lspci -x | grep 089a
```

次のように表示されるはずです。

```
03:00.0 System peripheral: Device 1ac1:089a
```

03番号とシステム周辺機器名はホストシステム固有であるため異なる場合がありますが、089aでリストされたデバイスが表示されている限り、続行できます。

PCIeドライバーがロードされていることを確認します:

```
ls / dev / apex_0
```

名前が繰り返されるのが見えるはずです:

```
/ dev / apex_0
```

##### 2. Edge TPUランタイムをインストールする
Edge TPUと通信するには、Edge TPUランタイムが必要です。 次のように、コマンドラインからホストコンピューターにインストールできます:

```
sudo apt-get install libedgetpu1-std
```

##### 3. TensorFlow Liteライブラリをインストールします
TensorFlowのAPIをインストールする方法はいくつかありますが、Pythonを使い始めるには、`tflite_runtime`パッケージをインストールするのが最も簡単なオプションです。 このパッケージは、Python（主に`Interpreter API`）で推論を実行するために必要な最小限のコードを提供するため、ディスクスペースを大幅に節約できます。

#### 4. TensorFlow Lite APIを使用してモデルを実行する
これで、Edge TPUで推論を実行する準備が整いました。 サンプルコードとモデルで画像分類を実行するには、次の手順に従います。

GitHubからサンプルコードをダウンロードします：
```
mkdir coral && cd coral

git clone https://github.com/google-coral/tflite.git
```

鳥の分類器モデル、ラベルファイル、および鳥の写真をダウンロードします:

```
cd tflite/python/examples/classification

bash install_requirements.sh
```

鳥の写真で画像分類器を実行します:

```
python3 classify_image.py \
--model models/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--labels models/inat_bird_labels.txt \
--input images/parrot.jpg
```
![alt](https://coral.ai/static/docs/images/parrot.jpg)

次のような結果が表示されます:

```
INFO: Initialized TensorFlow Lite runtime.
----INFERENCE TIME----
Note: The first inference on Edge TPU is slow because it includes loading the model into Edge TPU memory.
11.8ms
3.0ms
2.8ms
2.9ms
2.9ms
-------RESULTS--------
Ara macao (Scarlet Macaw): 0.76562
```
おめでとうございます！ `TensorFlow Lite`を使用して、Edge TPUで推論を実行しました。

さまざまな推論速度を示すために、この例では同じ推論を5回繰り返します。 各推論の実行時間と最上位の分類（ラベルID /名前と信頼スコア、0〜1.0）を出力します。 推論速度は、ホストシステムによって異なる場合があります。

上記の`classify_image.py`の例では、`TensorFlow Lite Python API`を使用しています。 仕組みの詳細については、`classify_image.py`ソースコードを見て、TensorFlow Liteで推論を実行する方法を読んでください。

`TensorFlow Lite API`（上記で使用）を使用する代わりに、`Edge TPU Python API`を使用して、わずか数行のコードで画像分類およびオブジェクト検出モデルによる推論を実行する高レベルAPIを提供できます。 例として、`Edge TPU API`を使用して`classify_image.py`の他のバージョンを試してください。

C ++およびTensorFlow Liteを使用して推論を実行することもできます。

##### 次のステップ
他の種類のニューラルネットワークを実行するには、リアルタイムオブジェクト検出、ポーズ推定、キーフレーズ検出、デバイス上の転送学習などを実行するサンプルを含むサンプルプロジェクトをご覧ください。