1.极智开发 | ubuntu源码编译gpu版ffmpeg
2.NVIDIA Jetson NX安装torchvision教程
3.ffmpeg使用NVIDIA GPU硬件编解码
4.在 Nvidia Docker 容器编译构建显存优化加速组件 xFormers
极智开发 | ubuntu源码编译gpu版ffmpeg
欢迎访问极智视界公众号,音频源码音频有什用获取更多深入的驱动编程知识与实战经验分享。
本文将带你了解在 Ubuntu 系统中,程序如何进行源码编译,音频源码音频有什用获得 GPU 加速版本的驱动 FFmpeg 工具。
FFmpeg 是程序源码圣诞树桌面特效一款功能强大的音视频处理工具,支持多种格式的音频源码音频有什用音视频文件,并提供了丰富的驱动命令行工具和库,允许开发者在 C 语言或其他编程语言中进行音视频处理。程序
然而,音频源码音频有什用FFmpeg 本身并不具备 GPU 加速功能。驱动通过集成 CUDA SDK、程序OpenCL 或 Vulkan 等第三方库,音频源码音频有什用能够实现 FFmpeg 的驱动 GPU 加速,显著提升处理速度和性能。程序
在本文中,我们将重点介绍如何在 Ubuntu 系统中编译 GPU 加速版本的 FFmpeg。
首先,确保已安装 nv-codec-hearers,这是 NVIDIA 提供的 SDK,用于在 GPU 上加速 FFmpeg 的操作。
接下来,安装 FFmpeg 编码库和相关依赖,完成 FFmpeg 的在线签到源码编译配置。
最后,运行编译命令,检查 FFmpeg 是否成功安装并验证 GPU 加速功能。
至此,GPU 加速版本的 FFmpeg 已成功编译和安装,能够为你在音视频处理任务中带来显著性能提升。
通过极智视界公众号,获得更多有关人工智能、深度学习的前沿技术与实用知识,欢迎加入知识星球,获取丰富的资源与项目源码,共同探索 AI 领域的无限可能。
NVIDIA Jetson NX安装torchvision教程
安装 torchvision 前,先确保已安装 pytorch,参考相关教程进行操作。
首先,切换至国内软件源,执行更新操作。
安装 torchvision 所需依赖。
使用 dpkg 手动安装时,注意到 libpython3-dev 未有候选版本,需手动安装。安装其他依赖已满足。乒乓机制源码
下载 arm 架构的 libpython3-dev_3.6.7-1~._arm.deb 包,确保版本与当前 python3(3.6.9)兼容。
使用 dpkg -i 安装 deb 包,若遇到依赖问题,直接在网页中查找所有依赖的下载链接。
安装 libpython3-dev 的依赖 libpython3.6-dev 时,出现版本不正确的错误。分析后发现 libpython3.6-dev 需要的版本为 3.6.9-1~.ubuntu1.4,已有的版本为 3.6.9-1~.,因此安装 libpython3.6-dev 的候选版本 libpython3.6-stdlib 中最后一个版本,即为所需版本 3.6.9-1~.ubuntu1.4。
安装 torchvision 源码,确保 pytorch 和 torchvision 版本匹配,如 torch 1.6 版本对应 torchvision 0.7.0 版本。
使用码云账号注册并导入 torchvision 仓库,完成代码下载。
进入 torchvision 目录,使用命令编译,通常需时约十分钟。
当出现 pillow 报错时,说明 torchvision 近于安装成功。返回上一级目录,使用 pip/pip3 安装 pillow。链上茶源码
若下载速度慢,可使用国内豆瓣源下载安装 pillow。
安装 pillow 后,再次尝试导入 torch 仍报错,需再次进入 torchvision 目录进行编译安装。这次配置完成迅速。
使用 pip3 list 查看已安装包及版本,确认 torchvision 安装完成。
执行卷积神经网络训练,速度比本地快四倍。使用 jtop 监控 CPU、GPU 运行情况,观察在 Jetson Nano 上使用 pytorch 并设置 CUDA 进行训练时,主要由 GPU 执行计算,W 功率能达到的算力相当不错。
ffmpeg使用NVIDIA GPU硬件编解码
要在Ubuntu .上利用NVIDIA GPU硬件加速ffmpeg 3.4.8的编解码功能,首先需要安装必要的依赖库和特定驱动。 1. 安装依赖库:确保系统具备基本的开发环境,可以通过apt命令安装。 2. 安装ffnvcodec:这是关键组件,用于利用NVIDIA硬件进行视频编码和解码。 遇到官方驱动安装问题时,建议采取以下步骤:卸载旧版本Nvidia驱动
加入显卡驱动的tvm源码分析PPA(个人包存档)
查找并安装最新NVIDIA驱动,可能需要查看官方文档获取版本号
推荐学习资源:有关音视频开发的免费课程,包括FFmpeg、WebRTC等,可通过链接获取更多资料和学习资料包。 3. 安装CUDA:CUDA是NVIDIA提供的GPU计算库,对视频编解码的支持至关重要,可以从developer.download.nvidia.cn下载。 4. 编译ffmpeg:在安装完CUDA后,进行ffmpeg的编译。在编译前,务必检查系统环境是否正确设置。 针对NVIDIA NVENC并发Session数量的限制,如果你的GTX显卡限制在2路编码,可以参考老雷的Windows解决方案,虽然Linux下修改方法尚未在GitHub上找到通用解决方案,但已有一些针对不同驱动版本的特定修改,如github.com/keylase/nvidia...。 对于编码输出帧的问题,当使用nvenc或h_nvenc时,可能会出现SEI帧在RTP传输中导致错误。解决方法是直接在ffmpeg源码中的nvenc.c文件进行适当修改。 最后,完成上述步骤后,你可以编译ffmpeg进行测试,确保硬件加速功能正常工作。在 Nvidia Docker 容器编译构建显存优化加速组件 xFormers
本篇文章,聊聊如何在新版本 PyTorch 和 CUDA 容器环境中完成 xFormers 的编译构建。
让你的模型应用能够跑的更快。
写在前面
xFormers[1] 是 FaceBook Research (Meta)开源的使用率非常高的 Transformers 加速选型,当我们使用大模型的时候,如果启用 xFormers 组件,能够获得非常明显的性能提升。
因为 xFormers 对于 Pytorch 和 CUDA 新版本支持一般会晚很久。所以,时不时的我们能够看到社区提出不能在新版本 CUDA 中构建的问题( #[2]或 #[3]),以及各种各样的编译失败的问题。
另外,xFormers 的安装还有一个问题,会在安装的时候调整当前环境已经安装好的 PyTorch 和 Numpy 版本,比如我们使用的是已经被验证过的环境,比如 Nvidia 的月度发布的容器环境,这显然是我们不乐见的事情。
下面,我们就来解决这两个问题,让 xFormers 能够在新的 CUDA 环境中完成编译,以及让 xFormers 的安装不需要变动我们已经安装好的 Pytorch 或者 Numpy。
环境准备
环境的准备一共有两步,下载容器和 xFormers 源代码。
Nvidia 容器环境
在之前的 许多文章[4]中,我提过很多次为了高效运行模型,我推荐使用 Nvidia 官方的容器镜像( nvcr.io/nvidia/pytorch:.-py3[5])。
下载镜像很简单,一条命令就行:
完成镜像下载后,准备工作就完成了一半。
准备好镜像后,我们可以检查下镜像中的具体组件环境,使用docker run 启动镜像:
然后,使用python -m torch.utils.collect_env 来获取当前环境的信息,方便后续完成安装后确认原始环境稳定:
获取 xFormers
下载 xFormers 的源代码,并且记得使用--recursive 确保所有依赖都下载完毕:
xFormers 的源码包含三个核心组件cutlass、flash-attention、sputnik,除去最后一个开源软件在 xFormers 项目 sputnik 因为 Google 不再更新,被固定了代码版本,其他两个组件的版本分别为:cutlass@3.2 和 flash-attention@2.3.6。
Dao-AILab/flash-attention[6]目前最新的版本是 v2.4.2,不过更新的主干版本包含了更多错误的修复,推荐直接升级到最新版本。在 v2.4.2 版本中,它依赖的 cutlass 版本为 3.3.0,所以我们需要升级 cutlass 到合适的版本。
Nvidia/cutlass[7] 在 3.1+ 的版本对性能提升明显。
不过如果直接更新 3.2 到目前最新的 3.4flash-attention 找不到合适的版本,会发生编译不通过的问题,所以我们将版本切换到 v3.3.0 即可。
另外,在前文中提到了在安装 xFormers 的时候,会连带更新本地已经安装好的依赖。想要保护本地已经安装好的环境不被覆盖,尤其是 Nvidia 容器中的依赖不被影响,我们需要将xformers/requirements.txt 内容清空。
好了,到这里准备工作就结束了。
完成容器中的 xFormers 的安装
想要顺利完成 xFormers 的构建,还有一些小细节需要注意。为了让我们能够从源码进行构建,我们需要关闭我们下载 xFormers 路径的 Git 安全路径检查:
为了让构建速度有所提升,我们需要安装一个能够让我们加速完成构建的工具ninja:
当上面的工具都完成后,我们就可以执行命令,开始构建安装了:
需要注意的是,默认情况下安装程序会根据你的 CPU 核心数来设置构建进程数,不过过高的工作进程,会消耗非常多的内存。如果你的 CPU 核心数非常多,那么默认情况下直接执行上面的命令,会得到非常多的Killed 的编译错误。
想要解决这个问题,我们需要设置合理的MAX_JOBS 参数。如果你的硬件资源有限,可以设置 MAX_JOBS=1,如果你资源较多,可以适当增加数值。我的构建设备有 G 内存,我一般会选择设置 MAX_JOBS=3 来使用大概最多 GB 的内存,来完成构建过程,MAX_JOBS 的构建内存消耗并不是完全严格按照线性增加的,当我们设置为 1 的时候,GB 的设备就能够完成构建、当我们设置为 2 的时候,使用 GB 的设备构建会比较稳妥,当设置到 4 的时候,构建需要的内存就需要 GB 以上了。
构建的过程非常漫长,过程中我们可以去干点别的事情。
当然,为了我们后续使用镜像方便,最好的方案是编写一个 Dockerfile,然后将构建的产物保存在镜像中,以方便后续各种场景使用:
在构建的时候,我们可以使用类似下面的命令,来搞定既使用了最新的 Nvidia 镜像,包含最新的 Pytorch 和 CUDA 版本,又包含 xFormers 加速组件的容器环境。
如果你是在本机上进行构建,没有使用 Docker,那么构建成功,你将看到类似下面的日志:
等待漫长的构建结束,我们可以使用下面的命令,来启动一个包含构建产物的容器,来测试下构建是否成功:
当我们进入容器的交互式命令行之后,我们可以执行python -m xformers.info,来验证 xFromers 是否构建正常:
以及,使用python -m torch.utils.collect_env 再次确认下环境是否一致:
最后
好了,这篇文章就先写到这里啦。