このトピックでは、第3世代Intelが提供するAnalytics ZooおよびBrain Floating Point bit-16 (bfloat16) 機能の使用方法について説明します。®Xeon ®スケーラブルなプロセッサをして、ECS (Elastic Compute Service) インスタンス上のAIアプリケーションのパフォーマンスを高速化します。 このトピックは、第7世代の高頻度ECSインスタンス (高クロック速度のECSインスタンスとも呼ばれます) に適用できます。
このタスクについて
- 第7世代の高周波ECSインスタンスは、第3世代のSHENLONGアーキテクチャ上に構築され、第3世代のIntelを搭載しています。®Xeon ®スケーラブルなプロセッサ。 これらのインスタンスは、第6世代の高頻度インスタンスよりも最大260% 高いコンピューティングパフォーマンスを提供できます。 ECSインスタンスでAnalytics Zooを使用する場合、Intelによって最適化されたTensorFlowやPyTorch深層学習モデルなどの高度なパイプライン機能を活用して、深層学習アプリケーションを開発できます。
- 第3世代インテル ®Xeon ®スケーラブルなプロセッサは、強化されたIntelを使用して、業界をリードするワークロード最適化プラットフォームを提供します®Deep Learning Boost (インテル)®組み込みのAIアクセラレーション機能であるDL Boost) 。 強化されたインテル ®DL Boostは、AI推論とトレーニングのパフォーマンスを向上させるために、bfloat16に対する業界初のx86サポートを備えています。
第3世代インテル ®Xeon ®スケーラブルなプロセッサは、複雑なAIワークロードに対応できます。 強化されたインテル ®DL Boostは、AIトレーニングパフォーマンスを最大1.93倍、画像分類のAI推論パフォーマンスを最大1.87倍、自然言語処理 (NLP) のAIトレーニングパフォーマンスを最大1.7倍、AI推論パフォーマンスを最大1.9倍向上させます。× 。 bfloat16のサポートにより、ヘルスケア、金融サービス、小売業界向けのAIトレーニングワークロードの処理がはるかに効率的になります。
- Analytics Zooは、Intelが開発した統合されたオープンソースのビッグデータ分析およびAIプラットフォームです。 TensorFlow、Keras、PyTorchなどのAIモデルをシームレスにスケーリングして、Spark、Flink、Rayなどの分散ビッグデータ環境に適応できます。
Analytics Zooには次の機能があります。
- ビッグデータプラットフォームでTensorFlow、PyTorch、OpenVINOなどのAIモデルを実行するためのエンドツーエンドのパイプライン。 たとえば、開発者はTensorFlowまたはPyTorchコードをSparkコードに埋め込み、分散トレーニングと推論を行うことができます。 開発者は、TensorFlow、Keras、PyTorch、BigDLなどのネイティブの深層学習モデルをSpark機械学習 (ML) パイプラインで使用することもできます。
- クラスター処理や自動MLタスク用のスケーラブルなAutoMLなど、高レベルのMLワークフロー。 クラスターサービングは、TensorFlow、PyTorch、OpenVINOツールキットなどのモデルの自動分散推論ソリューションです。 スケーラブルなAutoMLは、時系列予測に使用されます。
- 推奨、時系列、コンピュータビジョン、NLPなどのアプリケーション用の内蔵共通モデル。
- Bfloat16は、ニューラルネットワークで広く使用されている数値形式です。
- ResNet-50は、50層の深さの残留ネットワークである。 オブジェクト分類などの分野で広く使用されています。
手順
ステップ1: 高頻度ECSインスタンスの作成
高頻度ECSインスタンスを作成するには、次の操作を実行します。
ステップ2: ECSインスタンスでbfloat16をサポートするAnalytics Zoo環境を準備する
Analytics Zooは、bfloat16をサポートする事前作成済みのDockerイメージを提供します。 方法1を使用して、Alibaba Cloud ECSでこのDockerイメージを取得できます。 または、方法2を使用して、bfloat16をサポートするAnalytics Zooの夜間ビルドを取得できます。 関連コードの詳細については、「サンプルコード: Analytics Zooがbfloat16を使用して深層学習モデルのトレーニングを高速化する方法」をご参照ください。
- 方法1: ECSでAnalytics Zooが提供するDockerイメージを取得する
- ECS インスタンスに接続します。 詳細については、「ECS インスタンスへの接続」をご参照ください。
- 次のコマンドを実行して、Dockerをインストールして実行します。
yum install docker-io -y systemctl start docker
- 次のコマンドを実行して、bfloat16をサポートするAnalytics Zooが提供するDockerイメージを取得します。
docker pull intelanalytics/analytics-zoo:0.8.1-bigdl_0.10.0-spark_2.4.3-bf16
- 次のコマンドを実行して、Dockerイメージに対応するDockerコンテナを実行します。
docker run -itd -- name az1 -- net=host -- 特権的なintelanalytics/analytics-zoo:0.8.1-bigdl_0.10.0-spark_2.4.3-bf16
- 次のコマンドを実行して、コンテナにアクセスします。
docker exec -it az1 bash
- 方法2: bfloat16をサポートするAnalytics Zooの夜間ビルドを使用して、Analytics Zoo環境を手動で作成する
- ECS インスタンスに接続します。 詳細については、「ECS インスタンスへの接続」をご参照ください。
- 次のコマンドを実行して、最新のAnalytics Zooプリビルドリリースと夜間ビルドパッケージをダウンロードして解凍します。
wget https://oss.sonatype.org/content/repositories/snapshots/com/intel/analytics/zoo/analytics-zoo-bigdl_0.11.1-spark_2.4.3/0.9.0-SNAPSHOT/analytics-zoo-bigdl_0.11.1-spark_2.4.3-0.9.0-20201026.210040-51-dist-all.zip analytics-zoo-bigdl_0.11.1-spark_2.4.3-0.9.0の解凍-{datetime}-dist-all.zip -d analytics-zoo
- 次のコマンドを実行してGitをインストールします。
yum -y gitをインストールする
- 次のコマンドを実行して、TensorFlowソースコードをダウンロードします。
git clone https://github.com/Intel-tensorflow/tensorflow.git gitチェックアウトv1.15.0up1
- 次のコマンドを実行してTensorFlowをコンパイルします。
bazel build -- cxxopt=-D_GLIBXX_USE_CXX11_ABI=0 -- copt=-O3 -- copt=-Wformat -- copt=-Wformat-security -- copt=-fstack-protector -- copt=-fPIC -- copt=-fpic -- linkopt=-znoexecstack -- linkopt=-zrelro -- linkopt=-znow -- linkopt=-fstack-protector -- config=mkl -- define build_with_mkl_dnn_v1_only=true -- copt=-DENABLE_INTEL_MKL_BFLOAT16 -- copt=-march=ネイティブ // tensorflow/tools/lib_package:libtensorflow_jni.tar.gz // tensorflow/java:libtensorflow.jar // tensorflow/java:libtensorflow-src.jar // tensorflow/tools/lib_package:libtensorflow_proto.zip
- 次のコマンドを実行して、Analytics Zooに必要なライブラリファイルを整理します。
cd bazel-bin/tensorflow/tools/lib_package mkdir linux-x86_64 tar -xzvf libtensorflow_jni.tar.gz -C linux_x86-64 rm libtensorflow_framework.so rm libtensorflow_framework.so.1 mv libtensorflow_framework.so.1.15.0 libtensorflow_framework-zoo.so cpを使用します。./../../../_solib_k8/_U @ mkl_Ulinux_S_S_Cmkl_Ulibs_Ulinux __ Uexternal_Smkl_Ulinux_Slib/* ./
- 次のコマンドを実行して、Analytics Zoo Jarフォルダを更新します。
cd ~/analytics-zoo/lib / cp ~/tensorflow/bazel-bin/tensorflow/tools/lib_package/linux-x86_64 ./ jar -ufanalytics-zoo-bigdl_0.11.1-spark_2.4.3-0.9.0-SNAPSHOT-jar-with-dependencies.jar linux-x86_64/*
ステップ3: ResNet-50モデルをトレーニングし、bfloat16を使用してECSインスタンスのパフォーマンスを向上させる
サンプルコード: Analytics Zooがbfloat16を使用して深層学習モデルのトレーニングを高速化する方法
次のコードでは、bfloat16を使用してResNet-50モデルなどの深層学習モデルのトレーニングを高速化する方法の例を示します。 コードは参照用です。 Analytics Zooが提供するDockerイメージには既に含まれており、手動操作は必要ありません。