microsoft / microsoft/SynapseML

[BUG] LightGBM | Required time to fit is too long

Open
#2,226 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug triage
Dominant language
Scala
Stars
5.2k
Forks
868
Avg merge
22h 9m
Merged PRs (30d)
45

Description

### SynapseML version

1.0.4

### System information

- **Language version** (e.g. python 3.8, scala 2.12):
- **Spark Version** (e.g. 3.5.0):
- **Spark Platform** (e.g. Synapse, Databricks):

### Describe the problem

Hello, folks!

I facing some troubles to train a LightGBM Model. The model fits until a certain point and after that, somehow models stop to train. It is not indicating any kind of error, the model just stop to load and stays in the same place forever. As you can seen below: I've been using features such as: numTasks, numThreads, numBatches, useSingleDatasetMode and useBarrierExecutionMode in order to improve fit performance.

My dataset has about 418 millions lines to train and 18 millions for validation. I've been dealing of with about 21 features, 10 categorical and rest are continuous variables.

DataBricks Cluster Configuration:

--- Single Node
--- 256 GB Ram Memory | 32 Cores

You guys have any idea why I'm having such issue?

### Code to reproduce issue

dic_params_reg_model_0 = {'learningRate' : 0.10686341357711826 ,
'featureFraction': 0.9064118023259887,
'maxBin' : 5,
'minDataInLeaf' : 6,
'numIterations' : 53,
'numLeaves' : 147,
'lambdaL2' : 45.405492626469716,
'lambdaL1' : 0.0015480184927416942}

model_cluster_0 = LightGBMRegressor(metric = 'mae', earlyStoppingRound=1, labelCol='target',
dataTransferMode='streaming', numTasks=32, numThreads=32, validationIndicatorCol='validation_col', numBatches=500, useSingleDatasetMode=True, useBarrierExecutionMode=True
).setParams(**dic_params_reg_model_0).fit(train_0)

### Other info / logs

Spark Configuration:

spark.master local[*, 8]
spark.databricks.cluster.profile singleNode
spark.driver.maxResultSize 150g
spark.jars.repositories https://mmlspark.azureedge.net/maven

### What component(s) does this bug affect?

- [ ] `area/cognitive`: Cognitive project
- [ ] `area/core`: Core project
- [ ] `area/deep-learning`: DeepLearning project
- [X] `area/lightgbm`: Lightgbm project
- [ ] `area/opencv`: Opencv project
- [ ] `area/vw`: VW project
- [ ] `area/website`: Website
- [ ] `area/build`: Project build system
- [ ] `area/notebooks`: Samples under notebooks folder
- [ ] `area/docker`: Docker usage
- [ ] `area/models`: models related issue

### What language(s) does this bug affect?

- [ ] `language/scala`: Scala source code
- [X] `language/python`: Pyspark APIs
- [ ] `language/r`: R APIs
- [ ] `language/csharp`: .NET APIs
- [ ] `language/new`: Proposals for new client languages

### What integration(s) does this bug affect?

- [X] `integrations/synapse`: Azure Synapse integrations
- [ ] `integrations/azureml`: Azure ML integrations
- [X] `integrations/databricks`: Databricks integrations

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the provided LightGBMRegressor reproduction code and Spark configuration, then investigate where fitting stops progressing for the reported dataset and cluster setup. Compare the configured task, thread, batch, dataset, and barrier settings with observable training behavior; done means identifying a reproducible cause and confirming a documented fix or clear limitation.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.