[アップデート] ライブストリームトランスコードに特化したインスタンスファミリー「VT1」がリリースされていたので起動してみた

ライブストリーミングのトランスコードに特化した新しい EC2 インスタンスファミリーとして VT1 インスタンスがリリースされていました。従来の AWS MediaServices に加え、ライブストリームを処理するワークロードの選択肢が広がりました。
2021.10.18

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、大前です。

もう 1ヶ月前になってしまいましたが、ライブストリームのトランスコードに特化した EC2 VT1 インスタンスというものがリリースされていたので、触ってみました。

Amazon EC2 VT1 Instances とは

Amazon EC2 VT1 Instances は、EC2 に提供される新しいインスタンスファミリーです。

Xilinx 社の Alveo™ U30 というアクセラレータカードを搭載しており、ライブブロードキャスト、ビデオ会議、ジャストインタイムトランスコーディングなどのワークロード用に最適化されたインスタンスとして利用する事ができます。

リリース時点では以下 3つのインスタンスサイズが提供されており、CPU やメモリだけでなく搭載している U30 カードの数も異なるため、インスタンスサイズによって同時にトランスコードできるストリームの上限も異なる形となります。

インスタンスサイズ U30アクセラレーター vCPU メモリ(GiB)  オンデマンド(価格/時間)
vt1.3xlarge 1 12 24 $0.65
vt1.6xlarge 2 24 48 $1.30
vt1.24xlarge 8 96 192 $5.20

U30 カードの数に対する具体的なトランスコード性能については以下ドキュメントで確認できます。

従来はライブストリームのトランスコード用途に GPU ベースの G4dn ファミリーや CPU ベースの C5 ファミリーを利用する事が多かったようですが、それらと比較するとコスパの良い価格となっている様です。

ライブビデオストリームをトランスコードするために、Amazon EC2 G4dn GPUベースのインスタンスと比較してストリームあたり最大30%低いコスト、Amazon EC2 C5 CPUベースのインスタンスと比較して最大60%低いストリームあたりのコストを提供できます。

また、Xilinx が提供する Xilinx Video SDK を利用する事で。搭載されている U30 カードをハードウェアに関する知識がなくても活用する事ができる様になっています。

Xilinx Video SDK は Xilinx が提供する AMI を利用して必要なパッケージがインストールされた状態から VT1 インスタンス利用開始する事ができるほか、既存の AMI にもインストールする事が可能となっています。

Xilinx Video SDK は FFmpeg コマンドを通して利用する事ができる様になっているので、元々 FFmpeg を利用してトランスコードのワークロードを運用していた場合はキャッチアップもしやすそうです。

起動してみた

実際に VT1 インスタンスを立ててみます。今回は AMI も Xilinx 社が提供しているものを利用します。

AMI の選択画面で「Xilinx」と検索すると Xilinx 社が提供している AMI が確認できますのでこれを選択します。

インスタンスタイプは vt1.3xlarge を選択し、その他は一般的な設定で EC2 を起動します。

起動し、SSH でログインして各コマンドを叩いてみました。

lscpi を叩くと、Xilinx Corporation Device 513d が 2つ存在する事が確認できます。

ubuntu@ip-10-0-1-159:~$ lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma]
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.3 Non-VGA unclassified device: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 08)
00:03.0 VGA compatible controller: Amazon.com, Inc. Device 1111
00:04.0 Non-Volatile memory controller: Amazon.com, Inc. Device 8061
00:05.0 Ethernet controller: Amazon.com, Inc. Elastic Network Adapter (ENA)
00:1e.0 Processing accelerators: Xilinx Corporation Device 513d
00:1f.0 Processing accelerators: Xilinx Corporation Device 513d
ubuntu@ip-10-0-1-159:~$

Xilinx が提供している AMI から起動すると、Xilinx Video SDK に関連するスクリプト等が /opt/xilinx/xcdr/ 配下などにインストールされている事が確認できます。

ubuntu@ip-10-0-1-159:~$ ls -l /opt/xilinx/xcdr/
total 12
drwxr-xr-x 3 root root 4096 Aug 30 15:52 scripts
-rw-r--r-- 1 root root 1706 Aug 28 00:51 setup.sh
drwxr-xr-x 2 root root 4096 Aug 30 15:52 xclbins
ubuntu@ip-10-0-1-159:~$

上記 setup.sh を実行する事で PATH が更新され、Xilinx Video SDK を利用する為の準備が整う形になります。

ubuntu@ip-10-0-1-159:~$ source /opt/xilinx/xcdr/setup.sh
(中略)
ubuntu@ip-10-0-1-159:~$ echo $PATH
/opt/xilinx/ffmpeg/bin:/opt/xilinx/xcdr/bin:/opt/xilinx/launcher/bin:/opt/xilinx/jobSlotReservation/bin:/opt/xilinx/xrm/bin:/opt/xilinx/xrt/bin:/opt/xilinx/ffmpeg/bin:/opt/xilinx/xcdr/bin:/opt/xilinx/launcher/bin:/opt/xilinx/jobSlotReservation/bin:/opt/xilinx/xrm/bin:/opt/xilinx/xrt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
ubuntu@ip-10-0-1-159:~$

詳細については、Xilinx Video SDK を利用したトランスコード等のサンプル・チュートリアルが沢山ありますので、こちらを元に色々試せる形になっています。

おわりに

ライブストリームのトランスコードに特化した新しい EC2 インスタンスファミリーである、VT1 インスタンスを触ってみました。

AWS には AWS Elemental MediaLive というマネージドなライブストリームエンコードサービスがありますが、オンプレミスからの移行でいきなりマネージドサービスに寄せるのが難しい場合や、MediaLive では実現が難しい高度なトランスコードが必要とされる場合、VT1 インスタンスと Xilinx Video SDK を利用したライブストリームのトランスコードワークロードを組むという選択肢も取れる様になったのだと思います。

また、VT1 インスタンスは AWS Outposts 上でのサポートも予定されている様です。Outposts で VT1 が利用できる様になると、AWS におけるライブストリームトランスコードの選択肢がより増える形になりそうです。

VT1インスタンスは、間もなくAWSOutpostsでも利用できるようになります。ライブイベントブロードキャスターは、AWS OutpostsラックのVT1インスタンスを使用して、エッジロケーションでトランスコーディングするためにブロードキャストビデオフィードと統合できます。

VT1 インスタンス x Xilinx Video SDK でトランスコードを行ったストリームを MediaStore に格納するなど、既存の AWS MediaServices との組み合わせも可能とのことなので、試してみたいと思います。

以上、AWS 事業本部の大前でした。

参考