Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Snowflake ML モデルを dbt データパイプラインに組み込む
Search
estie | エスティ
February 27, 2025
Technology
600
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Snowflake ML モデルを dbt データパイプラインに組み込む
2025/2/21に開催された「Tokyo dbt Meetup #12」にスタッフエンジニアのlinが登壇した際の資料です。
estie | エスティ
February 27, 2025
More Decks by estie | エスティ
See All by estie | エスティ
Dropを走らせないRustのメモリ管理
estie
0
3
AI時代 自由なデータ利活用とデータ保護を両立するバックエンド設計
estie
0
22
自社のレビュー履歴からAIコードレビュアーをつくる方法
estie
5
1.8k
ボトルネックは人間 ~その負担をどこまで AI に渡せるか~
estie
0
86
自分の価値が出せる場所に越境せよ
estie
0
170
AIに障害切り分けを全部やってもらった。 。 。 。
estie
1
580
Claude Code の /loop を活用する
estie
0
220
【estie x AI】 AI戦略の現在地と未来
estie
0
140
不動産業界における業界特化のデータ整備とAI活用 ─Vertical DataとVertical AI─
estie
1
1.1k
Other Decks in Technology
See All in Technology
脆弱性診断って、何をしているの? 〜弱点を見つけて、会社の改善につなげるまで〜
keeg
0
910
フロントエンドカンファレンス関西2026 - 速すぎるUIに、待ち時間を
teamlab
PRO
0
110
OptunaHub: ブラックボックス最適化のためのプラットフォーム
pfn
PRO
0
130
AIは「聞けば答える」から「任せると自分で進める」へ - JACTIMペナン地域部会・ペナン三水会講演
knishioka
0
110
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
130
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
220
LambdaWebFunctionsを試してみた / exploring-lambda-web-functions
koukihosaka
0
290
DWH の限界突破! AI エージェント向け爆速リアルタイムデータ基盤 ClickHouse
jozono
1
440
AIカンパニーへの転換を支えた、エンジニアの仕事の再定義
kworkdev
PRO
2
1k
10年後、Engineering 行為を剥奪されるとして、わたしたちは、どう、何を創ればいいだろうか。 / If Engineering Is Taken Away in 10 Years, How and What Should We Create?
bitkey
PRO
1
180
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.6k
Refining Active Record
shugo
0
140
Featured
See All Featured
Game over? The fight for quality and originality in the time of robots
wayneb77
1
300
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
330
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
600
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
How STYLIGHT went responsive
nonsquared
100
6.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
460
Making the Leap to Tech Lead
cromwellryan
135
10k
From π to Pie charts
rasagy
1
400
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
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