こうした課題を解消するため、最新の z16で提供されたのがIBM Telumプロセッサーに標準搭載された統合AIアクセラレーター(以下、AIU)です。
AIUは通常のGPUのように外部のバスに接続されたアクセラレーターではなく、IBM Telumプロセッサー上に通常のCPUと共にオンチップで搭載されたAI推論のためのアクセラレーターです。入力から特徴量を抽出する処理の一種である畳み込みやプーリング、次のニューロンに対する出力に関わる活性化関数など、一般的な深層学習モデルで使用される処理をAIUで実行するための専用のCPU命令(NNPA: Neural Network Processing Assist [
4])が追加され、高速にこれらの処理を実行する事ができます。しかも、CPUとAIUはメモリーを共有しており、CPUでメモリー上に準備したデータを用い、レイテンシー低くこうした処理を呼び出す事ができます。(
図1中段のグラフ)
また、IBM Telumプロセッサーは処理量が非常に多い基幹業務の中で、こうした低レイテンシーを保ちながらスケールできるよう設計されており、クレジット・カードの不正検知モデルを使用したテストでは約1ミリ秒のレイテンシーを保ちながら、1日に3000億回(1秒間に約350万回)の推論を実行できるという結果が得られています 。
処理能力の観点からは多数の GPUなどを配置する事によって、より高い計算能力を得ることは可能かも知れません。しかし、厳しいレスポンス・タイムが要求される処理の中で、その要件を満たし得る非常に低いレイテンシーで、かつ十分なスループットで推論を実施したいという場合にはIBM Telum/AIUが有力な解となります。
モデル開発者に意識をさせないAIアクセラレーターの利用では実際にAIUを活用するにはどのようにすれば良いでしょうか?AIUを使用するためには上述のNNPAといったCPU命令や、IBM Z Deep Neural Network Library (zDNN) [
5]というAPIを介して直接使用することも可能です。しかし、通常、ユーザーがこれらの低レベルのAPIを用いてコーディングを行う必要はありません。
例えば深層学習モデルを開発するために広く使用されているTensorFlowでモデルを開発する場合、IBM Z Optimized for TensorFlow[
6]というAIU を使用するよう最適化された、IBM zSystems上で稼働するTensorFlowのコンテナ・イメージを 使用できます。ユーザーは好きなプラットフォームで開発したTensorFlowのモデルを、この IBM Z Optimized for TensorFlow のコンテナに取り込むことで、特に意識することなく AIU に最適化した形で深層学習モデルでの推論を行う事ができます (
図2上段)。 また、TensorFlowや PyTorch といった一般的に使用される深層学習モデルのためのフレームワークでは、作成したモデルをONNX [
7]と呼ばれる機械学習モデルを交換するためのオープン・フォーマットで書き出す事ができます。IBMではこのONNX形式を読み込みIBM zSystems に最適化した形の推論プログラムを生成するIBM Z Deep Learning Compiler(以下、zDLC)[
8]も提供しており、これを利用してAIUを活用する形の推論プログラムを生成・実行することもできます(
図2上段) 。z/OS 上での機械学習モデルの開発・実行をサポートする IBM Watson Machine Learning for z/OS(以下、WMLz) [
9](もしくは、その深層学習モデルの推論エンジン機能のみ無償利用可能とした IBM Watson Machine Learning for z/OS Online Scoring Community Edition)を使用した場
合は、ONNX 形式をWMLzへとインポートする際に自動的にzDLCが呼び出されますので、zDLCも意識することなく深層学習モデルをAIUに最適化された形でデプロイすることが可能です [
10]。
図2. AIUの利用方法概要