feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler
, '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

feat: chunkless operation - #447

Closed
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless
Closed

feat: chunkless operation#447
jpn-- wants to merge 6 commits into
ActivitySim:masterfrom
jpn--:chunkless

Conversation

@jpn--

@jpn--jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
Member

It appears that I can't currently run a model with chunking just plain turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage. If I set to production mode without an available chunk cache history file it falls back to training mode.

This is my crack at creating a fourth chunk training mode: 'disabled'. (the first 3 are training, production, and adaptive). The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, so we can focus on performance assuming there is abundant RAM.

It appears that I can't currently run a model with chunking turned off unless it's in training mode, but training mode carries a lot of overhead monitoring memory usage.
@jpn--
jpn-- requested a review from toliwagaJuly 2, 2021 14:31
@jpn--

jpn-- commented Jul 2, 2021

Copy link
Copy Markdown
MemberAuthor

@toliwaga it certainly would be helpful for you to review this, as you're the expert on chunk management.

@toliwaga

Copy link
Copy Markdown
Contributor

I'm out of the office on vacation until the beginning of August

@coveralls

coveralls commented Jul 2, 2021

Copy link
Copy Markdown

Coverage Status

Coverage increased (+8.5%) to 64.879% when pulling 37862e3 on jpn--:chunkless into a57efa1 on ActivitySim:master.

@jpn--

jpn-- commented Jul 8, 2021

Copy link
Copy Markdown
MemberAuthor

Next steps: @esanchez01 and @stefancoe will test "disabled" mode to confirm it works correctly.

@bstabler
bstabler removed the request for review from toliwagaJuly 9, 2021 20:58
@esanchez01

esanchez01 commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

@jpn-- , After testing this on 100k households using the SANDAG 1 Zone setup (multiprocessed), there are still memory CSV files in the output/log directory as well as chunk logging across various logfiles. This does not conform with the behavior of the 'disabled' mode as described in the original post:

The idea for disabled mode is that we don't do chunking, and also don't check or log memory usage ever, ..

It seems like memory file creation is currently hard coded here in mem.py so changes may need to extend beyond just chunk.py. As for the chunk logging, it seems like empty logging is produced due to the placement of the 'disabled' chunk mode conditions in certain methods such as here or from functions that that don't set chunk mode conditions such as here.

You can find the configs and log files for this test run here.

@stefancoe

stefancoe commented Jul 10, 2021

Copy link
Copy Markdown
Contributor

I ran the model using 3 different modes using the same configuration of 20k households and mp turned off. The attached results show that the old code is fastest, 'disabled' is second but considerably slower and 'production' mode is the slowest.

chunkless_comparison.xlsx

@bstabler

Copy link
Copy Markdown
Contributor

@esanchez01 to test again since this feature would be good to get working soon

@esanchez01

Copy link
Copy Markdown
Contributor

I retested this feature with the new commits. There are still memory CSV files and chunk/memory logging that are produced. However, the extent of the memory tracking and logging appears to have been reduced. The run time for this new run was about 65 minutes compared to 140 minutes for the previous test, so it seems like unnecessary memory/chunk calls were further avoided.

You can find the configs and log files for the new test run here.

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- please PR to develop when ready

@bstabler

Copy link
Copy Markdown
Contributor

@jpn-- , actually, please move this to a branch within this repo so we can work on it here. Thanks.

@jpn--

Copy link
Copy Markdown
MemberAuthor

This is now a branch in the main repo, per @bstabler request. Closing this PR in favor of that.

@jpn--jpn-- closed this Jul 29, 2021
@bstablerbstabler mentioned this pull request Aug 4, 2021
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.

6 participants

@jpn--@toliwaga@coveralls@esanchez01@stefancoe@bstabler