PyTorch 媒体处理架构大重构:TorchCodec 统一编解码,TorchVision/Audio 专注变换
随着多模态大模型(如 Vision-Language Models 和 Diffusion Models)的爆发,图像、视频和音频的输入输出处理已成为模型训练与推理的核心环节。PyTorch 团队在过去两年中,对媒体处理栈进行了重大整合,确立了新的三库协作架构。
核心变革:从分散到统一
过去,媒体编解码能力分散在 TorchVision 和 TorchAudio 中,导致 API 入口混乱、后端维护困难。例如,TorchVision 曾拥有 PyAV、C++ FFmpeg 和 CUDA/NVCUVID 三个后端,而 TorchAudio 则混合了多种音频解码库。这种碎片化不仅增加了用户的认知负担,也分散了开发团队的优化精力。
为了解决这些问题,PyTorch 推出了以下架构调整:
-
TorchCodec:编解码的唯一入口
- 职责:负责所有媒体(图像、视频、音频)的解码(Decoding)与编码(Encoding)。
- 优势:统一了 CPU 和 CUDA 后端,消除了多后端维护的复杂性。官方明确指出,TorchCodec 在 CUDA 视频解码方面比旧实现更具性能优势。
- 状态:旧版 API 已废弃或移除,用户必须迁移至此库。
-
TorchVision & TorchAudio:专注变换(Transforms)
- 职责:专注于对解码后的张量进行预处理、增强和变换。
- 策略:模型、数据集和管道(Pipelines)等功能已不再由这两库主动维护,转而推荐社区生态(如 HuggingFace)。
- 价值:通过缩小范围,团队能更专注于最活跃且不可替代的变换功能。
技术亮点与价值
此次重构不仅优化了架构,更带来了实质性的技术提升:
- 性能优化:集中开发资源使得 TorchCodec 在 GPU 加速场景下表现更优,特别是针对 CUDA 视频解码的优化。
- 维护简化:将复杂的依赖(如 6 个版本的 FFmpeg、NVIDIA SDK 及各种图像库)封装在 TorchCodec 中,大幅降低了 TorchVision 和 TorchAudio 的构建与 CI 复杂度。
- ABI 稳定性:三个库现已实现 ABI 稳定,不再强绑定特定 PyTorch 版本,确保了长期使用的兼容性。
开发者实战指南
新的协作模式清晰明确:TorchCodec 负责“读写”(文件 <-> 张量),TorchVision/Audio 负责“处理”(张量 <-> 张量)。
视频处理示例
import torch
from torchcodec.decoders import VideoDecoder
from torchvision.transforms import v2
# 1. 解码:TorchCodec 将视频帧转为张量
clip = VideoDecoder("video.mp4")[10:20] # 输出: FrameBatch, uint8, (10, C, H, W)
# 2. 变换:TorchVision 处理张量
transform = v2.Compose([
v2.RandomResizedCrop(224),
v2.ToDtype(torch.float32, scale=True),
])
batch = transform(clip.data)
音频处理示例
from torchcodec.decoders import AudioDecoder
from torchaudio.transforms import MelSpectrogram
# 1. 解码
samples = AudioDecoder("audio.mp3").get_all_samples() # 输出: AudioSamples
# 2. 变换
mel = MelSpectrogram(sample_rate=samples.sample_rate)(samples.data)
编码方向
编码流程完全相反,同样由 TorchCodec 的 Encoder 类(如 VideoEncoder, JpegEncoder)完成,将处理好的张量还原为文件。
总结
PyTorch 此次重构标志着其媒体生态进入了成熟期。通过剥离非核心功能并统一底层 I/O,PyTorch 不仅提升了自身的性能与可维护性,也为开发者提供了一个更清晰、更高效的开发路径。对于需要处理媒体数据的团队来说,明确区分“编解码”与“变换”的职责,是适应这一新架构的关键。
"我们将所有媒体 I/O 统一在 TorchCodec 中,让用户不再需要猜测哪个库提供了所需的解码器,而是使用一个设计完整的库。"
官方团队/CEO 发言
SEO 标题 PyTorch 媒体处理栈大升级:TorchCodec 统一编解码,TorchVision 专注变换
SEO 描述 PyTorch 官方宣布重构媒体处理生态,TorchCodec 统一图像、视频、音频编解码,TorchVision 和 TorchAudio 聚焦张量变换。详解架构变更、性能提升及迁移指南。
SEO 关键词 PyTorch, TorchCodec, TorchVision, 媒体处理, 编解码, 张量变换, AI 工具