Enviar búsqueda
Cargar
2018 08 18_python_ml_restart_embedded_ai
•
0 recomendaciones
•
96 vistas
Yuki Kikuchi
Seguir
組み込み機器(特にARM)への学習済み機械学習モデル実装のポイント
Leer menos
Leer más
Dispositivos y hardware
Denunciar
Compartir
Denunciar
Compartir
1 de 49
Descargar ahora
Descargar para leer sin conexión
Recomendados
2018 08 18_python_ml_restart_embedded_ai
2018 08 18_python_ml_restart_embedded_ai
Yuki Kikuchi
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
実務でGo使い始めました
実務でGo使い始めました
Yuki Kikuchi
recoil vs redux-saga
recoil vs redux-saga
Yuki Kikuchi
25t Press operation with embedded system
25t Press operation with embedded system
Yuki Kikuchi
ZenStateMachine テンプレート
ZenStateMachine テンプレート
Yuki Kikuchi
StateMachineテンプレート
StateMachineテンプレート
Yuki Kikuchi
2018 07 29_embed_ai
2018 07 29_embed_ai
Yuki Kikuchi
Recomendados
2018 08 18_python_ml_restart_embedded_ai
2018 08 18_python_ml_restart_embedded_ai
Yuki Kikuchi
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
実務でGo使い始めました
実務でGo使い始めました
Yuki Kikuchi
recoil vs redux-saga
recoil vs redux-saga
Yuki Kikuchi
25t Press operation with embedded system
25t Press operation with embedded system
Yuki Kikuchi
ZenStateMachine テンプレート
ZenStateMachine テンプレート
Yuki Kikuchi
StateMachineテンプレート
StateMachineテンプレート
Yuki Kikuchi
2018 07 29_embed_ai
2018 07 29_embed_ai
Yuki Kikuchi
組み込みxAI
組み込みxAI
Yuki Kikuchi
組み込みAI LT @ 2018/07/20 上越テックミートアップ
組み込みAI LT @ 2018/07/20 上越テックミートアップ
Yuki Kikuchi
Facility monitor
Facility monitor
Yuki Kikuchi
Facility monitor
Facility monitor
Yuki Kikuchi
LoRAの見通しって?
LoRAの見通しって?
Yuki Kikuchi
アクセシブルな開発のすすめ
アクセシブルな開発のすすめ
Yuki Kikuchi
製造業のIoTやってみよう
製造業のIoTやってみよう
Yuki Kikuchi
LPWA 調べて見た
LPWA 調べて見た
Yuki Kikuchi
Iotlt紹介資料 (新潟 用)
Iotlt紹介資料 (新潟 用)
Yuki Kikuchi
Más contenido relacionado
Más de Yuki Kikuchi
組み込みxAI
組み込みxAI
Yuki Kikuchi
組み込みAI LT @ 2018/07/20 上越テックミートアップ
組み込みAI LT @ 2018/07/20 上越テックミートアップ
Yuki Kikuchi
Facility monitor
Facility monitor
Yuki Kikuchi
Facility monitor
Facility monitor
Yuki Kikuchi
LoRAの見通しって?
LoRAの見通しって?
Yuki Kikuchi
アクセシブルな開発のすすめ
アクセシブルな開発のすすめ
Yuki Kikuchi
製造業のIoTやってみよう
製造業のIoTやってみよう
Yuki Kikuchi
LPWA 調べて見た
LPWA 調べて見た
Yuki Kikuchi
Iotlt紹介資料 (新潟 用)
Iotlt紹介資料 (新潟 用)
Yuki Kikuchi
Más de Yuki Kikuchi
(9)
組み込みxAI
組み込みxAI
組み込みAI LT @ 2018/07/20 上越テックミートアップ
組み込みAI LT @ 2018/07/20 上越テックミートアップ
Facility monitor
Facility monitor
Facility monitor
Facility monitor
LoRAの見通しって?
LoRAの見通しって?
アクセシブルな開発のすすめ
アクセシブルな開発のすすめ
製造業のIoTやってみよう
製造業のIoTやってみよう
LPWA 調べて見た
LPWA 調べて見た
Iotlt紹介資料 (新潟 用)
Iotlt紹介資料 (新潟 用)
2018 08 18_python_ml_restart_embedded_ai
1.
組み込みAI 2018/8/18 @yukilab222 菊地
2.
GPUの無いような 組み込み機器でAIなんか(ベ ンダに頼まないと)無理
3.
void main( void
){ q15_t input[7]; q15 result[2]; float32_t out[2]; while(1){ …… input[0] = x1; input[1] = x2; arm_nn_mult_q15(input, input, input+2, 15, 2); arm_nn_mult_q15(input, input+1, input+4, 15, 1); input[5] = arm_sin_q15(x1); input[6] = arm_sin_q15(x2); predict(input, result); arm_q15_to_float(result, out, 2); printf( A: %f B: %f , out[0], out[1]); } } void predict(q15_t *input_vector, q15_t *ret){ q15_t out_l1[6], out_l2[2]; arm_fully_connected_q15(input_vector, weight_l1, 6, 0, 15, bias_l1, out_l1, NULL); arm_nn_activations_direct_q15(out_l1, 6, 1, ARM_TANH); arm_fully_connected_q15(out_l1, weight_l2, 2, 0, 15, bias_l2, out_l2, NULL); arm_nn_activations_direct_q15(out_l2, 2, 1, ARM_TANH); arm_softmax_q15(out_l2, 2, ret); } Q15: 16ビット符号付固定小数点 - 1から (1 - 2-15)まで表現できる Q12だと -8から(8 - 2-12)まで
4.
自己紹介 • IoTフルスタックフリーランス (2012
- ) • AIの勉強中・業務応用開発は現在進行形 • IoTLT新潟 • Prototype Cafe - シェアオフィス兼open IoT作業所運営 • 海で遊ぶのが好きで、東京から新潟へ移住。仕事は変わらず • LINE BOOT AWARDS 2018支援中
5.
前回まで
6.
Python + 機械学習
所感 (私には) 言ってることがよくわからないし、 役に立つ様な気がしない
7.
C言語+機械学習 所感 (私には) なぜか、ピンとこなくて積ん読
8.
入門 機械学習による異常検知 (私には) なぜか、ピンとこなくて積ん読
9.
全く前に進めず (_ _);;
10.
変化のきっかけ
11.
本棚に現れた神
12.
たとえばこれくらいのハード ウェアでもできることもある ARM Cortex-M4F 96MHz
FPU付き $20 GPUの乗っている携帯は組み込み屋にとってエッジ(いぢれる)ではない・・ (遠い目//)
13.
(多分典型的な)AIな人は絵でわかる。が、
14.
keras/TensorFlow/Pandas/Python/… bit, register, asm,
C,時々ライブ ラリ。 気になるのは実行速度とメモリ容量 1bitの深みをきにしないData Scientist (disってるわけではない) 1bitの意味がものすごく重要で知らなけれならない組み込み人
15.
キーワード 機械学習の説明 1bitに到るまでの実装の説 明 python 機械学習 してる X C言語 機械学習 してる
X ギャップ ギャップ ギャップ C言語 組み込み ここがなかった! 必要!
16.
mbed動くようなMPUでも NeuralNetwork 動かせるん じゃん!
17.
あまりに感動したので著者 (東京)に会ってきました
18.
そして
19.
ARM Trillium Project
20.
ARM Project Trillium •
2018/4、ARMによる人工知能系のプロジェクト発表。 • 数10MHz 以上で動くARM MPU で NNが使える。 • https://community.arm.com/processors/b/blog/ posts/ai-project-trillium? _ga=2.21501691.1996547401.1532581007-11277 50945.1528858773 展示会でみただろうに、というツッコミは想定範囲内。いいえ、私は見てません。
21.
これでも使える。
22.
• 専用のチップソリューション • 汎用のチップソリューション(ライブラリ
https:// github.com/ARM-software/ComputeLibrary など) https://www.arm.com/solutions/artificial-intelligence
23.
ARM NN video •
http://connect.linaro.org/resource/hkg18/ hkg18-312/
24.
!!!
25.
ここまでのまとめ • 効果なGPUをつかわずとも、小型・省電力・低価格デバ イスで実装することができる。携帯型のデバイスで処理が 可能になる。
26.
学習済みモデルを組み 込み機器に適用する
27.
(普通の)教師あり学習プロジェクト 教師データ (画像など情報量多) AIモデル (例えばkerasを使っ たNN構造の定義) CPU/GPU 学習させる 学習済みモデル (hd5ファイル等) (kerasなどで)読 み込んで予測などに 使う CPU/GPU ( 個 人 の 所 感 で す ) 学習は時間がかかって、計算 量もすごく多くて重たい 時間はそれほどでもないが、 計算量はあってやっぱり重たい
28.
組み込みへの教師あり機械学習適用例 (制約:CPU弱、クロック遅い。FPUやGPUがない場合もある。ROMもRAM も少なめ) 教師データ (信号など情報量少) AIモデル (例えばkerasを使っ たNN構造の定義) CPU/GPU 学習させる 学習済みモデル (hd5ファイル等) (kerasなどの)モ デルを参照して、C言 語などでモデル作っ て実行 MPU/FPU学習済みモデル C言語で扱える 様に変換 モデル(推論計算式) ROM 学習済みモデル (重み・バイアス値) ROMでいいかも モデルの使う変数 RAM
29.
MPU/DSP (GPUないとき) • GPUのない組み込みMPUでも、DSP
やFPU積んでいれば それを利用する。(しないと計算が数倍-10倍以上遅い) • MPUのベンダがDSP/FPUを利用するライブラリを提供し ていれば使う。
30.
そこそこ高機能なMPU といえばR社を除くとARM
31.
ARM CMSIS-DSP/NN ライブラリ •
https://github.com/ARM-software/CMSIS_5 あたり を見るといいと思います。 • CPUによる実装も書いてあります。FPUがある場合はFPU を使った高速な演算をしてくれます。 •
32.
組み込み機器内のモデル • (C言語で書くとして) 組み込み機器の中にモデル(推定部分のみ)を作 ります。 • 行列の乗算・加算です。CPUでもできますが、FPUやGPUがあれば高速。 それらを効率的に支えるライブラリがあればベスト •
何をどう乗算して、加算するかはモデルのソースコード(Keras,TensorFlow のソース)や参考資料(ARM CMSIS, ComputeLibraryのソースコード・ サンプル・document)をみないとわからない
33.
入力 重み(kernel) レイヤ出力 h5ファイルから抜き出した重み行列中の並びは縦です! GRUを使う場合は、 kerasを使った場合update ->
reset->output(new) の順に配列が続きます。 重み(kernel) レイヤ出力 重み(kernel) レイヤ出力
34.
AI/機械学習を組み込 む時の注意ポイント
35.
開発 • できるだけ(ARMなどの)ライブラリを使い石を効率的に使う。 • CMSIS-5サポートしてなくても大丈夫。多少工夫すればソースコードの一部 だけでも利用できるようになります。 •
ARM CMSIS-NNのよい説明資料はありません。(たぶん)関数レベルで良い ですがソースコードを読みこなす必要があります。 • ARM FPU/DSPのアセンブラ命令理解必須 • Kerasの奥底のpythonコード読む必要に狩られると思います。読む際に機械 学習の計算についての知識が必要です。 • テスト駆動開発をお勧めします。ARMのライブラリコードがまちがっている 場合がありました。 • 開発(くりかえし)のプロセスについてPM認識必要 • 目標値はあっても良いが、100点を目指さないこと。 • 古典的な計算手法をあれこれ試し、できないばあいにのみ機械学習を使うの が良いかもしれません。(学習コストが高いため)
36.
メモリ使用量と計算速度 • メモリたくさん必要っていうけど? =>
ROM? RAM? なんの メモリかによります。ざっくりいってニューロンが少なければ 少なくなります。 • C言語でやるよりDSP/FPU(あればGPU)使えば非常に早くなり ます。 • 各社より出ている計算ライブラリを使用すると高速です。(バ グある場合もあり)
37.
デバッグ手法 • Keras/TensorFlowの組み合わせでは値のトレースができま せん。同等の計算をするコードをpythonなどで別に実装し て、組み込み内の変数の動きと比較することで、デバッグで きるようになります。 • ARMのCMSIS-NNには
DSP/FPUあり版(cortex M4など) となし版(corex M0, M3など)の双方のコードが含まれて います。 DSPのコードを読むのは大変なのでDSPなし版(== pure C)実装をみて理解/動作させるとデバッグが容易です。 • DSP/FPUを利用する場合、デバッグや実装に際しARMのア センブラについての知識を深める必要があります。
38.
プロジェクトの特性 • 繰り返し開発:メモリと計算速度の制限があり、現実的に ほしい速度ででなんでもできるわけではありません。メモ リに入らなかったり、遅すぎる場合はモデルや入力feature の見直しから必要になります。 このため、繰り返し繰り返 し実装・評価するスタイルの開発日程を組む必要がありま す。 •
データ準備が大切:トレーニングに必要な時間やデータを 準備する時間も馬鹿になりません。 • デバッグ後も、PCで評価した結果が実機上で実現できない 場合、トレーニングデータが適切か疑う必要があります。
39.
まとめ • 使ってるMPUじゃとってもAI処理なんて無理、と思って ましたができます! • 一人でできない(ですよね、大概)場合、AIのエンジニア と組み込みハード・ソフトエンジニアがすり寄る必要あり •
年末から来年にかけてエッジAIチップが出て安くなってき たらそれを使えば良いだけになり、この実装は無駄にな る・・? MPU / FPGA / GPU /他HWの戦いの年です。
40.
参考&謝辞 • インターフェース誌 2018/6月号 辰岡さんの記事 •
辰岡さん(東京) • Blincamの Sumanthさん (新潟市 Prototype Cafeにいま す) • Python プロフェッショナルプログラミング 第3版 • ARMのAI戦略 : http://eetimes.jp/ee/articles/1803/23/ news070_2.html
41.
42.
LINE BOOT AWARDS
2018 @LINE_DEV @linebootawards https://www.line-community.me/awards/
43.
44.
LINEからclovaを含むAPI 協賛企業からもAPI https://www.line-community.me/awards/apis
45.
個人/法人や年齢、居住国など問わず参加が可能 Messaging APIを使用したLINEアカウント and/or Clova
Extentions Kitを使用したClova Skillを組み込ん だ実装サービスを対象とし、 審査時点で各規約を満たした 上で公開されていることが条件
46.
評価軸 LOVED BY USERS ユーザーに継続的かつ日常的に愛されるサービスであること。その サービスを通じて、LINEやClova自体がよりユーザーに愛される存 在になるようなサービスであること。 LINE
AS A PLATFORM 既存サービスの拡張・転用だけではなく、LINEやClovaの特徴やユー ザー接点を活かし、双方向かつ能動的な新たなコミュニケーション を生み出すサービスであること。 QUALITY 様々なAPIやサービス等を組み合わせ、単純な 機能 ではなく サー ビス と呼べる完成度があり、ビジョンだけではなく、サービス実現 までの道筋が見えること。
47.
関連イベント https://linedev.connpass.com/ こんなとこにいていいのか(汗)
48.
• IoTLT新潟(というか・・私?)は、企画のためのアイディ アソンやAPIハンズオンを各地で催す予定です。 関連イベント https://linedev.connpass.com/
49.
ありがとうございました @yukilab222 8/25 LINE APIハンズオン 9月に#linebootawardsハッカソン予定
Descargar ahora