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 27, 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