データサイエンティストの強力な味方「Snowpark for Python」で沖縄を可視化してみた──Okinawa Developers Kaigi

イベント 公開日:
ブックマーク
データサイエンティストの強力な味方「Snowpark for Python」で沖縄を可視化してみた──Okinawa Developers Kaigi
蓄積した膨大なデータを分析して課題解決につなげていくデータサイエンティストにとって、手軽にデータ分析ができるツールは業務の生産性に大きく関わる。2022年11月に一般公開された「Snowpark for Python」は、データサイエンティストにとって強力なツールとして注目を集めている。その使い勝手の良さなどについて、沖縄を代表するデータ系会社であるちゅらデータが解説する。

アーカイブ動画

海まで徒歩10分の場所にオフィスを構えるちゅらデータ

ちゅらデータ株式会社 真嘉比 愛氏
ちゅらデータ株式会社
代表取締役 真嘉比 愛氏

最初に登壇したのは、ちゅらデータ株式会社の代表取締役であり、自然言語処理のスペシャリストでもある真嘉比愛氏。現在は画像処理や異常検知なども含め、データサイエンティストとして100社を超えるAI構築のコンサルティングや開発に従事している。

ちゅらデータ株式会社は、2017年8月に設立されたAIベンチャーである。事業領域は企画立案・コンサルティングからAIモデル構築、システム開発、運用保守までと幅広く、企業のデータに関するあらゆる課題にワンストップで対応できるようサービス領域を拡大している。

オフィスは海まで徒歩で10分くらいのところにあり、立地においてもまさに沖縄を代表する企業だ。そして、ユニークなのが働き方だ。

「社員の大半はIターンや県外フルリモート。特に県外フルリモート採用に力を入れており、県外フルリモート勢は社員の3割を占めています」(真嘉比氏)

Okinawa Developers Kaigi スライド1

クラウドベースのデータウェアハウス「Snowflake」の特徴

今回紹介するSnowparkは、Snowflakeの開発フレームワーク。SnowflakeはSnowflake社が提供しているクラウドベースのデータウェアハウスである。

「従来のデータウェアハウスと比較して、柔軟性やコストパフォーマンスが高いことから、国内でも利用する企業が増加。当社でもSnowflakeにはかなり力を入れて、様々なお客さまへの導入を進めています」(真嘉比氏)

データサイエンスや機械学習の視点で見ると、Snowflakeは大きく3つのメリットがある。第一に、一つのプラットフォームで複数のMLツールに対応していること。SparkやPython、Apache Arrowのコネクタが用意されているだけではない。DataRobotやDataikuなど、主要なMLツールとの統合されているのだ。

2つ目は、高速な特徴量エンジニアリングをサポートしていること。コンピュートリソースをオンデマンドで拡張・縮小できたりすることで、データサイエンティストが高速に特徴量エンジニアリングや前処理を回したりすることが可能だ。またデータサイエンスと他のデータワークロートとの競合を避けるような仕組みも内包されている。

3つ目は、データへの素早いアクセスが可能なこと。前処理なしに半構造化データをネイティブに格納してクエリすることもできる。Snowflake Data Marketplaceから数あるサードパーティのデータに速やかにアクセスすることも可能だ。

Okinawa Developers Kaigi スライド2

「Snowpark for Python」がデータサイエンティストにもたらすメリット

2022年11月にリリースされたSnowflakeのPython開発者フレームワーク「Snowpark for Python」は、データサイエンティストにとって嬉しい特徴を持つ。代表的な機能としては、クライアントAPI、ユーザー定義関数(UDF)、ストアドプロシージャがある。

クライアントAPIは、Jupyter NotebookなどからSnowflakeのデータをデータフレームの形式で操作するためのAPI。ユーザー定義関数(UDF)は、Snowflake上の実行環境でPythonコードが実行される際に必要なPythonのライブラリがサポートされている。

高速にSnowflake上でPythonを使うことができ、Pythonストアドプロシージャがサポートされている。これもUDF同様、Snowflake上で動作する。

Okinawa Developers Kaigi スライド3

Snowparkの最大の特徴は、専用のDataFrameをサポートしていること。Snowflakeにクエリを発行することができるのだ。PySparkライクなインタフェースになっており、PySparkと同様にSnowpark上のデータフレームが遅延評価される仕組みとなっている。

実行する際には特定のトリガーが必要になり、現在サポートされているトリガーはCollect、Count、Show、save as table。これらを実行することで、手元にデータを持ってくることもできる。

第二の特徴は、Snowflake内で必要なPythonのパッケージやライブラリが事前インストールされていること。これはAnacondaがサポートしてメンテナンスしているためだ。TensorFlowやPyTorchはもちろん、自然言語処理でよく使うspaCy Transformersもサポートしている。

まだ正式にリリースされていないが、非構造化データをSnowpark for Pythonで取り扱うための準備も進んでいるという。「Anacondaがどんどんライブラリを追加しているので、今後に期待が持てる」と真嘉比氏は力強く語っている。

Okinawa Developers Kaigi スライド4

第三の特徴は、Snowpark用に最適化されたウェアハウスが提供されていること。標準のウェアハウスと比較してノード当たり16倍のメモリが提供されている。ただし、Snowpark用に最適化されたウェアハウスを利用する場合、1時間あたりに請求されるSnowflake請求額が1.5倍になるので「要注意」と、真嘉比氏は補足する。

「Snowpark用のウェアハウスはXSとSタイプがなく、ミドル以上の提供になるので、この点も注意が必要です」(真嘉比氏)

Snowflakeを使った機械学習の構成イメージは、次の図になる。用途に応じてウェアハウスのサイズを変更しながら特徴量エンジニアリング~訓練、推論までの一連の流れをSnowflake上で完結できる。リリースされて間もないが、既にSnowpark for Python向けのクイックスタートもたくさん提供されている。

Okinawa Developers Kaigi スライド5

Snowpark for Pythonを使って沖縄を可視化する

まずは、Snowpark環境を用意する。Snowflakeアカウントを持っていない場合は、30日間のトライアルを利用できる。ちなみにSnowpark for Pythonの利用にはPython3.8の環境が必要になる。Python3.8の環境で、「pip install snowflake-snowpark-python」でインストール可能だ。

Okinawa Developers Kaigi スライド6

今回のデモでは、Prepper Open Data BankのSnowflakeのマーケットプレイス上で公開されているデータが使われた。Prepper Open Data Bankはe-Stat上で公開されている国税調査などの商用・二次利用可能なオープンデータを、truestarが抽出・加工して提供することで、データプレップなしですぐにデータ分析できる。

Prepper Open Data BankのJapanese Street Data、そしてSnowpark for PythonとStreamlitを利用して沖縄を可視化していく。まず、分析するための環境の準備は次の図の通り。SnowparkとSnowflakeの間でクエリを投げたりするために、セッションをはる機能もインポートしている。

Okinawa Developers Kaigi スライド7

ここでのポイントは、マーケットプレイスで提供されているデータにアクセスするためには、adminアカウントが必要になることだ。ロールを適切に付与する注意が求められる。

Data Bankのデータをウェアハウスにクエリを実行して持ってくると、次のような画面が確認できる。

Okinawa Developers Kaigi スライド8

下記は沖縄を可視化するために必要なデータを取得する画面である。このような書き方になるが、実行は遅延評価になっているので、この行を実行したタイミングではData Flameは作成されていないことになる。

そこで実際にデータを持ってくるためにはCorrectを実行するか、Data Flameをshow(表示)するコマンドが必要になる。

Okinawa Developers Kaigi スライド9

SQLで書くこともできる。沖縄を可視化するために、今回は都道府県別の男性、女性、外国人、15歳未満、15歳から64歳、65歳以上、未婚など、他の都道府県と比べて沖縄の特徴が出ていると思われるデータが厳選された。

実際に作ったData Flameを表示すると次のようになる。またこの結果はPandasが提供するData Flameに変換して表示することもできる。

Okinawa Developers Kaigi スライド10

さらに可視化するためにStreamlitを活用する。Streamlitはフロントエンドのコードを書かなくてもPythonだけで簡単にWebアプリケーションを開発できるフレームワークである。

2022年3月にSnowflakeに買収されているため、Snowflakeとの統合が進んでおり、今後はSnowflakeのUI上でPythonコーディングしたり、Streamlitアプリケーションを構築できる予定だという。

「今はまだPythonスクリプトを用意してインターネット経由でクエリを投げるようなことをしているが、今後はすべてSnowflakeの中で完結する世界が訪れそうです」(真嘉比氏)

真嘉比氏は沖縄の特徴についても紹介した。沖縄は他県と比べて若年層、外国人の流入も多く、唯一、人口が増加し続けている。この動向と似ている県を調査するために、K-Meansでクラスタリングを行った。

その前処理として、横方向の正規化とPCAを実施。K-Meansで7クラスタにわけて可視化する。すると沖縄に近い傾向を持っている東京、次に福岡や京都、大阪のような大規模な都市を抱えている府県が入ってくる。

「沖縄は若年層が多く、他県と比べても人口の流入が多い、非常に活発な県。興味のある人は、沖縄への移住も検討してください。ちゅらデータも積極採用しています」(真嘉比氏)

Okinawa Developers Kaigi スライド11

クラスメソッド×沖縄の「データエンジニアの仕事とよく使っている技術」

クラスメソッド株式会社 三上 裕貴氏
クラスメソッド株式会社
データアナリティクス事業本部 データエンジニア 三上 裕貴氏

続いて登壇したのは、クラスメソッドのデータエンジニア三上裕貴氏。三上氏は東京都出身。前職で一度沖縄に移住したが、東京に戻ってクラスメソッドに転職。同社が沖縄にオフィスを作るタイミングで沖縄に移住している。主な業務内容はAWSをメインとした、モバイルアプリやデータ関連の技術支援だ。

クラスメソッドはAWSサービスパートナーオブザイヤーやSI Partner of the Year Globalを受賞。月間300万PVを稼ぐ技術発信ブログ「DevelopersIO」や、エンジニアのための情報共有サービス「Zenn」も運営しており、在籍エンジニアが様々な技術本の執筆していることから、「当社の強みは技術力と発信力」だと三上氏は強調する。

ちなみにデータアナリティクス事業本部の働き方や仕事に関するブログも公開されている。

Okinawa Developers Kaigi スライド12

クラスメソッドでは、コロナ禍前からフレックス制やリモートワークを導入しており、時間や場所にとらわれることなく働ける環境を築いてきた。

「私の所属するデータアナリティクス事業本部のメンバーも、全国各地に散らばっている状況です」(三上氏)

クラスメソッドのデータエンジニアリングは、分析基盤構築とETL処理、データマート実装の案件が最も多く、よく使う言語はPythonだと三上氏は説明。AWS案件が多いので、PostgreSQL準拠のAmazon Redshiftを使うことが多いが、最近はBigQueryやSnowflake案件にも対応しているという。

●AWSで基盤を構築する際に使っている技術

Okinawa Developers Kaigi スライド12

Google Cloud案件にも対応しており、パートナー製品のSaaS、例えばInformaticaやFivetran、dbtなど、開発ツールはGitやGitHub、Backlog、JIRAなどを使っている。

三上氏自身も、Google_CloudのBigQueryを使ったデータ分析基盤構築案件を多く担当している。具体的には図のような案件である。

この案件ではソースデータがAWS S3に吐き出され、Google Cloud Storageにファイルを転送するためにStorage Transfer Serviceを利用。データ量がそれほど多くなかったため、Cloud Functionsで処理させるサーバレス構成を採用している。

Okinawa Developers Kaigi スライド13

データマートの作成では、マテリアライズドビューを活用。仕様上実装できないクエリについては、スケジューリングクエリでマート作成を実行している。クレデンシャル管理はSecret Manager、機密情報秘匿化はCloud DLPを活用。Cloud DLPを使えば、簡単にDLP処理を実行できる。

アラート通知については、Cloud Logging、Cloud Monitoringというサービスを使って構築している。

「アラートポリシー設定でメールやSlackなどに通知することができますが、通知内容にカスタマイズが必要な場合は、Cloud Functionsを合わせて使う必要があります」(三上氏)

Okinawa Developers Kaigi スライド14

機械学習とIoTの技術融合で現場のDXを促す「LiLz Gauge」

LiLz株式会社 藤井 岳氏
LiLz株式会社
カスタマーサクセスマネージャー 藤井 岳氏

次に登壇したのは、LiLz(リルズ)カスタマーサクセスマネージャーの藤井岳氏。LiLzは「機械学習とIoTの技術融合で、世界の現場を一歩前へ」をミッションに掲げる、沖縄県宜野湾市我如古にオフィスを構えるITベンチャーだ。LiLzがターゲットとしているのは、施設や設備管理の人たちの業務である。

「冷媒設備の点検員は、アナログメーターの値を読み取って紙に記録しています。現場が抱えるこのアナログ業務問題を解決するために、私たちはLiLz Gaugeという製品を開発しました」(藤井氏)

LiLz Gaugeは低消費電力IoTと機械学習カメラ、機械学習を活用し、アナログメーターなどの目視巡回点検を簡単にリモート化できるクラウドサービスである。IoTカメラ(LiLz Cam)とクラウドサービス双方を開発している。

LiLz Camをアナログメーターの前に設置して使う。LiLz Camの最大の特徴は1日3回撮影で約3年間動作するバッテリーを採用していること。屋外にも設置可能で、フラッシュも内蔵しているので夜間の撮影にも対応できる。

Okinawa Developers Kaigi スライド15

LiLz Gaugeはタコメーターのような円形のアナログメーターだけではなく、ナナセグ型やカウンタ型、ランプ形など様々な形の計器に対応している。2020年6月にサービス開始。現在約150社で活用。全国で稼働しているカメラの台数は2800台に上る。

機械学習が含まれるAIシステム開発は、データをもとに開発が行われる。これをLiLz Gaugeに当てはめると以下図のようになる。

Okinawa Developers Kaigi スライド16

だがAI開発においては、データに関わる部分で開発が失敗するケースが多いことも実情だ。例えば、「データ収集に想定以上に苦労する」「性能は学習したデータに依存する」「性能向上にもデータが必要になる」といったことが落とし穴の一例だ。

LiLz Gaugeの開発では、このような落とし穴を回避するために工夫をしている。藤井氏はまずAIやIT技術に詳しくない人に説明する際、料理に例えて説明すると語る。

「食材と調味料をレシピに合わせて料理をすると、美味しいかまずいかという味に反映されます。AI開発の場合は、食材はデータであり、調味料がハイパーパラメータ。それをアルゴリズム(レシピ)で処理してモデル(料理)が完成し、その精度として反映されます」(藤井氏)

Okinawa Developers Kaigi スライド17

では、LiLz Gaugeではどう実現しているのか。データはLiLz Camの撮影データ、ハイパーパラメータに当たるのが計器設定である。それをLiLzが開発したアルゴリズムで処理してモデルを作成する。新しい画像が入力されたら、そのモデルで処理をして測定結果が得られるという仕組みとなっている。

「ポイントはハイパーパラメータに値する部分を、人間が操作できるようにしていることです。つまり、LiLz Gaugeは人間中心設計を意識して開発されており、なるべく人が関与して機械が活躍する場所を可能な限り少なくしています」(藤井氏)

Okinawa Developers Kaigi スライド18

円型計器の読み取りアプローチは次の図の通りとなる。通常のAI開発であれば、すべてのフェーズをAIで処理することを考えるが、これらの精度をすべて90%に高めたとしても、最終的に得られる精度は65%ぐらいになってしまう。

そこでLiLz Gaugeでは、計器の特定、ゆがみ補正、目盛りの読み取りも人が設定することで、「確実に高精度が出る」と藤井氏は言い切る。

「針位置の推定方法は画像処理を活用します。この針位置の推定においても、人が指定した針位置と、実際に撮影した画像から針色が似ている個所を画像処理で探して針位置を予測するという技術を採用しています」(藤井氏)

このような工夫をした結果、マイナスの値を取る計器など、様々なタイプの計器の値データを大量に集めることなく測定できるようにしているのだ。

Okinawa Developers Kaigi スライド19

アナログメーター読み取りを支えるLiLzの技術

LiLz株式会社 西銘 大喜氏
LiLz株式会社
エンジニア 西銘 大喜氏

続いては、西銘氏が計器の読み取りを支える技術について解説を行った。西銘氏はLiLzのWebエンジニア。大学時代に機械学習を研究しており、コロナ禍前は社内外のメンバーと「ベイズ統計の理論と方法」という書籍の輪読会を開催していた。

LiLz Gaugeでは、現在7種類の計器の読み取りに対応している。図のような5種類の計器については、ある程度針の動きが想像できるので、少量のサンプルでも実装できる。そのためサービスリリース時から使ってもらえるサービスだという。

Okinawa Developers Kaigi スライド20

リサーチャーがデータセットの作成、特徴量の計算方法検討、読み取りアルゴリズムの初期バージョンの実装までを担当する。西銘氏たちエンジニアは、初期バージョンを実装した後に、リファクタリングやデプロイを担当している。

一方、ナナセグ型、カウンタ型計器はデザインのバリエーションが豊富なため、ある程度の量のデータを集め、TensorFlowで学習させるのみ。「そのためほぼリサーチャーはノータッチ。精度評価の時に情報共有をするくらい」と西銘氏は語る。

データがある程度集まった状況で実装したので、最初から良い精度が出た。そのためパラメータチューニングに時間をかけることはなく、データセット作成に時間を使っている。

Okinawa Developers Kaigi スライド21

デプロイは次の手順で行う。まずDramatiqで読み取り処理を実行可能なタスクとして実装し、Dockerイメージを作成。TensorFlow Servingを使う場合は、TF Serving docker imageも作成する。

そしてAzure App ServiceにDockerイメージをデプロイする。Azure App Serviceへのデプロイは、Azure CLIというコマンドラインツールを使用。LiLz Gaugeの場合はInvokeでラップしてローリングデプロイを行う。デプロイ自体はステージングに行い、問題がなければプロダクションにデプロイする。

=========================
沖縄のIT事情・キャリア情報が知れる『沖縄IT Hub』
https://okinawa-ithub.jp/
=========================

テクノロジーと共に成長しよう、
活躍しよう。

TECH PLAYに登録すると、
スキルアップやキャリアアップのための
情報がもっと簡単に見つけられます。

面白そうなイベントを見つけたら
積極的に参加してみましょう。
ログインはこちら

タグからイベントをさがす