[bugfix] fix(metrics): set SceneMetric device_map for any non-CPU device - #1817
Open
li-lizhe wants to merge 1 commit into
Open
[bugfix] fix(metrics): set SceneMetric device_map for any non-CPU device#1817li-lizhe wants to merge 1 commit into
li-lizhe wants to merge 1 commit into
Conversation
…-CPU device The Qwen2.5-Omni model was only passed a device_map when self.device.type == "cuda". On non-CUDA accelerators (Ascend NPU, Apple MPS, Intel XPU, AMD ROCm) the model silently loads on CPU, making the scene metric unusable on those devices. Use device.type != "cpu" instead, which correctly passes a device_map for every accelerator type. Fixes hao-ai-lab#1815
There was a problem hiding this comment.
Welcome to FastVideo! Thanks for your first pull request.
How our CI works:
PRs run a three-tier CI system:
- Pre-commit — formatting (yapf), linting (ruff), type checking (mypy). Runs immediately on every PR.
- Fastcheck — six core GPU lanes run automatically via Buildkite (~10-15 min).
- Merge gate — a reviewer adds
ready; changed paths select only the relevant integration, training, golden, or SSIM coverage.
Before your PR is reviewed:
-
pre-commit run --all-filespasses locally - You've added or updated tests for your changes
- The PR description explains what and why
If pre-commit fails, a bot comment will explain how to fix it. Fastcheck and merge-gate results appear in the Checks section below.
Useful links:
Contributor
|
Contributor
Merge Protections🔴 1 of 1 protections blocking · waiting on 👀 reviews and 🤖 CI
🔴 PR merge requirementsWaiting for
This rule is failing.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
SceneMetric.setup()only passes adevice_maptoQwen2_5OmniForConditionalGeneration.from_pretrainedwhenself.device.type == "cuda":On any non-CUDA accelerator (Ascend NPU, Apple MPS, Intel XPU, AMD ROCm)
device_mapisNone, so the Qwen2.5-Omni model silently loads on CPU. The scene metric then runs on CPU (slow) even when a GPU/NPU is available.Root cause
Hardcoded CUDA device-type assumption: only CUDA tensors get a
device_map.Fix
Pass a
device_mapfor every non-CPU device type:This is device-agnostic and matches the caller-selected device.
Verification
On Ascend 910B (
torch.accelerator.current_accelerator()returnsnpu,torch.device("npu:0").type == "npu"), the new condition isTrueand adevice_mapis passed, so the metric loads on NPU instead of CPU. On CUDA behaviour is unchanged. One-line change, device-agnostic.Fixes #1815