Interface 2018年1月号「高速&リアルタイムPythonの研究」
今月のInterface「高速&リアルタイムPythonの研究」は,今,AI分野でも話題の汎用のプログラミング言語「Python」を高速で使用する方法を解説します.例えば,GPUでPythonを高速化したり,PythonのプログラムをFPGAに実装可能な高速演算回路にしたり,マイコンでPythonを動かしたりします.さらに,Pythonのおすすめライブラリをまとめた「Python便利帳2018」も掲載し,2018年から,Pythonを始めてみる方にピッタリの特集号となっています.
また,2018年の設計・開発向けに,人工知能やIoT向けリアルタイム・データ,高速シリアル通信,無線通信,ラズベリー・パイ,Linuxコマンドなどの情報を詰め込んだ座右の書「Interface コンピュータ手帳2018」が付属します.
Pythonを使う理由として「世界の英知によって,データ解析やシミュレーション,画像処理,ウェブ・サービスなどのライブラリが作られ,メンテナンスされている」,「世界中で使われていて豊富な実績がある」,「人工知能分野ではもはやスタンダード」などが挙げられます.また,GPUやFPGAの高速計算用ボードで使用できたり,リアルタイム制御ができたりと,Pythonで,できることが広がっています.
NVIDIA社のGPU(Graphics Processing Unit)並列コンピューティング・アーキテクチャCUDAに対応する多次元配列ライブラリにCuPyがあります.これはGPUを利用することによって高い演算性能が得られます.Pythonでは定番の数値計算ライブラリNumPyと高い互換性を持ちます.
NumPyの機能は膨大なので,全てが移植されているわけではありませんが,基本的な多次元配列の要素ごとの演算,線形代数の演算やソートといった,CUDAが得意とするたくさんの処理が実装されています.
本稿では,公式リポジトリの例題を元に,CuPyの実力やどんなことができるのかを探ってみます.
Pythonは充実した標準ライブラリの他に,非常に多くのライブラリが公開されています.2017年10月時点で約12万弱ものライブラリがあります.その中から,これだけは知っておいた方がよいというライブラリを80種類紹介します.
著者らは,ディープ・ラーニングの学習・推論を高速化する回路を自動で生成するPythonベースの統合開発環境を開発しています.GUI上でパラメータ(レイヤの種類,層数,層のサイズ),学習方法,学習データなどを指定すると,FPGAに実装可能な高速演算回路を出力します.ハードウェアで動作するため,ラズベリー・パイ3(Raspberry Pi3)で動作する場合と比べて数百倍という圧倒的な速度で推論ができるようになります.NVIDIA社の組み込みGPU カードJetson TX2 と比べても,約10倍高速です.
MicroPythonはマイコンで実行できるように実装されたPython言語の処理系(プログラミング環境)です.Python3系の文法でプログラミングができ,入力したコマンドの結果がすぐに返ってくる,いわゆる対話的実行環境も利用できます.GPIOなどマイコンの入出力機能を活用できるライブラリも備わっています.
一方で,マイコンの限られたメモリやストレージで実行できるように言語仕様やライブラリなどはコンパクトになっています.
第4部ではいま話題の700円無線マイコン・モジュールESP32(Espressif Systems社のESP-WROOM-32)でMicroPythonを使ってみます.
編集部では,毎月,特集をテーマにした「Interfaceオフ会」を開催しています.画像をクリックしてください.Interfaceオフ会のページへ誘います.
■Interface関連リンク先
(1) Interfaceホームページ
(2) Interface(CQ出版)twitter
(3) Interfaceなかの人 twitter
(4) Interface オフ会のページ