Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Snowflake ML モデルを dbt データパイプラインに組み込む
Search
estie | エスティ
February 26, 2025
Technology
0
27
Snowflake ML モデルを dbt データパイプラインに組み込む
2025/2/21に開催された「Tokyo dbt Meetup #12」にスタッフエンジニアのlinが登壇した際の資料です。
estie | エスティ
February 26, 2025
Tweet
Share
More Decks by estie | エスティ
See All by estie | エスティ
ユーザー価値を最大化するための爆速開発
estie
0
70
10年PMをやって気付いた4つのPMタイプ
estie
0
140
自動と手動の両輪で開発するデータクレンジング
estie
2
240
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
260
PMとデザイナーが協働してプロダクトを最速で立ち上げるための一つのメソッド
estie
0
78
GraphQLでいい感じの検索APIを作りたい
estie
0
450
GraphQLにおけるページネーションベストプラクティス
estie
0
840
不動産 x AIことはじめ~データの真価を拓くために
estie
0
410
Snowflakeで眠ったデータを起こそう!
estie
1
520
Other Decks in Technology
See All in Technology
Oracle Cloud Infrastructure:2025年2月度サービス・アップデート
oracle4engineer
PRO
1
380
2024.02.19 W&B AIエージェントLT会 / AIエージェントが業務を代行するための計画と実行 / Algomatic 宮脇
smiyawaki0820
15
4.1k
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
Cloud Spanner 導入で実現した快適な開発と運用について
colopl
1
930
Iceberg Meetup Japan #1 : Iceberg and Databricks
databricksjapan
0
210
The Future of SEO: The Impact of AI on Search
badams
0
250
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
130
脳波を用いた嗜好マッチングシステム
hokkey621
0
200
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
9
1.7k
運用しているアプリケーションのDBのリプレイスをやってみた
miura55
1
850
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
890
【詳説】コンテンツ配信 システムの複数機能 基盤への拡張
hatena
0
150
Featured
See All Featured
Measuring & Analyzing Core Web Vitals
bluesmoon
6
250
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
10
1.3k
Product Roadmaps are Hard
iamctodd
PRO
50
11k
Testing 201, or: Great Expectations
jmmastey
42
7.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
114
50k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Designing for Performance
lara
604
68k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
640
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Transcript
© 2025 estie Inc. Tokyo dbt Meetup #12 Snowflake ML
モデルを dbt データパイプラインに組み込む 0 Ryosuke Lin Yamamoto
© 2025 estie Inc. 自己紹介・会社紹介 1
© 2025 estie Inc. • Ryosuke Lin Yamamoto / 山本亮介
• 社内で unique でなかったので妻の姓を名乗っています • https://github.com/Ryosuke839 • 株式会社estie データマネジメント部 スタッフエンジニア • データパイプライン・共通データ API の設計・実装 • プロダクトチームでのデータ活用の enabling など • 2023 年 4 月入社 • もともとデータ系ではなく C++ を使ったバックエンドエンジニアでした • dbt のコード読んだりするのも好きです 自己紹介 2
© 2025 estie Inc. 会社概要 3 会社名 株式会社estie(エスティ) 所在地 東京都港区赤坂9丁目7-2
東京ミッドタウン・イースト 4F 設立 2018年12月 代表取締役 平井 瑛 主要株主 経営陣 東京大学エッジキャピタルパートナーズ(UTEC) グロービス・キャピタル・パートナーズ(GCP) グローバルブレイン 日本政策投資銀行 Vertex Growth 技術顧問 渡辺 努(東京大学大学院経済学研究科教授)
© 2025 estie Inc. 自社ビル等 estieの事業領域 経済的な価値創造の場である「商業用不動産」領域でデジタルインフラを展開 資産 タイプ Office
オフィス Retail 商業施設・アウトレット等 Industrial 物流施設・データセンター等 Hotel ホテル Residential 住宅 投資 目的資産 自己使用 目的資産 商業用不動産市場(資産規模: 約275兆円 / 業務規模: 約16兆円) 賃貸住宅市場 分譲住宅市場 分譲オフィスビジネス等も存在はするが、業としてではなく単純に古くからある自社ビルや工場の所有と言った形態が一般的 4
© 2025 estie Inc. estieソリューションラインナップは、商業不動産領域におけるインフラを目指し拡大中 5 DaaS (データ) SaaS (業務支援)
アセット オフィス レジ 物流 ホテル 商業 土地(その他) マーケットリサーチツール 開発 開発 開発 アセットごとの データを調査 ソリューション支援ツール Data Platform 領域横断で業 務を支援 領域深く 業務を 支援 Middleware(分析・API・認証・権限等)+独自のデータ基盤 開発
© 2025 estie Inc. estieのデータ加工基盤 複数のデータパートナーと提携し、様々な形式のデータを取得 それらのデータを組み合わせ正規化することで単一のデータアセットを構築 6 データパートナー 各サービスDB
© 2025 estie Inc. estie「AI やっていき」 7
© 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日公開)
© 2025 estie Inc. 不動産AI Lab 以前からも取り組みが存在 • 賃料査定 •
物件スペックから実際の賃料を推定する • 物件スペック推定 • 分析に重要な面積情報は小規模物件では抜けていることが多い • 物件概要書パース • 募集 PDF パース estie での AI 活用事例 9
© 2025 estie Inc. 不動産AI Lab 以前からも取り組みが存在 • 賃料査定 •
物件スペックから実際の賃料を推定する • 物件スペック推定 • 分析に重要な面積情報は小規模物件では抜けていることが多い • 物件概要書パース • 募集 PDF パース estie での AI 活用事例 10 本日お話しするのはこのあたりの取り組み
© 2025 estie Inc. 現在の賃料査定パイプラインの設計 • データは物件・募集パイプラインと Web から取得 •
学習結果は S3 に格納 • 査定結果は SQL スクリプトとして生成さ れるので実行して Snowflake に投入 これまでの機械学習パイプライン 11
© 2025 estie Inc. 機械学習パイプラインあるある(過去の実例) • 学習データの生成、学習、モデル更新でそれぞれスク リプトを走らせないといけない • 毎回設定ファイルの学習メタデータを手動更新する
• 謎の CSV ファイルが開発者のローカルに存在する • コードレビューしようにも再現できない • テストは存在しない → MLOps、大事ですね… これまでの機械学習パイプライン 12
© 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/
© 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
© 2025 estie Inc. dbt × Snowflake ML 15
© 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 ← ここがキモ
© 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
© 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
© 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
© 2025 estie Inc. dbt × Snowflake ML で以下のことが達成される •
データ生成・学習・推論を dbt 上で行える • 実行に必要なコードが dbt 上に集約される • データセットや学習済みモデルが Snowflake 上に集約される • dbt のテストフレームワークを使うことができる • dbt docs でモデル学習を含めたリネージを生成できる 課題もある • Snowflake warehouse は高価 • トライ&エラーには向いていない • Snowflake Notebook を併用 dbt × Snowflake ML のうれしさ 20
© 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
© 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