BigBertha は、オープンソースのコンテナネイティブ テクノロジを使用して、自動化された LLMOps (Large Language Models Operations) をどのように Kubernetes クラスタ上で実現できるかを示すアーキテクチャ設計です。
? BigBertha は、Prometheus を利用して LLM (Large Language Model) サービス提供モジュールを監視します。デモの目的で、Streamlit アプリを使用して LLM を提供し、Prometheus がそこからメトリクスを収集します。パフォーマンスの低下を検出するためにアラートが設定されています。
Prometheus は、モデルのパフォーマンスが低下するとアラートをトリガーします。これらのアラートは、Argo イベントを使用してモデルを微調整するための再トレーニング パイプラインをトリガーする AlertManager によって管理されます。
?️ 再トレーニング パイプラインは Argo ワークフローを使用して調整されます。このパイプラインは、LLM 固有の再トレーニング、微調整、およびメトリクスの追跡を実行するように調整できます。 MLflow は、再トレーニングされた LLM のログ記録に使用されます。
MinIO は非構造化データのストレージに使用されます。 Argo Events は、MinIO でアップロード イベントをリッスンするように設定されており、新しいデータがアップロードされるとベクター インジェスト ワークフローがトリガーされます。
? Argo Workflows は、ベクターの生成と取り込みに LlamaIndex を利用するベクター取り込みパイプラインを実行するために使用されます。これらのベクトルは Milvus に保存され、検索拡張生成のための知識ベースとして機能します。
BigBertha は、いくつかの重要なコンポーネントに依存しています。
ArgoCD: BigBertha スタック内のすべてのコンポーネントを管理する Kubernetes ネイティブの継続的配信ツール。
Argo Workflows:ベクトルの取り込みとモデルの再トレーニング パイプラインの実行に使用される Kubernetes ネイティブのワークフロー エンジン。
Argo Events:さまざまなアプリケーションやコンポーネントを接続し、イベントに基づいてワークフローをトリガーする、Kubernetes ネイティブのイベントベースの依存関係マネージャー。
Prometheus + AlertManager:モデルのパフォーマンスに関連する監視とアラートに使用されます。
LlamaIndex:データの取り込みとインデックス付けに使用される、LLM とデータ ソースを接続するためのフレームワーク。
Milvus:ベクトルを保存およびクエリするための Kubernetes ネイティブのベクトル データベース。
MinIO:非構造化データの保存に使用されるオープンソースのオブジェクト ストレージ システム。
MLflow:実験の追跡やモデル管理など、機械学習のライフサイクルを管理するためのオープンソース プラットフォーム。
Kubernetes:コンテナ化されたアプリケーションのデプロイ、スケーリング、管理を自動化するコンテナ オーケストレーション プラットフォーム。
Docker コンテナ: Docker コンテナは、一貫した再現可能な方法でアプリケーションをパッケージ化し、実行するために使用されます。
デモンストレーションとして、BigBertha には、Llama2 7B 量子化チャットボット モデルを提供する Streamlit ベースのチャットボットが含まれています。シンプルな Flask アプリを使用してメトリクスを公開し、Redis が Streamlit プロセスと Flask プロセスの間の仲介者として機能します。
このプロジェクトはオープンソースであり、このリポジトリに含まれる LICENSE ファイルに概説されている利用規約が適用されます。