Habana GaudiでのTransformersの始め方
'Habana GaudiでのTransformersの始め方' can be condensed to 'Habana GaudiでのTransformers入門'.
数週間前に、Habana LabsとHugging Faceが協力してTransformerモデルのトレーニングを加速することを発表できたことを喜んでお知らせいたします。
Habana Gaudiアクセラレータは、最新のGPUベースのAmazon EC2インスタンスと比較して、機械学習モデルのトレーニングにおいて最大40%の価格パフォーマンス向上を提供します。私たちはこの価格パフォーマンスの利点をTransformersにもたらすことに非常に興奮しています🚀
この実践的な投稿では、Amazon Web ServicesでHabana Gaudiインスタンスを素早くセットアップし、テキスト分類用にBERTモデルを微調整する方法を紹介します。通常どおり、コードはすべて提供されているため、プロジェクトで再利用できます。
さあ、始めましょう!
AWSでHabana Gaudiインスタンスをセットアップする
Habana Gaudiアクセラレータを使用する最も簡単な方法は、Amazon EC2 DL1インスタンスを起動することです。これらのインスタンスには、Habana SynapseAI® SDKがプリインストールされたHabana Deep Learning Amazon Machine Image(AMI)が搭載されています。また、GaudiアクセラレーションされたDockerコンテナを実行するために必要なツールも含まれています。他のAMIやコンテナを使用したい場合は、Habanaのドキュメントに手順が記載されています。
まず、us-east-1リージョンのEC2コンソールからインスタンスを起動をクリックし、インスタンスに名前を定義します(”habana-demo-julsimon”)。
次に、HabanaのAMIをAmazon Marketplaceで検索します。
Habana Deep Learning Base AMI(Ubuntu 20.04)を選択します。
次に、dl1.24xlargeのインスタンスサイズを選択します(唯一のサイズです)。
次に、ssh
を使用してインスタンスに接続するために使用するキーペアを選択します。キーペアがない場合は、その場で作成することができます。
次に、インスタンスがssh
トラフィックを受信することを確認します。シンプルにするために、ソースアドレスを制限しませんが、アカウントでは必ず制限してください。
デフォルトでは、このAMIはAmazon EBSストレージの8GBのインスタンスを起動しますが、ここでは十分ではありません。ストレージを50GBに増やします。
次に、インスタンスにAmazon IAMロールを割り当てます。実際の環境では、このロールはトレーニングジョブを実行するために必要な最小限の権限を持っている必要があります(たとえば、Amazon S3バケットからデータを読み取る権限など)。このロールはここでは必要ありませんが、データセットはHugging Faceハブからダウンロードされます。IAMに詳しくない場合は、はじめに「Getting Started」ドキュメントを読むことを強くお勧めします。
次に、EC2にインスタンスをSpot Instanceとしてプロビジョニングするように指示します。これは、1時間あたりの$13.11のコストを削減する素晴らしい方法です。
最後に、インスタンスを起動します。数分後、インスタンスが準備され、ssh
を使用して接続できるようになります。Windowsユーザーは、ドキュメントに従ってPuTTYを使用して同じ操作を行うことができます。
ssh -i ~/.ssh/julsimon-keypair.pem [email protected]
このインスタンスでは、最後のセットアップステップとして、PyTorch用のHabanaコンテナを取得する必要があります。これは、モデルの微調整に使用するフレームワークです。他のプリビルドコンテナや独自のコンテナのビルド方法については、Habanaのドキュメントを参照してください。
docker pull \
vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610
画像がインスタンスに取り込まれたら、インタラクティブモードで実行します。
docker run -it \
--runtime=habana \
-e HABANA_VISIBLE_DEVICES=all \
-e OMPI_MCA_btl_vader_single_copy_mechanism=none \
--cap-add=sys_nice \
--net=host \
--ipc=host vault.habana.ai/gaudi-docker/1.5.0/ubuntu20.04/habanalabs/pytorch-installer-1.11.0:1.5.0-610
モデルの微調整に備えています。
Habana Gaudiでテキスト分類モデルを微調整する
最初に、新たに開始したコンテナ内にOptimum Habanaリポジトリをクローンします。
git clone https://github.com/huggingface/optimum-habana.git
その後、ソースからOptimum Habanaパッケージをインストールします。
cd optimum-habana
pip install .
次に、テキスト分類の例を含むサブディレクトリに移動し、必要なPythonパッケージをインストールします。
cd examples/text-classification
pip install -r requirements.txt
これで、Hugging Faceハブからbert-large-uncased-whole-word-maskingモデルをダウンロードし、GLUEベンチマークのMRPCタスクで微調整するトレーニングジョブを開始できます。
注意してください。BERTのHabana Gaudi構成をHugging Faceハブから取得していますが、独自の構成も使用できます。さらに、他の人気モデルもサポートされており、その構成ファイルはHabana組織で見つけることができます。
python run_glue.py \
--model_name_or_path bert-large-uncased-whole-word-masking \
--gaudi_config_name Habana/bert-large-uncased-whole-word-masking \
--task_name mrpc \
--do_train \
--do_eval \
--per_device_train_batch_size 32 \
--learning_rate 3e-5 \
--num_train_epochs 3 \
--max_seq_length 128 \
--use_habana \
--use_lazy_mode \
--output_dir ./output/mrpc/
2分12秒後、ジョブは完了し、優れたF1スコア0.9181を達成しました。エポック数を増やすとさらに改善できるでしょう。
***** train metrics *****
epoch = 3.0
train_loss = 0.371
train_runtime = 0:02:12.85
train_samples = 3668
train_samples_per_second = 82.824
train_steps_per_second = 2.597
***** eval metrics *****
epoch = 3.0
eval_accuracy = 0.8505
eval_combined_score = 0.8736
eval_f1 = 0.8968
eval_loss = 0.385
eval_runtime = 0:00:06.45
eval_samples = 408
eval_samples_per_second = 63.206
eval_steps_per_second = 7.901
最後に、不必要な料金を避けるためにEC2インスタンスを終了します。EC2コンソールの節約サマリを見ると、スポットインスタンスのおかげで70%節約でき、1時間あたり13.11ドルではなく3.93ドルしか支払わなくて済みました。
ご覧のように、Transformers、Habana Gaudi、AWSインスタンスの組み合わせは、強力でシンプル、かつコスト効果が高いです。ぜひ試してみて、ご意見をお聞かせください。Hugging Faceフォーラムでは質問やフィードバックをお待ちしています。
Habanaにお問い合わせいただき、GaudiプロセッサでHugging Faceモデルのトレーニングについて詳しくお聞きください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles