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

Snowflake ML モデルを dbt データパイプラインに組み込む​

Snowflake ML モデルを dbt データパイプラインに組み込む​

2025/2/21に開催された「Tokyo dbt Meetup #12​」にスタッフエンジニアのlinが登壇した際の資料です。

estie | エスティ

February 26, 2025
Tweet

More Decks by estie | エスティ

Other Decks in Technology

Transcript

  1. © 2025 estie Inc. Tokyo dbt Meetup #12 Snowflake ML

    モデルを dbt データパイプラインに組み込む 0 Ryosuke Lin Yamamoto
  2. © 2025 estie Inc. • Ryosuke Lin Yamamoto / 山本亮介

    • 社内で unique でなかったので妻の姓を名乗っています • https://github.com/Ryosuke839 • 株式会社estie データマネジメント部 スタッフエンジニア • データパイプライン・共通データ API の設計・実装 • プロダクトチームでのデータ活用の enabling など • 2023 年 4 月入社 • もともとデータ系ではなく C++ を使ったバックエンドエンジニアでした • dbt のコード読んだりするのも好きです 自己紹介 2
  3. © 2025 estie Inc. 会社概要 3 会社名 株式会社estie(エスティ) 所在地 東京都港区赤坂9丁目7-2

    東京ミッドタウン・イースト 4F 設立 2018年12月 代表取締役 平井 瑛 主要株主 経営陣 東京大学エッジキャピタルパートナーズ(UTEC) グロービス・キャピタル・パートナーズ(GCP) グローバルブレイン 日本政策投資銀行 Vertex Growth 技術顧問 渡辺 努(東京大学大学院経済学研究科教授)
  4. © 2025 estie Inc. 自社ビル等 estieの事業領域 経済的な価値創造の場である「商業用不動産」領域でデジタルインフラを展開 資産 タイプ Office

    オフィス Retail 商業施設・アウトレット等 Industrial 物流施設・データセンター等 Hotel ホテル Residential 住宅 投資 目的資産 自己使用 目的資産 商業用不動産市場(資産規模: 約275兆円 / 業務規模: 約16兆円) 賃貸住宅市場 分譲住宅市場 分譲オフィスビジネス等も存在はするが、業としてではなく単純に古くからある自社ビルや工場の所有と言った形態が一般的 4
  5. © 2025 estie Inc. estieソリューションラインナップは、商業不動産領域におけるインフラを目指し拡大中 5 DaaS (データ) SaaS (業務支援)

    アセット オフィス レジ 物流 ホテル 商業 土地(その他) マーケットリサーチツール 開発 開発 開発 アセットごとの データを調査 ソリューション支援ツール Data Platform 領域横断で業 務を支援 領域深く 業務を 支援 Middleware(分析・API・認証・権限等)+独自のデータ基盤 開発
  6. © 2025 estie Inc. 8 不動産データ×AIで新たな価値を創造し、業界全体のデジタルシフトを推進 設立の背景 近年、AI技術の発展により、さまざまな産業データの活用と業務の効率化に対する取り組みが加速しています。不動産業界においても、業界特有の専門的な知見や 技術を最大限に活かした支援の重要性が増してきています。「不動産AI Lab」は、不動産業界が抱える課題をAI技術によって解決し、業界全体の生産性向上と価値

    創造を推進することを目的として設立しました。estieは、オフィス、物流施設、住宅といった幅広い用途に対応するマルチアセットのデータ基盤を提供しており、 これらの網羅的なデータを活用することでAIを活用した高度なソリューション提供を実現します。 不動産AI Labの取り組み 1. AIソリューション提供 不動産業界のお客様に業務効率化やデータ活用を支援するAIソリューションを提供します。例えば、社内でのAI活用の促進サポート、AIによる市場データの分析 やレポート作成、メールやメモなどの非構造化データの構造化などの取り組みを行っています。 2. 研究開発 不動産×AI領域の研究開発を推進します。当社のみならず大学との産学連携や企業との共同研究を通じ、賃貸・売買・都市開発領域における独自アルゴリズムの 開発など、不動産業界における新たな価値創造を目指します。 3. 勉強会・セミナー開催 不動産とAIの融合をテーマにした勉強会やセミナーを開催します。不動産業界に興味がある方から専門家まで対象を広げ幅広い内容を用意し、最新技術の共有や 業界知識の向上を促進します。 不動産業界のAI活用を支援する「不動産AI Lab」を開設(2025年1月16日公開)
  7. © 2025 estie Inc. 不動産AI Lab 以前からも取り組みが存在 • 賃料査定 •

    物件スペックから実際の賃料を推定する • 物件スペック推定 • 分析に重要な面積情報は小規模物件では抜けていることが多い • 物件概要書パース • 募集 PDF パース estie での AI 活用事例 9
  8. © 2025 estie Inc. 不動産AI Lab 以前からも取り組みが存在 • 賃料査定 •

    物件スペックから実際の賃料を推定する • 物件スペック推定 • 分析に重要な面積情報は小規模物件では抜けていることが多い • 物件概要書パース • 募集 PDF パース estie での AI 活用事例 10 本日お話しするのはこのあたりの取り組み
  9. © 2025 estie Inc. 現在の賃料査定パイプラインの設計 • データは物件・募集パイプラインと Web から取得 •

    学習結果は S3 に格納 • 査定結果は SQL スクリプトとして生成さ れるので実行して Snowflake に投入 これまでの機械学習パイプライン 11
  10. © 2025 estie Inc. 機械学習パイプラインあるある(過去の実例) • 学習データの生成、学習、モデル更新でそれぞれスク リプトを走らせないといけない • 毎回設定ファイルの学習メタデータを手動更新する

    • 謎の CSV ファイルが開発者のローカルに存在する • コードレビューしようにも再現できない • テストは存在しない → MLOps、大事ですね… これまでの機械学習パイプライン 12
  11. © 2025 estie Inc. ところで、Snowflake も ML に力を入れている • Snowflake

    ML • Model Registry • Snowflake stage にモデルを保存できる • テーブルなどと同様にオブジェクトとして扱われる • Python API が提供される • ML Functions • SQL から直接モデルを呼び出せる Snowflake ML 13 https://www.snowflake.com/ja/data-cloud/workloads/ai-ml/
  12. © 2025 estie Inc. ところで、Snowflake も ML に力入れている • Model

    Registry • Python API が提供される さらに、dbt Snowflake では Python コードも実行できる • dbt Python model • Snowflake では Python stored procedure として実行される • 弊社では活用事例多数 → dbt で Snowflake ML 使えると便利では!? dbt × Snowflake 14
  13. © 2025 estie Inc. Snowflake ML を dbt から使うには •

    学習モデル • dbt Python model で実装する • 特別な materialization を使用する • table や view を作成するのではなく、Model Registry に学習済みモデルを保存する • 推論モデル • dbt SQL model または dbt Python model で実装する • Model Registry に保存された学習済みモデルを参照する • 学習モデルも dbt model なので ref で参照できる • 通常の materialization(table など)を使用する dbt × Snowflake ML の実装方針 16 ← ここがキモ
  14. © 2025 estie Inc. Materialization とは… データウェアハウス上での dbt model の保存方法を規定する

    • https://docs.getdbt.com/docs/build/materializations • デフォルトでは table, view, incremental, ephemeral, materialized view が提供される • table – select の結果を table として保存する • view – select を実行する view を作成する • incremental – select の結果を table に merge する • 自身で定義することも可能 dbt の materialization とは 17
  15. © 2025 estie Inc. Materialization は自身で定義することも可能 • adapter=Snowflake, language=Python でのみ実装する

    • materialized=table ではテーブルへ書き出していた部分を Model Registry を呼び出すように変更 することで Python model の戻り値を Model Registry に渡せる 独自の dbt materialization 18 dbt-labs/dbt-adapters/…/macros/materializations/table.sql estie-inc/dbt_snowflake_ml/macros/dbt_snowflake_ml.sql
  16. © 2025 estie Inc. materialization の使い方はシンプル • 学習側では materialized=model としたうえで

    Model Registry に保存できるオブジェクトを return する • 推論側では ref から得られる名前を用い Model Registry からモデルを読み込む 独自 materialization の使用 19 def model(dbt, session): dbt.config( materialized="model", packages=["snowflake-ml-python", "scikit-learn"], ) buildings = dbt.source("DMG_RDS_MEDAMAYAKI", "BUILDINGS") mappings = dbt.source("DMG_WAREHOUSE", "PLATEAU_BUILDING_MAPPINGS") plateau_buildings = dbt.source("DMG_WAREHOUSE", "PLATEAU_BUILDINGS") ... # モデルの学習 model = GradientBoostingRegressor(verbose=1) model.fit(x[train_idx, :], y[train_idx]) return { "model": model, "signatures": {"predict": model_signature.infer_signature(x, y)}, } def model(dbt, session): dbt.config( materialized=”table", packages=["snowflake-ml-python", "scikit-learn"], ) buildings = dbt.source("DMG_RDS_MEDAMAYAKI", "BUILDINGS") mappings = dbt.source("DMG_WAREHOUSE", "PLATEAU_BUILDING_MAPPINGS") plateau_buildings = dbt.source("DMG_WAREHOUSE", "PLATEAU_BUILDINGS") ... reg = registry.Registry(session=session) ref_std = dbt.ref("WAREHOUSE_MODEL_BUILDING_STANDARD_FLOOR_AREA") mv = reg.get_model(ref_stg.table_name).default pred = mv.run(x, function_name="PREDICT") result["ESTIMATED_STANDARD_FLOOR_AREA"] = np.exp(pred.values) return result
  17. © 2025 estie Inc. dbt × Snowflake ML で以下のことが達成される •

    データ生成・学習・推論を dbt 上で行える • 実行に必要なコードが dbt 上に集約される • データセットや学習済みモデルが Snowflake 上に集約される • dbt のテストフレームワークを使うことができる • dbt docs でモデル学習を含めたリネージを生成できる 課題もある • Snowflake warehouse は高価 • トライ&エラーには向いていない • Snowflake Notebook を併用 dbt × Snowflake ML のうれしさ 20
  18. © 2025 estie Inc. dbt × Snowflake ML はまだ実証段階 •

    社内の ML パイプラインのいくつかを置き換えられることは確認 • 第1回 国土交通省 地理空間情報データチャレンジ ~国土数値情報編 ~ モデリング部門の優勝解法を支える技術でもある • https://www.estie.jp/blog/entry/2024/12/24/160000 • あとはやっていき OSS として公開しています • https://github.com/estie-inc/dbt_snowflake_ml dbt × Snowflake ML のこれから 21
  19. © 2025 estie Inc. • estie は AI やっていきます! •

    課題がたくさん出る中で MLOps が重要 • dbt × Snowflake で MLOps を行うことで課題を解決できそう • Snowflake が提供する Snowflake ML を dbt の materialization から使う • コード・リソースが dbt Snowflake に集約され、dbt の便利機能も活用できる • OSS にしてます: https://github.com/estie-inc/dbt_snowflake_ml • estie ではバックエンドエンジニア(データ)ほかの採用を行っています!→ • https://hrmos.co/pages/estie/jobs/101011_dataplatform_eng まとめ 22