2018年の振り返り
2018年を総括すると、次の仕事先であるケニアに移行する過渡期だったと思う。
メインの仕事である慶応での研究では、在籍していた3年半の集大成となるPynquinoを提案し、企業との共同研究を通してProof of conceptとなる3Dプリンタのコントローラを開発した。
- 1個から個別製造できる複合装置を開発、筐体の3Dプリントから基板実装まで (2/2) FPGAをArduinoのように使いやすく
http://monoist.atmarkit.co.jp/mn/articles/1808/31/news074_2.html - 多様な現場の要求に応じて 3Dプリンタを柔軟に拡張できる制御システムを開発
https://www.sfc.keio.ac.jp/news/013060.html
Pynquinoは深層学習、画像処理が引き続き発展していくこれから数年で、ロボティクスとの融合という観点から重要な技術になるのではと期待している。
ジョモ・ケニヤッタ農工大学におけるJICAプロジェクトでの技術指導では、2月と9月にものづくりセンターでの指導を行い、大学院生の講義も担当した。
- Digital Fabrication Technology Training at iPIC
http://jkuat.ac.ke/projects/africa-ai-japan/digital-fabrication-technology-training-ipic/ - JKUAT Mechatronic Engineering students taught by Adjunct Associate Professor
http://jkuat.ac.ke/projects/africa-ai-japan/jkuat-mechatronic-engineering-students-taught-by-adjunct-associate-professor
学生や教員の好意的な反応を見たことで、自分が必要とされていることを実感することができ、赴任に向けての自信となった。
ルワンダでのJICAプロジェクトの仕事は、なかなかに忘れられない経験だった。
カウンターパートの要求に臨機応変に応えていく必要があるなかで、こちらの思惑と異なる事態に直面し、開発支援のプロジェクトの難しさを初めて実感した体験となった。この問題はこれからも(ケニアに行っても)長く向き合っていくものだと思う。
ファブラボ会議であるFAN4、FAB14も参加することができ、新しい出会いもあった。このイベントに参加するといつも感じるのは、自分がコミットしているアフリカの活動と、表でやっている研究の仕事の乖離から生じるもどかしさである。慶応での研究は予算面も含めて自由にできるという意味で恵まれた環境ではあったが、究極的に自分がやろうとしているのはアフリカという地域に根ざした活動である。来年からいよいよアフリカに根ざした生活が始まり、ここ数年感じていた心境に区切りをつけられたのは、良かったと思う。
プライベートでは、家族でヨーロッパ旅行をすることができ、思い出に残る良い旅となった。
ダカールでドローン購入
ダカールでドローンを購入できる店を探し中
Macandmore
https://web.facebook.com/macandmoresn/
DJI mavic proが850,000フラン(17万円)
Dakariumで譲ってくれる人が見つかった。
断水?とうっかりミス
朝起きるとトイレの水が流れない。
ダカールでは断水もあると聞いていたので、早速断水かと思い、あらかじめ10Lのペットボトルに備蓄していた水をタンクに補充する。
すると、手を滑らせてタンクのふたを落としてしまい、ほうろうの蓋の左端が欠けてしまった。
次の日に水道修理工に来てもらうと、接着剤で修理するとのことだった。他にも注水部の継ぎ手とフラッシュバルブのプラスチック部分の修理も必要で、修理費は合計18,000CFAだった。
今日の格言
アフリカではものはすぐ壊れるが、すぐ治る。そしてまた壊れる。
セネガルの保育園
今日はワッカム周辺にある保育園の下見に行ってきた。
行ったのは、
1) Square Des Tout-Petits De Ouakamの正面の保育園
2) モスケ・シテ・アソンブレの近くにある保育園 ベテルアカデミー
両方ともわりとローカルだが、bilingueをうたっており、フランス語と英語のレッスンがあるとのこと。
1) 民家を改修して作ったような感じのこじんまりとした保育園。園長先生は素敵な女性だった。
登録料 35,000CFA / 子供1人あたり
1歳児クラス保育料 45,000CFA(食事付き)
3歳児クラス保育料(2.5歳はこっち)45,000CFA(食事付き)
時間は7時から17:45くらいまで。食事は園内で調理している。
1才児は祝日でも預けられるが、2,3歳児は別料金となる。
2) 学校と保育園を同時に提供している(横浜の中華学院/中華保育園みたいな感じか)
時間は8h~8h30から13hまで。ランチを持参するか購入(毎月15,000CFA)することで、16hまで見てくれる(1歳児は食事は持参したほうがベターとのこと)。さらに延長料金を払って預けることもできる。
英語の専属の先生がいた。英語が通じるので奥さん的にはこっちのほうが安心かも。連絡帳で日々のやり取りを行う。
クリスマス休暇は一週間程度。オプション料金で預けることが可能。
登録料 25,000CFA / 子供1人あたり
1歳児クラス保育料 40,000CFA
3歳児クラス保育料(2.5歳は希望すればこっちでも良いらしい)30,000CFA
フランス語は話せる?それとも英語だけ?と聞かれた。日本語だけですと答えると、わあ、と笑っていた。
XDF参加まとめ
結論
- XilinxがPYNQにかける期待は高く、PYNQプロジェクトが近い将来に消滅する可能性は低いことを確認した
- CEOのキーノートにおいて、Xilinxが社の方針として機械学習アクセラレータの市場でトップを狙っており、そのための一つの鍵がPythonおよびJupyterとの統合にあることが語られていた。RFSoC及びUltra96といった新型ボードでもPYNQが使えること、さらにxDNNやFINNといったMLアクセラレータの実行環境としてPYNQが想定されていることからも、その意向が伺える。
- 現時点でXilinx自体が主体となり、(Pynquinoプロジェクトが主眼とする)ArduinoとPYNQの統合を行う予定は無いことを、PYNQ開発者のXilinx社員から確認した
- 今後しばらくはKJの3Dプリンタをターゲットとした現行の路線を維持し、進めていく
- K社では実装しないかもしれないが、画像処理、機械学習アプリケーションを今後開拓していくことでArduinoとの融合の意味がでてくる。この点については、まだあまり目をつけられていないはず(少なくともXilinx本家はノーマーク)。
- PYNQ開発者に対してPynquinoプロジェクトについて紹介できたことに加えて、PYNQを使って研究をしている研究者と知り合えたことも収穫だった。
その他メモ
1日目
CTOのスピーチ
- Xilinxの次の仕掛けはACAP(Adaptable Computing Accelerator Platform)
- ZYNQにプログラマブルなベクトル計算ユニットを足したEverestというアーキテクチャを開発した→翌日の発表ではVERSALという製品名であることが判明
- 別の記事によれば1500人のエンジニアと1000億円の予算を投入し、開発に4年かかったとのこと
- 過去20年で最大の発明
- 明日CEOのキーノートで詳細が話される
PYNQ
- Xilinx Research Lab全体としてPYNQを主要なプロダクトと位置づけている感があった
- 近い将来にプロジェクトをクローズすることはほぼ無いと思われる
- 特に機械学習アクセラレータ全般について、PYNQでの実行を前提としている
- Jupyter notebookからJupyter lab IDEへの移行を進めている
- PYNQ開発者のYunさんと話せた。以下話したこと:
- ➢PYNQをメインに担当する開発者は現在3人
- ➢Arduino APIの移植はXilinxのPYNQチームとしては特に考えていない →Linux上でArduino APIを動かせば?と言われたが、OSの上だとリアルタイム処理が難しいからダメと返すと、MicroPythonを使えば割込のAPIが使えるよと言われた。しかしMicroPythonではJupyterが動かないから、結局MicroBlazeを使うしかなさそう。
- ➢Linuxとリアルタイム処理を連動させるために、たとえばCortex A-53コアの一部をハイパーバイザ経由やOpenAMPを用いる方法は考えているか? →Cortex A_53のコアを使う方法(hypervisor, openamp)はJupyter notebookで実現するのが難しく、今の所考えていない。Cortex R-5をJupyterから使うのは可能だと思うとのこと。 →Cortex-M1とCortex-M3ソフトコアをXilinxのFPGAに無料で解放することをArmがXDFにおいて発表した。MicroBlazeに加えてCortex-Mを使うこともPYNQのオプションになりそう。デバッグはKeil MDKなのか、XilinxSDKでもデバッグできるのかは、気になるところ。
- ➢Dynamic Partial ReconfigurationはPYNQでサポートするのか? →Vivado v2018.3からDPRが入ったので、近々対応すると思う。しかし奇数番号バージョンは安定版でないので、年末にリリース予定のv2018.4が出るタイミングでの対応になると思われる。
- ➢PYNQ APIは一年前のv2.1を使っているというと、古いの使ってるなと驚いていた
- ➢PYNQワークショップで、PYNQのPL部分(FPGA fabric)を使っている人はいるかという質問に誰も挙手せず、プレゼンターもこれが現実だ、と言っていた。
- ➢画像処理HLSブロックを組み込む方法についての議論 →投げた質問:PYNQのHDMIビデオパイプラインにAXI Streamに対応したHLS IPコアを挿入した場合、どうやってPythonからIPを起動すればよいのか?
- 答1. インプットがAXI Streamのみであれば、明示的に起動する必要はない。というか仕様としてIPコアは働き続けるのみであり、止めたり再起動といった制御を行うことはできない。
- 答2. インプットとしてAXI Liteも持っている場合、MMIOとして起動したり、パラメータを設定することができる。
- 答3. 画像処理HLSブロックを作る場合のYunさんのおすすめは、SDxを使って画像処理を行うStandaloneの回路を一度合成し、そこから一部のIPブロックを切り離してVivado上でPYNQのベースシステムに読み込み、再合成すること。おそらくHLSの煩雑なプラグマ設定や最適化を自動化してくれるものと思われる(あと、画像処理アクセラレータxfopencvが使えるのも利点)。SDxを使った画像処理回路をPYNQからPythonで起動する場合は、回路情報ビットストリームをPYNQ上でロードした後、SDxが生成したLinux共有オブジェクト(ダイナミックライブラリ)をCMAで読み込むことが必要。
企業ブース
- Lynx Secure: リアルタイムOS(LynxOS)とLinux共存のためのハイパーバイザ。メインの顧客は自動車業界で特にBOSCH。あと軍用ヘリコプターのローター制御。軍用ヘリの制御では、Power PC、ARM、x86の上で同時にLynxハイパーバイザを起動して同じコードを動かし、リアルタイムで全ての演算値が一致したときに正常に計算が終了したと判断しているらしい(冗長化)。
- ENEA: Liynx Secureと同じくハイパーバイザを介してRealtime OSとLinuxの共存を行う。ENEA LinuxというLinuxディストリビューションを提供している。LinuxとリアルタイムOSとの共存には、Cortex A-53の一部のコアを使う方法と、RPU(コプロセッサCortex R-5)を使う方法があるが、ENEAではCortex A-53を使う方法がメイン。理由を尋ねたら、Cortex R-5を使いたいという顧客がほとんどいないから、とのこと。
Xilinx University Programのポスター発表
- https://www.xilinx.com/support/university/XUP-XDF.html
- BYUによる、Demand-Driven FPGA Configurations Using PR, Linux, and PYNQ の話を聞いた。PYNQ上でのPartial Reconfigurationの話。実装はGitHubにあり、次のリリースでPYNQ本体にマージされるとのこと。教授のBradさんに教えてもらったところによれば、VivadoにはPR Flow?という機能があり、Out-of-contextでブロックダイアグラムをビルドして、PRリージョンを合成することができるらしい。沖縄のFPLには行くの?と言われた。
2日目
CEOキーノート
- XilinxはAPSoC(ZYNQ-7000)で革命を起こし、その後MPSoC(ZYNQ UltraScale+)、RFSoCを市場に投入してきた。そして今回お披露目するのがACAP(という概念)であり、第一号となる製品がVERSALである。(=従来Everestというコードネームで呼ばれていたもの)
- VERSALはマシンラーニングやデータセンターといった新しい顧客のニーズに応えるために開発されたSoCであり、スカラーエンジン、アダプタブルエンジン、インテリジェントエンジンから構成される。7nmプロセステクノロジー。
- Scalar Engine: Arm Cortex-A72デュアルコアCPU、Arm Cortex-R5リアルタイムプロセッサを搭載。従来の(煩雑な)ブートシーケンスと異なり、Platform Management Controllerという仕組みによってブートシーケンスも変更されたみたい。
- Adaptable Engine: 従来のZYNQのPLとの違いがよくわからなかったが、Custom memory hierrarchyというのが一つのキーワードだった。シストリックアレイを使って計算する図が何回も出ていたが、あれは勝手にユーザでやってくださいという単なる一例なのか、IPコアを含めたフレームワークを提供しているのかは不明。
- Intelligent Engine: DSPエンジンとAIエンジンから構成される。AIエンジンの中身は、ベクトルプロセッサアレイ。開発環境がVivadoにマージされるのかなどの詳細は不明。
- メモリコントローラはDDR4-3200、LPDDR4-4266、HBM(High bandwidth memory)
- ALVEOというデータセンター向けのHWアクセラレーター(PCIeカード)も製品発表し、会場からはWWDCのような歓声が上がっていた(個人的には明らかにVERSALの方がdisruptiveだったが、現存する顧客ニーズとしてはALVEOの方が大きいということだと思う)
プレゼン聴講
- Fordの研究所の自動運転チームの研究者。画像処理にZYNQ UltraScale+とOpenCVアクセラレーションを用いて高速化を行った話。ZYNQでSDxを使ったら高速化できてハッピーだった以上の話がなくてビビった。(あるいは知見があっても教えてくれないのか)
- NGCodecのサーバーサイドビデオエンコーディングの話。AVC,HEVC,VP9、AV1で1080p60fpsの達成が目標。Virtex UltraScale+9(VU9P)を利用。高位合成を使用。Verification engineerの人員を減らせるのが高位合成の一つのメリット。ただしHLSは学習コストが高く、ある程度慣れるまではRTLで設計したほうが早い。あと、依然として動作周波数をギリギリまで上げるなどの観点ではRTLに理がある。
- SDAccelの話が出ていたが(あと、結構SDAccelのセッションが開かれていた)、いまいち利点がわからなかった
- Xilinx社員のVU9Pプラットフォーム上でのPartial Reconfigurationの話。フロアプランをどう効率化するか、という話に聞こえた
- SLR(Super Logic Region)という概念がキーワードとして何回も出てきたが(Timing ClosureのセッションでもSLRの議論がよく出てきていた)、よく理解していないので、あとでキャッチアップする。
- Xilinx社員のTiming Closureの話。次のVivadoのバージョンからインクリメンタルコンパイル(論理合成・インプリの両方)が入るらしい。Vivadoのtclオプション(と思われる設定)を解説していた。
ハンズオンのワークショップ
- Xilinxが買収した中国のベンチャー企業DeePhiが主催するDNNアクセラレーションのハンズオン。まずDPUカーネル上で.elfを作り、CPU上での.elfと合成してハイブリッド.elfを作成して実行する。Pluneからの再訓練によって精度を高められることを体感した。デモとしてはObject detection、Image classification、Face detectionなど。DNNとしてはResnetを使っていた気がする。
- Ultra96上でSDSoCを用いてOpenCVのハードウェアアクセラレーションを行うハンズオン。強力なビルドサーバを用意してくれるのかと思ったら、時間がかかるからビルドせずにprebuiltを使ってくださいと言われて、Xilinxでもやっぱりそうなのかと納得した。Ultra96はrevisionにも対応している。
- Xilinxが主催した、Ultra96上でPYNQを実行するハンズオン。Ultra96はrevisionにもPYNQにも対応しているので、今後標準ボードとして君臨すると思われる。
- Xilinx主催のUltra96+SDx+Deep learningのハンズオン。Denseboxでの顔認識と、YOLOを用いた物体検出。DenseboxはOpenCVのfeatureを用いた顔認識と違って、訓練しだいで別の識別機にも使える、とのこと。