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
210
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
270
自動と手動の両輪で開発するデータクレンジング
estie
2
320
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
300
PMとデザイナーが協働してプロダクトを最速で立ち上げるための一つのメソッド
estie
0
140
GraphQLでいい感じの検索APIを作りたい
estie
0
510
GraphQLにおけるページネーションベストプラクティス
estie
0
1.2k
不動産 x AIことはじめ~データの真価を拓くために
estie
0
480
Snowflakeで眠ったデータを起こそう!
estie
1
620
Other Decks in Technology
See All in Technology
ホワイトボックス& SONiC アーキテクチャ(全体像) - SONiC Workshop Japan 2025
ebiken
PRO
1
460
熱々🔥のUDN🍜を喰らえ❗マルチテナントもVM統合も思いのまま❗新機能で切り拓くk8sネットワークの未来
tsukaman
0
150
え!! 日本国内でGo言語のバイリンガル勉強会を!?
logica0419
2
110
DataEngineeringとCloudNativeの今と未来
foursue
0
250
人間性を捧げる生成AI時代の技術選定
yo4raw
2
1.2k
The PyArrow revolution in Pandas
reuven
0
130
SONiCにて使用されているSAIの実際
sonic
0
360
君だけのオリジナル async / await を作ろう / TSKaigi 2025
susisu
4
2.6k
分解し、導き、託す ログラスにおける“技術でリードする” 実践の記録
hryushm
1
650
OCI Full Stack Disaster Recovery サービス概要
oracle4engineer
PRO
1
140
フロントエンドがTypeScriptなら、バックエンドはPHPでもいいじゃない/php-is-not-bad
hanhan1978
5
5.6k
トイルを撲滅!インフラ領域での生成AI活用のススメ
shuya
0
150
Featured
See All Featured
Being A Developer After 40
akosma
91
590k
Building Applications with DynamoDB
mza
94
6.4k
For a Future-Friendly Web
brad_frost
177
9.7k
Documentation Writing (for coders)
carmenintech
71
4.8k
Designing Experiences People Love
moore
142
24k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Visualization
eitanlees
146
16k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
RailsConf 2023
tenderlove
30
1.1k
The Cult of Friendly URLs
andyhume
78
6.4k
Six Lessons from altMBA
skipperchong
28
3.8k
Making the Leap to Tech Lead
cromwellryan
133
9.3k
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
Otomatik - 104.22.39.239
CloudFlare DNS
Türk Telekom DNS
Google DNS
Open DNS
OSZAR »