この記事は、The Parallel Universe Magazine 51 号に掲載されている「Good or Bad Pill?」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
このチュートリアルでは、AI リファレンス・キットの Visual Quality Inspection (英語) を使用して、コンピューター・ビジョン・ソリューションを構築する方法を紹介します。このリファレンス・キットは、製造工程における不良品の視覚的検査の概念を説明するさまざまなデータセット (英語) へのリンクを提供します。製造工程で発生するさまざまな不良品で試すことができますが、このチュートリアルでは錠剤の品質に注目します。このデータセットでは、市販のサプリメントが「良」または「不良」のカテゴリーに分類されています。ここでは、このデータセットを使用して、事前にトレーニングした VGG-16 モデルを転移学習し、錠剤の自動品質管理ツールを作成します。
VGG-16 は、16 層の深さを持つ畳み込みニューラル・ネットワークです。ILSVRC 2014 で最も成績の良いアーキテクチャーの 1 つでした。クラス分類タスクでは、 (分類エラー率 6.66% の GoogleNet に次ぐ) 2 位となり、トップ 5 分類エラー率は 7.32% でした。また、位置特定タスクでは優勝し、位置特定エラー率は 25.32% でした。
しかし、ゼロからトレーニングすると非常に時間がかかります。VGG-16 でトレーニングした ImageNet の重みのサイズは 528MB あるため、かなりのディスク容量と帯域幅を必要とし、非効率的です。1 億 3800 万個のパラメーターは、勾配の爆発的な増加につながります。そこで、AWS* EC2* m6i.4xlarge インスタンス (第 3 世代インテル® Xeon® Platinum 8375C プロセッサー 2.90GHz) 上で稼働する PyTorch* 向けインテル® エクステンション (IPEX) を利用して、錠剤データセット上で事前にトレーニングした VGGNet 分類アーキテクチャーを転移学習させます。
IPEX には、インテル® ハードウェア上で PyTorch* のパフォーマンスを向上する最適化が含まれています (図 1)。また、Python* の API も含まれており、ユーザーは 2、3 行のコードを変更するだけで、これらの最適化を利用できます。IPEX の最適化のほとんどは、最終的に stock PyTorch* のリリースに含まれる予定です。
図 1. PyTorch* 向けインテル® エクステンション (IPEX) により、stock PyTorch* と比較して予測時間が向上。
この比較は v1.8.0 で行っていますが、掲載時の最新バージョンは v1.12.0です。
第 3 世代のインテル® Xeon® プロセッサーは、インテル® アドバンスト・ベクトル・エクステンション (インテル® AVX-512) で低精度の BFloat16 をネイティブにサポートし、将来的にはインテル® アドバンスト・マトリクス・エクステンション (インテル® AMX) で混合精度をサポートする予定です。インテル® AMX を使用すれば、単精度でネットワーク精度を維持したまま、半精度でトレーニングできます。
IPEX は、Conv2D + ReLU、Linear + ReLU など、頻繁に使用される演算子パターンの融合を透過的にサポートし、TorchScript でさらにパフォーマンスを最適化できます。また、演算子を最適化し、いくつかのカスタマイズされた演算子を実装します。一部の ATen 演算子は、ATen の登録メカニズムにより IPEX で最適化された演算子に置き換えられます。さらに、一般的なトポロジー向けにいくつかのカスタマイズされた演算子が実装されています。例えば、ROIAlign と NMS は Mask R-CNN で定義されています。IPEX はカスタマイズされた演算子も最適化し、これらのトポロジーのパフォーマンスを向上します。