Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Enable Conditional Numerical Reproducibility for tests - #4569

Merged
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr
Feb 4, 2020
Merged

Enable Conditional Numerical Reproducibility for tests#4569
sharwell merged 3 commits into
dotnet:masterfrom
sharwell:enable-cnr

Conversation

@sharwell

Copy link
Copy Markdown
Contributor

No description provided.

@frank-dong-ms-zzfrank-dong-ms-zz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:shipit:

@codecov

codecovBot commented Dec 12, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@9c9a5c4). Click here to learn what that means.
The diff coverage is 91.66%.

@@ Coverage Diff @@## master #4569 +/- ##
=========================================
Coverage ? 75.84% =========================================
Files ? 947 Lines ? 172190 Branches ? 18579 =========================================
Hits ? 130593 Misses ? 36422 Partials ? 5175
FlagCoverage Δ
#Debug75.84% <91.66%> (?)
#production71.42% <ø> (?)
#test90.71% <91.66%> (?)
Impacted FilesCoverage Δ
test/Microsoft.ML.TimeSeries.Tests/TimeSeries.cs87.85% <ø> (ø)
...crosoft.ML.TimeSeries.Tests/TimeSeriesDirectApi.cs99.28% <100%> (ø)
test/Microsoft.ML.TestFramework/GlobalBase.cs29.03% <100%> (ø)
...est/Microsoft.ML.Predictor.Tests/TestPredictors.cs67.9% <50%> (ø)

@sharwell
sharwellforce-pushed the enable-cnr branch 5 times, most recently from 320e765 to 8b5d1e2CompareJanuary 16, 2020 14:45
@sharwell
sharwell marked this pull request as ready for review January 17, 2020 21:15
@sharwell
sharwell requested a review from a team as a code ownerJanuary 17, 2020 21:15
@sharwell

Copy link
Copy Markdown
ContributorAuthor

I'm going to submit some parts of this as separate pull requests, and then rebase to focus it and fix conflicts.

@@ -283,6 +283,11 @@ public void BinaryClassifierLogisticRegressionTest()
[Trait("Category", "SkipInCI")]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❓ I guess I am missing something... but shouldn't this line be removed in order to check that the updated baselines are actually correct?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These baselines haven't changed in the master branch since I first implemented this pull request. I'm assuming the new values (which were correct then) are still correct now. They would be validated as part of #4722.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

Based on the results of #4722 as a validation, the current plan is:

  1. Merge this PR, since the baselines here are a clear statistical improvement
  2. As a separate PR, add baselines for Windows x86, Centos (and Ubuntu separately if necessary), and MacOS
  3. Update [Test Stability] PR to Test BinaryClassifierSymSgdTest #4722 to determine the new status

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

For the record, the validation @sharwell has just mentioned, consisted in running 100 times the BinaryClassifierSymSgdTest test on every build configuration. This was to validate the changes he made to the baseline in here, which is used [exclusively?] on that test which is (at the moment of writing) disabled, and that's why it was needed to be validated on PR #4722 where I reenabled the test.

It passed on every Windows x64 build, except for one, where it failed only 1 out of the 100 iterations.

It failed on every other build configuration, but it is thought to be because CNR works differently on each OS and configuration (MacOS, CentOS, Ubuntu and Windows x86), and then it would be necessary to create a new baseline for each one of these. Notice that that test was disabled recently because it was very flaky on most of our CI builds, and that it was previously disabled on MacOS and x86 since #624 and #1008 respectively. So when doing the baselines for the other build configurations, it would be ok to keep this in mind, and see if that now that CNR is enabled, these pending test scenarios are now resolved.

For reference, the same experiment (running it 100 times on all the build configurations) had 3 Windows x64 builds that failed, each one with 100 failures (one per iteration), when ran without the enabled CNR.

@antoniovs1029

antoniovs1029 commented Feb 1, 2020

Copy link
Copy Markdown
Contributor

After briefly discussing it with @harishsk , I will run all the tests (including all the disabled ones) with the changes in this PR, and running the test 100 times along with them, just to double check. 😄 For convenience, I am doing it on #4722

It again passed in all Windows x64 builds, except for one, where it failed only 1 out of the 100 iterations. As expected, it didn't pass in the other builds.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

@harishsk has expressed that he doesn't know if it's ok to have different baselines for each build configuration, and would like @eerhardt , @justinormont , and @tannergooding opinion on this regard, before accepting enabling the CNR.

@antoniovs1029

antoniovs1029 commented Feb 3, 2020

Copy link
Copy Markdown
Contributor

So I have just ran this again on #4722 , and actually now even the Windows x64 are failing, it fails in all 100 iterations of the BinaryClassifierSymSgdTest test. It doesn't seem to me that any update on master during the weekend could have changed the baseline here again, so I am not sure why this is happening.

@sharwell can you please remove the [Trait("Category", "SkipInCI")] attribute from the test in here, just temporarily, to rerun the CI in here, to be sure that your changes to the baseline are actually correct? thanks!

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 the baselines were altered in #4710

@antoniovs1029

antoniovs1029 commented Feb 4, 2020

Copy link
Copy Markdown
Contributor

@antoniovs1029 the baselines were altered in #4710

You're right. On that PR it's added that the BinaryClassifierSymSGD should also print its bias and weights into the output. So it will only be necessary to add a couple of lines to the baseline.

After running it on the CI, I believe the updated baseline (for Windows x64) should be

On SymSGD-CV-breast-cancer-out.txt

Bias: -467.9297, Weights: [5.415065,76.39395,22.351555,-11.988394,-28.264456,44.58415,22.720116,11.132539,2.851256]
Not training a calibrator because it is not needed.
Not adding a normalizer.
Data fully loaded into memory.
Initial learning rate is tuned to 100.000000
Bias: -484.28625, Weights: [-12.787148,140.42905,121.938194,37.527378,-129.81407,70.90587,-89.37068,81.64309,-32.32781]

On SymSGD-TrainTest-breast-cancer-out.txt

Bias: -473.82773, Weights: [1.8576517,52.924484,9.490602,14.593927,-17.657146,10.126332,-8.042431,1.9634984,26.753149]

By the way, I've gotten baselines for the other platforms and made a couple of experiments with them. So far it seems that enabling CNR does yield more consistent results from the test, although different baselines would indeed be necessary for each platform. I still need to do further experiments on this, though.

@sharwell

Copy link
Copy Markdown
ContributorAuthor

@antoniovs1029 baselines have been updated

@sharwellsharwell mentioned this pull request Feb 4, 2020
@sharwell
sharwell merged commit cdd309e into dotnet:masterFeb 4, 2020
@sharwell
sharwell deleted the enable-cnr branch February 4, 2020 23:13
@ghostghost locked as resolved and limited conversation to collaborators Mar 19, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sharwell@antoniovs1029@frank-dong-ms-zz