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 上で同じコードで実行できるように、一度処理グラフ(有向非巡回グラフ、DAG)を定義するだけで済みます。

動作方法

ユーザーは、パイプラインを生産者、プロセッサ、コンシューマーの連鎖として記述します。グラフ内の各ノードは、ローカルではサブプロセス、Kubernetes 上ではポッドとして独立したワーカーとして実行され、NATS JetStream メッセージブローカーを通じて通信します。各ノードは出力を特定のブローカーのサブジェクトに公開し、親ノードのサブジェクトにサブスクライブして入力を再構成します。ML モデルの読み込みなどコストの高い初期化処理を行うには、コンストラクタではなく open() メソッドを使用します。

対象ユーザー

スケーラビリティ、GPUスケジューリング、分散環境で複雑な処理チェーンを実行できる必要がある高スループットの動画分析パイプラインを開発する開発者向けに設計されています。

特徴

  • 二重実行モード: コード変更なしで、ローカルのサブプロセスまたは Kubernetes 上のコンテナとして同じパイプラインを実行可能。
  • 分散アーキテクチャ: 通信には NATS JetStream、ペイロード保存には Redis を使用。
  • Cレベルのスケーリング: ノード単位のスケーリング、GPUスケジューリング、Kubernetes 上でのオートスケーリングをサポート。
  • 言語非依存: コンテナイメージとして配布されたコンポーネントであれば、任意の言語で記述可能。
  • 組み込みビジョンコンポーネント: オブジェクト検出、トラッキング、ポーズ推定、セグメンテーションの即時利用可能なコンポーネントを含む。
  • 堅牢なエラーハンドリング: ポイズンメッセージ用のデッドレターキュー(DLQ)と、クラッシュしたノードの自動再起動機能を備える。

関連

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