-
Notifications
You must be signed in to change notification settings - Fork 5.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Data] Simplify and consolidate progress bar outputs #47692
base: master
Are you sure you want to change the base?
Conversation
Signed-off-by: Scott Lee <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- Can we print a message in the beginning explaining all the legends?
- The resource usage section is still very lengthy, do you also plan to simplify it?
@@ -259,16 +259,16 @@ def refresh_progress_bar(self, resource_manager: ResourceManager) -> None: | |||
def summary_str(self, resource_manager: ResourceManager) -> str: | |||
queued = self.num_queued() + self.op.internal_queue_size() | |||
active = self.op.num_active_tasks() | |||
desc = f"- {self.op.name}: {active} active, {queued} queued" | |||
desc = f"- {self.op.name}. Tasks: {active} 🟢, {queued} 🟡" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"N queued" actually means N blocks in the input buffer, not number of tasks.
(the previous was already a bit confusing)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also since we have a "Tasks: " section here. I'm wondering maybe we can also move the actor info after this. Instead of at the very end.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe format it as "Tasks ..., Actors ..., Input blocks ..."
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
also, and blocked sign can be part of "tasks"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe format it as "Tasks ..., Actors ..., Input blocks ..."
+1 something like this seems reasonable to me
f"{limits.object_store_memory_str()} object_store_memory " | ||
"(pending: " | ||
f"{limits.object_store_memory_str()} object store " | ||
"(⏳: " |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we hide the pending section if all are 0? (forgot to mention in the previous PR)
@@ -259,16 +259,16 @@ def refresh_progress_bar(self, resource_manager: ResourceManager) -> None: | |||
def summary_str(self, resource_manager: ResourceManager) -> str: | |||
queued = self.num_queued() + self.op.internal_queue_size() | |||
active = self.op.num_active_tasks() | |||
desc = f"- {self.op.name}: {active} active, {queued} queued" | |||
desc = f"- {self.op.name}. Tasks: {active} 🟢, {queued} 🟡" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What do the green and yellow circles represent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
green = active, yellow = queued
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
although after reworking the progress bar as suggested above, i have removed the green/yellow emoji
@@ -259,16 +259,16 @@ def refresh_progress_bar(self, resource_manager: ResourceManager) -> None: | |||
def summary_str(self, resource_manager: ResourceManager) -> str: | |||
queued = self.num_queued() + self.op.internal_queue_size() | |||
active = self.op.num_active_tasks() | |||
desc = f"- {self.op.name}: {active} active, {queued} queued" | |||
desc = f"- {self.op.name}. Tasks: {active} 🟢, {queued} 🟡" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe format it as "Tasks ..., Actors ..., Input blocks ..."
+1 something like this seems reasonable to me
Signed-off-by: Scott Lee <[email protected]>
Signed-off-by: Scott Lee <[email protected]>
Here is the updated progress bar after addressing initial comments: The information is better grouped now, but unfortunately it's not any less verbose. I couldn't come up with any intuitive emojis to represent the concepts: CPU, GPU, object store, tasks, actors, and input blocks. Any suggestions here? These are the best that I/ChatGPT could come up with:
|
Maybe just use the initial letters? Seems fine as long as we print a message explaining them. |
IMO we should err on the side of clarity over conciseness.
Something like this? C, G, O.S, T, A, I.B? As a general design principle, I'd be cautious to rely on tooltips or extra descriptions to make something understandable. |
Yes, that's what i was thinking as well.
When I was discussing with @omatthew98 offline, our thought was that the progress bar should be as concise as possible, but intuitive enough that the user should only need to look at docs once to understand/remember how to use it. We could print a message linking to docs at the beginning of dataset execution once. Does that sound reasonable? |
My preference is still to err on the side of clarity. IMO we shouldn't make reading documentation a pre-requisite to interpreting a user interface, even if you'd only need to read the documentation once. Also, I think single letters would be confusing (e.g., does "G" represent "GPU" or "Giga"?) |
Why are these changes needed?
Currently, the progress bar is pretty verbose because it is very information dense. This PR:
Progress bar before this PR:
Progress bar after this PR:
Will follow up with a docs PR once we merge this change, so that I don't need to continuously modify the docs.
Related issue number
Checks
git commit -s
) in this PR.scripts/format.sh
to lint the changes in this PR.method in Tune, I've added it in
doc/source/tune/api/
under thecorresponding
.rst
file.