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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
estie | エスティ
February 27, 2025
Technology
530
0
Share
Snowflake ML モデルを dbt データパイプラインに組み込む
2025/2/21に開催された「Tokyo dbt Meetup #12」にスタッフエンジニアのlinが登壇した際の資料です。
estie | エスティ
February 27, 2025
More Decks by estie | エスティ
See All by estie | エスティ
AI活用で高速化するプロダクト開発
estie
0
30
来期の評価で変えようと思っていること 〜AI時代に変わること・変わらないこと〜
estie
0
140
GKEからECSへ移行したときに考えたこと ── コンテナ基盤の技術選定のリアルと、その判断軸
estie
0
78
dbt×Snowflakeで始めるデータコンペ
estie
0
76
企業価値に繋がるAI事業の創り方
estie
2
3.4k
データの価値を最大化する DaaSのUIデザイン
estie
0
320
エンジニアリングをやめたくないので問い続ける
estie
3
1.6k
第2回 国⼟交通省データコンペ参加者向け勉強会 Snowflake x estie編
estie
1
550
マルチプロダクトを支えるスケーラブルなデータパイプライン設計
estie
1
7.6k
Other Decks in Technology
See All in Technology
すごいぞManaged Kubernetes
harukasakihara
1
270
ブラックボックス化したMLシステムのVertex AI移行 / mlops_community_62
visional_engineering_and_design
1
270
Zephyr(RTOS)でOpenPLCを実装してみた
iotengineer22
0
180
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
11k
第26回FA設備技術勉強会 - Claude/Claude_codeでデータ分析 -
happysamurai294
0
370
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
220
OpenClawでPM業務を自動化
knishioka
2
380
VSCode中心だった自分がターミナル沼に入門した話
sanogemaru
0
910
Move Fast and Break Things: 10 in 20
ramimac
0
120
マルチモーダル非構造データとの闘い
shibuiwilliam
1
170
Databricks Lakebaseを用いたAIエージェント連携
daiki_akimoto_nttd
0
140
15年メンテしてきたdotfilesから開発トレンドを振り返る 2011 - 2026
giginet
PRO
2
270
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Why Our Code Smells
bkeepers
PRO
340
58k
How STYLIGHT went responsive
nonsquared
100
6k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
160
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
Crafting Experiences
bethany
1
100
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Fireside Chat
paigeccino
42
3.9k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
130
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
420
Rails Girls Zürich Keynote
gr2m
96
14k
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