Pular para o conteúdo
Lucas Lessa

Trilha de certificações

Professional

Databricks Certified Machine Learning Professional

Avalia ML em escala empresarial: pipelines com Spark ML, treino e tuning distribuídos (Optuna, Ray, pandas function API), MLflow avançado, Feature Store avançada, MLOps (testes, bundles, retreino automático), Lakehouse Monitoring e estratégias de deploy e serving customizado.

Formato da prova

Questões
59 questões
Duração
120 min
Taxa
US$ 200
Idiomas
Inglês
Validade
2 anos
Versão do guia oficial
30 de set. de 2025

Nenhum obrigatório. Recomenda-se um ano de prática na Databricks e os cursos Machine Learning at Scale e Advanced Machine Learning Operations.

O que cai e quanto pesa

Número aproximado de questões por seção, considerando as 59 questões pontuadas.

Seção 1 · 44% · ≈ 26 questões

Desenvolvimento de modelos

Objetivos oficiais

  • Identificar quando o Spark ML é recomendado conforme dados, modelo e caso de uso.
  • Construir um pipeline com Spark ML e aplicar o estimator/transformer adequado.
  • Tunar um modelo Spark ML com MLlib e avaliá-lo.
  • Pontuar um modelo Spark ML em batch ou streaming e escolher Spark ML ou modelo de nó único conforme o tipo de inferência.
  • Escalar treino distribuído com Spark ML e pandas function APIs/UDFs.
  • Fazer tuning distribuído com Optuna integrado ao MLflow, e com Ray.
  • Avaliar trade-offs de escala vertical x horizontal e escolher paralelismo de modelo ou de dados.
  • Comparar Ray e Spark para distribuir treino.
  • Usar a Pandas Function API para treinar e inferir modelos por grupo em paralelo.
  • Usar runs aninhados no MLflow e registrar métricas, parâmetros e artefatos customizados.
  • Criar modelos customizados com feature engineering em tempo real.
  • Garantir correção point-in-time nas buscas de features para evitar vazamento de dados.
  • Construir pipelines automatizados de features com o FeatureEngineeringClient.
  • Configurar online tables/online feature stores de baixa latência com o Databricks SDK.
  • Projetar ingestão e processamento de streaming para gerar features em tempo real.
  • Desenvolver features on-demand com feature serving para consistência entre treino e produção.

Spark ML ou nó único?

Dados que não cabem num nó (centenas de milhões de linhas) → Spark ML. Dados que cabem → scikit-learn/XGBoost (mais algoritmos, mais rápido de iterar). Inferência em tempo real costuma usar modelo leve de nó único servido em endpoint.

from pyspark.ml import Pipeline
from pyspark.ml.feature import StringIndexer, OneHotEncoder, VectorAssembler
from pyspark.ml.classification import GBTClassifier
from pyspark.ml.tuning import CrossValidator, ParamGridBuilder
from pyspark.ml.evaluation import BinaryClassificationEvaluator

idx = StringIndexer(inputCols=["emprego", "educacao"], outputCols=["emp_i", "edu_i"])
ohe = OneHotEncoder(inputCols=["emp_i", "edu_i"], outputCols=["emp_v", "edu_v"])
vec = VectorAssembler(inputCols=["renda", "valor", "emp_v", "edu_v"], outputCol="features")
gbt = GBTClassifier(labelCol="aprovado")
grid = ParamGridBuilder().addGrid(gbt.maxDepth, [4, 6]).build()
cv = CrossValidator(estimator=Pipeline(stages=[idx, ohe, vec, gbt]), estimatorParamMaps=grid,
                    evaluator=BinaryClassificationEvaluator(labelCol="aprovado"), numFolds=3)
modelo = cv.fit(treino)

Um modelo por grupo: pandas function API

def treina_loja(pdf: pd.DataFrame) -> pd.DataFrame:
    m = LinearRegression().fit(pdf[["promo", "dia"]], pdf["vendas"])
    return pd.DataFrame({"loja": [pdf.loja.iloc[0]], "coef": [m.coef_[0]]})

df.groupBy("loja").applyInPandas(treina_loja, schema="loja string, coef double")

Cada grupo vai para um executor → milhares de modelos pequenos em paralelo.

Tuning distribuído

  • Optuna + MLflow: MlflowSparkStudy com MlflowStorage (experimento do MLflow) distribui os trials pelo cluster e registra cada um.
  • Ray on Spark: setup_ray_cluster(...) + Ray Tune; bom para deep learning, workloads Python não-Spark e paralelismo fino.
  • Ray x Spark: Spark brilha em processamento de dados tabulares; Ray em tarefas Python heterogêneas, RL, tuning e DL.

Escala

  • Vertical (máquina maior/GPU): simples, sem overhead de comunicação, mas tem teto.
  • Horizontal (mais nós): escala para dados enormes, com custo de rede.
  • Paralelismo de dados: cada worker treina com uma fatia dos dados e sincroniza gradientes (modelo cabe na GPU).
  • Paralelismo de modelo: o modelo é dividido entre dispositivos (modelo não cabe numa GPU).

MLflow avançado

with mlflow.start_run(run_name="tuning") as pai:
    for params in grade:
        with mlflow.start_run(nested=True):
            mlflow.log_params(params); mlflow.log_metric("cv_auc", avalia(params))

Modelo customizado com pré-processamento em tempo real: classe mlflow.pyfunc.PythonModel com load_context (carrega artefatos) e predict (calcula features a partir da requisição e chama o modelo).

Feature Store avançada

  • Point-in-time: feature table de séries temporais (timeseries_columns) + FeatureLookup(..., timestamp_lookup_key="ts_evento") → cada exemplo de treino recebe o valor da feature como era naquele momento, sem vazar o futuro.
  • Online: publique a feature table num online store (Lakebase) para lookups em milissegundos no serving.
  • On-demand features: funções Python do UC calculadas na hora da requisição (ex.: distância entre o usuário e a loja), usadas igual no treino e no serving.
  • Streaming: pipelines de streaming atualizam a feature table continuamente.

Pegadinhas comuns

  • Juntar features por chave sem timestamp em séries temporais gera vazamento (o treino 'vê o futuro').
  • MlflowSparkStudy usa MlflowStorage — callback sozinho não distribui os trials.

Documentação:Spark MLOptunaRay na DatabricksPoint-in-time

Seção 2 · 44% · ≈ 26 questões

MLOps

Objetivos oficiais

  • Descrever e implementar os componentes de pipelines de ciclo de vida que gerenciam transições de ambiente na estratégia deploy code.
  • Mapear recursos da Databricks às atividades do ciclo de vida do modelo.
  • Implementar testes unitários de funções em notebooks e identificar os tipos de teste (unitário, integração) em cada ambiente.
  • Projetar testes de integração cobrindo feature engineering, treino, avaliação, deploy e inferência.
  • Comparar formas de organizar funções e testes unitários.
  • Projetar ambientes Databricks escaláveis para projetos de ML e definir ativos de ML com bundles (endpoints, experimentos, modelos registrados).
  • Implementar retreino automático disparado por drift ou queda de desempenho, com estratégia para escolher o melhor modelo.
  • Aplicar testes estatísticos da tabela de drift do Lakehouse Monitoring e avaliar a significância.
  • Escolher o tipo de tabela e o recurso do Lakehouse Monitoring para cada necessidade, e criar monitores para tabelas snapshot, time series ou inference.
  • Identificar componentes de pipelines de monitoramento (logging, drift, desempenho, saúde) e configurar alertas para limites de drift.
  • Detectar drift comparando com uma baseline ou entre janelas de tempo; acompanhar desempenho ao longo do tempo com inference tables.
  • Definir métricas customizadas e avaliar métricas por granularidade e fatias de features.
  • Monitorar a saúde de endpoints: latência, taxa de requisições, erros, CPU e memória.

Deploy code (recomendado)

dev  ──PR──▶  staging (testes de integração com dados de staging)  ──merge──▶  prod
                                          │
            o MESMO código de treino roda em prod com dados de prod e registra o modelo

Componentes: Git + CI, bundles por ambiente, jobs de feature engineering/treino/validação/deploy, registro no UC com aliases, serving e monitoramento.

Mapa do ciclo de vida

AtividadeRecurso
FeaturesFeature Engineering no UC
ExperimentosMLflow tracking
Versionar/promoverModelos no UC + aliases
OrquestrarLakeflow Jobs
ServirModel Serving
MonitorarLakehouse Monitoring + inference tables
Infra como códigoDeclarative Automation Bundles

Para comparar com o modelo de produção sem que ele mude de baixo de você, referencie-o por alias (@champion), não pela "última versão".

Testes

  • Unitário (dev/CI): funções puras de features e pré-processamento, com pytest.
  • Integração (staging): o pipeline todo de ponta a ponta com dados reais de staging.
  • Funções em módulos .py (importáveis) testam melhor que funções dentro de notebooks.
  • Mudou só hiperparâmetros? Reexecute testes de treino, avaliação e deploy — feature engineering não mudou.

Bundles para ML

resources:
  experiments:
    churn_exp: { name: /Shared/churn-${bundle.target} }
  registered_models:
    churn: { catalog_name: ${var.catalogo}, schema_name: ml, name: churn }
  model_serving_endpoints:
    churn_ep:
      name: churn-${bundle.target}
      config:
        served_entities:
          - entity_name: ${var.catalogo}.ml.churn
            entity_version: "3"
            workload_size: Small
            scale_to_zero_enabled: true

Retreino automático

Monitor detecta drift/queda de métrica → alert → job de retreino → avaliação contra o champion no mesmo conjunto de validação com a métrica de negócio certa → se melhor, alias champion move para a nova versão. Escolha da métrica: se a decisão usa limiares de probabilidade (ex.: bloquear acima de 95%), a qualidade da probabilidade importa → log loss.

Lakehouse Monitoring

PerfilTabelaUso
SnapshotEstado completo a cada refreshTabelas de dimensão, cadastro
Time seriesColuna de tempoDados que chegam ao longo do tempo
InferenceRequests + predições (+ rótulos)Qualidade de modelo e drift

Gera duas tabelas: profile metrics (estatísticas por janela/fatia) e drift metrics (testes: KS para numéricas, qui-quadrado para categóricas, distância de Wasserstein, PSI, JS). Baseline = tabela de referência ou janela anterior. Métricas customizadas (agregadas, derivadas, de drift) e slicing por colunas.

Saúde do endpoint

Latência (p50/p99), requisições/s, taxa de erro 4xx/5xx, CPU, memória e concorrência provisionada — na aba de métricas do endpoint e exportáveis.

Pegadinhas comuns

  • get_latest_version pode trazer um modelo que ainda nem foi validado — use alias.
  • Para decisões por limiar de probabilidade, acurácia e F1 ignoram a calibração; log loss não.

Documentação:MLOps workflowsLakehouse MonitoringBundles: recursos de ML

Seção 3 · 12% · ≈ 7 questões

Deploy de modelos

Objetivos oficiais

  • Comparar estratégias de deploy (blue-green, canário) e avaliar sua adequação a aplicações de alto tráfego.
  • Implementar uma estratégia de rollout com Databricks Model Serving.
  • Registrar um modelo PyFunc customizado e artefatos customizados no Unity Catalog.
  • Consultar modelos customizados via REST API ou MLflow Deployments SDK.
  • Implantar modelos customizados com o MLflow Deployments SDK, REST API ou UI.

Estratégias

EstratégiaComoRisco
Blue-greenNovo ambiente completo; troca 100% do tráfego de uma vez (com rollback rápido)Médio: todos os usuários migram juntos
CanárioUma fração pequena do tráfego vai ao novo modelo e aumenta aos poucosBaixo: problema afeta poucos
ShadowNovo modelo recebe cópia do tráfego, resposta não é usadaNenhum para o usuário

No Model Serving: dois served entities no mesmo endpoint com traffic split (ex.: 95/5 → 80/20 → 0/100), escala horizontal (scale-out) e route optimization para alta vazão.

PyFunc customizado

class Modelo(mlflow.pyfunc.PythonModel):
    def load_context(self, context):
        self.vocab = json.load(open(context.artifacts["vocab"]))
        self.m = joblib.load(context.artifacts["modelo"])
    def predict(self, context, model_input):
        return self.m.predict(prepara(model_input, self.vocab))

mlflow.pyfunc.log_model("model", python_model=Modelo(),
    artifacts={"vocab": "vocab.json", "modelo": "modelo.pkl"},
    registered_model_name="main.ml.classificador", input_example=exemplo)

Consultar

from mlflow.deployments import get_deploy_client
client = get_deploy_client("databricks")
client.predict(endpoint="churn", inputs={"dataframe_records": registros})

O SDK cuida da autenticação e do formato. Também dá para criar/atualizar endpoints (client.create_endpoint), pela REST API ou pela UI.

Pegadinhas comuns

  • Trocar o tráfego de 0 para 100% de uma vez não é canário: o risco é máximo.

Documentação:Model ServingCustom models

Treinamentos recomendados pela Databricks

  • Instrutor/Academy: Machine Learning at Scale
  • Instrutor/Academy: Advanced Machine Learning Operations
Guia do exame Machine Learning Professional · Lucas Lessa