Graphcore Poplar SDK Container Images が Docker Hub で利用可能に

GraphcoreのPoplar® SDKは、開発者がDocker Hubを介してアクセスでき、GraphcoreはDockerのVerified Publisher Programに参加しています。 Dockerと協力して、ソフトウェアスタックをコンテナイメージとして配布し、開発者がGraphcore IPUシステムでMLアプリケーションを簡単に構築、管理、デプロイできるようにします。

Graphcore poplar sdk コンテナー イメージが Docker ハブで利用可能になりました

ハードウェアとソフトウェアをさらに使いやすくするために、開発者エクスペリエンスを継続的に強化しています。 ちょうど1年前、ユーザー向けに事前に構築されたDockerコンテナのセレクションを導入しました。 現在、イノベーションを推進するというミッションの一環として、Poplar SDK、PyTorch for IPU、TensorFlow for IPU、およびツールに、Docker Hub コミュニティのすべての人が完全にアクセスできるようにしています。

ここでは、開発者向けの内容と開始方法の詳細について説明します。

Dockerがコミュニティにとって非常に重要である理由

Dockerはコンテナイメージをプルするための主要なソースになりました - 最新のインデックスレポートによると、 Docker Hubでは合計 3,960億 件のプルがありました。 さらに、Docker Hubは、80,000人の開発者が回答した 2021年のスタックオーバーフロー調査 に基づいて、「最も求められ、愛され、使用されている」 開発者ツールの1つです。 

Dockerが最も欲しかったソフトウェアツール

IPU開発者向けには、PyTorch、TensorFlowを使用して、またはGraphcoreのPoplar SDKで直接構築されたアプリケーション用に事前にパッケージ化されたランタイム環境を提供することにより、IPUシステムの本番環境にデプロイされるアプリケーション開発ワークフローを簡素化および加速します。 コンテナ化されたアプリケーションは、一貫性のある反復可能な実行によりアプリケーションの移植性を高め、多くの MLOps フレームワークにとって重要なイネーブラーです。

開発者は何を利用できますか?

現在、開発者は、特にマシンインテリジェンスアプリケーション向けに、IPU(インテリジェンスプロセッシングユニット)と共同設計されたPoplarソフトウェアスタックを自由にインストールできます。 PoplarはGraphcoreのグラフツールチェーンであり、標準の機械学習フレームワークと完全に統合された使いやすく柔軟なソフトウェア開発環境の中核に位置しているため、開発者は既存のモデルを簡単に移植できます。 IPUから最大のパフォーマンスを引き出すためにフルコントロールを望む開発者のために、ポプラはPopART™(ポプラアドバンストランタイム)を介してPythonとC ++で直接IPUプログラミングを可能にします。

1

Poplar SDK イメージは、次のリポジトリからプルできます。

  • ポプラSDK - ポプラ、ポップアート、およびIPUデバイスと対話するためのツールが含まれています 
  • PyTorch for IPU – PyTorch がプレインストールされた Poplar SDK リポジトリのすべてが含まれています
  • TensorFlow for IPU – TensorFlow 1 または 2 がプリインストールされた Poplar SDK リポジトリのすべてが含まれています
  • ツール – IPUデバイスの管理ツールと診断ツール が含まれています

また、Docker Verified Publisher Programの一環として、Graphcoreコンテナイメージはレート制限から免除されており、開発者はDocker Hubサブスクリプションに関係なく、Poplarに対して無制限のコンテナイメージリクエストを行うことができます。

ドッカーでポプラを使い始める

Poplar Dockerコンテナは、IPUでモデルを実行するために必要なすべてのものを完全なファイルシステムにカプセル化します(つまり、グラフコアのポプラ® SDK、ランタイム環境、システムツール、コンフィグ、ライブラリ)。これらのイメージを使用して IPU コードを実行するには、次の手順を完了する必要があります。

1.ホストマシンにDockerをインストールします
2. Graphcore の Poplar SDK コンテナイメージを Docker Hub からプルする
3. IPUへのアクセスを準備する
4. Docker コンテナで IPU のアクセシビリティを確認する
5. IPUのサンプルアプリコード

ホスト マシンに Docker をインストールする

Docker のインストールは、オペレーティング システム、バージョン、およびプロセッサによって異なります。 

Docker の入門ガイドに従うことができます。

Graphcore の Poplar SDK コンテナイメージを Docker Hub からプルする

Docker がインストールされたら、コマンドを実行して、ホストされているイメージを Docker Hub からダウンロードし、ホスト マシンで実行できます。 Poplar SDK コンテナー イメージは、Docker Hub 上の Graphcore Poplar リポジトリからプルできます。

4 つのリポジトリがあり、これらのリポジトリには、SDK のバージョン、OS、アーキテクチャに基づいて複数のイメージが含まれている場合があります。

  • グラフコア/ピトーチ
  • グラフコア/テンソルフロー
  • グラフコア/ポプラ
  • グラフコア/ツール

フレームワークリポジトリからプルすると、デフォルトでAMDホストプロセッサ用にコンパイルされた最新バージョンのSDKがダウンロードされます。

最新の TensorFlow イメージをプルするには、以下を使用します。

docker pull graphcore/tensorflow

特定の SDK バージョンとプロセッサに対して特定のビルドを選択する場合は、 Docker イメージタグに基づいてタグを構成できます。

IPU へのアクセスの準備

PODでIPUと通信するには、ホストマシンとIPU(ファブリック上のIPU(IPUoF))間の接続を構成する必要があります。Poplarがデバイスにアクセスするために必要な情報は、デフォルトでホームディレクトリのディレクトリに書き込まれるIPUoF構成ファイルを介して渡すことができます()。~/.ipuof.conf.d構成ファイルは、PoplarホストがV-IPUコントローラーに直接ネットワークにアクセスできない場合に役立ちます(セキュリティ上の理由など)。 

Graphcloudを使用している場合、新しいユーザーが作成されてPODに追加されるたびに、IPUoFのデフォルトの構成ファイルが生成されます。 .confがあるかどうかを確認します そのフォルダ内のファイル(例:~/.ipuof.conf.d/lr21-3-16ipu.conf).この設定がある場合は、次の手順に進むことができます。

利用できない場合は、 V-IPUガイド:はじめにに従って、V-IPUサーバーに接続するようにPoplarを構成する必要があります。 IPUoF構成ファイルをフォルダー ~/.ipuof.conf.d に保存して、次のセクションのスクリプトを実行することに注意してください。

Docker コンテナを使用した IPU のアクセシビリティの検証

コンテナの準備ができたので、コンテナ内からIPUにアクセスできるかどうかを確認できます。

コンテナのコンテキスト内のIPUデバイスを一覧表示するには、次のコマンドを実行します。

docker run --rm --ulimit memlock=-1:-1 --net=host --cap-add=IPC_LOCK --device=/dev/infiniband --ipc=host -v ~/.ipuof.conf.d/:/etc/ipuof.conf.d -it graphcore/tools gc-info -l

サンプルの TensorFlow アプリを実行する

まず、GitHub の Graphcore チュートリアル リポジトリからコードを取得します。

git clone https://github.com/graphcore/tutorials.git

cdチュートリアル

Docker コンテナーは分離された環境です。 空になり、ホストマシンのファイルシステムにアクセスできなくなります。ホスト マシンのデータを使用するには、Docker コンテナー内でデータにアクセスできる必要があります。 

ディレクトリをボリュームとしてマウントし、ホスト マシンと Docker コンテナー環境の間でデータを共有することで、データにアクセスできるようにすることができます。 

Dockerベースの開発環境で作業する場合の一般的なパターンは、現在のディレクトリをコンテナにマウントし(セクション 2.2, ホストからのディレクトリのマウントを参照)、コンテナ -w <dir name>内の作業ディレクトリを で設定します。 たとえば、-v "$(pwd):/app" -w /app.

TensorFlow コンテナーで mnist の例を実行するには、次のコマンドを使用して、チュートリアル リポジトリを Docker コンテナーにマウントして実行します。

docker run --rm --ulimit memlock=-1:-1 --net=host --cap-add=IPC_LOCK --device=/dev/infiniband --ipc=host -v ~/.ipuof.conf.d/:/etc/ipuof.conf.d -it -v "$(pwd):/app" -w /app graphcore/tensorflow:2 python3 simple_applications/tensorflow2/mnist/mnist.py

このゲストブログ投稿は もともとここに掲載されました。