The Future of Support for AMD GPU Transcoding

Today, the Livepeer node (i.e. go-livepeer) does not support transcoding with AMD GPUs. While increasing the hardware diversity on the network by adding support for GPUs built-in video encoding/decoding chips from another vendor besides Nvidia would be great, the main reason AMD GPU support has not been prioritized by Livepeer Inc. is due to the poor transcoding performance of AMD GPUs relative to Nvidia GPUs in a previous benchmark using the ffmpeg CLI.

For reference, here is a high level summary of the aforementioned benchmark results:

Machine #1

  • GPU: 5xRX470
  • The system (Ubuntu 20.04) installed ffmpeg, which already supported vaapi by default, was used
  • Could not transcode a single 1080p video to 720p, 480p and 360p renditions in real-time on a single card
  • Was able to transcode a single 1080p video to a single rendition in real-time on a single card

Machine #2

  • GPU: RX580
  • CPU: Ryzen 2400G
  • RAM: 16GB DDR4
  • The system (Arch Linux) installed ffmpeg, which already supported vaapi by default, was used
  • Was able to transcode 2 1080p videos to 720p, 480p, 360p, 240p and 144p renditions in real-time on a single card

Here is an example ffmpeg CLI script that we used to transcode with the AMD GPUs via ffmpeg’s VAAPI integration. The ffmpeg CLI’s transcoding pipeline works a bit differently than Livepeer’s transcoding pipeline, but we thought that using the ffmpeg CLI would still give us a good sense of hardware transcoding performance for initial benchmarking.

Consider the above results relative to that of a Nvidia GeForce 1070 or 1080, both of which should be able to transcode multiple 1080p videos into multiple output renditions on a single card.

Note: These benchmark results are quite old and it is quite possible that not everything was properly configured at the time of running the benchmark.,

With all that being said, I don’t think support for AMD GPU transcoding is ruled out. If information is shared or discovered indicating that better transcoding benchmarking results can be achieved using an AMD GPU while using VAAPI then it may make sense to increase the priority of AMD GPU transcoding support in the Livepeer node.

Great work on this!

I didn’t know there was such a difference. Based on the benchmarking I don’t think AMD support makes sense at all.