Skip to content

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ksivaman@timmoon10
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Improve PyTorch test harness by ksivaman · Pull Request #102 · NVIDIA/TransformerEngine · GitHub
Skip to content

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ksivaman@timmoon10
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Improve PyTorch test harness by ksivaman · Pull Request #102 · NVIDIA/TransformerEngine · GitHub
Skip to content

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ksivaman@timmoon10
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Improve PyTorch test harness by ksivaman · Pull Request #102 · NVIDIA/TransformerEngine · GitHub
Skip to content

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

Improve PyTorch test harness - #102

Merged
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests
Mar 17, 2023
Merged

Improve PyTorch test harness#102
ksivaman merged 14 commits into
NVIDIA:mainfrom
ksivaman:improve_pytorch_tests

Conversation

@ksivaman

@ksivamanksivaman commented Mar 15, 2023

Copy link
Copy Markdown
Member

This PR is a start of PyTorch unit testing enhancements in TE. Tests have been grouped into the following 2 parts:

Sanity tests

All tests are run on the same file and fp8 tests are skipped on non-hopper devices. The following extra tests are added:

  • LayerNorm1p tests for fp8.
  • wgrad accumulation fusion tests.

Numerical tests

Some tests such as checkpointing, different types of activation recompute etc., we ensure bitwise identical results whereas others check against a framework implementation. These are the current limitations that we will add in the future:

  • Only the GPT architecture is checked.
  • FP8 is not used.
  • For some tests, the tolerance is a bit relaxed, and for some others, gradient checking is omitted completely. We ideally want to be as close as possible but this debug is out of scope for this PR.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from ptrendxMarch 15, 2023 00:23
@ksivaman
ksivaman marked this pull request as draft March 15, 2023 00:23
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman
ksivaman requested a review from timmoon10March 17, 2023 00:44
@ksivaman
ksivaman marked this pull request as ready for review March 17, 2023 00:46
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@timmoon10timmoon10 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM once the CI is green.

I notice we could make our models a little smaller by reducing the number of layers from 12 and the sequence length from 2048:

"126m": ModelConfig(768, 1e-5, 12, 64, 12, 2048),

This would reduce the probability of spurious errors. If numerical accuracy continues to be a problem, I've also found it helpful to switch from normal random initialization to uniform, since it avoids cancellation error.

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
@timmoon10
timmoon10 self-requested a review March 17, 2023 16:39
@ksivaman

Copy link
Copy Markdown
MemberAuthor

/te-ci

@ksivaman
ksivaman merged commit 2c99635 into NVIDIA:mainMar 17, 2023
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Mar 31, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
cyanguwa pushed a commit to cyanguwa/TransformerEngine that referenced this pull request Apr 1, 2023
* add layernorm1p fp8 test
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* combine tests for easy maintenance
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* using torch.autocast for AMP and check grad types
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for wgrad accumulation fusion
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* rename file
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Setup numerical tests + SAR
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add test for full activation recompute
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* Add tests for checkpoint load/store
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* TE vs framework numerical tests
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* fix ci
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
* relax thresholds
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
---------
Signed-off-by: Kirthi Shankar Sivamani <ksivamani@nvidia.com>
Signed-off-by: Charlene Yang <charleney@nvidia.com>
@ksivaman
ksivaman deleted the improve_pytorch_tests branch July 19, 2023 01:39
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@ksivaman@timmoon10