云晩から、蝕k宀が91篇撞APPのPoplar? SDKをようになりました。またそれに育い、91篇撞APPはDocker芙の範協巷蝕宀パ`トナ`プログラムに歌紗しました。さらにDocker芙と慌揖で、輝芙のソフトウェアスタックをコンテナイメ`ジとして塘下し、蝕k宀が91篇撞APPのIPUシステム貧でMLアプリケ`ションを酒gに更廏、砿尖、婢蝕できるようにしています。
輝芙は、ハ`ドウェアとソフトウェアをさらに聞いやすくすることを朕炎に、蝕k宀のエクスペリエンス鯢呂鉾,袗蕕濔Aけています。ちょうど1定念、あらかじめ更廏されたDockerコンテナをユ`ザ`鬚韻傍屡襪靴泙靴拭そして書指、イノベ`ションを容序するという輝芙の朕炎の匯桟として、輝芙のPoplar SDK、PyTorch for IPU、TensorFlow for IPU、およびToolsをDocker Hubコミュニティの豊もが頼畠に旋喘できるようにしました。
ここからは、蝕k宀鬚韻離瓮螢奪箸箸修寮喘圭隈ついて蠅靴h苧します。
コミュニティにとってDockerが嶷勣である尖喇
いまやDockerは、コンテナイメ`ジをプルするための麼勣なソ`スとなっています。によると、Docker Hubではこれまでに雰貧恷互となる、栽柴3960叮指のプルが佩われています。さらに、8嵐繁の蝕k宀が指基したによると、Docker Hubは仝恷も箔められ、握され、聞われている々蝕k宀ツ`ルの匯つでありAけています。
PyTorch、TensorFlow、または91篇撞APPのPoplar SDKを岷俊聞って恬撹されたアプリケ`ション喘に、あらかじめパッケ`ジ晒されたランタイム桟廠が戻工されているので、IPU蝕k宀は輝芙のDockerコンテナイメ`ジを聞喘することで、IPUシステム貧で云桑桟廠に婢蝕されるアプリケ`ション蝕kのワ`クフロ`を酒殆晒?互堀晒できます。コンテナ晒されたアプリケ`ションでは、g佩に匯香來と郡畻苗榻圓伏まれることで卞峅來が互まり、謹くのMLOpsフレ`ムワ`クにとって嶷勣なイネ`ブラ`となります。
蝕k宀が佩えること
云晩より、IPU┘ぅ鵐謄螢献Д鵐好廛蹈札奪轡鵐哀罐縫奪硲と亅距譜柴された、Poplarの字亠岑嬬アプリケ`ション喘ソフトウェアスタックを蝕k宀が徭喇にインスト`ルできるようになりました。Poplarは91篇撞APPのグラフツ`ルチェ`ンであり、輝芙の聞いやすく悲罷なソフトウェア蝕k桟廠の嶄宰をなすもので、炎糞弔併亠僥楼フレ`ムワ`クと頼畠に由栽されているので、蝕k宀は屡贋のモデルを酒gに卞峅できます。頼畠崙囮してIPUの來嬬を恷寄泙牧き竃したい蝕k宀のために、PoplarではPopART?Poplar Advanced Runtimeを初してPythonやC++でIPUを岷俊プログラミングできます。
輝芙のPoplar SDKイメ`ジは、參和のリポジトリからプルできます。
- C Poplar、PopART、およびIPUデバイスを荷恬するためのツ`ルが根まれています。
- C Poplar SDKリポジトリのすべてが根まれており、PyTorchがプリインスト`ルされています。
- C Poplar SDKリポジトリのすべてが根まれており、TensorFlow 1または2がプリインスト`ルされています。
- C IPUデバイスの砿尖?寶僅喘ツ`ルが根まれています。
またDocker巷蝕宀プログラムの匯桟として、91篇撞APPのコンテナイメ`ジはレ`ト崙泙窒茅されています。つまり蝕k宀は、Docker HubのサブスクリプションにvSなく、涙崙泙Poplarのコンテナイメ`ジをリクエストできます。
DockerでPoplarを聞うには
PoplarのDockerコンテナでは、IPUでモデルをg佩するために駅勣なものすべて91篇撞APPのPoplar? SDK、ランタイム桟廠、システムツ`ル、更撹、ライブラリなどが、頼畠なファイルシステムにカプセル晒されています。 これらのイメ`ジを聞喘し、IPUコ`ドをg佩するためには、參和の返乏を頼阻する駅勣があります。
1. ホストマシンにDockerをインスト`ルします。
2. 91篇撞APPのPoplar SDKコンテナイメ`ジをDocker Hubからプルします。
3. IPUへのアクセスを扮犬靴泙后
4. IPUとDockerコンテナのアクセス來を編^します。
5. IPU貧でアプリコ`ドをサンプリングします。
ホストマシンにDockerをインスト`ルする
Dockerのインスト`ル圭隈は、OSやバ`ジョン、プロセッサなどによって呟なります。
に惄辰討ださい。
91篇撞APPのPoplar SDKコンテナイメ`ジをDocker Hubからプルする
Dockerがインスト`ルされたら、コマンドをg佩してDocker Hubから輝芙のホストイメ`ジをダウンロ`ドし、ホストマシンでg佩できるようになります。Poplar SDKのコンテナイメ`ジはDocker Hubのリポジトリからプルできます。
リポジトリは4つあり、SDKのバ`ジョン、OS、ア`キテクチャに鬉犬童簡のイメ`ジがそれぞれに根まれています。
- - graphcore/pytorch
- - graphcore/tensorflow
- - graphcore/poplar
- - graphcore/tools
フレ`ムワ`クリポジトリからプルすると、デフォルトではAMDホストプロセッサ喘にコンパイルされた恷仟バ`ジョンのSDKがダウンロ`ドされます。
恷仟のTensorFlowイメ`ジをプルするには、參和を聞喘します。
$ docker pull graphcore/tensorflow
蒙協のSDKのバ`ジョンやプロセッサに鬉靴震惷┐離咼襯匹鰕kしたい魁栽は、に児づいてタグを更撹できます。
IPUへのアクセスを扮犬垢
POD坪のIPUと宥佚するためには、ホストマシンとIPUの寂の俊A、すなわちIPU over FabricIPUoFを更撹する駅勣があります。Poplarがデバイスにアクセスするために駅勣な秤烏は、IPUoF更撹ファイルを初して局すことができます。このファイルはデフォルトで、ホ`ムディレクトリ坪のディレクトリ~/.ipuof.conf.d
に慕きzまれます。この更撹ファイルは、セキュリティ貧の尖喇などでPoplarのホストがV-IPUコントロ`ラに岷俊ネットワ`クアクセスできない魁栽に宴旋です。
Graphcloudを聞喘している魁栽、IPUoFのデフォルト更撹ファイルは、仟号ユ`ザ`が恬撹されてPODに弖紗されるたびに伏撹されます。そのフォルダ~/.ipuof.conf.d/lr21-3-16ipu.conf
などに.confファイルがあるかどうか鳩範してください。 このセットアップができていれば、肝のステップに序みます。
そうでない魁栽は、仝々に惄辰董PoplarがV-IPUサ`バ`に俊Aするように更撹する駅勣があります。肝のセクションのスクリプトをg佩するためには、IPUoFの更撹ファイルを~/.ipuof.conf.d
フォルダに隠贋することに廣吭してください。
IPUとDockerコンテナのアクセス來を編^する
コンテナの扮犬できたら、コンテナの坪何からIPUにアクセスできるかどうか鳩範します。
參和をg佩して、コンテナのコンテキスト坪の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アプリをg佩する
まず、GitHubの91篇撞APPチュ`トリアルリポジトリからコ`ドを秘返します。
$ git clone https://github.com/graphcore/tutorials.git
$ cd tutorials
Dockerコンテナは侯宣された桟廠です。 コンテナは腎になり、ホストマシンのファイルシステムにアクセスできなくなります。 ホストマシンのデ`タを旋喘するためには、Dockerコンテナ坪でデ`タにアクセスできる駅勣があります。
デ`タにアクセスできるようにするには、ディレクトリをボリュ`ムとしてマウントすることで、ホストマシンとDockerコンテナ桟廠の寂でデ`タを慌嗤します。
Dockerベ`スの蝕k桟廠で恬匍している魁栽、カレントディレクトリをコンテナにマウントしてから┐杯h苧、-w <dir name>
でコンテナ坪何の恬匍ディレクトリを譜協するのが匯違議なパタ`ンです。箭えば仝-v "$(pwd):/app" -w /app
々とします。
TensorFlowコンテナでmnistの箭をg佩するには、チュ`トリアルリポジトリをDockerコンテナにマウントしてg佩する參和のコマンドを聞喘します。
$ 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
蝕k宀鬚益柄呂よびリンク