<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Machine Learning topics</title>
    <link>https://community.databricks.com/t5/machine-learning/bd-p/machine-learning</link>
    <description>Machine Learning topics</description>
    <pubDate>Wed, 09 Sep 2026 23:59:18 GMT</pubDate>
    <dc:creator>machine-learning</dc:creator>
    <dc:date>2026-09-09T23:59:18Z</dc:date>
    <item>
      <title>Tuning with Optuna and MlflowSparkStudy</title>
      <link>https://community.databricks.com/t5/machine-learning/tuning-with-optuna-and-mlflowsparkstudy/m-p/167830#M4698</link>
      <description>&lt;P&gt;I am following the guide for tuning a model with Optuna and MlflowSparkStudy. My compute is configured with autoscaling enabled, with 1–2 Spark workers, each with 8 cores and 32 GB of memory. I set n_jobs=2 and trials=100, in &lt;STRONG&gt;mlflow_study.optimize()&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;I have a few questions about how MlflowSparkStudy distributes the workload:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;How should I think about n_jobs in mlflow_study.optimize() vs. num_threads/n_jobs in LightGBM?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;For example, with 1–2 Spark workers and 8 cores per worker, would it make sense to set mlflow_study.optimize(n_jobs=2) and LightGBM n_jobs=7? My dataset is large, so ideally I would like to run only &lt;STRONG&gt;one model-training job per Spark worker&lt;/STRONG&gt; and use the remaining cores on that worker for the LightGBM training.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;Does MlflowSparkStudy automatically trigger or make use of Spark autoscaling?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;If I configure my cluster with a minimum of 1 worker and a maximum of 2 workers, will MlflowSparkStudy cause Spark to scale up to 2 workers as needed when running multiple trials in parallel?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;&lt;STRONG&gt;What is the recommended way to make a large DataFrame available to each Spark worker?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Currently, I have a Pandas DataFrame that I pass to the objective function used by mlflow_study.optimize(). Should I broadcast the DataFrame, cache it in Spark, or use another approach to avoid repeatedly transferring the data to each worker for every trial?&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Any guidance on the recommended configuration or best practices would be greatly appreciated.&lt;/P&gt;&lt;P&gt;#mlflow #optuna #&lt;SPAN&gt;MlflowSparkStudy&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://learn.microsoft.com/en-us/azure/databricks/machine-learning/automl-hyperparam-tuning/optuna" target="_self"&gt;https://learn.microsoft.com/en-us/azure/databricks/machine-learning/automl-hyperparam-tuning/optuna&lt;/A&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 07 Sep 2026 19:24:05 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/tuning-with-optuna-and-mlflowsparkstudy/m-p/167830#M4698</guid>
      <dc:creator>AdamIH123</dc:creator>
      <dc:date>2026-09-07T19:24:05Z</dc:date>
    </item>
    <item>
      <title>fastai import in databricks broken</title>
      <link>https://community.databricks.com/t5/machine-learning/fastai-import-in-databricks-broken/m-p/167548#M4689</link>
      <description>&lt;P&gt;Has anyone else had a problem today (2026-09-04) with imports from fastai?&lt;/P&gt;&lt;P&gt;The error message points to a problem with the underlying fastcore package:&lt;/P&gt;&lt;LI-CODE lang="python"&gt;AttributeError: 'Function' object attribute '__doc__' is read-only&lt;/LI-CODE&gt;&lt;P&gt;I'm getting the same error using fastai versions 2.8.5 and 2.8.8.&lt;/P&gt;&lt;P&gt;The only change I can see is in the compute event logs, my 'Compute is using release 18.3.6' compared to 18.3.5 yesterday.&lt;/P&gt;</description>
      <pubDate>Fri, 04 Sep 2026 14:47:47 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/fastai-import-in-databricks-broken/m-p/167548#M4689</guid>
      <dc:creator>barnabywalker</dc:creator>
      <dc:date>2026-09-04T14:47:47Z</dc:date>
    </item>
    <item>
      <title>Difference between Workspace and Unity Catalog experiments when using MLflow autologging?</title>
      <link>https://community.databricks.com/t5/machine-learning/difference-between-workspace-and-unity-catalog-experiments-when/m-p/167254#M4682</link>
      <description>&lt;DIV class=""&gt;&lt;DIV&gt;&lt;SPAN&gt;Hi everyone,&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;I am trying to understand the exact differences between using Workspace experiments versus Unity Catalog experiments, specifically in the context of MLflow autologging (mlflow.autolog()).&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;Does autologging behave differently depending on whether the experiment is registered in the Workspace or in Unity Catalog (using a 3-level namespace)? Are there any limitations, best practices, or specific configurations I should be aware of when using autologging with Unity Catalog compared to the traditional Workspace setup?&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;Any insights or documentation links would be greatly appreciated. Thanks!&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 02 Sep 2026 08:44:13 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/difference-between-workspace-and-unity-catalog-experiments-when/m-p/167254#M4682</guid>
      <dc:creator>kunduruanil</dc:creator>
      <dc:date>2026-09-02T08:44:13Z</dc:date>
    </item>
    <item>
      <title>Model Serving An internal error occurred during feature store lookup all deploys failing</title>
      <link>https://community.databricks.com/t5/machine-learning/model-serving-an-internal-error-occurred-during-feature-store/m-p/166601#M4677</link>
      <description>&lt;P&gt;&lt;BR /&gt;We can't deploy models to Model Serving. Failures started around 2026-08-16 and were intermittent at first — our current production config deployed cleanly on 08-20 — but since then every attempt fails at the feature store lookup setup step, with no diagnostics we can find anywhere. Hoping someone has seen this.&lt;/P&gt;&lt;P&gt;Failure mode 1 — fails after linking everything&lt;/P&gt;&lt;P&gt;Endpoint events look like this every time:&lt;/P&gt;&lt;P&gt;Endpoint updated by &amp;lt;user&amp;gt;&lt;BR /&gt;[25-34x] Linked with Databricks Online Store table ...&lt;BR /&gt;System service principal creation with ID `&amp;lt;uuid&amp;gt;` succeeded&lt;BR /&gt;System role ... created successfully for Online Feature Store `&amp;lt;store&amp;gt;/production`&lt;BR /&gt;An internal error occurred during feature store lookup setup &amp;lt;-- ~31-126s later&lt;BR /&gt;Served entity `&amp;lt;model&amp;gt;` entered DEPLOYMENT_FAILED&lt;/P&gt;&lt;P&gt;Served entity message: Online feature store setup failed. Please see event logs for...&lt;/P&gt;&lt;P&gt;It never reaches "Provisioning resources". serving-endpoints logs returns "There are currently no replicas in a running state", and build logs show a clean container build. So no user code ever runs and there is no traceback on our side.&lt;/P&gt;&lt;P&gt;The same model on the same 25 tables also showt fails. Nothing changed on our side betweenthese two deploys:&lt;BR /&gt;- 08-20, succeeded: update to system service principal created in 40 seconds, DEPLOYMENT_READY after 4m49s total.&lt;BR /&gt;- 08-27, failed: update to system service principal created in 8m27s, internal error at 9m52s.&lt;/P&gt;&lt;P&gt;Failure mode 2 — update hangs in pending with zero events&lt;BR /&gt;Separately, some updates never fail or progres a pending_config in DEPLOYMENT_CREATING, served entity message Creating resources for served entity, and no events are emitted at all — not even a single Linked with Databricks Online Store table line. We've left these running for 4h48m and 2h18m before cancelling by hand. Six consecutive attempts on one endpoint, zero tables linked on any of them.&lt;/P&gt;&lt;P&gt;Two things about this that may be relevant:&lt;/P&gt;&lt;P&gt;- One variant involved an online store whose Lakebase project was created through the Lakebase UI rather than create_online_store. publish_table against it succeeded, the online tables are ACTIVE and syncing, but no endpoint has ever linked a single one of them. The project does not appear in fe.list_online_stores(), which the docs say is expected for UI-created projects.&lt;BR /&gt;- A wedged update degrades everything else. With two stuck updates still pending, table linking on unrelated endpoints took 49–76 minutes; on a clear queue the same work takes under 90 seconds. This makes failures look far more random than they are, so we now cancel every failed or stuck update before measuring anything.&lt;/P&gt;&lt;P&gt;Setup&lt;/P&gt;&lt;P&gt;- ~34 feature tables with FeatureLookup, logged via FeatureEngineeringClient.log_model&lt;BR /&gt;- Online Feature Store created 2025-10-20 as Lakebase Provisioned, CU_1. Per the upgrade docs, all Provisioned instances were migrated to the Autoscaling platform in July 2026; the Database instance API still reports ours as capacity: CU_1, PG_VERSION_16 - Online tables are SYNCED_TABLE_ONLINE_NO_PENnity_catalog_provisioning_state: ACTIVE, syncingnormally&lt;BR /&gt;- Container resolves databricks-feature-lookup==1.* → 1.14.0, with mlflow==3.0.0 - databricks-feature-engineering==0.13.0 for p&lt;/P&gt;&lt;P&gt;Already ruled out (please don't suggest these)&lt;/P&gt;&lt;P&gt;- FEATURE_SERVING_CONNECTION_POOL_SIZE does not fix this. We tried 2, 3, 4 and&amp;nbsp;10. Deploys failed at every value, and the values that once looked promising were jusmade no difference.&lt;BR /&gt;- Not table count — a 25-table model that deployed cleanly on 08-20 now fails identically. 34-table models fail the same way.&lt;BR /&gt;- Not the model artifact — the same model version deployed fine on one endpoint while failing on another, with byte-identical build logs.&lt;BR /&gt;- Not tables unpublished / source_table_id mismatch — the two documented causes of "No suitable online store found for feature tables". We get a different, unnamed error and no table is ever named in it.&lt;BR /&gt;- Not concurrent sync — we checked every sync pipeline against a failure window. The sync wave started two minutes after the failure; nothing was syncing during the deploy.&lt;BR /&gt;- Not catalog/database name mismatch — catalog name and effective_logical_database_name match.&lt;BR /&gt;- Not connection capacity — max_connections 1802, ~124 in use, role rolconnlimit -1.&lt;BR /&gt;- Not scale-to-zero — docs confirm it isn't enabled by default on upgraded instances.&lt;BR /&gt;- Not grants, schemas, or keys — offline and online schemas match, PKs non-null, timeseries keys set, grants identical between tables that work and tables that don't.&lt;BR /&gt;- Not a documented limit — 50 tables allowed per model, we use&amp;nbsp;34. FeatureSpec well under the 1000-feature cap.&lt;BR /&gt;- Not DBR version, workload size, or container libraries.&lt;/P&gt;&lt;P&gt;The only two failures that left an audit trace&lt;/P&gt;&lt;P&gt;Across dozens of failures, exactly two show anything in system.access.audit (action_name='getOnlineFeatureTables', non-200 status):&lt;/P&gt;&lt;P&gt;RESOURCE_EXHAUSTED: You've exceeded the rate limit&lt;BR /&gt;INTERNAL_ERROR: Failed to fetch database instance with ID &amp;lt;online-store-instance-uuid&amp;gt; Every other failure produces no audit row at areTables call surrounding them returns 200. Sowhatever fails does not write to the audit table.&lt;/P&gt;&lt;P&gt;Questions&lt;BR /&gt;1. The one traced error we have is Failed to fetch database instance with ID ..., which is the UUID of our online stor— an instance that per the docs was migrated faling in July. We are not claiming the upgradebroke this, since deploys worked fine for week error expected against an upgraded instance,and could the lookup setup path resolve it inconsistently?&lt;BR /&gt;2. Is An internal error occurred during feature store lookup setup a catch-all? Is there any log surface that cits real cause, given it produces no replica l3. For failure mode 2 — is there any way to sewhen it emits no events? And is there asupported way to detect a wedged update, short of waiting hours and cancelling manually? 4. We see 289 orphaned Postgres roles in the omed role per deploy attempt, never reclaimedwhen a served entity or endpoint config is tor Lakebase Autoscaling has a 500-roles-per-branch limit that Provisioned did not. Is this accumulation expected, and is manual cleanup safe while an endpoint is serving?&lt;BR /&gt;5. Has anyone recovered from this? Or is standonline store with create_online_store andrepublishing everything the only route?&lt;/P&gt;</description>
      <pubDate>Thu, 27 Aug 2026 12:57:49 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/model-serving-an-internal-error-occurred-during-feature-store/m-p/166601#M4677</guid>
      <dc:creator>ticusss</dc:creator>
      <dc:date>2026-08-27T12:57:49Z</dc:date>
    </item>
    <item>
      <title>Image Annotation</title>
      <link>https://community.databricks.com/t5/machine-learning/image-annotation/m-p/166288#M4674</link>
      <description>&lt;UL class=""&gt;&lt;OL class="lia-align-left"&gt;What is Image Annotation?&lt;/OL&gt;&lt;/UL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;What are the Steps of Image Annotation?&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;What are the Different Techniques of Image Annotation?&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;Types Used in Image Annotation&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;How are Companies Handling Image Annotation?&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;Features to Look for in Image Annotation Service Providers&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;Common Image Annotation Use Cases&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;High‑Performance Image Annotation Tools&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;Factors Influencing Pricing of Image Annotation for AI/ML Projects&lt;/OL&gt;&lt;/OL&gt;&lt;OL class="lia-align-left"&gt;&lt;OL class=""&gt;Top 10 Image Annotation &amp;amp; Labeling Service Providers in 2026&lt;/OL&gt;&lt;/OL&gt;&lt;OL class=""&gt;&lt;OL class="lia-align-left"&gt;Future Trends in Image Annotation&lt;/OL&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 24 Aug 2026 09:22:11 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/image-annotation/m-p/166288#M4674</guid>
      <dc:creator>ben_ai</dc:creator>
      <dc:date>2026-08-24T09:22:11Z</dc:date>
    </item>
    <item>
      <title>Vector Store update stale in Syncing status even the actual sync task is done.</title>
      <link>https://community.databricks.com/t5/machine-learning/vector-store-update-stale-in-syncing-status-even-the-actual-sync/m-p/166002#M4671</link>
      <description>&lt;P&gt;&lt;SPAN&gt;VS status remains &lt;/SPAN&gt;"syncing"&lt;SPAN&gt; indefinitely — rechecked after 12 hours, status still &lt;/SPAN&gt;"syncing"&lt;SPAN&gt;. The Databricks job completes successfully and the new data &lt;/SPAN&gt;&lt;STRONG&gt;is &lt;/STRONG&gt;&lt;SPAN&gt;queryable:&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 19 Aug 2026 18:06:47 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/vector-store-update-stale-in-syncing-status-even-the-actual-sync/m-p/166002#M4671</guid>
      <dc:creator>airbots</dc:creator>
      <dc:date>2026-08-19T18:06:47Z</dc:date>
    </item>
    <item>
      <title>ML Training low File I/O and Throughout</title>
      <link>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</link>
      <description>&lt;P&gt;Hi everyone,&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;I have an image-based deep learning workload running on Azure Databricks, while the training dataset must remain in AWS S3 due to some constraints. We cannot move or replicate the dataset to Azure.&lt;BR /&gt;Our current architecture is roughly:&lt;BR /&gt;&lt;STRONG&gt;AWS S3 (images) → Unity Catalog Volume → Azure Databricks GPU compute → PyTorch training&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;The main issue we're seeing is very high file &lt;STRONG&gt;I/O latency and relatively low training throughput&lt;/STRONG&gt;. Since the dataset contains a large number of individual image files, reading the images through the UC Volume appears to involve significant network overhead and many individual file reads.&lt;BR /&gt;I initially expected &lt;STRONG&gt;Mosaic Streaming / StreamingDatase&lt;/STRONG&gt;t to improve this because the dataset can be converted into MDS shards and the shards can be downloaded progressively to local storage while training continues.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;However, interestingly, in our testing:&lt;BR /&gt;Direct image loading from the &lt;STRONG&gt;UC Volume is currently faster than Mosaic Streaming.&lt;/STRONG&gt;&lt;BR /&gt;I'm trying to understand whether we are missing an important configuration or whether the cross-cloud architecture itself is the primary bottleneck.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;STRONG&gt;A few questions&lt;/STRONG&gt;:&lt;BR /&gt;1. What is the recommended architecture for training on S3 data from Azure Databricks when the data cannot be moved to Azure?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;2. For Mosaic Streaming, what are the recommended values/strategies for:&lt;BR /&gt;shard size&lt;BR /&gt;num_workers&lt;BR /&gt;predownload&lt;BR /&gt;cache_limit&lt;BR /&gt;shuffle configuration&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;3. Is there an optimal MDS shard size for image datasets to minimize S3/network overhead?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;4. Would increasing DataLoader workers and prefetching significantly improve throughput in this cross-cloud scenario?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;5. Would it be better to use local caching of UC Volume files instead of Mosaic Streaming for a multi-epoch image training workload?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;6. Are there any Databricks-recommended approaches for measuring whether the bottleneck is S3 → Azure network bandwidth, file-level latency, CPU image decoding, or GPU starvation?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Our main objective is to maximize GPU utilization and training throughput without moving the source dataset out of S3.&lt;BR /&gt;Any recommendations, benchmarks, or reference architectures for this type of cross-cloud training setup would be greatly appreciated&lt;/P&gt;</description>
      <pubDate>Mon, 17 Aug 2026 18:55:08 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/ml-training-low-file-i-o-and-throughout/m-p/165843#M4665</guid>
      <dc:creator>aswinkks</dc:creator>
      <dc:date>2026-08-17T18:55:08Z</dc:date>
    </item>
    <item>
      <title>End-to-End Streaming NLP Pipeline with GDELT, Azure Data Factory, ADLS Gen2 and Databricks</title>
      <link>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165633#M4662</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;I have been working on a project to understand Databricks end to end, rather than just loading some data and training a model.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I picked &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;GDELT news data&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; and the use case is to identify supply chain disruption related news and eventually predict which events could escalate.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I started by using &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;ADF to pull GDELT GKG files&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; and store the original ZIP files in ADLS.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Initially I did this with a single hardcoded file. Later I parameterized the pipeline, started reading the latest GDELT file information dynamically and added checks so the same file doesn't get ingested again.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;One thing I intentionally did was to keep ADF mostly for &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;data movement&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, instead of doing transformations there.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Once the files were available in ADLS, I connected the storage with Databricks using &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Managed Identity + Access Connector + Unity Catalog external locations/volumes&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Then came the part which I really wanted to learn — &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;Auto Loader and Structured Streaming&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;ADLS landing files are streamed into a Bronze Delta table. Bronze is intentionally almost raw and also stores things like source filename, ingestion timestamp and source path.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I created a separate &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;checkpoint location&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; for this stream.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;This was probably one of the most useful things I learnt because earlier checkpoint was just another Spark term for me. After actually stopping the stream, starting it again and seeing that previously processed files were not processed again, it made much more sense.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;From Bronze I created another stream going into Silver.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Here I parse the GDELT records and create proper article level fields like title, published time, URL, domain, themes, organisations, locations, tone etc.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;So now if a new file arrives in ADLS, it can move through:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;Auto Loader → Bronze → Silver&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; incrementally.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;For the ML side, I created a versioned dataset from Silver.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I am starting with &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;TF-IDF + Logistic Regression as a baseline&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;, but I don't want the NLP part to stop there. The plan is to compare it with transformer models like DistilBERT/DeBERTa, embeddings, NER and eventually story clustering.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;For expensive training/HPO I am also experimenting with cheaper GPU compute outside Databricks instead of unnecessarily keeping Databricks compute running for hours.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;But the model comes back to Databricks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;That is where I want to use &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;MLflow, Unity Catalog Model Registry, model versions and production inference&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;The final goal is that whenever a new GDELT file comes:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;new article → Bronze → Silver → registered model → prediction.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Predictions will be stored in Delta/Gold tables and also written back to an &lt;/SPAN&gt;&lt;STRONG&gt;&lt;SPAN&gt;ADLS backed location&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; so other systems outside Databricks can consume them.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Still a lot left to build, specially around embeddings, clustering and escalation prediction, but this project has already changed how I look at ML projects.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Earlier I mostly thought:&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;SPAN&gt;data → model → prediction&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Now I'm thinking more about ingestion, checkpoints, replayability, governance, model lifecycle and how the prediction actually runs when new data comes in.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Would love to hear from people working with Databricks — anything you would design differently in this architecture?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#Databricks #Azure #ADF #ADLS #PySpark #StructuredStreaming #AutoLoader #DeltaLake #UnityCatalog #MLflow #NLP #MLOps #GDELT&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 16:31:55 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165633#M4662</guid>
      <dc:creator>kartheek_rao</dc:creator>
      <dc:date>2026-08-13T16:31:55Z</dc:date>
    </item>
    <item>
      <title>End-to-End Streaming NLP Pipeline with GDELT, Azure Data Factory, ADLS Gen2 and Databricks</title>
      <link>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165627#M4661</link>
      <description>&lt;H1&gt;Building an End-to-End Streaming NLP Pipeline with GDELT, Azure Data Factory, ADLS Gen2 and Databricks&lt;/H1&gt;&lt;P&gt;I recently worked on an end-to-end streaming NLP project using &lt;STRONG&gt;GDELT news data&lt;/STRONG&gt;, Azure Data Factory, ADLS Gen2 and Azure Databricks.&lt;/P&gt;&lt;P&gt;The goal was not just to train an NLP model. I wanted to understand the complete lifecycle:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;external data ingestion → durable cloud storage → streaming ingestion → Bronze/Silver processing → NLP training and HPO → model registration → streaming inference → predictions → ADLS&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The architecture evolved into:&lt;/P&gt;&lt;PRE&gt;GDELT
  ↓
Azure Data Factory
  ↓
ADLS Gen2
  ├── raw/compressed
  └── landing/extracted
  ↓
Unity Catalog External Location / Volume
  ↓
Databricks Auto Loader
  ↓
Bronze Delta
  ↓
Structured Streaming
  ↓
Silver Delta
  ↓
NLP Training + HPO
  ↓
MLflow / Unity Catalog Model Registry
  ↓
Streaming Model Inference
  ↓
Prediction Delta Tables
  ↓
ADLS Gen2&lt;/PRE&gt;&lt;H2&gt;1. Acquiring GDELT data&lt;/H2&gt;&lt;P&gt;GDELT publishes multiple datasets at regular intervals, including:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Events&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Event Mentions&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Global Knowledge Graph — GKG&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;For the NLP component, I started with the &lt;STRONG&gt;GKG dataset&lt;/STRONG&gt;, because it provides useful article-level metadata such as:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;article URL&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;themes&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;organizations&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;people&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;locations&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;tone&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;article title through the GKG Extras field&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Instead of making Databricks responsible for downloading data from the internet, I separated the acquisition layer from the processing layer.&lt;/P&gt;&lt;P&gt;I used &lt;STRONG&gt;Azure Data Factory&lt;/STRONG&gt; for acquisition.&lt;/P&gt;&lt;P&gt;The initial flow was:&lt;/P&gt;&lt;PRE&gt;GDELT HTTP endpoint
       ↓
ADF Binary Copy
       ↓
ADLS Gen2&lt;/PRE&gt;&lt;P&gt;I first tested the architecture with one GKG file.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;20260802103000.gkg.csv.zip&lt;/PRE&gt;&lt;P&gt;ADF copied the original compressed file into:&lt;/P&gt;&lt;PRE&gt;raw/compressed/gkg/
ingestion_date=YYYY-MM-DD/&lt;/PRE&gt;&lt;P&gt;The original ZIP was deliberately preserved.&lt;/P&gt;&lt;P&gt;This became important later because it gave the pipeline:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;replayability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;traceability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;debugging capability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;separation between acquisition and transformation&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ADF then decompressed the ZIP into:&lt;/P&gt;&lt;PRE&gt;landing/extracted/gkg/
ingestion_date=YYYY-MM-DD/&lt;/PRE&gt;&lt;P&gt;The guiding principle was:&lt;/P&gt;&lt;PRE&gt;ADF = acquire and land
ADLS = preserve
Databricks = process and model&lt;/PRE&gt;&lt;H2&gt;2. Making ADF ingestion dynamic&lt;/H2&gt;&lt;P&gt;The first pipeline used a fixed GDELT filename.&lt;/P&gt;&lt;P&gt;After proving that one file could move successfully from GDELT to ADLS, I parameterized the pipeline.&lt;/P&gt;&lt;P&gt;I added parameters for:&lt;/P&gt;&lt;PRE&gt;file_name
ingestion_date
expected_size
checksum&lt;/PRE&gt;&lt;P&gt;Then I used GDELT's latest-file information to automatically identify the newest GKG file.&lt;/P&gt;&lt;P&gt;ADF performed:&lt;/P&gt;&lt;PRE&gt;Lookup latest GDELT metadata
        ↓
Filter GKG entry
        ↓
Extract filename
        ↓
Derive ingestion date
        ↓
Check whether file already exists
        ↓
Ingest only if new&lt;/PRE&gt;&lt;P&gt;This introduced an important engineering property:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;idempotency.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Rerunning the pipeline would not continually ingest the same file.&lt;/P&gt;&lt;H2&gt;3. Simulating streaming without running 24×7&lt;/H2&gt;&lt;P&gt;Because this was a learning project, I did not want to keep cloud compute running continuously.&lt;/P&gt;&lt;P&gt;Instead, I created controlled streaming sessions.&lt;/P&gt;&lt;P&gt;The ADF pipeline was configured to collect approximately three consecutive GDELT files.&lt;/P&gt;&lt;P&gt;Conceptually:&lt;/P&gt;&lt;PRE&gt;File 1
  ↓
Wait
  ↓
File 2
  ↓
Wait
  ↓
File 3
  ↓
Stop&lt;/PRE&gt;&lt;P&gt;The session used:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;an Until loop&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;a target-file count&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Wait activities&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;file-existence checks&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;a maximum session timeout&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This allowed me to learn near-real-time ingestion while keeping infrastructure costs under control.&lt;/P&gt;&lt;H2&gt;4. Connecting ADLS securely to Databricks&lt;/H2&gt;&lt;P&gt;Instead of using storage keys or legacy DBFS mounts, I connected ADLS using:&lt;/P&gt;&lt;PRE&gt;Databricks Access Connector
        ↓
Managed Identity
        ↓
Unity Catalog Storage Credential
        ↓
External Location
        ↓
External Volume&lt;/PRE&gt;&lt;P&gt;This exposed the ADLS landing data through a governed path such as:&lt;/P&gt;&lt;PRE&gt;/Volumes/gdelt_dev/raw/gdelt_landing/&lt;/PRE&gt;&lt;P&gt;One of the most useful concepts I learned here was that /Volumes/... is a Databricks governed view over the underlying cloud storage.&lt;/P&gt;&lt;P&gt;The physical data still lives in ADLS.&lt;/P&gt;&lt;H2&gt;5. Streaming ADLS files into Bronze using Auto Loader&lt;/H2&gt;&lt;P&gt;The next layer was Databricks Auto Loader.&lt;/P&gt;&lt;PRE&gt;ADLS landing
      ↓
Unity Catalog Volume
      ↓
cloudFiles
      ↓
Structured Streaming
      ↓
Bronze Delta&lt;/PRE&gt;&lt;P&gt;I deliberately kept Bronze close to the source.&lt;/P&gt;&lt;P&gt;Instead of doing all business parsing immediately, the Bronze table stored:&lt;/P&gt;&lt;PRE&gt;raw_record
source_file_name
source_file_path
source_file_size
source_file_modification_time
ingested_at
ingestion_date&lt;/PRE&gt;&lt;P&gt;Auto Loader used a dedicated checkpoint:&lt;/P&gt;&lt;PRE&gt;checkpoints/bronze_gkg/&lt;/PRE&gt;&lt;P&gt;and a separate schema location.&lt;/P&gt;&lt;P&gt;The checkpoint became one of the most important concepts in the project.&lt;/P&gt;&lt;P&gt;It allows the stream to remember:&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P&gt;Which source files have already been successfully processed?&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;I could stop the Databricks cluster, restart it later and use the same checkpoint.&lt;/P&gt;&lt;P&gt;The stream continued from its previous progress rather than starting from scratch.&lt;/P&gt;&lt;H2&gt;6. Bronze to Silver streaming&lt;/H2&gt;&lt;P&gt;Once the raw GKG records were reliably landing in Bronze, I created another Structured Streaming pipeline:&lt;/P&gt;&lt;PRE&gt;Bronze Delta
    ↓
readStream
    ↓
GKG parsing
    ↓
cleaning
    ↓
Silver Delta&lt;/PRE&gt;&lt;P&gt;The GKG records were tab-delimited.&lt;/P&gt;&lt;P&gt;In Silver I parsed the useful fields and produced article-level features such as:&lt;/P&gt;&lt;PRE&gt;article_id
published_at
article_url
source_domain
title
tone
themes
organizations
persons
locations&lt;/PRE&gt;&lt;P&gt;The article title was extracted from the GKG Extras field.&lt;/P&gt;&lt;P&gt;Silver also performed operations such as:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;timestamp conversion&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;URL/domain extraction&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;HTML title decoding&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;theme preparation&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;exact duplicate checks&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;malformed-record filtering&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Importantly, Silver used a &lt;STRONG&gt;different checkpoint&lt;/STRONG&gt; from Bronze.&lt;/P&gt;&lt;P&gt;So the architecture had independent state:&lt;/P&gt;&lt;PRE&gt;ADLS → Bronze checkpoint

Bronze → Silver checkpoint&lt;/PRE&gt;&lt;P&gt;At this stage I had a genuine multi-hop streaming architecture:&lt;/P&gt;&lt;PRE&gt;ADF lands file
      ↓
Auto Loader detects it
      ↓
Bronze updates
      ↓
Silver streaming query detects new Bronze rows
      ↓
Silver updates&lt;/PRE&gt;&lt;H2&gt;7. Preparing the NLP dataset&lt;/H2&gt;&lt;P&gt;From Silver I created an NLP-oriented profile dataset containing fields such as:&lt;/P&gt;&lt;PRE&gt;article_id
published_at
article_url
source_domain
title
title_normalized
tone
themes_clean
organizations
persons
locations&lt;/PRE&gt;&lt;P&gt;A versioned snapshot was then created for reproducibility.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;article_nlp_profile_v001&lt;/PRE&gt;&lt;P&gt;I exported this snapshot as Parquet into a dedicated ADLS ML exchange area:&lt;/P&gt;&lt;PRE&gt;ml_exchange/
└── relevance/
    ├── datasets/
    └── models/&lt;/PRE&gt;&lt;P&gt;This provided a clean boundary between the governed Databricks data platform and the training environment.&lt;/P&gt;&lt;H2&gt;8. NLP modelling strategy&lt;/H2&gt;&lt;P&gt;I deliberately did not jump directly to BERT.&lt;/P&gt;&lt;P&gt;I structured the modelling as a progression.&lt;/P&gt;&lt;H3&gt;Baseline&lt;/H3&gt;&lt;PRE&gt;Title
 ↓
TF-IDF
 ↓
Logistic Regression&lt;/PRE&gt;&lt;P&gt;The purpose of the baseline was not to create the final model.&lt;/P&gt;&lt;P&gt;It established a benchmark.&lt;/P&gt;&lt;P&gt;Any more complicated transformer model needed to demonstrate that the additional complexity provided measurable value.&lt;/P&gt;&lt;H3&gt;Deep NLP&lt;/H3&gt;&lt;P&gt;The next models used pretrained transformer encoders for supply-chain relevance classification.&lt;/P&gt;&lt;P&gt;The progression included experiments such as:&lt;/P&gt;&lt;PRE&gt;TF-IDF
   ↓
DistilBERT
   ↓
DeBERTa / modern encoder models&lt;/PRE&gt;&lt;P&gt;The classification target was conceptually:&lt;/P&gt;&lt;PRE&gt;1 = supply-chain disruption
0 = not a supply-chain disruption&lt;/PRE&gt;&lt;P&gt;The project was designed to eventually extend beyond binary classification into:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;disruption-category classification&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;named entity recognition&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;semantic embeddings&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;duplicate detection&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;story clustering&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;escalation prediction&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;H2&gt;9. Training and Hyperparameter Optimization&lt;/H2&gt;&lt;P&gt;An important architectural decision was not to make the expensive training environment the centre of the platform.&lt;/P&gt;&lt;P&gt;Databricks remained the system of record.&lt;/P&gt;&lt;P&gt;Training/HPO could use lower-cost external GPU compute where appropriate.&lt;/P&gt;&lt;P&gt;The pattern became:&lt;/P&gt;&lt;PRE&gt;Databricks
 ↓
Versioned training dataset
 ↓
ADLS ML Exchange
 ↓
GPU training/HPO
 ↓
Best model artefact
 ↓
ADLS
 ↓
Databricks&lt;/PRE&gt;&lt;P&gt;For HPO I focused on parameters that materially affect transformer performance, for example:&lt;/P&gt;&lt;PRE&gt;learning rate
batch size
epochs
weight decay
warmup ratio
max sequence length&lt;/PRE&gt;&lt;P&gt;Model selection used more than accuracy.&lt;/P&gt;&lt;P&gt;For an early-warning problem, metrics such as these are more useful:&lt;/P&gt;&lt;PRE&gt;Precision
Recall
F1
PR-AUC
Precision@K
Recall@K&lt;/PRE&gt;&lt;H2&gt;10. Bringing the model back into Databricks&lt;/H2&gt;&lt;P&gt;The best model was not left in the training notebook.&lt;/P&gt;&lt;P&gt;The model artefact, configuration and evaluation metadata were returned to Databricks.&lt;/P&gt;&lt;P&gt;The model bundle included information such as:&lt;/P&gt;&lt;PRE&gt;model
best parameters
validation metrics
dataset version
feature schema
library requirements
training notes&lt;/PRE&gt;&lt;P&gt;Then Databricks became responsible again for the production lifecycle:&lt;/P&gt;&lt;PRE&gt;Best model
   ↓
MLflow
   ↓
Model evaluation
   ↓
Unity Catalog Model Registry
   ↓
Champion model&lt;/PRE&gt;&lt;P&gt;This separation was intentional.&lt;/P&gt;&lt;P&gt;Training compute could be disposable.&lt;/P&gt;&lt;P&gt;The governed model lifecycle remained in Databricks.&lt;/P&gt;&lt;H2&gt;11. Driving streaming predictions&lt;/H2&gt;&lt;P&gt;This was the point where the data-engineering and ML parts of the project came together.&lt;/P&gt;&lt;P&gt;The production inference path became:&lt;/P&gt;&lt;PRE&gt;New GDELT file
      ↓
ADF
      ↓
ADLS
      ↓
Auto Loader
      ↓
Bronze
      ↓
Silver
      ↓
Registered ML model
      ↓
Prediction&lt;/PRE&gt;&lt;P&gt;For every newly processed article, the model generates something conceptually similar to:&lt;/P&gt;&lt;PRE&gt;article_id
prediction_timestamp
model_version
relevance_probability
predicted_label&lt;/PRE&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;Title:
"Port workers announce nationwide strike"

Supply-chain disruption probability:
0.94

Prediction:
Relevant&lt;/PRE&gt;&lt;P&gt;Only relevant articles need to continue into more expensive downstream NLP:&lt;/P&gt;&lt;PRE&gt;Relevant article
      ↓
Disruption category
      ↓
Entity extraction
      ↓
Embeddings
      ↓
Semantic duplicate detection
      ↓
Story clustering&lt;/PRE&gt;&lt;P&gt;This is also useful for cost optimization because expensive NLP is performed only on the subset of records that passes the relevance model.&lt;/P&gt;&lt;H2&gt;12. Persisting predictions back into ADLS&lt;/H2&gt;&lt;P&gt;Predictions are first written into governed Delta tables.&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;gdelt_dev.ml.article_relevance_predictions&lt;/PRE&gt;&lt;P&gt;or later:&lt;/P&gt;&lt;PRE&gt;gdelt_dev.gold.active_alerts&lt;/PRE&gt;&lt;P&gt;The output contains both prediction data and lineage:&lt;/P&gt;&lt;PRE&gt;article_id
source_file
prediction_timestamp
model_name
model_version
probability
predicted_class
processing_run_id&lt;/PRE&gt;&lt;P&gt;Where external Azure consumers require the prediction output, the data can then be exported through a Unity Catalog External Volume backed by ADLS:&lt;/P&gt;&lt;PRE&gt;Databricks Delta prediction
        ↓
Gold/serving transformation
        ↓
External Volume
        ↓
ADLS&lt;/PRE&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;PRE&gt;abfss://gdelt@&amp;lt;storage-account&amp;gt;.dfs.core.windows.net/
predictions/relevance/&lt;/PRE&gt;&lt;P&gt;This completes the round trip:&lt;/P&gt;&lt;PRE&gt;GDELT
 ↓
Azure
 ↓
Databricks
 ↓
Machine Learning
 ↓
Databricks predictions
 ↓
Azure&lt;/PRE&gt;&lt;H2&gt;13. What I learned from this architecture&lt;/H2&gt;&lt;P&gt;The biggest learning for me was that an ML project is much larger than model.fit().&lt;/P&gt;&lt;P&gt;I had to think about:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Data engineering&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;external acquisition&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;ADF&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;ADLS Gen2&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;immutable raw storage&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;idempotency&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;replayability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;parameterized pipelines&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Streaming&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;Auto Loader&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Structured Streaming&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;processing-time triggers&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;checkpoints&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;restart behaviour&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Bronze → Silver incremental processing&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Governance&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;managed identities&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Unity Catalog&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;external locations&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Volumes&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;lineage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;NLP&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;TF-IDF baselines&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;transformer fine-tuning&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;contextual embeddings&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;classification&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;semantic similarity&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Machine learning&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;labelled datasets&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;time-aware evaluation&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;HPO&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;class imbalance&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;PR-AUC&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;threshold selection&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;MLOps&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;dataset versioning&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;MLflow&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Model Registry&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;model versions&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;production inference&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;prediction lineage&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Cost engineering&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I also intentionally avoided running everything 24×7.&lt;/P&gt;&lt;P&gt;The same architectural concepts can be learned using controlled streaming sessions:&lt;/P&gt;&lt;PRE&gt;start resources
→ process several GDELT intervals
→ observe streaming behaviour
→ validate output
→ gracefully stop streams
→ terminate compute&lt;/PRE&gt;&lt;P&gt;That allowed me to learn the architecture without turning a personal learning project into an unnecessarily expensive cloud workload.&lt;/P&gt;&lt;H2&gt;What comes next&lt;/H2&gt;&lt;P&gt;The next stages are focused on making the intelligence layer deeper:&lt;/P&gt;&lt;PRE&gt;Relevance classification
        ↓
Disruption-category classification
        ↓
NER / entity normalization
        ↓
Sentence embeddings
        ↓
Semantic duplicate detection
        ↓
Story clustering
        ↓
Temporal feature engineering
        ↓
Predict whether a story will escalate
        ↓
Ranked supply-chain disruption alerts&lt;/PRE&gt;&lt;P&gt;For me, the most valuable part of this project has been connecting all the pieces rather than treating data engineering, NLP and MLOps as separate subjects.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ADF acquires the data.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ADLS preserves it.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Databricks streams and governs it.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;ML models extract intelligence from it.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;MLflow governs the model lifecycle.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;And the prediction pipeline turns continuously arriving data into actionable outputs.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;#Azure #AzureDataFactory #ADLS #Databricks #ApacheSpark #PySpark #StructuredStreaming #AutoLoader #DeltaLake #UnityCatalog #MLflow #NLP #BERT #MachineLearning #MLOps #DataEngineering #GDELT&lt;/P&gt;</description>
      <pubDate>Thu, 13 Aug 2026 16:10:17 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/end-to-end-streaming-nlp-pipeline-with-gdelt-azure-data-factory/m-p/165627#M4661</guid>
      <dc:creator>kartheek_rao</dc:creator>
      <dc:date>2026-08-13T16:10:17Z</dc:date>
    </item>
    <item>
      <title>Traffic split behavior when traffic_percentage values across served entities sum to more than 100%</title>
      <link>https://community.databricks.com/t5/machine-learning/traffic-split-behavior-when-traffic-percentage-values-across/m-p/164381#M4659</link>
      <description>&lt;P class=""&gt;Hi all,&lt;/P&gt;&lt;P class=""&gt;I'm configuring a Model Serving endpoint with two served entities and ran into some unexpected behavior while testing different traffic_config splits.&lt;/P&gt;&lt;P class=""&gt;When I set traffic_percentage to 100 for &lt;STRONG&gt;each&lt;/STRONG&gt; of the two served entities (so the total sums to 200%, not 100%), the configuration is accepted and saves successfully — both through the Serving UI and the REST API. I expected this to be rejected, since traffic percentages across routes should normally sum to 100.&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Config used:&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;json&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;PRE&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;"traffic_config"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;"routes"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;[&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;{&lt;/SPAN&gt; &lt;SPAN class=""&gt;"served_model_name"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"model-A"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;"traffic_percentage"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;100&lt;/SPAN&gt; &lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;    &lt;SPAN class=""&gt;{&lt;/SPAN&gt; &lt;SPAN class=""&gt;"served_model_name"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;"model-B"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;"traffic_percentage"&lt;/SPAN&gt;&lt;SPAN class=""&gt;:&lt;/SPAN&gt; &lt;SPAN class=""&gt;100&lt;/SPAN&gt; &lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class=""&gt;]&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;&lt;STRONG&gt;What I'm trying to understand:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Is there backend validation that should reject a traffic_config where the values don't sum to 100? If so, why does this particular config get accepted?&lt;/LI&gt;&lt;LI&gt;If it &lt;EM&gt;is&lt;/EM&gt; accepted, how does routing actually work here — are the values treated as relative weights and normalized (e.g., 100/100 effectively becomes 50/50), or is there some other fallback logic?&lt;/LI&gt;&lt;LI&gt;Is this documented anywhere, or is it more of an edge case / bug that hasn't been addressed?&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;I ran a batch of test requests afterward and saw roughly a 50/50 split across the two entities, which lines up with the "weights get normalized" theory — but I'd rather get confirmation from someone who knows the internal routing logic than rely purely on my own testing.&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Environment:&lt;/STRONG&gt; AWS Databricks&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jul 2026 10:02:33 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/traffic-split-behavior-when-traffic-percentage-values-across/m-p/164381#M4659</guid>
      <dc:creator>MageshS</dc:creator>
      <dc:date>2026-07-29T10:02:33Z</dc:date>
    </item>
    <item>
      <title>Snowflake OR Databricks</title>
      <link>https://community.databricks.com/t5/machine-learning/snowflake-or-databricks/m-p/163543#M4656</link>
      <description>&lt;P&gt;I am doing a case choice analysis on whether I should have my data in Snowflake to support my Customer workloads or have them migrated to Databricks to do the same.&lt;/P&gt;&lt;P&gt;What has been your experience especially in handling large volumes of data especially when dealing with real-time data coming to into your DWH?&amp;nbsp;&lt;/P&gt;&lt;P&gt;My customers would like to see real-time insights almost in real-time with some of the most complex Data Science workloads.&lt;/P&gt;</description>
      <pubDate>Mon, 20 Jul 2026 16:56:09 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/snowflake-or-databricks/m-p/163543#M4656</guid>
      <dc:creator>suryaprayaga</dc:creator>
      <dc:date>2026-07-20T16:56:09Z</dc:date>
    </item>
    <item>
      <title>Using Machine Learning to Improve Emulator Compatibility Predictions</title>
      <link>https://community.databricks.com/t5/machine-learning/using-machine-learning-to-improve-emulator-compatibility/m-p/163054#M4652</link>
      <description>&lt;P class=""&gt;&lt;SPAN&gt;Hi everyone,&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I'm working on a personal project and would appreciate some advice from people who have experience with machine learning on Databricks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Imagine having a dataset containing thousands of game compatibility records collected from different emulator versions, graphics backends, hardware configurations, frame rates, and user-reported issues. The goal is to predict whether a game will run correctly on a specific setup and identify the settings most likely to improve performance.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;Would this problem be better approached as a classification task or a recommendation system? Which ML algorithms would you start with for this type of structured dataset?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;I also wonder whether Databricks AutoML is a good starting point before building custom models. Has anyone here used AutoML for a project with a large number of categorical features and configuration variables?&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;SPAN&gt;For context, the dataset is related to retro gaming and PlayStation 2 emulator compatibility, similar to the type of information available on &lt;/SPAN&gt;&lt;A href="https://ps2biosonline.com/" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;https://ps2biosonline.com/&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;I'd appreciate any suggestions on feature engineering, model selection, or best practices for organizing this kind of project in Databricks.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Jul 2026 06:18:47 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/using-machine-learning-to-improve-emulator-compatibility/m-p/163054#M4652</guid>
      <dc:creator>lucas1147</dc:creator>
      <dc:date>2026-07-15T06:18:47Z</dc:date>
    </item>
    <item>
      <title>Serving endpoint - automatic system updates</title>
      <link>https://community.databricks.com/t5/machine-learning/serving-endpoint-automatic-system-updates/m-p/162346#M4649</link>
      <description>&lt;P&gt;Dear Community &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;I need some support with investigation related to Serving Endpoints. Recently some of endpoints with deployed ML models display message:&lt;/P&gt;&lt;P&gt;This endpoint is out of compliance because it is too old and automatic system updates have failed.&lt;BR /&gt;Please update this endpoint to bring it into compliance.&lt;/P&gt;&lt;P&gt;The endpoint exist approximately 2 month and is used in business processes.&amp;nbsp;&lt;/P&gt;&lt;P&gt;My question are:&lt;BR /&gt;1. What&amp;nbsp; type of system updated are performed on existing endpoints?&lt;BR /&gt;2. Are there any log files which are used for tracking this type of updates?&lt;BR /&gt;3. What&amp;nbsp; action should be performed to fix it?&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jul 2026 09:57:13 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/serving-endpoint-automatic-system-updates/m-p/162346#M4649</guid>
      <dc:creator>d_szepietowska</dc:creator>
      <dc:date>2026-07-09T09:57:13Z</dc:date>
    </item>
    <item>
      <title>Can't select Serverless GPU on notebooks</title>
      <link>https://community.databricks.com/t5/machine-learning/can-t-select-serverless-gpu-on-notebooks/m-p/162334#M4648</link>
      <description>&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="databricks_bug.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/28779i5944E1C380D6BB2A/image-size/medium?v=v2&amp;amp;px=400" role="button" title="databricks_bug.png" alt="databricks_bug.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;When trying to use serverless gpu on a notebook, I get this error. Serverless CPU works fine though.&lt;/P&gt;&lt;P&gt;Can you help me understand why I get this?&lt;/P&gt;</description>
      <pubDate>Thu, 09 Jul 2026 08:20:11 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/can-t-select-serverless-gpu-on-notebooks/m-p/162334#M4648</guid>
      <dc:creator>LPBigot</dc:creator>
      <dc:date>2026-07-09T08:20:11Z</dc:date>
    </item>
    <item>
      <title>Free Edition CrossValidator not working because of internal caching</title>
      <link>https://community.databricks.com/t5/machine-learning/free-edition-crossvalidator-not-working-because-of-internal/m-p/162149#M4646</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;&lt;P&gt;I am getting the following error when using CrossValidator in Databricks Free Edition v5 (see attachment):&lt;/P&gt;&lt;P&gt;In shared or serverless cluster, SPARK_ML_TMP_DFS_PATH environmental variable must be set to a UC volume path like '/Volumes/...' in order to support Saprk DataFrame caching&lt;/P&gt;&lt;P&gt;Could you please check if this the expected behaviour, and if there a workaround or something we can try?&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jul 2026 21:05:51 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/free-edition-crossvalidator-not-working-because-of-internal/m-p/162149#M4646</guid>
      <dc:creator>pjvi</dc:creator>
      <dc:date>2026-07-07T21:05:51Z</dc:date>
    </item>
    <item>
      <title>Notebooks for Labs</title>
      <link>https://community.databricks.com/t5/machine-learning/notebooks-for-labs/m-p/161420#M4642</link>
      <description>&lt;P&gt;Hello can someone tell me where do I find the notebooks in the demo sessions of Associate ML pathways?&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 05 Jul 2026 05:21:21 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/notebooks-for-labs/m-p/161420#M4642</guid>
      <dc:creator>ShaRKS</dc:creator>
      <dc:date>2026-07-05T05:21:21Z</dc:date>
    </item>
    <item>
      <title>what is the GPU quota limit for free edition?</title>
      <link>https://community.databricks.com/t5/machine-learning/what-is-the-gpu-quota-limit-for-free-edition/m-p/161101#M4637</link>
      <description>&lt;P&gt;what is the GPU quota limit for free edition? I used 5 minutes few days back now can not attach GPU cluster, it showing quota exceeded&lt;/P&gt;</description>
      <pubDate>Wed, 01 Jul 2026 14:58:04 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/what-is-the-gpu-quota-limit-for-free-edition/m-p/161101#M4637</guid>
      <dc:creator>rakeshdey</dc:creator>
      <dc:date>2026-07-01T14:58:04Z</dc:date>
    </item>
    <item>
      <title>Serverless ML</title>
      <link>https://community.databricks.com/t5/machine-learning/serverless-ml/m-p/160377#M4632</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;I'm trying to set up a DAB job that runs an ML job. For this it would be useful to use a serverless ML environment, that I can select in notebooks. Anyway, I do not find a meaningful way to define the base environment as ML.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;I do not want to give the requirements-ML.txt, as I think there would be a larger start-up time. I could not find any useful documentation for it.&lt;/P&gt;&lt;P&gt;I tried something like&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;  environments:
    - environment_key: default
      spec:
        environment_version: "5"
        base_environment: "ML"
        dependencies:
          - ... light dependencies&lt;/LI-CODE&gt;&lt;P&gt;but it does expect a yml file on base environment.&lt;/P&gt;&lt;P&gt;Does anybody has a tip?&lt;/P&gt;&lt;P&gt;Thank you,&lt;/P&gt;&lt;P&gt;Daniele&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 24 Jun 2026 09:48:58 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/serverless-ml/m-p/160377#M4632</guid>
      <dc:creator>Daniele-T</dc:creator>
      <dc:date>2026-06-24T09:48:58Z</dc:date>
    </item>
    <item>
      <title>AutoML on Azure Databricks as of June 2026</title>
      <link>https://community.databricks.com/t5/machine-learning/automl-on-azure-databricks-as-of-june-2026/m-p/160244#M4629</link>
      <description>&lt;P&gt;Hello everybody,&lt;/P&gt;&lt;P&gt;My team and I are facing a sudden and unexpected issue with training Forecasting models utilizing AutoML on Azure Databricks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;As of two weeks ago, we privatized our Azure Databricks environment behind a private network, accessible only by using a VPN.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Since then, Serverless training of Forecasting ML models fails for every type of forecasting ML framework, including ARIMA, Prophet and DeepAR. To be more precise:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;ARIMA training experiments complete. However, the deployment of trained ARIMA models in Endpoints fails. The respective Service logs are available &lt;A href="https://pastebin.com/ymemq88c" target="_self"&gt;here&lt;/A&gt;.&lt;/LI&gt;&lt;LI&gt;Prophet training experiments fail to complete, being cancelled at the Tuning stage. The only output in the run indicating that something is wrong is "&lt;SPAN&gt;databricks.automl.shared.databricks_utils: No host name to create absolute URL&lt;/SPAN&gt;".&lt;/LI&gt;&lt;LI&gt;DeepAR&amp;nbsp;training experiments also fail to complete, being cancelled at the Tuning stage. The only output in the run indicating that something is wrong is "&lt;SPAN&gt;databricks.automl.shared.databricks_utils: No host name to create absolute URL&lt;/SPAN&gt;".&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;On the other hand, using a compute cluster to train ARIMA and Prophet models, the training completes successfully. The compute runtime is 17.3 LTS for Machine Learning. However, when trying to use these models for inference, we get the following issues.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;For the ARIMA models, the deployment fails, indicating that the failure reason is "mlflowserving.scoring_server.diagnostic_classifier._PhaseTaggedError: [mlflow_parse] ModuleNotFoundError: No module named 'databricks.automl_runtime'"&lt;/LI&gt;&lt;LI&gt;For the Prophet models, the deployment completes. However, when trying to use any Prophet model for inference, the procedure fails, indicating that the failure reason is "Inference failed: Encountered an unexpected error while evaluating the model. Verify that the input is compatible with the model for inference. Error ''Prophet' object has no attribute 'stan_backend'' (Support code: INFERENCE_FAILED-9430702a5a9f)"&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The serverless training of Forecasting ML models worked perfectly end-to-end a few weeks back and so did the deployment and the inference.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Could we get some help on how to resolve this issues? Is this a temporary bug? Do we need to take any actions?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have also opened a respective &lt;A href="https://github.com/databricks/automl/issues/188" target="_self"&gt;GitHub issue&lt;/A&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you in advance.&lt;/P&gt;</description>
      <pubDate>Tue, 23 Jun 2026 12:29:41 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/automl-on-azure-databricks-as-of-june-2026/m-p/160244#M4629</guid>
      <dc:creator>nepiskopos</dc:creator>
      <dc:date>2026-06-23T12:29:41Z</dc:date>
    </item>
    <item>
      <title>Can Databricks Jobs Run on Kubernetes Clusters?</title>
      <link>https://community.databricks.com/t5/machine-learning/can-databricks-jobs-run-on-kubernetes-clusters/m-p/160241#M4628</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Context:&lt;/STRONG&gt; We're exploring using Kubernetes (EKS) as our compute infrastructure instead of Databricks managed clusters. We want to understand if Databricks can orchestrate, deploy, and monitor jobs that run on a Kubernetes cluster.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Questions:&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Is it possible to configure Databricks Jobs to run workloads on an external Kubernetes cluster?&lt;/LI&gt;&lt;LI&gt;Can Databricks manage the job lifecycle (submit, monitor, track logs) on Kubernetes pods?&lt;/LI&gt;&lt;LI&gt;What's the recommended way to use Databricks as an orchestration layer for Kubernetes workloads?&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;STRONG&gt;What we want to do:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Write Databricks jobs/notebooks&lt;/LI&gt;&lt;LI&gt;Have those jobs execute as pods in our Kubernetes cluster (not Databricks-managed clusters)&lt;/LI&gt;&lt;LI&gt;Monitor job execution and logs from the Databricks UI&lt;/LI&gt;&lt;LI&gt;Keep using Databricks features (MLflow, Delta Lake) for data and model management&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Why this is important:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Scalability&lt;/STRONG&gt;: Kubernetes provides better horizontal scaling for large workloads&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Faster cluster initialization&lt;/STRONG&gt;: Pre-running EKS cluster eliminates spin-up delays&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Cost efficiency&lt;/STRONG&gt;: EKS with spot instances is more cost-effective than always-on Databricks clusters&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Multi-tenant support&lt;/STRONG&gt;: Share compute infrastructure across different teams and workloads&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Tue, 23 Jun 2026 11:33:54 GMT</pubDate>
      <guid>https://community.databricks.com/t5/machine-learning/can-databricks-jobs-run-on-kubernetes-clusters/m-p/160241#M4628</guid>
      <dc:creator>ASH1243434</dc:creator>
      <dc:date>2026-06-23T11:33:54Z</dc:date>
    </item>
  </channel>
</rss>

