{"record":{"id":"d51f590367450614","repo":"hpcaitech/Open-Sora","slug":"convpixelshuffle-upsample-is-not-supported-for-vid","errorCode":null,"errorMessage":"ConvPixelShuffle upsample is not supported for video","messagePattern":"ConvPixelShuffle upsample is not supported for video","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"opensora/models/dc_ae/models/dc_ae.py","lineNumber":226,"sourceCode":"            in_channels=in_channels, out_channels=out_channels, factor=2, temporal_downsample=temporal_downsample\n        )\n        block = ResidualBlock(block, shortcut_block)\n    else:\n        raise ValueError(f\"shortcut {shortcut} is not supported for downsample\")\n    return block\n\n\ndef build_upsample_block(\n    block_type: str,\n    in_channels: int,\n    out_channels: int,\n    shortcut: Optional[str],\n    is_video: bool,\n    temporal_upsample: bool = False,\n) -> nn.Module:\n    if block_type == \"ConvPixelShuffle\":\n        if is_video:\n            raise NotImplementedError(\"ConvPixelShuffle upsample is not supported for video\")\n        block = ConvPixelShuffleUpSampleLayer(\n            in_channels=in_channels, out_channels=out_channels, kernel_size=3, factor=2\n        )\n    elif block_type == \"InterpolateConv\":\n        block = InterpolateConvUpSampleLayer(\n            in_channels=in_channels,\n            out_channels=out_channels,\n            kernel_size=3,\n            factor=2,\n            is_video=is_video,\n            temporal_upsample=temporal_upsample,\n        )\n    else:\n        raise ValueError(f\"block_type {block_type} is not supported for upsampling\")\n    if shortcut is None:\n        pass\n    elif shortcut == \"duplicating\":\n        shortcut_block = ChannelDuplicatingPixelShuffleUpSampleLayer(","sourceCodeStart":208,"sourceCodeEnd":244,"githubUrl":"https://github.com/hpcaitech/Open-Sora/blob/7ad6a96a135feb81f755c84fb391818718f6beb2/opensora/models/dc_ae/models/dc_ae.py#L208-L244","documentation":"ConvPixelShuffle upsampling is implemented only for 4D image tensors; constructing the DCAE decoder in video mode (is_video=True) with upsample_block_type='ConvPixelShuffle' raises NotImplementedError from build_upsample_block. Use the video-capable 'InterpolateConv' upsampler instead.","triggerScenarios":"Configuring a video DCAE (is_video=True) whose decoder uses upsample_block_type: ConvPixelShuffle; reached via build_decoder_project_out_block and Decoder __init__.","commonSituations":"Loading an image dc_ae checkpoint config and flipping is_video on to process video; mixing image-architecture settings with video mode.","solutions":["Change upsample_block_type to 'InterpolateConv' (used by video configs)","Use a video-specific DCAE config shipped with the repo","Keep is_video=False for image-only workloads"],"exampleFix":"# before\nupsample_block_type: ConvPixelShuffle  # is_video: true\n# after\nupsample_block_type: InterpolateConv","handlingStrategy":"validation","validationCode":"if is_video:\n    assert upsample_block_type != 'ConvPixelShuffle', 'ConvPixelShuffle upsample is image-only; use InterpolateConv'","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Maintain distinct video/image configs","Assert video-compat of all upsample/downsample blocks when is_video=true"],"tags":["dc-ae","video","not-implemented","config"],"backgroundTag":"unsupported-operation-for-input-type","analyzedSha":"7ad6a96a135feb81f755c84fb391818718f6beb2","analyzedAt":"2026-08-28T16:58:37.171Z","schemaVersion":2},"datasetVersion":"2026-08-28T21:17:43.275Z"}