関連する技術記事・ガイドを検索
Intel AMX(Advanced Matrix Extensions)は、Sapphire Rapids世代のXeonプロセッサから搭載された、AI/MLワークロードの行列演算を劇的に高速化する専用アクセラレータです。タイルと呼ばれる2次元レジスタを使用して大規模な行列演算を効率的に実行します。
従来のSIMD: 1次元ベクトル演算
AMX: 2次元タイル演算
タイルレジスタ:
- 8個のタイル(tmm0-tmm7)
- 各タイル: 最大1KB(16×64バイト)
- 総容量: 8KB
| 型 | 精度 | 用途 | パフォーマンス | |-----|------|------|---------------| | INT8 | 8bit整数 | 推論 | 最高 | | BF16 | Brain Float16 | 学習/推論 | 高 | | FP16 | 半精度浮動小数点 | 将来対応 | - |
Xeon Platinum 8380(40コア):
AVX-512 VNNI: 5.3 TOPS(INT8)
AMX INT8: 42.6 TOPS(8倍)
AMX BF16: 21.3 TFLOPS
ResNet-50推論(バッチサイズ64):
AVX-512: 1,200 images/sec
AMX: 4,800 images/sec(4倍)
BERT-Large推論:
AVX-512: 50 sequences/sec
AMX: 180 sequences/sec(3.6倍)
#include <immintrin.h>
#include <amxintrin.h>
// タイル設定
struct tile_config {
uint8_t palette_id;
uint8_t start_row;
uint8_t reserved[14];
uint16_t colsb[8];
uint8_t rows[8];
};
// AMXを使った行列乗算
void amx_gemm(int8_t* A, int8_t* B, int32_t* C,
int M, int N, int K) {
// タイル設定
tile_config cfg = {0};
cfg.palette_id = 1;
cfg.rows[0] = M;
cfg.colsb[0] = K;
cfg.rows[1] = K;
cfg.colsb[1] = N * 4; // INT32は4バイト
cfg.rows[2] = M;
cfg.colsb[2] = N * 4;
_tile_loadconfig(&cfg);
// タイルロード
_tile_loadd(0, A, K); // tmm0 = A
_tile_loadd(1, B, N*4); // tmm1 = B
_tile_zero(2); // tmm2 = 0
// 行列乗算
_tile_dpbssd(2, 0, 1); // tmm2 += tmm0 * tmm1
// 結果ストア
_tile_stored(2, C, N*4);
// リリース
_tile_release();
}
import torch
import intel_extension_for_pytorch as ipex
# AMX自動活用
model = model.to(memory_format=torch.channels_last)
model = ipex.optimize(model, dtype=torch.bfloat16)
# 推論実行(AMXが自動的に使用される)
with torch.no_grad():
with torch.cpu.amp.autocast():
output = model(input)
対応CPU:
- Intel Xeon Scalable 第4世代(Sapphire Rapids)
- Intel Xeon Max シリーズ
- 将来のコンシューマCPU(未定)
必要BIOS設定:
- AMX: Enabled
- TME: Enabledが推奨
OS要件:
- Linux: カーネル5.16以降
- Windows: Server 2022以降
ライブラリ:
- Intel oneAPI 2022.2以降
- GCC 11以降
- LLVM 13以降
推奨サイズ(INT8):
- M=16, N=64, K=64: 最大効率
- M=32, N=32, K=32: バランス型
メモリアライメント:
- 64バイト境界必須
- できれば4KB境界
// 良い例: タイルサイズに合わせたブロッキング
for (int i = 0; i < M; i += 16) {
for (int j = 0; j < N; j += 64) {
for (int k = 0; k < K; k += 64) {
// AMX命令でブロック処理
}
}
}
// キャッシュ最適化
#pragma omp parallel for
for (int tile = 0; tile < num_tiles; tile++) {
process_tile_with_amx(tile);
}
構成例:
- Xeon 8380 × 2ソケット
- メモリ: 512GB
- 用途: リアルタイムAI推論
性能:
- レイテンシ: 5ms以下
- スループット: 10,000 req/sec
- 電力効率: 4倍向上
将来の展開:
- 組み込みXeon D
- 低電力版AMX
- リアルタイム画像処理
不適切:
- 小規模行列(32×32以下)
- スパース行列
- 頻繁なカーネル切り替え
- リアルタイムOS環境
| 技術 | 提供元 | 強み | 弱み | |------|--------|------|------| | AMX | Intel CPU | 汎用性、低レイテンシ | GPUより低速 | | Tensor Core | NVIDIA GPU | 最高性能 | 高価、高消費電力 | | TPU | Google | 大規模学習 | 限定的アクセス | | NPU | Various | 低消費電力 | 柔軟性低い |
現在: INT8, BF16
次世代: FP16追加
将来:
- より大きなタイル
- 新データ型(FP8等)
- コンシューマCPU搭載
### エコシステム
- **フレームワーク統合**: TensorFlow, PyTorch完全対応
- **コンパイラ最適化**: 自動AMX活用
- **ライブラリ**: BLAS/LAPACK AMX版
Intel AMXは、CPUでのAI処理を大幅に高速化する画期的な技術です。適切なワークロードに対しては、GPUに匹敵する性能を低消費電力で実現できる可能性を秘めています。