videoflow/videoflow

Python framework that facilitates the quick development of complex video analysis applications and other series-processing based applications in a multiprocessing environment.

何を解決するか

Videoflow は、分散型のビデオおよびストリーム処理パイプラインを構築するためのフレームワークです。開発者は一度だけ処理グラフ(有向非巡回グラフ)を定義し、コードを変更せずにローカルで開発用に実行したり、Kubernetesで本番環境のスケーリング用に実行できます。

動作方法

  • グラフベースのアーキテクチャ:ユーザーはパイプラインをプロデューサー、プロセッサ、コンシューマーのセットとして記述します。
  • 分散実行:グラフ内の各ノードは、ローカルではサブプロセス、Kubernetes上ではポッドとして独立したワーカーとして実行され、NATS JetStream メッセージブローカーを介して通信します。
  • ノード間通信:各ノードは出力を特定のブローカーのサブジェクトに公開し、親ノードの入力にサブスクライブします。これにより、ファンアウトやマルチ親結合といった複雑なトポロジーが可能になります。
  • デプロイ:フレームワークは、GPUスケジューリング、ヘルスプローブ、オートスケーリングを含むKubernetesマニフェストへのグラフのコンパイルを自動で処理します。

対象ユーザー

  • 高スループットのビデオ処理アプリケーションを開発する開発者。
  • コンピュータビジョンモデル(物体検出、トラッキング、ポーズ推定)を分散環境にデプロイする必要があるMLエンジニア。
  • ローカルでのプロトタイピングからKubernetesベースの本番環境へのスムーズな移行を必要とするチーム。

特徴

  • ハイブリッド実行:コード変更なしで同じパイプラインをローカルまたはKubernetesで実行可能。
  • 言語非依存:コンテナイメージとして配布される限り、任意の言語で書かれたコンポーネントをサポート。
  • GPU統合:GPUスケジューリングの組み込みサポート。NVIDIAデバイスプラグインの処理や共有GPUアクセスのタイムスライシングも対応。
  • 事前構築済みコンポーネント:セグメンテーションや物体検出などの一般的なビジョンタスク用の即時利用可能なノードを提供。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト