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 27, 2025
Technology
0
230
Snowflake ML モデルを dbt データパイプラインに組み込む
2025/2/21に開催された「Tokyo dbt Meetup #12」にスタッフエンジニアのlinが登壇した際の資料です。
estie | エスティ
February 27, 2025
Tweet
Share
More Decks by estie | エスティ
See All by estie | エスティ
ユーザー価値を最大化するための爆速開発
estie
0
120
10年PMをやって気付いた4つのPMタイプ
estie
0
290
自動と手動の両輪で開発するデータクレンジング
estie
2
330
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
310
PMとデザイナーが協働してプロダクトを最速で立ち上げるための一つのメソッド
estie
0
150
GraphQLでいい感じの検索APIを作りたい
estie
0
520
GraphQLにおけるページネーションベストプラクティス
estie
0
1.2k
不動産 x AIことはじめ~データの真価を拓くために
estie
0
490
Snowflakeで眠ったデータを起こそう!
estie
1
620
Other Decks in Technology
See All in Technology
他チームへ越境したら、生データ提供ソリューションのクエリ費用95%削減へ繋がった話 / Cross-Team Impact: 95% Off Raw Data Query Costs
yamamotoyuta
0
170
超簡単!RAGアプリケーション構築術
oracle4engineer
PRO
0
110
LT:組込み屋さんのオシロが壊れた!
windy_pon
0
260
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
360k
toittaにOpenTelemetryを導入した話 / Mackerel APM リリースパーティ
cohalz
1
440
データ戦略部門 紹介資料
sansan33
PRO
1
3.1k
令和トラベルQAのAI活用
seigaitakahiro
0
470
KMP導⼊において、マネジャーとして考えた事
sansantech
PRO
1
190
[JAWS-UG 栃木 #2]AWS FISはドSなのか?システムに試練を与えて強くする!
sh_fk2
1
270
AIのための オンボーディングドキュメントを整備する - hirotea
hirotea
9
2.2k
OTel meets Wasm: プラグイン機構としてのWebAssemblyから見る次世代のObservability
lycorptech_jp
PRO
0
270
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
3
1.5k
Featured
See All Featured
Scaling GitHub
holman
459
140k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
5
610
GitHub's CSS Performance
jonrohan
1031
460k
Making the Leap to Tech Lead
cromwellryan
133
9.3k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Product Roadmaps are Hard
iamctodd
PRO
53
11k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Bash Introduction
62gerente
613
210k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
830
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