あさのひとりごとスマートフォン用の表示で見るあさのひとりごと3日坊主にならないように、全力を尽くします。記事は個人のひとりごとです。所属する組織の意見を代表するほど、仕事熱心じゃないです。HOMEBooksProfileこの広告は、90日以上更新していないブログに表示しています。HatebuKubernetesが機械学習基盤としてKubeflowをリリースしました。いうと、KubeFlowは以下の機械学習アプリケーション開発の一連のワークロードをサポートするOSSです。Serving)github.comまだ、開発途中、かつざっとしか追えていませんが、導入のしかたと概要をまとめます。kubeFlow環境構築Kubeflowを動かすためには、まずKubernetesクラスタを構築しなければいけません。今回は検証のためなので、雑にminikubeを使っています。手順は以下のとおりです。minikubeのインストールMacOSのときは、次のコマンドでminikubeをインストールします。次のコマンドを実行して、Kubernetesクラスタを構築します。file.バージョンは次の通りです。v1.8.0これで準備は完了です。AWSやAzureやGCPなどのパブリッククラウドのVMかKubernetesマネージドサービス使ってください。KubeflowのインストールKubeflowはGitHubで公開されていますので、次のコマンドでクローンします。https://github.com/google/kubeflowここでは、CPUを使って分散学習する例を説明します。次のコマンドを実行して、環境を構築します。-Rなお、KubeflowはGPUもサポートしています。CUDAなどで後日動かしてみたいとおもいます。環境構築のためのマニュフェストファイルは、kubeflow/components配下にあります。モデル開発基盤KubeFlowではモデル開発のため、JupyterNotebookが動作する環境が用意されます。KubeFlowは、JupyterHubを使用しています。複数のユーザーでの認証アクセスを管理でき、「spawners」と呼ばれるプラグイン可能なコンポーネントをつかってます。JupyterNotebookはKubernetesのPodで動きます。2hJupyterNotebookにアクセスするためのPodは「tf-hub-lb」という名前のServiceがLoadBaranceとして公開されています。2hminikubeの場合は、次のコマンドで公開URLを確認できます。--urlhttp://192.168.99.100:32089カスタムのJupyterNotebookを使いたいときや構成を変更したいときは、以下のマニュフェストを修正します。実務で使うような大規模なものであれば、計算量も膨大になるため、(コストを見ながら)計算基盤をスケールさせる必要があります。TensorFlowの分散学習処理を行う際は、3種類のノードをつかいます。ServerWorkerKubeflowでは、Kubernetesクラスタをつかって分散クラスタを構成し、その上でTensorFlowの分散処理コードを動かす環境が用意されています。Serverは1〜2ノード、Workerは計算に必要な沢山のノードが動きます。Kubeflowのサンプルコードが用意されているので次のコマンドで実行します。このサンプルは、tf_cnn_benchmarksを使用して畳み込みニューラルネットワークを学習するためのものです。ソースはこちらですね。GitHub次のコマンドでKubernetesクラスタにJobを投入します。createdしばらくすると、次のようなPodが生成されます。inception--worker-が3つできているのがわかります。1KubeFlowでつかうマニフェストファイルは以下のようになっています。ポイントとなるところだけ抜粋します。apiVersionapiVersionで「tensorflow.org/v1alpha1」を、kindで「TFJob」を指定してます。kindは「Job」ではないので注意です。PodMasterのPodをreplicaSpecsで指定します。[tfReplicaType]を「MASTER」にしています。[replicas]が1なので、Podが1つ上がります。ServerのPodを定義しています。[replicas]が1なので、Master同様Podが1つ上がります。Pod最後に計算Podです。[replicas]が3なので、計算用Podが3つ上がります。WORKERこの構成で分散して学習が行われます。今回はKubernetesクラスタをminikubeで構成していますが、たとえばGKEなどをつかうときは、NodePoolを構成して、プール内に適切なスペックのノードをおけばよいかとおもいます。TensorFlowの分散学習の実装については、enakaiさんのブログがわかりやすいです。Servingが使われています。学習済みのモデルをGCSにアップロードしてアプリで利用する流れです。そこで、TensorFlowで画像推論する基盤をデモとして動かしました。同じようなアーキテクチャなのでご参考までに。深層学習でこんなすごいことできました選手権などの情報にあふれ、とてもきらきらまぶしく膨大過ぎて追いかけきれてないのですが、、、、このような基盤構築や地味な方法論は、とても楽しいので、細々と調べながら手を動かしたいと思いました。開発途中のようですが、ひそかにウォッチしたいとおもいます。ASA.はてなブログをはじめよう!dr_asaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。