Upgrade to Pro — share decks privately, control downloads, hide ads and more …

【IoT-Tech Meetup #1】時系列データをChatGPTで読み解いてみる

【IoT-Tech Meetup #1】時系列データをChatGPTで読み解いてみる

2023年5月30日開催『IoT-Tech Meetup 第1回【ChatGPT×IoT】』で、ソラコム内田(jet)が発表した資料です。

SORACOM

May 30, 2023
Tweet

More Decks by SORACOM

Other Decks in Technology

Transcript

  1. 自己紹介 • 内田 学 / Manabu Uchida • 株式会社ソラコム •

    ソリューションアーキテクト • Cloud / SRE / Developer • Call me jet • comes from the Japanese rock band Blanky Jet City. • I ❤️ BJC!! @uchimanajet7
  2. 前提と目的 前提 • IoT デバイスは 大量の時系列データ を生成します。このデータの 多くはテキスト形式であり、その解析と理解は重要な課題となっ ています。 目的

    • ChatGPT を利用して、時系列データから 価値ある情報を手軽に 生成する ことにチェレンジしてみました。 • これにより、時系列データへの理解と ChatGPT 利用ノウハウの 蓄積が期待できます。 • さらに、API を活用して他のシステムと連携することで、データ をより効果的に活用し、システム全体の機能性を向上させること が期待できます。
  3. 確認 • この資料やデモは、作成時点の情報に基づいています。 • 新たなリリースや変更が行われている可能性があります。 • これらの変更があった場合には、情報が古かったり、デモの動 作に影響を与える可能性があります。 • ChatGPT

    についての疑問点の解消やノウハウの共有、そして 楽しいディスカッションを促進 するために作成しています。 • もちろん資料作成に ChatGPT を利用しています。 • 資料は読み物としても使えるようにしているため、話す内容は ポイント を中心に説明をしていきます。
  4. LLM と ChatGPT LLM (Large Language Model) GTP-3 GTP-4 ChatGPT

    GPT-3 based ChatGPT GPT-4 based GTP-3.5 ChatGPT GPT-3.5 based
  5. ChatGPT API 利用時の考慮ポイント 1. トークン制限 • API リクエストは、入力と出力の合計で利用可能なトークン数に制限があります。こ れは、非常に長いテキストを処理することができないことを意味します。例えば、数 千語の長い文章を一度に生成することはできません。

    2. データのプライバシー • API を通じて送信されるすべてのデータは、OpenAI のプライバシーポリシーに従いま す。したがって、機密情報や個人を特定可能な情報を含むテキストを生成することは 避けるべきです。 3. リアルタイム情報 • ChatGPT はそのままではリアルタイムの情報を取得する能力がありませが、現時点で は有償版の PLUS においては、プラグインを使用してWebサイトの検索や情報取得が できます。
  6. ChatGPT API 利用時の考慮ポイント 4. 知識の更新 • ChatGPT の知識はある時点の訓練データに基づいており、訓練データの収集時点以降 の情報については知識を持っていません。最新の情報を利用する場合は、ユーザー自 身で

    プラグインによるインプット や、必要な情報での Fine-tuning が必要です。 5. 情報の正確性 • ChatGPT は時々、正確性が不明な情報を生成する可能性があります。これは、モデル が訓練データから学習したパターンに基づいてテキストを生成ためです。一方で、生 成した内容の理由や経緯を一緒に出力 できるので、そこを含めて内容を確認すること で、検証の助けとなります。 6. 数値計算が苦手 • ChatGPT は数値計算を行う能力がありますが、複雑な計算や特定の種類の計算では、 計算を上手く行えないことがあります。
  7. IoT と 時系列データ • IoT のセンサーデータは時間の経過とともに変化す る値を記録するものが多いため、時系列データとな ります。 • この時系列データを分析することで、センサーが測

    定する物理的な状態のパターンやトレンドを確認で きます。 • 特定の状況やイベントや状態に基づいて収集される 場合もあるため、必ずしも 連続した時系列データ であるとは限りません。
  8. 時系列データのメリット 予測分析 • 例えば、過去の気温データを分析することで、未来の気 温を 予測できます。これは、エネルギー需要の予測や農 作物の収穫予測などに利用できます。 状態モニタリング • 例えば、機器の稼働状態を時系列データとして追跡する

    ことで、異常なパターン(例えば、予期しない温度上昇 や振動)を早期に検出し、故障を予防できます。 パフォーマンス評価 • 例えば、過去の売上データを分析することで、販売戦略 の効果を評価したり、将来の売上目標を設定できます。
  9. 時系列データの考慮ポイント データ量 • 例えば、1 秒ごとにデータを送信するセンサーが 1,000 台ある場合、24 時間で 86,400,000 のデータポ

    イントが生成されます。このような大量のデータを効 率的に処理し、保存するためには、適切なデータベー スや分析ツールが必要です。 データの品質 • 例えば、センサーの故障や通信の中断により、一部のデー タが欠損している場合があります。このような欠損値は、 時系列分析の精度に影響を与える可能性があります。
  10. 時系列データの分析障壁 1. 欠損値 • 例えば、稼働時間を監視する IoT デバイスがあり、そのデバイスが一時的に故障した場合、そ の期間のデータが欠損します。この欠損値をどのように補完するか(前後の値で補間する、平 均値で補間するなど)は、分析の結果に大きな影響を与えます。 2.

    季節性とトレンド • 例えば、エネルギー消費量のデータは、季節(夏はエアコン、冬は暖房など)や時間帯(昼間 は電力消費が高いなど)によって変動する傾向があります。これらのパターンを認識し、モデ ルに組み込むことは重要です。 3. ノイズと外れ値 • 例えば、温度センサーのデータには、センサーの精度や環境の微小な変動によるノイズが含ま れる可能性があります。このノイズを適切にフィルタリングすることで、真の温度のトレンド をより正確に把握できます。
  11. 時系列データの分析障壁 4. 大量のデータ • IoT デバイスは大量のデータを生成します。例えば、1 秒ごとにデータを送信するセンサーが 1,000 台あると、1 日で

    86,400,000 のデータポイントが生成されます。このような大量のデー タを効率的に処理し、保存するためには、適切なデータベースや分析ツールが必要です。 5. 時間と共にパターンが変わる • 例えば、日々の気温を記録しているとします。季節によって気温は大きく変化し夏は暑く、冬 は寒くなります。このように時間の経過とともにデータの傾向が変わる、そのパターンや動き が一定ではなく、時間と共に変化するという性質を持っています。 障壁の突破には 適切な「ツール」と「スキル」が必要です
  12. 時系列データ と ChatGPT • ChatGPT や他の大規模な言語モデル(LLM)は、自然 言語の理解と生成に優れています。 • 時系列データを分析する場合、特定の障壁を直接的に解 決する能力は限定的です。

    • 使い方を工夫することで間接的にサポートすることが可 能です。 • 時系列データの前処理やモデリングに直接的に対処する 能力は限定的であり、これらのタスクは他の専門的な ツールや手法を使用することが必要です。
  13. 時系列データ と ChatGPT 時系列データ アラート 予測モデル クエリ ChatGPT データの 解釈と説明

    異常検出の アラート 自然言語 クエリ 利用者 ChatGPT を解説・翻訳の インターフェースとして利用する
  14. データの解釈と説明 • LLM や ChatGPT は、時系列データの分析結果を解 釈し、人間が理解しやすい形で説明できます。特に 複雑な分析結果を非専門家に伝える際に有用です。 • 例えば、ある企業が時系列データを用いて売上予測

    モデルを作成したとします。このモデルの出力やそ の意味を理解するのは難しいかもしれません。ここ で ChatGPT を使用すると、モデルの出力を人間が 理解しやすい言葉で説明し、予測の背後にある主要 な要因を明らかにできるかもしれません。
  15. 異常検出のアラート • LLM や ChatGPTは、異常検出アルゴリズムからの アラートを人間が理解しやすい形で生成できます。 これにより、異常の詳細とその可能な影響を迅速に 理解できます。 • 例えば、機器の稼働状態を監視する

    IoT デバイスが あり、異常検出アルゴリズムが異常なパターンを検 出したとします。ChatGPT は、この異常の詳細と その可能な影響を説明するアラートメッセージを生 成できます。
  16. 自然言語クエリ • LLM や ChatGPT は、自然言語クエリを解析し、そ れに基づいて時系列データから特定の情報を抽出し ます。これにより、専門的なクエリ言語を学ぶこと なく、ユーザーがデータに対する質問を行えます。 •

    例えば、あるユーザーが「昨日の平均気温は何度 だった?」という質問をしたとします。ChatGPT は、この自然言語クエリを解析し、適切なデータ ベースから必要な情報を抽出するためのクエリを生 成することができます。
  17. API を使ってチャットする GPS マルチユニット SORACOM Edition IoT SIM SORACOM プラットフォーム

    ユーザー (*1)Google, Public domain, ウィキメディア・コモンズ経由で API SORACOM Harvest 温度 湿度 Unified Endpoint Colaboratory (*1) (*2) (*2)https://slack.com/intl/ja-jp/media-kit ChatGPT (GPT-3.5 turbo) make (iPaaS) (*3)https://www.make.com/en/integromat-evolves-to-make (*3)
  18. API を使ってチャットする GPS マルチユニット SORACOM Edition IoT SIM SORACOM プラットフォーム

    ユーザー (*1)Google, Public domain, ウィキメディア・コモンズ経由で API SORACOM Harvest 温度 湿度 Unified Endpoint Colaboratory (*1) (*2) (*2)https://slack.com/intl/ja-jp/media-kit ChatGPT (GPT-3.5 turbo) make (iPaaS) (*3)https://www.make.com/en/integromat-evolves-to-make (*3)
  19. API を使ってチャットする GPS マルチユニット SORACOM Edition IoT SIM SORACOM プラットフォーム

    ユーザー (*1)Google, Public domain, ウィキメディア・コモンズ経由で API SORACOM Harvest 温度 湿度 Unified Endpoint Colaboratory (*1) (*2) (*2)https://slack.com/intl/ja-jp/media-kit ChatGPT (GPT-3.5 turbo) make (iPaaS) (*3)https://www.make.com/en/integromat-evolves-to-make (*3)
  20. API を使ってチャットする • まずは Colaboratory (以下、 Colab)を使って、 チャットができるところまでを確認します。 • Python

    のライブラリは、OpenAI のAPIリファレンスページ にも紹介がある openai/openai-python を利用します。 • 利用するモデルは GPT-3.5 系のモデル「gpt-3.5-turbo」で す。 • 単純にチャットが行えることだけでなく、API を利用する 際にポイントとなる temperature と messages/role/system について動作を確認します。
  21. API を使ってチャットする • role / system を使うと、回答にキャラ付け = 回答へ の制約を付けられます。

    • 指定した制約が必ず反映されるとは限りません。 • 利用しているモデルによって振る舞いが異なりま す。 • Temperature はランダム性に関係するパラメータ で、0 に近づくとランダム性がなくなっていきま
  22. API を使って時系列データを準備する GPS マルチユニット SORACOM Edition IoT SIM SORACOM プラットフォーム

    ユーザー (*1)Google, Public domain, ウィキメディア・コモンズ経由で API SORACOM Harvest 温度 湿度 Unified Endpoint Colaboratory (*1) (*2) (*2)https://slack.com/intl/ja-jp/media-kit ChatGPT (GPT-3.5 turbo) make (iPaaS) (*3)https://www.make.com/en/integromat-evolves-to-make (*3)
  23. API を使って時系列データを準備する • SORACOM API を使って、SORACOM Harvest に蓄積されて いる時系列データを取得します 。

    • データは Colab 上で整形し、今回必要な温度と湿度だけを 選択します。 • ChatGPT と会話するトークンよりも、添付するデータの方 が文字数が多くトークンを多く消費します。消費を抑える ための工夫が必要です。 • Colab 上では、 Pandas をはじめとしたデータ分析ライブ ラリが利用できるため、修正や確認をしながら調整が行え るのが便利です。
  24. API を使って時系列データを準備する • 今回利用するのは、温度と湿度の時系列データです 。 • 時系列データは 1 分間隔でデバイスから送信されたもの です。

    • デバイスは室内に設置してあり、現在も稼働中です。 • 温度と湿度のデータは、デバイスから送信されたものを そのまま利用します。 • 日時については、送信されたデータはミリ秒までの精度 がありますが、今回は秒までに切り捨てて利用します。
  25. API を使ってチャットする GPS マルチユニット SORACOM Edition IoT SIM SORACOM プラットフォーム

    ユーザー (*1)Google, Public domain, ウィキメディア・コモンズ経由で API SORACOM Harvest 温度 湿度 Unified Endpoint Colaboratory (*1) (*2) (*2)https://slack.com/intl/ja-jp/media-kit ChatGPT (GPT-3.5 turbo) make (iPaaS) (*3)https://www.make.com/en/integromat-evolves-to-make (*3)
  26. API を使ってチャットの結果を連携する • 時系列データを添付して、ChatGPT とチャットをしま す。 • チャットした結果を他のシステムに連携します。 • 連携を行いやすいように「JSON

    形式」の回答を ChatGPT に指示します。 • 「make」というiPaaS に Webhook として連携します。 • 連携が成功すると、最終的に Slack にチャットした結果 のメッセージが投稿されます。
  27. API を使ってチャットの結果を連携する • 未来予測や、内容の分析、モニタリング値の提案など、チャットの プロンプトを工夫することで、それっぽい回答を得ることができま した。 • 内容の正確さや、実際に利用できるかは検証しながら確認が必要と いう認識です。 •

    JSON 形式を指定しても、正しく回答されないこともありました。 • チャットとして人が対応できる場合は問題ないですが、システムと して連携する場合には考慮が必要となります。 • ChatGPT API 用のモジュールがある iPaas もあるようです。
  28. まとめ • LLM に全部お任せできるわけではなく、得意な部分で適 切に利用することで、手軽に効果が得られる場合があり ます。 • 専用のモデルやツールのわかりにくい部分を、解釈や補 足する様な使い方が良さそうでした。 •

    専門的な知識や勘所がわからなくても、新しい発見やひ らめきを試せる可能性がありました。 • 時系列データをインプットする際にはトークンのハード リミットに注意してください。
  29. まとめ • データについてはバルクインポートの様なトークンにカ ウントされない方法に期待したいですね。 • 指定した回答形式にならない場合もあるため、システム として連携していくには LangChain をはじめとしたフ レームワークの利用も検討すると良さそうに感じました。

    • プラグインが解放されているので、プラグインとして利 用できる形で作っていくと利用は広がりそうです。 • まだまだ進歩すると思うので継続していろいろ試しつつ、 皆さんの実例も聞いてみたいです!
  30. Appendix • OpenAI • https://openai.com/ • https://platform.openai.com/docs/api-reference/chat/create • https://github.com/openai/openai-python •

    make • https://www.make.com/en • slack • https://slack.com/intl/ja-jp/ • Colaboratory • https://colab.research.google.com/ • SORACOM • https://users.soracom.io/ja-jp/
  31. Appendix • LangChain • https://langchain.com/ • https://github.com/hwchase17/langchain • トークンのカウント •

    https://github.com/openai/tiktoken • https://github.com/openai/openai- cookbook/blob/main/examples/How_to_count_tokens_with_tiktoken.ipynb • https://github.com/openai/openai-cookbook • https://platform.openai.com/tokenizer