1. 背景最近ベクトル検索を使用したので、milvus でストレス テストを実行する必要があります。同時に、ストレステストで発生した問題をさらに分析するために、milvus のソースコードとドキュメントもいくつか読みました。私たちはいくつかの問題や疑問に遭遇し、milvus コミュニティやオープンソースの貢献者と直接コミュニケーションを取りました。 ストレステストを通じて、特定のシナリオではmilvusのパフォーマンスを改善できないことが判明し、そのシナリオに基づいたソリューションを提供しました。コミュニティはミルバスの役員にフィードバックしました。 以下は、milvus の設計とストレス テストで発生した問題とその解決策またはフォローアップ プランです。 2. ベクトル検索とmilvus2.1 ベクトル検索ベクトル検索は ANNS と略され、完全な英語名は approximate Nearest Neighbor Search です。一般的な概念は、多数のベクトルの中からターゲット ベクトルに最も近い N 個のベクトルを見つけることです。最も単純かつ大雑把な検索方法はブルートフォース検索ですが、インデックスを拡張し、大規模クエリの QPS を向上させることで検索速度を高速化できます。 現在のベクトル インデックスは、ツリー ベース インデックス、グラフ ベース インデックス、ハッシュ ベース インデックス、量子化ベース インデックスの 4 つのカテゴリに分類できます。その中で、グラフ アプローチは、再現率が高く、パフォーマンスが優れており、最適化後のアイデアが豊富なため、際立っています。 2.2 ミルバスmilvus (主にバージョン 2.0 以上用) は、ベクター挿入、ANNS 検索などをサポートするメタネイティブ ベクター データベースです。Milvus は、大量のベクター データを非常にうまく処理できます。ベクトル類似度計算の分野でよく知られているいくつかのオープンソースライブラリ (Faiss、SPTAG など) を統合し、データとハードウェアの計算能力の合理的なスケジュール設定を通じて最適な検索パフォーマンスを実現します。 公式サイト: https://milvus.io/ 3. Milvus アーキテクチャの紹介3.1 Milvusデータセットの概念データセットの概念:
公式ウェブサイトには、データセットの読み取りと書き込みの例が掲載されています: https://milvus.io/docs/v2.1.x/example_code.md データセットクエリツール: https://github.com/milvus-io/birdwatcher 以下は、birdwatcher を使用してコレクションとセグメントの情報を表示します。 上記の出力結果がツールに変換されました。 etcd 内の特定のセグメントに関するすべての情報: 、 3.2 milvus アーキテクチャ図milvus 公式サイトで提供されているアーキテクチャ図は次のとおりです。 グループは次のカテゴリに分類できます。 上記のマイクロサービスの機能を簡単に紹介します。
上記から、マイクロサービスが多数存在し、マイクロサービス間の通信方法は主に以下の通りであることがわかります。 4. Milvusベクターの書き込みと読み取りリンク4.1 milvus ベクター書き込みパス
3.2 milvus ベクター検索パス現在の最新バージョン 2.1.4 の以下の読み取りプロセスは、インターネット上の読み取りプロセス バージョン リンクと異なるため、修正する必要があります。
5. milvusストレステストの問題分析ストレステストバージョン: milvus-2.1.4 データ次元: 512dim 索引: 5.1 ストレステストの結果
5.2 ストレステストにおける問題と分析QPS と CPU 使用率は増加できず、CPU が 50% を超える可能性は低くなります。 (最適化済み)現象の説明:ストレステスト中に、QPS を増やすことができないことが判明しました。慎重に調査した結果、クエリ ノードの CPU 使用率を増やすことができず、QPS が増加しないことが判明しました。
このパラメータは主に、検索タスクの CPU 使用率を評価するために使用されます。パラメータが高くなるほど、タスクが使用する CPU が多くなります。スケジュール設定時に、複数のタスクによる並列クエリの数が少なくなります。今のところ、並列タスクが多すぎて高い QPS を達成できないのではないかと考えています。 Milvus はこのパラメータ設定を公開していませんが、問題/機能強化を通じて Milvus コミュニティに提出しました。以降のバージョンではいくつかの最適化が行われる予定です。 クエリノードを展開した後、短期間でセグメントが自動的にバランス調整されない(疑わしい、フォローアップ)現象の説明:
長期間にわたって大規模な書き込みが継続すると、大量の成長セグメントが生成され、クエリのパフォーマンスが低下します(後述)。
私はこの問題について milvus コミュニティのメンテナーに相談しており、引き続き原因を突き止めて改善に努めていきます。 バージョンアップ後、元のデータに互換性がない(解決方法あり)。 バージョンアップ後、元のデータに互換性がない(解決方法あり)。
数千万のデータポイントでは、ストレステストの QPS は期待を満たすことができません (フォローアップが必要)
たとえば、次の例では 32 コア 16G を 2 つ使用します。
デプロイメントを通じて容量を拡大または縮小しないでください。Helm を通じて行うようにしてください。
そのため、公式サイトでもスムーズに容量拡張するためにはhelmを使うようにすることを推奨しています。 6. まとめストレステスト後、milvus は当社の現在のビジネス シナリオを満たすことができます。上記のストレス テストで残った問題のいくつか、たとえば、多数のセグメントの問題、ノードの拡張、その他の問題などについては、現在も追跡中です。これらの問題は 100% 発生するわけではなく、一部は当社の厳しいテスト条件下でのみ発生します。私たちは引き続きテストを行い、原因を特定し、さらなる最適化のためにコミュニティにフィードバックを提供していきます。上記のストレステストで使用されるインデックスは FLAT です。より高いパフォーマンスを実現するために、グラフ インデックスを使用することが公式に推奨されています。現在のビジネス シナリオでは FLAT インデックスの使用が必要なため、最初に FLAT インデックスに基づいてストレス テストを実行します。グラフインデックスは後で使用され、ストレステストも実行されます。 milvus のストレス テストを行うことで、milvus の設計を理解し、学ぶこともできます。一般的に、Milvus は優れたクラウドネイティブ ベクター データベースです。いくつかのデザインコンセプトは比較的先進的です。ベクトル検索と k8s を組み合わせ、クエリノードを単純に拡張するだけでベクトル検索のパフォーマンスを線形に向上させることができます。分散データベースでは、読み取りと書き込みの分離、ストレージとコンピューティングの分離を実現します。公式ウェブサイトでは、豊富なドキュメントと、attu、birdwatcher などの多くのツールが提供されています。 |
<<: アリババクラウドデータベースの責任者であるフェイフェイ・リーが、中国コンピュータ協会の2022年CCFフェローに選出されました。
インターネット市場におけるビデオのトレンドは止められない。コアオンラインビデオは依然として積極的に市...
サーバーレス クラウド コンピューティングの採用は増加していますが、まだ期待したほどの速さではありま...
12月10日、百度百科が最近「虹プロジェクト」と呼ばれる項目編集計画の開始を発表したと報じられた。よ...
dedipath は、米国サーバー向けに特別プロモーションを実施しており、月額 39 ドルという低価...
入札プロモーションのコストがますます高くなるにつれて、優れたオンラインカスタマーサービスがますます重...
1月29日、Tencent CloudとSangforは戦略協力協定に署名し、正式に戦略的パートナー...
3月1日、テンセントクラウドとバーレーン王国経済開発委員会は協力に関する覚書を正式に締結した。両者は...
SEO に関わったことがある人なら誰でも、SEO によるウェブサイトのプロモーションと最適化が報われ...
「フォーカスとセグメンテーションで勝つ」円卓会議(写真はテンセントテクノロジー撮影)テンセントテクノ...
これに先立ち、国家工商行政管理総局は2014年版「アリババグループ行政指導白書」(以下、「白書」)を...
今日、友人がまた私にこう愚痴を言いました。「しばらく SEO をやっていますが、とても混乱しています...
現在、市場には数え切れないほどの電子商取引ウェブサイトがあります。今日では、あらゆる種類の B2C ...
HiTao.com は、特許取得済みのサボテン濃縮物を宣伝しており、市場の承認を得て、人々が短期間で...
私は重慶のウェディング写真ウェブサイトの SEO を 3 か月間行っており、「コンテンツが王様」であ...
6月8日、北京 - クラウドコンピューティング、ビッグデータ、産業用インターネットの上級専門家である...