Add a visualmetrics task type for computing visualmetrics from captured video
Categories
(Testing :: Performance, enhancement)
Tracking
(firefox71 fixed)
Tracking | Status | |
---|---|---|
firefox71 | --- | fixed |
People
(Reporter: nalexander, Assigned: beth)
References
(Blocks 1 open bug)
Details
Attachments
(2 files, 1 obsolete file)
For Bug 1563082, we're going to capture lots of videos. Much of that capture will happen on hardware (say, our limited supply of Android devices) or even on special desktop hardware (say reference laptops with capture cards). We want to do the expensive processing with elastic compute, i.e., in AWS; and we want it to be cheap for developers to do this as well without having them run image analysis on their own devices.
This ticket tracks building a task type that moves video files through that pipeline, and potentially a ./mach try ...
front-end for processing locally captured videos.
Assignee | ||
Comment 1•6 years ago
•
|
||
:nalexander and I discussed this and came up with the following next steps forward:
-
We need a proper docker image for running
visualmetrics.py
. The POC that Nick used to demo this was a full image meant for driving a browser vehicle. We only really need Python, the Python libraries thatvisualmetrics.py
requires, andimagemagick
. -
We need infrastructure to make
visualmetrics.py
available to the docker image. The POC did a full m-c checkout and ran./mach browsertime -setup
to download it, but that is a lot of time and bandwidth to grab the script. Ideally we could grab it from https://github.com/mozilla/browsertime at tagged releases, but for now hard-coding a known good commit SHA into the script will be sufficient. -
visualmetrics.py
needs to be parallelized to support processing multiple videos at once. The calculations on each frame are independent of each other and only need to be collated at the end. Themultiprocessing
module can be leveraged to implement this. -
The actual taskcluster task to run this and report the results to perfherder.
Further work would include having a way to submit the captured video from e.g. a capture card and do the visual metrics processing of that video (e.g. a ./mach command to upload the video and create the task).
Did I miss anything, :nalexander?
Reporter | ||
Comment 2•6 years ago
|
||
(In reply to Barret Rennie [:brennie] (he/him) from comment #1)
:nalexander and I discussed this and came up with the following next steps forward:
- We need a proper docker image for running
visualmetrics.py
. The POC that Nick used to demo this was a full image meant for driving a browser vehicle. We only really need Python, the Python libraries thatvisualmetrics.py
requires, andimagemagick
.
Beautiful. You can follow the wpr-go example from https://phabricator.services.mozilla.com/D20567 (or my other try pushes) to see how to make a new Docker image in tree.
- We need infrastructure to make
visualmetrics.py
available to the docker image. The POC did a full m-c checkout and ran./mach browsertime -setup
to download it, but that is a lot of time and bandwidth to grab the script. Ideally we could grab it from https://github.com/browsertime at tagged releases, but for now hard-coding a known good commit SHA into the script will be sufficient.
https://github.com/mozilla/browsertime.
visualmetrics.py
needs to be parallelized to support processing multiple videos at once. The calculations on each frame are independent of each other and only need to be collated at the end. Themultiprocessing
module can be leveraged to implement this.
Just for the record: I'm not sure we want to do to much work to visualmetrics.py
itself; I think we want to run it multiple times and investigate better implementations independently. If that happens in the existing file, fine, but don't be bound to that.
- The actual taskcluster task to run this and report the results to perfherder.
Further work would include having a way to submit the captured video from e.g. a capture card and do the visual metrics processing of that video (e.g. a ./mach command to upload the video and create the task).
Did I miss anything, :nalexander?
Looks great!
Assignee | ||
Comment 3•6 years ago
|
||
Reporter | ||
Comment 4•6 years ago
|
||
Updated•6 years ago
|
Assignee | ||
Updated•6 years ago
|
Updated•6 years ago
|
Assignee | ||
Comment 5•6 years ago
|
||
The ./mach try {fuzzy,chooser}
commands now support a --visual-metrics-jobs
option which can be used to pass the job descriptions to the visual-metrics
task.
Depends on D41052
Comment 7•5 years ago
|
||
Backed out for Linting failure on run-visual-metrics.py
Backout link: https://hg.mozilla.org/integration/autoland/rev/80986a96f9e8f5fa7c3dcc05f3be0c6bc640389a
Log link: https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=264963430&repo=autoland&lineNumber=220
Assignee | ||
Comment 8•5 years ago
|
||
Sorry about that. Fixed in latest revision.
Comment 10•5 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/5e68340655e1
https://hg.mozilla.org/mozilla-central/rev/45049852ea48
Description
•