最適化 設計技術 良いモノ を 誰でも楽に つくることができる世界へ 組込み/IoTコンピューティング基盤を⽀える プラットフォーム技術と設計⽅法論 @takasehideki ശ ఉ ϩʔΧϧڥ ηϯγϯά ̇ ̇ ̇ ө૾ Ի Թ ࣪ ѹྗ ৼಈ Edge AI ޯܭࢉɾߋ৽ -PTT 8FJHIU ਪ ੍ޚ ΣΞϥϒϧ σόΠεɾ ϔϧεέΞ ϩϘοτ ϞϏϦςΟ ೖྗ ग़ྗ ϑΟʔυ όοΫ Edge AI Edge AI Edge AI Edge AI Fog AI ू ϩʔΧϧڥ Fog AI Edge AI Edge AI ϩʔΧϧڥ Fog AI Edge AI Edge AI Cloud MEC BEAM クラウド BEAM エッジ BEAM 最適配分アルゴリズム 透過型分散プラットフォーム BEAM システム開発者 デプロイされる コード ① ③ ② ③ ③ ❤ 評価アプリ ❤ 評価アプリ ④ ④ ❤ 評価アプリ ④ ② ② ❤ 評価アプリ ④ ② ② ② ②
in the single machine, 16 us in multiple machines (P2P config.) ~70 Gbps at 8 KB payload ü35x higher than MQTT, 23x than Kafka, 3.3x than DDS • Why?: minimum wire overhead only 5 bytes for delivering messages 11 https://zenoh.io/blog/2023-03- 21-zenoh-vs-mqtt-kafka-dds/ arxiv:2303.09419 とにかくかるい︕
• Pub / Sub (Pull) Sub receives in its own timing • Pub / Store / Get KVS based computation • Get / Reply RPC-like communication node node node node node node node node Pub Sub(callback) Sub(Pull) Pub Pub Get Reply Pull なんでもつかえる︕
to mix.exs • defmodule ZenohElixir.Pub do def main do {:ok, session} = Zenohex.open() {:ok, publisher} = Zenohex.Session.declare_publisher (session, "key/expression") spawn(ZenohElixir.Pub, :publish, [publisher, 0]) end def publish(publisher, num) do msg = "Hello from Elixir!! " <> to_string(num) IO.puts "[pub.ex] " <> msg Zenohex.Publisher.put(publisher, msg) Process.sleep(1000) publish(publisher, num + 1) end end defmodule ZenohElixir.Sub do def main do {:ok, session} = Zenohex.open() {:ok, subscriber} = Zenohex.Session.declare_subscriber (session, "key/expression") spawn(ZenohElixir.Sub, :subscribe, [subscriber]) end def subscribe(subscriber) do case Zenohex.Subscriber.recv_timeout(subscriber) do {:error, :timeout} -> nil {:ok, msg} -> IO.puts "[sub.ex] " <> msg.value end subscribe(subscriber) end end Publisher Subscriber
work is going as collaborative research with SoftBank Corp., and was supported by the commissioned research (04001) by National Institute of Information and Communications Technology (NICT), Japan.