KubeFlow コンポーネントの概要

Kubeflow は、モデル トレーニング、ハイパーパラメーター トレーニング、モデル デプロイメントなど、多くの機械学習サポートを組み合わせてコンテナ化された方法でデプロイするグルー プロジェクトであり、プロセス全体で各システムの高可用性と便利な拡張を提供します。デプロイされた kubeflow は、これを使用してさまざまな機械学習タスクを実行できます。kubeflow は、Kubernetes 用に構築された、構成可能でポータブルかつスケーラブルな機械学習テクノロジー スタックです。

画像

Kubeflow が解決したい問題は、Kubernetes に基づいて ML インフラを簡単に保守する方法です。Kubeflow のほとんどのコンポーネントの実装は Kubernetes ネイティブ ソリューションに基づいており、関数は CRD を定義することによって定義されます。これにより、運用保守の手間が大幅に軽減されます。同時に、Kubernetes が提供するスケーラビリティとスケジューリング機能を使用することで、大規模な分散トレーニングと AutoML に対して独自の利点も得られます。

Kubeflow アーキテクチャ図

kubeflow の重要な構造:

  • jupyter : jupyter は、マルチユーザーの対話型 Jupyter ノートブックを作成および管理します。

    画像
  • マルチテナントの分離: ユーザー操作を簡素化し、ユーザーが構成内の Kubeflow コンポーネントとモデル アーティファクトのみを表示および編集できるようにします。Kubeflow のマルチユーザー分離における主要な概念には、認証、承認、管理者、ユーザー、構成ファイルが含まれます。

  • TFJob-operator : K8S にはジョブ コントローラー タイプがあり、K8S はジョブのステータスを追跡します。ジョブが正常に終了しない場合、K8S はタスクを再度スケジュールできます。ジョブは終了時刻のあるタスクで、ジョブが正常に終了すると、K8S が先ほどのジョブをクリーンアップします。この機能は、機械学習トレーニング タスクの実行に非常に適しています。TFJob-operator は、KubeFlow の深層学習フレーム エンジンです。リソース タイプ TFJob は、tensorflow に基づいて構築されたCRD (カスタム リソース) です。このようなリソース タイプを使用すると、機械学習トレーニングに TensorFlow を使用するエンジニアは、複雑な構成を記述する必要がなくなります。 PSや作業者の業務理解に応じて、PSや作業者の人数、データやログの入出力を決定するだけで、トレーニングタスクを実行できます。

    ここに画像の説明を挿入
    ここに画像の説明を挿入

    apiVersion: kubeflow.org/v1beta2
    kind: TFJob
    metadata:
      name: mnist-train
      namespace: kubeflow
    spec:
      tfReplicaSpecs:
        Chief: # 调度器
          replicas: 1
          template:
            spec:
              containers:
                - command:
                  - /usr/bin/python
                  - /opt/model.py
                  env:
                  - name: modelDir
                    value: /mnt
                  - name: exportDir
                    value: /mnt/export
                  image: mnist-test:v0.1
                  name: tensorflow
                  volumeMounts:
                  - mountPath: /mnt
                    name: local-storage
                  workingDir: /opt
                restartPolicy: OnFailure
                volumes:
                - name: local-storage
                  persistentVolumeClaim:
                    claimName: local-path-pvc
        Ps: # 参数服务器
          replicas: 1
          template:
            spec:
              containers:
                - command:
                  - /usr/bin/python
                  - /opt/model.py
                  env:
                  - name: modelDir
                    value: /mnt
                  - name: exportDir
                    value: /mnt/export
                  image: mnist-test:v0.1
                  name: tensorflow
                  volumeMounts:
                  - mountPath: /mnt
                    name: local-storage
                  workingDir: /opt
                restartPolicy: OnFailure
                volumes:
                - name: local-storage
                  persistentVolumeClaim:
                    claimName: local-path-pvc
        Worker: # 计算节点
          replicas: 2
          template:
            spec:
              containers:
                - command:
                  - /usr/bin/python
                  - /opt/model.py
                  env:
                  - name: modelDir
                    value: /mnt
                  - name: exportDir
                    value: /mnt/export
                  image: mnist-test:v0.1
                  name: tensorflow
                  volumeMounts:
                  - mountPath: /mnt
                    name: local-storage
                  workingDir: /opt
                restartPolicy: OnFailure
                volumes:
                - name: local-storage
                  persistentVolumeClaim:
                    claimName: local-path-pvc
    
  • katib : ハイパーパラメータ サーバー。Kubeflow は、主にモデルの自動最適化とハイパーパラメータ調整に使用されるハイパーパラメータ調整ツール Katib を統合し、ハイパーパラメータ調整 (Hyperparameter Tuning)、早期停止方法 (Early Stopping)、およびニューラル ネットワーク アーキテクチャ検索 (Neural Architecture Search) を提供します

  • トレーニング オペレーター (オペレーター) :各ディープ ラーニング フレームワークは、リポジトリで独立して維持されるオペレーターに対応します演算子を通じて ML モデルをトレーニングできるようにします。たとえば、Kubernetes 上で TensorFlow モデル トレーニングを実行するための TensorFlow Training (TFJob)、Pytorch モデル トレーニング用の PyTorchJob などを提供します。画像

    もちろん、Kubeflow 1.4 リリースは統合された tf オペレーターをサポートする予定です。単一のオペレーターをデプロイすると、TFJob、PyTorchJob、MXNetJob、XGBoostJob を含む 4 つの API をサポートできます。

  • Kubeflow パイプライン: Docker コンテナーに基づいて、ポータブルでスケーラブルな機械学習ワークフローをpipeline構築およびデプロイできる機械学習ワークフロー コンポーネント。アルゴリズムの組み合わせのテンプレートを定義します。これにより、pipelineアルゴリズム内の各処理モジュールを特定の組み合わせに割り当てることができますトポロジカルな方法。これには、ジョブを管理するためのユーザー インターフェイス、マルチステップ ML ワークフローを調整するためのエンジン、パイプラインを定義および操作するための SDK、およびパイプラインタスクのワークフロー オーケストレーションのアルゴに基づいて、SDK を通じてシステムと対話するためのノートブックが含まれていますArgo Workflowプロセス エンジンは、ビジネス ロジックを実行するコンテナ プロセスを配置できます。Argo ステップはファイルと結果情報を転送し、次のステップ (コンテナ) は前のステップ (コンテナ) の結果を取得できます。詳しい紹介については、https://blog.csdn.net/qq_45808700/article/details/132188234 をご覧ください。

  • KFServing : KFServing は、ユーザーがモデルを適用するために呼び出すための安定したインターフェイスを提供します。Serving は、モデル ファイルを通じてサービスとしてのモデル(サービスとしてのモデル) を直接作成し、Kubernetes でのサーバーレス推論を可能にします。などに基づいていくつかのスキームKubeflowを提供します。KFServing を使用すると、ユーザーは GPU に推論サービスを簡単に展開でき、優れたパフォーマンスを備えた業界トップクラスのモデル サーバーによるすべてのサーバーレス機能の恩恵を受けることができます。また、PyTorch、TensorFlow、scikit-learn、XGBoost などの ML フレームワークへの高性能かつ抽象化の高いインターフェイスも提供します。TensorFlow-serving は、トレーニングされた機械学習モデルをオンラインでデプロイし、外部呼び出しを受け入れるインターフェイスとして gRPC を使用できます。モデルのホット アップデートと自動モデル バージョン管理をサポートしますつまり、Serving がデプロイされたら、オンライン サービスについて心配する必要はなくなり、オフライン モデルのトレーニングのみを気にする必要があります。Serving を使用すると、同じサーバー アーキテクチャと API を維持しながら、新しいアルゴリズムや実験を簡単にデプロイできます。TFServingKFServingSeldon

    ここに画像の説明を挿入
    ここに画像の説明を挿入

  • Istio : Kubeflow は主に、関連リソースのインジケーターの表示、権限の検証、リソースの割り当てとテストなど、リソース管理と運用保守に Istio を使用します。

    ここに画像の説明を挿入

  • アンバサダー: アンバサダーは、外部に統合サービス ゲートウェイ (API ゲートウェイ) を提供します。これは、Kubernetes ネイティブのマイクロサービス API ゲートウェイです。ネットワークのエッジにデプロイされ、受信ネットワーク トラフィックを対応する内部サービス (「North-South」とも呼ばれます) にルーティングします。 "流れ)。

kubeflowオリジナルの に基づいているだけでしたtf-operator、その後のプロジェクトの発展により、最終的にはクラウド ネイティブ構築に基づく機械学習タスク ツールの大規模なコレクションになりました。データの取得、検証からモデルのトレーニング、サービスの公開まで、ほぼすべてのステップでKubeflowソリューションのコンポーネントが提供されます。

Kubeflow に基づく ML フローチャート

Kubeflow を通じて、ユーザーは Jupyter を使用してモデルを開発し、フェアリング (SDK) などのツールを使用してコンテナーを構築し、モデルをトレーニングするための Kubernetes リソースを作成できます。モデルのトレーニングが完了した後、ユーザーは KFServing を使用して推論用のサーバーを作成およびデプロイすることもできます。パイプライン(パイプライン)機能と組み合わせることで、エンドツーエンドの機械学習システムの自動かつ俊敏な構築を実現し、AI分野におけるDevOpsを実現します。

おすすめ

転載: blog.csdn.net/qq_45808700/article/details/132584896