SiMa.ai(以降SiMa)はGPU(グラフィックス処理ユニット)を提供するα社の性能に匹敵する、エッジでのAIに強みを持ったデバイスです。そんなSiMaのMLSoC(Machine Learning System-on-Chip)を実際に使ってみたいという声も上がっています。今回は、α社のGPUで動作していたモデルをSiMaに移植し、実際に動かす方法をご紹介いたします。
移植の手順は以下の通りです。
なお、今回デモ動画結果は以下です。
α社動画
SiMa動画
開発・評価をするためのボードとホストマシンの環境構築について
3ページに分けてご紹介いたします。
1-1. SiMa開発キットの環境構築
UART USB経由でSiMaボードとホストマシンを接続していきます。
ホストマシンでは、SiMa公式の推奨するターミナルエミュレータ minicom※を使用します。
※minicom:Unix系オペレーティングシステム(Linux、macOSなど)で動作するターミナルエミュレータで、特に、シリアル通信(シリアルポート経由の通信)を行うためのツールです。主にシリアルコンソールを通じてマイクロコントローラー、組み込みシステム、ルーターなどに接続し、操作するのに便利なツールです。
minicomのインストールのために、以下コマンドを実行してください。
sima-user@sima-user-machine:~$ sudo apt-get install minicom
ホストマシンとボード間のシリアルケーブルを接続する前に、
ホスト上のシリアルデバイス接続確認をするために、以下コマンドを実行してください。
sima-user@sima-user-machine:~$ ls /dev/ttyUSB*
ls: cannot access '/dev/ttyUSB*': No such file or directory
既存のデバイスのリストが表示されるか、存在しない場合は上記のメッセージが表示されます。
今度は、付属のUSB to 6 pin USB FTDIケーブルを使って、ボードのシリアルポート2をホストマシンに接続します。
接続先はDebug COM port for HOSTで、ケーブルと端子の矢印方向が合うように接続してください。
再度、ホストマシン上のシリアルデバイス接続確認のために、以下コマンドを実行してください。
sima-user@sima-user-machine:~$ ls /dev/ttyUSB*
/dev/ttyUSB0
これでシリアルデバイスが確認できました。
接続してもシリアルデバイスが確認できない場合、以下コマンドを試してみてください。
一度接続されるが、すぐに切断されているログが表示されることがあります。
sima-user@sima-user-machine:~$ sudo dmesg | grep ttyUSB
環境により「brltty」という点字ディスプレイをサポートするアプリケーションがシリアル接続を試みてインターフェースを奪ってしまうことがあり、不要な場合はこれを無効化するか削除することで解消することがあるようです。
# 無効化する場合のコマンド
sima-user@sima-user-machine:~$ sudo systemctl disable brltty.service
sima-user@sima-user-machine:~$ sudo systemctl stop brltty.service
# 削除する場合のコマンド
sima-user@sima-user-machine:~$ sudo apt remove brltty
minicomにより、ホストマシンの最も番号が小さいデバイスに接続するように設定します。基本的には/dev/ttyUSB0ですが、他のデバイスが接続されている場合はボードのシリアルポート2を接続した後に新しく表示されるデバイスに接続します。例えば、ボードを接続する前に/dev/ttyUSB0がすでに表示されている場合は、正しいシリアルポートは/dev/ttyUSB1となります。
適切なシリアルポートに接続するために、以下コマンドを実行してください。
sima-user@sima-user-machine:~$ sudo minicom -D /dev/ttyUSB2 -b 115200, 8n1 -w
実行後はまずホストマシンのログイン名とパスワードを要求されます。その後の画面で電源を投入し自動ブートが進んだのちに、開発キットのログイン名とパスワードを要求されるため、ログイン名「sima」パスワード「edgeai」を入力してください。
minicomでハードウェアフロー制御をオフにするために、以下手順を実行してください。
※ 選択肢を選ぶ際には選択肢横に表示されているアルファベットのキーを押すことで、選択することができます。
これでシリアルポートに接続が出来ました。
次はSSH接続設定を行っていきます。
SiMaボードをEthernet(有線LAN)を使ってホストマシンに接続します。
接続先はEthernet Port 0(PCIe コネクタと遠い方のポート。詳しくは上の配置図を確認してください。)
シリアルでの接続より、Ethernet経由でのSSH接続の方が基本的には高速に通信が可能なため、オフライン環境でホストマシンとSiMaボードを接続します。ただし、オフライン環境ではSiMaボードが再起動するたびにIPアドレスを再設定しないといけません。これも回避するためにファームウェアコンフィギュレーターを使用して、自動的に192.168.2.20のIPアドレスを割り当てるよう設定を行っていきます。
※ 特に動画をSiMaボードからストリームで配信しホストマシンで表示する手順が、今後多く発生してきますので最初に設定しておくとよいです。
※ このあとのステップで使用するカメラのデフォルトのIPアドレスが 192.168.1.x である場合、SiMaのネットワークデバイス上で混同してしまいますので、この時点で 192.168.2.x に割り当てておくとスムーズです。
sima-user@sima-user-machine:~$ sudo ifconfig eth0 192.168.2.20 up
sima-user@sima-user-machine:~$ ssh sima@192.168.2.20
The authenticity of host '192.168.2.20 (192.168.2.20)' can't be established.
ED25519 key fingerprint is SHA256:wTptaqbB9zdLlKpWzRKnkb31cZKnvfmZ4ftXgwXU9kw.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.20' (ED25519) to the list of known hosts.
sima@192.168.2.20's password:*******
Last login: Mon Nov 27 19:58:33 2023
davinci:~$
※ この時点でSSH接続がエラーになる場合、SSHサーバーの設定が十分でない可能性もあります。 シリアル接続経由で /etc/ssh/sshd_config の設定ファイルに「PasswordAuthentication yes」の設定があるかなどを、SSHサーバーの設定を確認してみてください。
接続確認のために、ホストのIPアドレス(192.168.2.10)に対して以下コマンドを実行してください。以下の表示が出ていれば接続ができています。
davinci:~$ ping 192.168.2.10
PING 192.168.2.10 (192.168.2.10): 56 data bytes
64 bytes from 192.168.2.10: seq=0 ttl=64 time=0.598 ms
64 bytes from 192.168.2.10: seq=1 ttl=64 time=0.703 ms
64 bytes from 192.168.2.10: seq=2 ttl=64 time=0.639 ms
^C
--- 192.168.2.10 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.598/0.646/0.703 ms
ホストマシンにSSHサーバーが動作している場合は、SSH接続も可能です。
davinci:~$ ssh sima-user@192.168.2.10
The authenticity of host '192.168.2.10 (192.168.2.10)' can't be established.
ED25519 key fingerprint is SHA256:ic7JwZC8CdidIP3UaNBmAZ868j5HMm0oBBSc6IOgBNE.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.2.10' (ED25519) to the list of known hosts.
sima-user@192.168.2.10's password:
Welcome to Ubuntu 22.04.3 LTS (GNU/Linux 6.6.1-060601-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
Expanded Security Maintenance for Applications is not enabled.
81 updates can be applied immediately.
8 of these updates are standard security updates.
To see these additional updates run: apt list --upgradable
37 additional security updates can be applied with ESM Apps.
Learn more about enabling ESM Apps service at https://ubuntu.com/esm
Last login: Mon Dec 4 18:29:29 2023
sima-user@sima-user-machine:~$
上記作業が完了したらボードを再起動させます。
キーボードの「Ctrl+A」を押し、続いて「Q」を押してホストマシンとボードの接続を解除します。その後、再度シリアル接続をします。ボードの起動中に「Hit any key to stop autoboot 」メッセージが表示されたら、任意のキーを押して自動ブートを停止します。
以下コマンドを実行してください。
sima:~$ env set forcenetcfg static; saveenv
sima:~$ boot
ボードが再起動するので、設定が反映されることを確認したらオフライン環境での接続完了です。
次の章では、最新バージョンの確認方法および更新手順についてご紹介いたします。