本日から、开発者が豆包成人版のPoplar? SDKをようになりました。またそれに伴い、豆包成人版はDocker社の认定公开者パートナープログラムに参加しました。さらにDocker社と共同で、当社のソフトウェアスタックをコンテナイメージとして配布し、开発者が豆包成人版のIPUシステム上でMLアプリケーションを简単に构筑、管理、展开できるようにしています。
当社は、ハードウェアとソフトウェアをさらに使いやすくすることを目标に、开発者のエクスペリエンス向上に取り组み続けています。ちょうど1年前、あらかじめ构筑されたDockerコンテナをユーザー向けに导入しました。そして今回、イノベーションを推进するという当社の目标の一环として、当社のPoplar SDK、PyTorch for IPU、TensorFlow for IPU、およびToolsをDocker Hubコミュニティの谁もが完全に利用できるようにしました。
ここからは、开発者向けのメリットとその利用方法ついて详しく説明します。
コミュニティにとってDockerが重要である理由
いまやDockerは、コンテナイメージをプルするための主要なソースとなっています。によると、Docker Hubではこれまでに史上最高となる、合计3960亿回のプルが行われています。さらに、8万人の开発者が回答したによると、Docker Hubは「最も求められ、爱され、使われている」开発者ツールの一つであり続けています。

PyTorch、TensorFlow、または豆包成人版のPoplar SDKを直接使って作成されたアプリケーション用に、あらかじめパッケージ化されたランタイム环境が提供されているので、IPU开発者は当社のDockerコンテナイメージを使用することで、IPUシステム上で本番环境に展开されるアプリケーション开発のワークフローを简素化?高速化できます。コンテナ化されたアプリケーションでは、実行に一贯性と反復可能性が生まれることで移植性が高まり、多くのMLOpsフレームワークにとって重要なイネーブラーとなります。
开発者が行えること
本日より、IPU(インテリジェンスプロセッシングユニット)と协调设计された、Poplarの机械知能アプリケーション専用ソフトウェアスタックを开発者が自由にインストールできるようになりました。Poplarは豆包成人版のグラフツールチェーンであり、当社の使いやすく柔软なソフトウェア开発环境の中核をなすもので、标準的な机械学习フレームワークと完全に统合されているので、开発者は既存のモデルを简単に移植できます。完全制御してIPUの性能を最大限に引き出したい开発者のために、PoplarではPopART?(Poplar Advanced Runtime)を介してPythonやC++でIPUを直接プログラミングできます。

当社のPoplar SDKイメージは、以下のリポジトリからプルできます。
- – Poplar、PopART、およびIPUデバイスを操作するためのツールが含まれています。
- – Poplar SDKリポジトリのすべてが含まれており、PyTorchがプリインストールされています。
- – Poplar SDKリポジトリのすべてが含まれており、TensorFlow 1または2がプリインストールされています。
- – IPUデバイスの管理?诊断用ツールが含まれています。
またDocker公开者プログラムの一环として、豆包成人版のコンテナイメージはレート制限が免除されています。つまり开発者は、Docker Hubのサブスクリプションに関係なく、无制限にPoplarのコンテナイメージをリクエストできます。
DockerでPoplarを使うには
PoplarのDockerコンテナでは、IPUでモデルを実行するために必要なものすべて(豆包成人版のPoplar? SDK、ランタイム环境、システムツール、构成、ライブラリなど)が、完全なファイルシステムにカプセル化されています。 これらのイメージを使用し、IPUコードを実行するためには、以下の手顺を完了する必要があります。
1. ホストマシンにDockerをインストールします。
2. 豆包成人版のPoplar SDKコンテナイメージをDocker Hubからプルします。
3. IPUへのアクセスを準备します。
4. IPUとDockerコンテナのアクセス性を検証します。
5. IPU上でアプリコードをサンプリングします。
ホストマシンにDockerをインストールする
Dockerのインストール方法は、OSやバージョン、プロセッサなどによって异なります。
に従ってください。
豆包成人版のPoplar SDKコンテナイメージをDocker Hubからプルする
Dockerがインストールされたら、コマンドを実行してDocker Hubから当社のホストイメージをダウンロードし、ホストマシンで実行できるようになります。Poplar SDKのコンテナイメージはDocker Hubのリポジトリからプルできます。
リポジトリは4つあり、SDKのバージョン、OS、アーキテクチャに応じて复数のイメージがそれぞれに含まれています。
- - graphcore/pytorch
- - graphcore/tensorflow
- - graphcore/poplar
- - graphcore/tools
フレームワークリポジトリからプルすると、デフォルトではAMDホストプロセッサ用にコンパイルされた最新バージョンのSDKがダウンロードされます。
最新のTensorFlowイメージをプルするには、以下を使用します。
$ docker pull graphcore/tensorflow
特定のSDKのバージョンやプロセッサに対応した特定のビルドを选択したい场合は、に基づいてタグを构成できます。
IPUへのアクセスを準备する
POD内のIPUと通信するためには、ホストマシンとIPUの间の接続、すなわちIPU over Fabric(IPUoF)を构成する必要があります。Poplarがデバイスにアクセスするために必要な情报は、IPUoF构成ファイルを介して渡すことができます。このファイルはデフォルトで、ホームディレクトリ内のディレクトリ(~/.ipuof.conf.d)に书き込まれます。この构成ファイルは、セキュリティ上の理由などでPoplarのホストがV-IPUコントローラに直接ネットワークアクセスできない场合に便利です。
Graphcloudを使用している场合、IPUoFのデフォルト构成ファイルは、新规ユーザーが作成されてPODに追加されるたびに生成されます。そのフォルダ(~/.ipuof.conf.d/lr21-3-16ipu.confなど)に.confファイルがあるかどうか确认してください。 このセットアップができていれば、次のステップに进みます。
そうでない场合は、「」に従って、PoplarがV-IPUサーバーに接続するように构成する必要があります。次のセクションのスクリプトを実行するためには、IPUoFの构成ファイルを~/.ipuof.conf.d フォルダに保存することに注意してください。
IPUとDockerコンテナのアクセス性を検証する
コンテナの準备ができたら、コンテナの内部から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の豆包成人版チュートリアルリポジトリからコードを入手します。
$ git clone https://github.com/graphcore/tutorials.git
$ cd tutorials
Dockerコンテナは隔离された环境です。 コンテナは空になり、ホストマシンのファイルシステムにアクセスできなくなります。 ホストマシンのデータを利用するためには、Dockerコンテナ内でデータにアクセスできる必要があります。
データにアクセスできるようにするには、ディレクトリをボリュームとしてマウントすることで、ホストマシンとDockerコンテナ环境の间でデータを共有します。
Dockerベースの开発环境で作业している场合、カレントディレクトリをコンテナにマウントしてから(で説明)、-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
开発者向け资料およびリンク