M365Con 2027 – безкоштовна онлайн-конференція · 11–22 Jan 2027 · 120 sessions→ m365con.net

Блог · Mirko Peters

Опановуємо архітектуру лейкхаусу: bronze, silver та gold у Microsoft Fabric

By ·

Раді вітати вас знову в блозі-супроводі до подкасту! В останньому епізоді ми детально розібрали практичні реалії інженерії машинного навчання в Micro…

Automatically translated with AI from the original post. Read the English original

▶ BLOGMastering LakehouseArchitecture: Bronze,…M365.FM
Titelbild: Mastering Lakehouse Architecture: Bronze, Silver, and Gold in Microsoft Fabric

Ласкаво просимо назад до супровідного блогу до подкасту! В останньому епізоді ми детально розібрали практичні аспекти інженерії машинного навчання в екосистемі Microsoft. Якщо ви ще не слухали, обов’язково ознайомтеся з епізодом Build Machine Learning Models in Microsoft Fabric. Сьогодні ми розвинемо ці ідеї та розглянемо, як структурування даних за медальйонною архітектурою в Microsoft Fabric Lakehouse стає фундаментом успішних масштабованих операцій машинного навчання.

Створення моделей машинного навчання, придатних для продакшну, — це не лише вибір правильного алгоритму чи налаштування гіперпараметрів. Найчастіше успіх ваших прогнозних моделей залежить від якості даних, відтворюваних конвеєрів і надійного управління. Розберемо, як опанувати архітектуру лейкхаусу в Microsoft Fabric.

Архітектура з першого погляду

Проєктуючи наскрізну платформу даних і машинного навчання в Microsoft Fabric, важливо розуміти, як рухаються дані. Усе починається в OneLake, який є єдиним шаром зберігання. Звідти дані надходять у Lakehouse, де проходять через таблиці Delta рівнів bronze, silver та gold.

Для обчислень Fabric Notebooks надають дата-сайентистам доступ до попередньо налаштованого стеку для науки про дані на базі Spark, Python і R. Відстеження експериментів забезпечують вбудовані запуски MLflow, які фіксують метрики, параметри й артефакти без потреби в зовнішніх серверах відстеження. Після навчання моделі переходять до єдиного реєстру з версіонуванням, погодженнями та повним відстеженням походження даних (data lineage). Нарешті, моделі обслуговуються через керовані пакетні завдання або HTTP-ендпоінти реального часу, живлячи такі споживачі, як Power BI, Power Apps і власні API-клієнти.

Lakehouse: впорядковуйте вхідні дані, зберігайте контроль

Основна ідея лейкхаусу — поєднати гнучкість озера даних з надійністю сховища даних. Щоб це ефективно працювало, потрібно структурувати дані у чіткі шари.

Розбийте таблиці на шари

  • Bronze: Це шар сирого прийому даних. Дані потрапляють сюди за принципами schema-on-read і залишаються незмінними для аудиту та повторної обробки.
  • Silver: На цьому рівні дані очищаються, типізуються та об’єднуються. PII мінімізовано, а базові перевірки якості є обов’язковими.
  • Gold: Шар gold містить агреговані дані, готові для ознак (feature-ready), побудовані на чітких, задокументованих контрактах даних, які ваші моделі машинного навчання можуть використовувати безпосередньо.

Доступ відповідно до призначення

Використовуйте контроль доступу на основі ролей робочої області разом зі списками контролю доступу на рівні таблиць. Надайте дата-сайентистам доступ лише для читання до таблиць silver і gold, а право запису обмежте саме таблицями ознак і експериментальними каталогами.

Захисні механізми якості даних

Впроваджуйте суворі очікування щодо обмежень not-null, діапазонів значень і referential integrity. Рядки, що не проходять ці перевірки, спрямовуйте безпосередньо до таблиці _quarantine, щоб ваші наступні конвеєри не завершувалися мовчки з помилкою і не приймали пошкоджені дані.

Спрощене сховище ознак

Розглядайте повторно використовувані ознаки як таблиці gold, наприклад feat_customer_rolling_90d, і супроводжуйте їх словником даних у форматі YAML, щоб ваша команда розуміла, що означає кожна ознака.

Notebooks без зайвого клопоту

Спільне написання коду швидко стає хаотичним, якщо розробники працюють у різних середовищах. Fabric надає попередньо встановлені ядра, зокрема pandas, PySpark, scikit-learn і PyTorch, тож усі працюють від однакової базової конфігурації.

Використовуйте структуровану схему проєкту, яка розділяє дослідницькі notebook-и, скрипти інжинірингу ознак, процедури навчання моделей і конфігураційні файли. Відтворюваність тримайте в коді, а не в ручних кліках інтерфейсу. Читайте дані з лейкхаусу через Spark SQL, записуйте фінальні ознаки як таблиці Delta і завжди створюйте менші зразки таблиць для розробки, щоб команда могла швидко ітерувати, не чекаючи запитів до повних наборів даних.

Відстежуйте все за допомогою MLflow (вбудований)

Ручне відстеження експериментів з моделями призводить до результатів, які неможливо відтворити. Використовуючи вбудовану інтеграцію MLflow у Fabric, ви забезпечуєте порівнянність запусків, повну можливість аудиту та просте відкочування, коли новорозгорнута модель працює гірше за очікування.

Логуйте всі гіперпараметри, метрики оцінки та артефакти навченої моделі безпосередньо у своїх скриптах навчання. Обов'язково позначайте запуски контекстними метаданими: вікном даних, версіями наборів ознак і хешами комітів коду, а також прив'язуйте навчальні таблиці до конкретних версій знімків Delta.

Реєстр, погодження та походження даних

Перехід моделі від експериментів до продуктиву не повинен бути питанням вгадування. Переводьте найкращі запуски до зареєстрованої моделі, використовуючи семантичне версіонування, наприклад 1.0.0. Запровадьте дворівневе погодження, яке потребує підпису і власника науки про дані, і бізнес-власника. Наостанок збирайте повні метадані картки моделі з описом призначення моделі, області даних, нотатками щодо справедливості та цілями рівня обслуговування для моніторингу.

Варіанти обслуговування (вибір за навантаженням)

Пакетне оцінювання (дешево і надійно)

Для навантажень, яким не потрібна миттєва відповідь менш ніж за секунду, пакетне оцінювання є найкращим вибором. Використовуйте заплановані завдання Fabric або блокноти, щоб зчитувати продуктивні моделі з реєстру, застосовувати їх до пакетних наборів даних і записувати прогнози назад у Lakehouse.

Endpoint реального часу (інтерактивні застосунки)

Коли користувачам потрібен миттєвий зворотний зв'язок, наприклад для валідації форм або оцінювання ризику під час натискання кнопки, розгорніть зареєстровану модель як керований endpoint реального часу безпосередньо через інтерфейс користувача Fabric. Надайте передбачуваний контракт JSON і безпечно під'єднайте його до Power Apps або зовнішніх застосунків.

Моніторинг і перенавчання

Розгортання моделі — лише половина справи. Потрібно постійно відстежувати дрейф даних, порівнюючи розподіли ознак у реальному часі з базовим рівнем навчання, використовуючи дивергенцію Кульбака–Лейблера або порогові значення Population Stability Index. Відстежуйте метрики експлуатаційного стану, зокрема затримку endpoint, частку помилок і вартість на тисячу оцінок. Автоматизуйте конвеєри перенавчання, поєднуючи тригери за часом і сповіщення про дрейф за подіями, щоб моделі залишалися точними з плином часу.

Безпека і відповідність вимогам

Безпека має першочергове значення під час роботи з корпоративними даними. Дотримуйтесь принципу найменших привілеїв: надавайте науковцям із даних доступ на читання до шарів silver і gold, а права на запис обмежуйте призначеними каталогами ознак і експериментів. Використовуйте керовані ідентичності та Azure Key Vault для зберігання всіх облікових даних, щоб секрети ніколи не було жорстко закодовано у ваших блокнотах. Мінімізуйте ризик витоку персональних даних (PII), хешуючи або токенізуючи чутливу інформацію вже на рівні silver, щоб вона ніколи не потрапляла до ваших сховищ ознак.

Що вимірювати (швидко довести цінність)

Щоб швидко продемонструвати цінність ваших ініціатив машинного навчання, зосередьтеся на правильних метриках. Оцінюйте силу моделі за допомогою AUC і precision-at-k для ранжувань, відстежуйте бізнес-ефект через додатковий дохід або зниження показника відтоку клієнтів, контролюйте швидкість переходу від готовності даних до розгортання в продуктиві, а також оцінюйте надійність інфраструктури та ефективність витрат на тисячу прогнозів.

План розгортання на 14 днів

Якщо ви хочете швидко перейти від нуля до готового до продуктиву розгортання Fabric, дотримуйтесь цього структурованого дворічного плану:

  • День 1–2: гігієна Lakehouse, структура bronze/silver/gold, ACL і перевірки якості.
  • День 3: каркас блокнотів, допоміжні функції для даних і тестові таблиці для розробки.
  • День 4–5: набір ознак v1, навчання базової моделі та логування в MLflow.
  • День 6: набір для оцінки, створення картки моделі та реєстрація моделі (v0.1).
  • День 7: створення завдання пакетного оцінювання та інтеграція з панеллю Power BI.
  • День 8: мінімальний продукт моніторингу, перевірки дрейфу та журналювання експлуатації.
  • День 9: впровадження процесу погодження та переведення до продуктиву.
  • День 10: налаштування endpoint реального часу, обмеження навантаження та логування запитів (за потреби).
  • День 11–12: A/B-тестування, бектестинг і визначення бізнес-KPI.
  • День 13: управління витратами, обмежувачі автомасштабування та план поступового розгортання (canary).
  • День 14: документація runbook, передача команді та планування беклогу.

Типові помилки (і швидкі виправлення)

Навіть досвідчені команди натикаються на перешкоди. Уникайте «рулетки з нотатниками», прив'язавши свої середовища до стандартних ядер Fabric. Не тестуйте виключно на невеликих вибірках, які ламаються, коли масштабуються до повних наборів даних. Запобігайте появі «привидів-моделей» у продакшні, суворо дотримуючись робочих процесів просування через реєстр. Контролюйте витрати на хмару, за замовчуванням використовуючи пакетну обробку там, де це можливо, і кешуючи похідні ознаки.

Корисні фрагменти коду

Щоб допомогти вам розпочати наступний проєкт, ось короткий фрагмент, який показує, як прочитати конкретну версію таблиці Delta:

sales_v = spark.read.option("versionAsOf", 123).table("lakehouse.gold.sales_txn")

Якщо ви хочете витягти важливість ознак за допомогою scikit-learn і одразу записати її в MLflow, скористайтеся таким підходом:

import pandas as pd
fi = pd.Series(clf.feature_importances_, index=feature_cols).sort_values(ascending=False)
mlflow.log_artifact(fi.head(30).to_frame("importance").to_csv("fi.csv", index=True))

А для розрахунку індексу стабільності популяції (Population Stability Index, PSI) для виявлення дрейфу:

import numpy as np
def psi(expected, actual, bins=10):
    e, b = np.histogram(expected, bins=bins, range=(np.min(expected), np.max(expected)))
    a, _ = np.histogram(actual,   bins=b,     range=(np.min(expected), np.max(expected)))
    e = np.clip(e / e.sum(), 1e-6, None); a = np.clip(a / a.sum(), 1e-6, None)
    return np.sum((a - e) * np.log(a / e))

Якщо хочете, напишіть у коментарях назви ваших поточних таблиць Lakehouse і цільовий сценарій використання, наприклад відтік клієнтів, скоринг лідів або прогнозування попиту, або зв'яжіться зі мною напряму. Я допоможу окреслити мінімальний набір ознак, вибір базової моделі та точну схему пакетної або реального часу обробки, щоб ви швидко запустили перше розгортання Microsoft Fabric!

Entities in this article

Microsoft Fabric Machine learning Medallion architecture Power Apps Power BI Data lineage Data quality Fabric notebooks Fabric workspace HTTP

Related articles

RSS