Akamai Cloud の Accelerated Compute Instances とは

# はじめに

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/c3b918e5-ad75-489c-851f-2bad83b63787.png)

Akamai Cloud では、トランスコーディングに最適化された仮想マシンとして、Accelerated Compute Instancesをリリースしました。
Accelerated Compute Instancesは、NETINT Quadra T1U Video Processing Unit（VPU）と搭載しており、ASICベースのメディアアクセラレータカードです。
このユニットによりCPUやGPUに比べて高速なエンコーディングが可能となり、コストパフォーマンスが高いインスタンスになります。


## NETINT とは

[NETINT Technologies](https://netint.com/)は、カナダを拠点とする半導体企業であり、主にビデオエンコーディングやAI画像処理向けのSoC（System on Chip）ソリューションを開発しているイノベーターです。同社は、独自のASIC（エンコーディング向け集積回路）技術を活用し、データセンターやクラウド向けに高効率なビデオ処理ユニットを提供しています。

## NETINT Quadra T1U Video Processing Unit とは

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/48cb0095-d1a6-4cde-93e4-302f3eedfe0b.png)

[NETINT Quadra T1U](https://netint.com/products/quadra-t1u-video-processing-unit/)は、データセンターやクラウド向けに設計された高密度・高効率なVideo Processing Unit（VPU）になります。主にリアルタイムのビデオエンコードやトランスコード用途で使われ、クラウド事業者ではAkamaiが初めて導入した製品でもあります。

特徴として、第2世代ASICビデオ処理ユニットであるCodensity G5 Chipを搭載しており、AV1、HEVC、H.264 のエンコーディングにも対応しています。このチップには独自の内蔵 AI 処理エンジンが組み込まれています。
このAI処理エンジンにより、シーン検出や背景除去、顔認識、物体検出などを行いながらのリアルタイム処理も可能となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/61733dc0-2eea-429c-8d5e-2ee30e34cbd7.png)

| 項目 | 詳細 |
|------|------|
| 製品名 | NETINT Quadra T1U |
| フォームファクター | U.2 2.5インチ |
| インターフェース | PCIe 4.0 x4 |
| 搭載チップ | NETINT Codensity G5 |
| 消費電力 | 最大17W（フルロード時） |
| 最大解像度 | 8K（10ビット HDR 対応） |
| エンコード対応 | AVC/H.264, HEVC/H.264, AV1, YUV420, JPEG |
| デコード対応 | AVC/H.264, HEVC/H.264, VP9, YUV420, JPEG |
| HDR対応 | HDR10, HDR10+, HLG for H.264 & HEVC encode/decode |
| 最大同時処理性能 | 32x 1080p30, 8x 4Kp30, 2x 8Kp30 |
| ビットレート | 64kbit/s to 700Mbit/s|
| AI推論性能 | 15 TOPS（INT8） |
| 2Dビデオ処理機能 | クロップ、パディング、スケーリング、オーバーレイ、YUV/RGB変換 |
| ソフトウェア互換性 | FFmpeg SDKs, GStreamer, LibXcoder API integration |

## CPU, GPU, VPUの比較

エンコーディングを行う際には従来のCPUやGPUが主に利用されてきましたが、VPUにより**ASIC（特定用途向け集積回路）ベース**のハードウェアが新たな選択肢として浮上してきています。

https://netint.com/tag/vmaf/

NETINT社のフィールドアプリケーションエンジニアマネージャーであるKenneth Robinson氏は、2025年の業界シンポジウムにて、以下の3種のトランスコーディング技術を比較しました。


**比較対象：**
- CPU：AMD EPYC 32コア搭載のサーバー
- GPU：NVIDIA L4 x2枚搭載のサーバー
- ASIC：NETINT Quadra T1U ×10枚搭載のサーバー

**評価基準：**

1. 画質（VMAFスコア）
2. スループット（出力ストリーム数）
3. コスト（CAPEX/OPEX）
4. 消費電力（W/ストリーム）

**H.264 1080p のエンコーディング比較：**

| 構成 | サーバ価格 | 出力可能数 | 1ストリームあたりコスト |
|------|------------|------------|---------------------------|
| CPU (x264 Medium/VFast) | $7,100 | 7 ストリーム | **$1014/ストリーム** |
| GPU (NVIDIA L4 x2)       | $14,214 | 40 ストリーム | **$355/ストリーム** |
| ASIC (Quadra T1U x10)    | $21,000 | 320 ストリーム | **$65/ストリーム** |

比較では、NETINT Quadra（VPU / ASICベース）は、画質、スループット、コスト、消費電力ともに優れた結果となっています。
QuadraはH.264およびHEVCいずれのコーデックでも、平均VMAFスコアが高く、視聴者の体感品質において優位性を示しています。
結果として、NETINTのVPUは、GPUやCPUを比較しても動画品質を落とすことなく、低単価で大量のエンコーディングを実行できることが比較から把握できます。

## Accelerated Compute Instances

Akamai Cloud の Accelerated Compute Instances は、このコストパフォーマンスに優れたNETINT Quadra T1Uを搭載したインスタンスになり、執筆時時点では3種類のインスタンスを提供しています。
尚、対応するリージョンが限られておりますので、[こちら](https://techdocs.akamai.com/cloud-computing/docs/accelerated-compute-instances)からご確認ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/3fce7a7b-10f6-4ac2-a9d1-896a3f295381.png)

インスタンスを起動する際の推奨OSとしては下記になります。

- Ubuntu 20.04
- Ubuntu 22.04
- Ubuntu 22.10

## クイックスタート

Akamai Cloud上に構築したNETINT Quadra T1U VPU x1 Smallインスタンスにてffmpegを利用できるようにクイックスタートガイドを元にセットアップを行います。

[Quick Start Guide](https://docs.netint.com/vpu/quadra/)

ffmpegのインストールに必要となるアセンブラをインストールします。

```
sudo apt-get install nasm yasm unzip -y
```

SDKが含まれているQuadraパッケージをダウンロードします。
執筆時時点での最新バージョンはv5.2.0になります。

```
wget https://releases.netint.com/quadra/L8Q6OW2GRMBRJWF/Quadra_V5.2.0.zip
```

ダウンロードしたzipを解凍します。

```
unzip Quadra_V5.2.0.zip
cd Quadra_V5.2.0
```

クイックインストーラーを起動します。

```
bash quadra_quick_installer.sh
```

セットアップウィザードが表示され、[手順](https://docs.netint.com/vpu/quadra/installation/ffmpeg/ffmpeg-scripted-installation#scripted-installation)に従ってインストールを行います。

1)Setup Environment variables
3)Install OS prerequisite packages
4)Install NVMe CLI
5)Install Libxcoder
x)Install FFmpeg (お好みのFFmegのバージョンを選択します)
22)インストーラーを終了します

```
Choose an option:
1) Setup Environment variables                         7) Install FFmpeg-n3.1.1 (must install Libxcoder_quadra first)  13) Install FFmpeg-n4.4
2) Unlock CPU governor                                 8) Install FFmpeg-n3.4.2                                        14) Install FFmpeg-n5.0
3) Install OS prerequisite packages                    9) Install FFmpeg-n4.1.3                                        15) Install FFmpeg-n6.0
4) Install NVMe CLI                                   10) Install FFmpeg-n4.2.1                                        16) Install gstreamer-1.22.2
5) Install Libxcoder                                  11) Install FFmpeg-n4.3.1                                        17) Firmware Update
6) Install Libxcoder_quadra (for FFmpeg-n3.1.1 only)  12) Install FFmpeg-n4.3                                          18) Quit
#?
```

インストールされたFFmpegでハードウェアエンコーディングであるQuadraのコーデックが利用可能かを確認します。

```
root@localhost:~/Quadra_V5.2.0# ffmpeg -codecs -hide_banner | grep quadra
 DEV.L. av1                  Alliance for Open Media AV1 (encoders: av1_ni_quadra_enc)
 DEV.LS h264                 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_v4l2m2m h264_ni_quadra_dec) (encoders: libx264 libx264rgb h264_ni_quadra_enc h264_v4l2m2m)
 DEV.L. hevc                 H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_v4l2m2m h265_ni_quadra_dec) (encoders: libx265 h265_ni_quadra_enc hevc_v4l2m2m)
 DEVIL. mjpeg                Motion JPEG (decoders: mjpeg jpeg_ni_quadra_dec) (encoders: mjpeg jpeg_ni_quadra_enc)
 D.V.L. vp9                  Google VP9 (decoders: vp9 vp9_v4l2m2m vp9_ni_quadra_dec)
```

ni_rsrc_mon コマンドを利用することにより、VPUの利用状況を確認することもできます。

- 検出されたVPUの数
- 温度と電力
- ファームウェアとシリアル番号
- デコーダー、エンコーダー、スケーラー、AIエンジンの使用状況

```
root@localhost:~/Quadra_V5.2.0# ni_rsrc_mon
**************************************************
1 devices retrieved from current pool at start up
Tue May 27 12:04:05 2025 up 00:00:00 v5206s5r3
INDEX    TEMP     POWER    FR       SN
0        45       5893mW   5206s5r1 Q1UA4FA11CC127-0875
Num decoders: 1
INDEX LOAD MODEL_LOAD INST MEM  SHARE_MEM P2P_MEM DEVICE
0     0    0          0    0    0         0       /dev/nvme0n1
Num encoders: 1
INDEX LOAD MODEL_LOAD INST MEM  SHARE_MEM P2P_MEM DEVICE
0     0    0          0    0    0         0       /dev/nvme0n1
Num scalers: 1
INDEX LOAD MODEL_LOAD INST MEM  SHARE_MEM P2P_MEM DEVICE
0     0    0          0    0    0         0       /dev/nvme0n1
Num AIs: 1
INDEX LOAD MODEL_LOAD INST MEM  SHARE_MEM P2P_MEM DEVICE
0     0    0          0    0    0         0       /dev/nvme0n1
**************************************************
```

以上でFFmpegのインストールは完了です。


## FFmepgを利用したエンコーディングテスト

今回は、先程のベンチマークと一緒のKenneth Robinson氏が利用した、[Netflixのオープンソースコンテンツ](https://opencontent.netflix.com/)を利用してVPUでエンコーディングテストを行います。

**動画の仕様**

Title : Meridian (2016)
- UHD IMF
- Zipped UHD VDM
- UHD 4k 5994 HDR P3/PQ (mp4)
- UHD VDM Image Sequence
- Dolby Atmos Metadata File
- Atmos BWAV ADM
- TIFF Sequence
- H264

FFmpegを利用してMeridian（2016）をNETINT Quadra を使用したH.264 から H.265トランスコードを実施します。

```
ffmpeg -y \
  -nostdin -hide_banner \
  -c:v h264_ni_quadra_dec -dec 0 \
  -i Meridian_UHD4k5994_HDR_P3PQ.mp4 \
  -vf scale=3840:2160 \
  -color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc \
  -c:v h265_ni_quadra_enc -enc 0 \
  -xcoder-params intraQP=24:intraPeriod=120 \
  Meridian_UHD4k5994_HDR_P3PQ_encoded_x265_vpu.mp4
```

| オプション | 内容 | 解説 |
|------------|------|------|
| `-y` | 上書き許可 | 既存の出力ファイルがあっても確認せずに上書き |
| `-nostdin` | 入力無効化 | 標準入力の割り込み（`q`など）を無効化 |
| `-hide_banner` | バナー非表示 | FFmpeg起動時のバナー情報（バージョンなど）を非表示 |
| `-c:v h264_ni_quadra_dec` | デコーダ指定 | NETINT Quadra専用のH.264ハードウェアデコーダ |
| `-dec 0` | デコーダID | デコーダインスタンス0番を使用（複数カード対応時に使用） |
| `-i Meridian_UHD4k5994_HDR_P3PQ.mp4` | 入力ファイル | ソース映像ファイルを指定 |
| `-vf scale=3840:2160` | 映像スケーリング | 解像度をUHD 4K (3840x2160) にリサイズ |
| `-color_primaries bt2020` | 色度情報 | 広色域のBT.2020色度（HDR映像の標準） |
| `-color_trc smpte2084` | トランスファ特性 | PQカーブ（HDR10で使われる） |
| `-colorspace bt2020nc` | 色空間 | 非圧縮BT.2020色空間（ノンコンバージョン） |
| `-c:v h265_ni_quadra_enc` | エンコーダ指定 | NETINT Quadra専用のH.265ハードウェアエンコーダ |
| `-enc 0` | エンコーダID | エンコーダインスタンス0番を使用 |
| `-xcoder-params intraQP=24:intraPeriod=120` | エンコーダ設定 | QP=24（画質指定）、GOP長=120（IDR間隔） |
| `Meridian_UHD4k5994_HDR_P3PQ_encoded.265` | 出力ファイル | エンコード後のHEVC（H.265）生ストリームファイル |

ni_rsrc_monでエンコーディング中の状況を確認することができます。
出力からQuadraは現在4K 59fpsの映像を、平均約3.17Gbpsという非常に高いビットレートで安定してエンコードしており、これは4K 59.94fps HDRソース高品質な映像を安定してエンコーディングしていることがわかります。

```
root@localhost:~# ni_rsrc_mon -d
**************************************************
1 devices retrieved from current pool at start up
Tue May 27 13:31:08 2025 up 00:00:00 v5206s5r3
INDEX    TEMP     POWER    FR       SN
0        45       8577mW   5206s5r1 Q1UA4FA11CC127-0875
Num decoders: 1
INDEX AvgCost FrameRate IDR   InFrame OutFrame Width Height SID   DEVICE         NAMESPACE
0     13      59        18    3048    3044     3840  2160   8200  /dev/nvme0n1   /dev/nvme0n1
Num encoders: 1
INDEX AvgCost FrameRate IDR   UserIDR InFrame OutFrame BR         AvgBR      Width Height Format    SID   DEVICE         NAMESPACE
0     29      59        26    0       3036    3028     91568      3176463    3840  2160   YUV       5001  /dev/nvme0n1   /dev/nvme0n1
**************************************************
```

出力された動画ファイルをほぼ同条件でCPUエンコーディングした動画とVMAFの比較を実施しました。
[VMAF（Video Multi-Method Assessment Fusion）](https://github.com/Netflix/vmaf)は、Netflixが開発した映像品質評価指標で、人間の視覚に近いスコアを0〜100で算出します。
複数のアルゴリズム（PSNR・SSIMなど）を統合して、視聴者が感じる画質の劣化を数値化します。
主に映像圧縮後の品質評価やエンコーダ比較に使われます。

CPUにてエンコーディングした際のコマンド

```
ffmpeg -y \
  -nostdin -hide_banner \
  -threads 55 \
  -i Meridian_UHD4k5994_HDR_P3PQ.mp4 \
  -vf scale=3840:2160 \
  -c:v libx265 \
  -pix_fmt yuv420p \
  -x265-params "qp=27:keyint=120:min-keyint=120:no-scenecut=1" \
  -color_primaries bt2020 \
  -color_trc smpte2084 \               
  -colorspace bt2020nc \
  Meridian_UHD4k5994_HDR_P3PQ_encoded_x265_cpu.mp4
```

2つの出力結果のファイルを元動画とVMAFの比較を行います。

```
ffmpeg -i Meridian_UHD4k5994_HDR_P3PQ.mp4 \
       -i Meridian_UHD4k5994_HDR_P3PQ_encoded_x265_cpu.mp4 \
       -lavfi "[0:v]format=yuv420p[ref]; \
               [1:v]format=yuv420p[dist]; \
               [ref][dist]libvmaf=log_path=vmaf_cpu.json:log_fmt=json:n_threads=55" \
       -f null -

ffmpeg -i Meridian_UHD4k5994_HDR_P3PQ.mp4 \
       -i Meridian_UHD4k5994_HDR_P3PQ_encoded_x265_vpu.mp4 \
       -lavfi "[0:v]format=yuv420p[ref]; \
               [1:v]format=yuv420p[dist]; \
               [ref][dist]libvmaf=log_path=vmaf_vpu.json:log_fmt=json:n_threads=55" \
       -f null -
```

このグラフでは各フレーム単位でのVMAFスコアを比較していますが、VPUだからといってスコアが大きく劣化することはなく、ほぼ同等程度の品質でエンコーディングできていることがわかります。

![output (8).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/49877/19479f8a-4a1b-4364-9659-0c50c588bd5d.png)


# まとめ

本ブログでは、Akamai CloudのAccelerated Compute Instancesに搭載されたNETINT Quadra T1U VPUを用いたトランスコーディング環境を紹介し、その性能と画質について実際に検証を行いました。

NETINT Quadra T1Uは、低コストかつ高性能なASICベースVPUであり、H.264 / HEVC / AV1のリアルタイムエンコードをサポートしています。

VPUエンコーディングはCPUエンコーディングと比較して、大幅なスループットと低コストを実現しつつ、画質（VMAFスコア）も同等水準を維持できることを確認することができました。

Akamai Cloudでの映像処理コストの最適化や、高効率なライブ配信/VoDエンコーディングの選択肢として、Accelerated Compute Instancesは非常に有効なソリューションです。

# 関連記事

アカマイ・テクノロジーズ合同会社の Qiita では、 Akamai Cloud 関連などの開発者向けの記事を掲載しております。

https://qiita.com/xenbase/items/52e2956a64cedc772bd9