6ワークロード データサイエンス編【1】 ちゅらデータ

Snowflakeはデータ利活用を進める人々のプラットフォームとしてさまざまなワークロードを支えている。本シリーズでは、これまでデータを集め使う準備を整えるデータウェアハウス、データエンジニアリング、データレイクのワークロードについて見てきた。続いては、そのデータを使って何を行うか、その代表的なワークロードであるデータサイエンスについて学んでいくことにしよう。今回はSnowflakeのサービスパートナーとして、高度なデータサイエンスプロジェクトを多数支援してきたちゅらデータ株式会社CTOにして、Snowflakeユーザーグループ「SnowVillage」でリーダーを務める菱沼 雄太氏に、データサイエンスがどのように役立つか、そしてデータサイエンスの課題をSnowflakeがどのように解決するのか解説いただこう。

解説者:ちゅらデータ株式会社 CTO 菱沼 雄太氏
Twitter:@foursue

急速に発展するIoT技術やインターネットサービスの裏で、そこから生まれる膨大かつ多様なデータが日々蓄積されています。そして、それらのデータをビジネスに活用する、データサイエンティストに注目が集まっています。データサイエンティストとは、情報科学の知見を活用し、膨大なデータから様々な価値を引き出す人材を指します。 本稿では、データサイエンティストによるビジネスデータ活用事例やその課題、Snowflakeを用いた解決例について紹介します。

1. データサイエンスのビジネス活用事例

ここでは、データサイエンティストによるビジネスデータの活用事例として、2つのケースを取り上げます。

1-1. Webサイトの改善事例

Webサイトを訪れるユーザーの直帰率を下げ、Webサイト経由のコンバージョン(e.g. 商品購入、サービス申し込み)を増やしたい!といった、Webサイト運営におけるよくある課題について考えてみます。このような課題に対し、データサイエンティストがとるアプローチ例は次の通りです。

●Webサイトを訪問したユーザーの行動履歴をもとにユーザーをクラスタリング(=グループ分け)して、ユーザーの代表的な行動パターンを明らかにする。更に、ユーザーの行動パターン毎のコンバージョン率を算出し、コンバージョンに至るまでの導線を最適化する

●Webサイト内のパス分析を実施して、ユーザーの離脱ポイントを明らかにする

●ABテストの仕組みを導入し、新機能追加がKPI(e.g. コンバージョン率、離脱率)に与える影響を明確化すると共に、テストと改善のサイクルを整える

ユーザーの趣味嗜好の変化に柔軟かつ高速に対応していくためには、データを正しく評価し改善を繰り返すことができるデータサイエンスの導入が必要不可欠です。

1-2. 工場における導入事例

次に工場における導入事例を取り上げます。 工場の運営者は様々な課題を抱えています。たとえば、「中間在庫を減らしたい」「需要を予測して先んじて製品を生産したい」「目視でチェックしている製品の不具合をもっと高精度に検知したい」などです。そのようなケースにもデータサイエンスは活躍します。

●過去の発注データや日々の情報を元に製品や利用部品の需要予測を実施して、在庫管理を最適化する

●工場の稼働率や将来的な需要、人員配置を鑑みて、生産ラインに流すべきバッチサイズ(一度に処理する量)や段取りの組合せを最適化する

●センサーデータや製品画像データを利用して、製品に混入した異常を自動で検知する

センサーデータのような人力での確認が難しい膨大なデータであっても、高精度かつ高速に分析できるところが、データサイエンス活用のメリットです。 この他にも、これまで熟練の職人でしか扱えなかった業務をAIに一部代替させるといった取り組みも増えています。

2. データサイエンスを利用する上での課題

例に挙げただけではなく、様々な業界・業種でデータサイエンスのビジネス活用が行われていますが、そこに至るまでには多くの課題が存在します。 典型的なケースは次の通りです。

1-データサイエンスを効果的に利用するために膨大なデータが必要となる

2-膨大なデータを処理するコンピューティングリソースが必要となる

3-データサイエンスを活用する仕組みを用意するため、データ基盤構築に関する専門知識が必要となる(e.g. サーバー/ネットワーク/セキュリティ)

4-日々のデータ変化に対応するため、データサイエンスを継続的に運用する仕組みが必要となる(e.g. 利用サーバーの障害監視)

5-セキュリティアップデート等に対応するため、ミドルウェアを運用する仕組みが必要となる

6-1台のサーバーで処理できない場合は、分散コンピューティング環境の構築も必要となる

1つずつ解説していきます。

2-1. データサイエンスを効果的に利用するために膨大なデータが必要

データサイエンスを効果的に導入するために、膨大なデータが必要となるケースは珍しくありません。たとえば、製品画像データを用いた物体検知の仕組みを構築するために、数十万枚の画像データ収集が新たに必要となったケースもあります。 また、データによっては元々の出どころが分からなかったり、人が手作業で更新をかけているExcelを扱う必要があったり、取り込むだけで一苦労な場合もあります。この辺りの話については「データエンジニアリングとは?データを使いやすく整備するための3つの取り組みと10の活動」にてインフォマティカ・ジャパン株式会社の森本さんが詳しく解説しているので、そちらもぜひご覧ください。

2-2. 膨大なデータを処理するコンピューティングリソースが必要

収集したデータが膨大だった場合、オフィスで利用する事務作業用のPCでは処理するためのスペック不足(e.g. ストレージ/メモリ/CPU)となるケースがあります。そのような場合には、数十万円〜数百万円する専用サーバーやワークステーション等、ビッグデータを処理できるスペックを備えたコンピュータを用意する必要が出てきます。 サーバーを運用する中でデータ増加が見込まれる場合は、用意するサーバーでどの程度のデータ量を処理することができるのか事前に見積もる必要もあります。

2-3. データ基盤構築に関する専門知識が必要

サーバーやワークステーションを利用する場合、それ自体の設定、およびネットワーク越しに繋いで利用するためのネットワーク設定が必要となります。さらに取り扱うデータに個人情報や会社の機密情報が含まれている場合、適切なセキュリティ設定も必要となります。これらの設定には専門知識が必要となるため、一般的なデータサイエンティストには非常にハードルの高い作業となります。

2-4. データサイエンスを継続的に運用する仕組みが必要

日々のデータ変化に対応するためには、継続的にデータサイエンスの仕組みを運用する必要があります。そのためには、サーバーを停止させないために障害に備えた監視対応や、万が一の障害発生時にサーバーを復旧するための準備が必要となります。(一般的にMLOpsと呼ばれる領域です) これらの運用にも専門知識が必要となるため、データサイエンティストが取り組むには困難な領域です。

2-5. ミドルウェアを運用する仕組みが必要

継続的にサーバーを利用するためには、インストールされているOSやミドルウェアに対し、セキュリティアップデートを適用していく必要があります。通常ソフトウェアアップデートを実施する際には、アップデート前後で動作不備が発生しないよう事前に検証する必要があるため、サーバーの保守と同様に運用コストがかかってきます。

2-6. さらに1台のサーバーで処理できない量の計算が必要になると、分散コンピューティング環境の構築と設定が必要

そしてここが大きな問題なのですが、サーバーが1台で収まらなくなったケースです。 通常プログラムはサーバーのメモリの中で動作します。しかし処理対象のデータ量が1テラバイト、大きなものだと1ペタバイトなどの大きさになってくると、一般的なサーバーのメモリでは処理できません。 そうなると複数台のサーバーを束ねて処理するための分散コンピューティング環境を構築し設定していくことになります。 これを問題なく行える技術者は市場でも希少ですし、非常に難易度が高いため、一般的な技術者と比べ大きな報酬が必要となります。

3. Snowflakeを使った課題の解決

これまであげてきた課題ですが、一般的には非常に頭の痛い問題となります。 データサイエンスを行うためには、いわゆる「データの準備」が必要、しかしその構築や維持には多大なコストと技術が必要となるということです。 このような「データの準備」の領域に得意な技術者を抱えている、もしくは取り組んでみたい企業は上記の課題を力づくで解決していくことが出来るかも知れません。 ただその道のりは比較的険しく一筋縄では行かないでしょう。 そこで大量のデータを扱うことに強みのあるSnowflakeを使うことにします。

3-1. たくさんのデータを集める

クラウドやオンプレミスに配置されたデータをSnowflakeへ集めるのは比較的簡単にできます。標準的なデータベース操作言語であるSQLでデータを登録することもできますし、CSVファイルなどをオブジェクトストレージに設置するだけで読み込ませることもできます。 CSVのような構造的なデータだけでなく、半構造データと呼ばれるJSONやParquetなどのデータにも対応しているため、既存システムから出力される多様なデータをSnowflakeへ移すことができます。

3-2. 必要なときに必要なパワーと必要なストレージ

Snowflakeは一般的なデータベース製品と異なり、データの保存するストレージと、データの処理するコンピューティングユニット(Snowflakeではこれを仮想ウェアハウスと読んでいます)が分離されています。 だからほぼ無制限にデータを保持することができますし、処理するコンピュータのパワーについても使いたいときに必要なだけ用意して、その上使わないときは停止し費用を節約することまでできてしまいます。 既存の多くのデータベース製品では一度設計したデータ量に上限があったり、処理能力を上げるには設定変更や再起動やメンテナンスが必要だったり、さらには増設用機器の発注など様々な手間がかかっていたため、Snowflakeのこの仕組は非常に革命的だったことを覚えています。

3-3. 設定が大幅に不要に

サーバーを購入して、セットアップするような作業はSaaSであるSnowflakeでは不要となりました。 また運用中に処理速度が足りない場合、これまではパフォーマンスアップのためのサーバーやデータベース製品のチューニングを行う必要がありましたが、Snowflakeではいつでも最速の環境が手に入るようになっています。 とはいえ、セキュリティの設定については業務のルールや必要とされるレベルに応じてSnowflakeでもきちんと設計・設定する必要があります。Snowflakeには一般的に想定されるレベルのセキュリティ機能はすべて揃っているため、このあたりは安心して使うことができます。

3-4. 監視もほとんど不要に

以前こんな事がありました。 大手クラウドプラットフォームで広域障害があったときのことです。その上で動作しているはずのSnowflakeはその障害によって止まらず、少しパフォーマンスが落ちただけで、動き続けたというものです。その時は非常に高い障害回避性があるのだと感心しました。 とはいえSnowflakeでも稀にクエリ処理中にエラーを出すことがあります。 しかしログを見るとエラーが出たあとも裏側で自動的にリトライ、リカバリーし、処理を継続していたため、技術者が対応する必要がありませんでした。 このようにSnowflakeを利用することでこれまで必要と考えられていたサーバーの監視や手動でのリカバリー対応がほぼ不要となりました。 残された監視項目は「データの処理や保持によって発生するコスト」だけでよくなり、技術者の運用手間が大幅に削減されました。

3-5. アップデートも不要に

サーバーやサービスを運用するとどうしてもアップデートやバックアップ作業などでメンテナンスの時間が必要でした。けれどSnowflakeでは自動でアップデートされるため、運用作業として必要なのはアップデートで追加された機能の確認や、非推奨になる機能や振る舞いのチェックだけで良くなりました。

3-6. 分散コンピューティング? すでに使っていました

Snowflakeは始めから分散コンピューティングを前提としたシステムになっています。そのため「1台のサーバーで処理ができるか?」「データが保持できるか?」などのこれまであったキャパシティに関する検討タスクがほぼ不要となりました。 データサイエンスを始めるのに必要なことは、必要となるデータをSnowflakeへ入れ、必要な処理を行うだけです。裏では勝手にSnowflakeが分散コンピューティング環境でデータを処理してくれています。 また分散コンピューティングの仕組みの中ではSparkが有名ですが、SnowflakeではSparkと互換性の高いSnowparkという機能が用意されており、Sparkに慣れたデータサイエンティストであればシームレスにSnowflake上で開発ができます。

このようにSnowflakeはデータサイエンスで立ちはだかる諸々の課題に対して答えの一つとなりうるようです。

4. Snowflakeだけでは解決できない課題

ここまで、Snowflakeがあればバラ色なデータサイエンス生活が送れるような書きっぷりできましたが、実は必ずしもそうではありません。現実にはSnowflakeだけでは解決できない課題も多数存在しています。 たとえば、代表的な課題として挙げられるのが下記の2つです。

1-分析結果を適切なアクションに繋げられない
2-課題解決に必要なデータを利用できない

4-1. 分析結果を適切なアクションに繋げられない

最終的なアクションに繋げられない分析は、コストだけがかかり得られるものがありません。分析を実施するからには必ずアクションにつなげることを意識する必要があります。しかし、現実では下記に示すような課題に直面してしまい、最終的なアクションまで繋げられないことがあります。

●分析結果を用いてビジネスの意思決定を行いたかったが、意思決定者が分析結果を解釈することが出来なかったため、活用が見送られてしまった

●データサイエンティストの作成したAIを実システムに組み込むにあたり、開発コストがかかり過ぎる試算となったため、活用が見送られてしまった

●作成したAIの誤差が許容範囲内におさまっているのか、実施リスクの評価が出来なかったため活用が見送られてしまった

これらの課題を解決するためには、問題設計時点でアクションまで見据えた議論が必要となります。関係各所との連携が必要となるケースも多いため、調整作業も必要となります。

4-2. 課題解決に必要なデータを利用できない

データサイエンスを用いた課題解決を実施したいが、そのために必要となるデータが存在しない、という事例はよく発生します。そもそも利用できるデータが存在しない場合は、新規のデータ収集から検討したり、データ購入やダミーデータ生成も視野に入れて吟味したりすることとなります。 また、そもそも持っているデータがデータサイエンスへの活用には向かなかった、という事例も存在します。たとえば、データにノイズが多く正確ではないケースや、解きたい課題に対し直接的には関係のないデータばかりが存在するケースが該当します。 データサイエンスの世界では「Garbage in, garbage out(ゴミを入力するとゴミが出力される)」という格言がありますが、適切なデータを利用しないと適切な結果を得ることは難しくなってくるため、データサイエンスに取り組む前に、データ量やクオリティについて慎重に議論する必要があります。

これらの課題をいかにして解決するかは、データサイエンティストの腕の見せどころです。高度な技術と経験を有したデータサイエンティストと共に、課題解決に取り組みましょう。

5. 最後に

データサイエンスは「科学的な統計手法を用いてデータから価値を生み出す活動」です。そのためにはデータを分析するための基盤となる仕組みが必要となります。 それらを一つずつ作っていくのは高度な技術と費用が必要となってしまい、しかもそれらは購入しても足りなかったり、設定するための技術が足りなかったりなど、リスクを孕んでしまいます。 そういった、分析のためのデータ基盤にSnowflakeを採用することで、スムーズなデータサイエンスが行えるようになります。また副産物的にですが、構築・運用・監視がほぼ不要となることで、データサイエンティストに要求されるスキルを「科学的な統計手法」「価値を生み出す活動」に限定出来るようになり、全体のコストを下げることが可能となるでしょう。 4-1、4-2で紹介したような本質的な課題はSnowflakeを導入しただけでは直接解決することはできません。しかしSnowflakeを導入することで得られる人と時間を使って、それら本質的課題に注力可能となるのです。

私の所属するちゅらデータ株式会社にはSnowflakeを使ったデータ基盤の構築から、高度なデータサイエンスプロジェクトの実行経験が豊富にあります。ご興味が有りましたらぜひご相談ください。

※本記事はSnowflake、ちゅらデータから提供を受けております。

[PR]提供:Snowflake