Qualcomm: bmm over a flattened 4D input returns ~1/W of the right value when followed by unsqueeze (HTP fp16)
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Domaine
- embedded-iot, machine-learning
Piste de recherche
Start with the issue's minimal model and run it on CPU and the SM8850 HTP using the shown ExecuTorch lowering utilities; compare outputs with and without the final unsqueeze and with mask supplied as a graph input. Done means the HTP output matches the CPU result for the reported bmm pattern, rather than producing values about 1/W as large.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
🐛 Describe the bug
On the HTP, bmm over a flattened 4D input returns wrong values when the same input also feeds a conv and the result is unsqueezed back to 4D. Every output element is ~1/W of the right value (W=24 here), as if only one spatial row were summed. Found in ZipDepth's GlobalContextBlock.
import torch, torch.nn.functional as F
from executorch.backends.qualcomm.serialization.qc_schema import QcomChipset
from executorch.backends.qualcomm.utils.utils import (
generate_htp_compiler_spec, generate_qnn_executorch_compiler_spec, to_edge_transform_and_lower_to_qnn)
class M(torch.nn.Module):
def __init__(self):
super().__init__()
self.conv = torch.nn.Conv2d(192, 1, 1)
def forward(self, x):
B, C, H, W = x.shape
mask = F.softmax(self.conv(x).view(B, 1, H * W), -1)
return torch.bmm(x.view(B, C, H * W), mask.transpose(1, 2)).unsqueeze(-1)
x = torch.rand(1, 192, 24, 24) * 0.5
cs = generate_qnn_executorch_compiler_spec(
soc_model=QcomChipset.SM8850, backend_options=generate_htp_compiler_spec(use_fp16=True))
edge = to_edge_transform_and_lower_to_qnn(M().eval(), (x,), cs)
On an S26 Ultra (SM8850, QAIRT 2.47, fp16), main and 1.4.1: output sum 2.05 vs 48.04 on CPU, ratio ~0.043 for every element.
- Without the
unsqueeze, or withmaskas a graph input: exact. (x.view(B, C, H * W) * mask).sum(-1, keepdim=True).unsqueeze(-1): exact (our workaround).
Versions
ExecuTorch main (a489dcac3b) and 1.4.1, QAIRT 2.47.0.260601, torch 2.14.
- Langage dominant
- Python
- Étoiles
- 5.1k
- Forks
- 1.2k
- Merge moyen
- 1 j 22 h
- PR mergées (30 j)
- 675
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de pytorch/executorch
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
pytorch/executorch#24434 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
pytorch/executorch#24410 ·
Les mainteneurs répondent en général sous 1 jour
-
enhancement triaged
Difficulté 2/5 Une demi-journée Accessibilité débutants 68/100
pytorch/executorch#21640 ·
Les mainteneurs répondent en général sous 1 jour
-
Optimized le.Tensor_out returns b <= a for reverse-argument broadcastsPeut-être pris @SofianElmotiem l’a pris il y a 1 jour. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 35/100
pytorch/executorch#24485 ·
Les mainteneurs répondent en général sous 1 jour
-
`install_executorch.sh` fails in a fresh uv virtual environment: `No module named pip`Peut-être pris @mshr-h l’a pris il y a 2 jours. Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
pytorch/executorch#24417 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de pytorch/executorch
Issues similaires
-
needs-area-label
Difficulté 2/5 1-3 heures Accessibilité débutants 66/100
Les mainteneurs répondent en général sous 2 jours
-
enhancement good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Official-Space-AI/OpenPhysGraspGen#114 ·
Les mainteneurs répondent en général sous 2 jours
-
changelog investigate
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
ramnes/notion-sdk-py#441 ·
-
qa_bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
NVIDIA-NeMo/Gym#5644 ·
Les mainteneurs répondent en général sous 2 jours
-
BUG: catalog database credentials printed to logs at startupPeut-être pris @cjboyle l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
Les mainteneurs répondent en général sous 1 jour