Loading CHANGELOG.md +2 −0 Original line number Diff line number Diff line Loading @@ -34,8 +34,10 @@ Please mark all change in change log and use the ticket from JIRA. - \#533 - NSG build failed with MetricType Inner Product - \#543 - client raise exception in shards when search results is empty - \#545 - Avoid dead circle of build index thread when error occurs - \#547 - NSG build failed using GPU-edition if set gpu_enable false - \#552 - Server down during building index_type: IVF_PQ using GPU-edition - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error - \#579 - Build index hang in GPU version when gpu_resources disabled - \#599 - Build index log is incorrect - \#602 - Optimizer specify wrong gpu_id - \#606 - No log generated during building index with CPU Loading core/src/db/DBImpl.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -1033,11 +1033,7 @@ DBImpl::BuildTableIndexRecursively(const std::string& table_id, const TableIndex if (!failed_files.empty()) { std::string msg = "Failed to build index for " + std::to_string(failed_files.size()) + ((failed_files.size() == 1) ? " file" : " files"); #ifdef MILVUS_GPU_VERSION msg += ", file size is too large or gpu memory is not enough."; #else msg += ", please double check index parameters."; #endif return Status(DB_ERROR, msg); } Loading core/src/db/engine/ExecutionEngineImpl.cpp +20 −9 Original line number Diff line number Diff line Loading @@ -86,6 +86,11 @@ ExecutionEngineImpl::ExecutionEngineImpl(VecIndexPtr index, const std::string& l VecIndexPtr ExecutionEngineImpl::CreatetVecIndex(EngineType type) { #ifdef MILVUS_GPU_VERSION server::Config& config = server::Config::GetInstance(); bool gpu_resource_enable = true; config.GetGpuResourceConfigEnable(gpu_resource_enable); #endif std::shared_ptr<VecIndex> index; switch (type) { case EngineType::FAISS_IDMAP: { Loading @@ -94,18 +99,20 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { } case EngineType::FAISS_IVFFLAT: { #ifdef MILVUS_GPU_VERSION if (gpu_resource_enable) index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_MIX); #else index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_CPU); else #endif index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_CPU); break; } case EngineType::FAISS_IVFSQ8: { #ifdef MILVUS_GPU_VERSION if (gpu_resource_enable) index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_MIX); #else index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_CPU); else #endif index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_CPU); break; } case EngineType::NSG_MIX: { Loading @@ -120,10 +127,11 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { #endif case EngineType::FAISS_PQ: { #ifdef MILVUS_GPU_VERSION if (gpu_resource_enable) index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_MIX); #else index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_CPU); else #endif index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_CPU); break; } case EngineType::SPTAG_KDT: { Loading Loading @@ -611,6 +619,9 @@ ExecutionEngineImpl::Init() { server::Config& config = server::Config::GetInstance(); std::vector<int64_t> gpu_ids; Status s = config.GetGpuResourceConfigBuildIndexResources(gpu_ids); if (!s.ok()) { gpu_num_ = knowhere::INVALID_VALUE; } for (auto id : gpu_ids) { if (gpu_num_ == id) { return Status::OK(); Loading core/src/grpc/README.mddeleted 100644 → 0 +0 −6 Original line number Diff line number Diff line We manually change two APIs in "milvus.pb.h": add_vector_data() add_row_id_array() add_ids() add_distances() If proto files need be generated again, remember to re-change above APIs. No newline at end of file core/src/index/knowhere/knowhere/index/vector_index/IndexNSG.cpp +15 −4 Original line number Diff line number Diff line Loading @@ -116,17 +116,28 @@ NSG::Train(const DatasetPtr& dataset, const Config& config) { } // TODO(linxj): dev IndexFactory, support more IndexType Graph knng; #ifdef MILVUS_GPU_VERSION if (build_cfg->gpu_id == knowhere::INVALID_VALUE) { auto preprocess_index = std::make_shared<IVF>(); auto model = preprocess_index->Train(dataset, config); preprocess_index->set_index_model(model); preprocess_index->AddWithoutIds(dataset, config); preprocess_index->GenGraph(build_cfg->knng, knng, dataset, config); } else { auto preprocess_index = std::make_shared<GPUIVF>(build_cfg->gpu_id); auto model = preprocess_index->Train(dataset, config); preprocess_index->set_index_model(model); preprocess_index->AddWithoutIds(dataset, config); preprocess_index->GenGraph(build_cfg->knng, knng, dataset, config); } #else auto preprocess_index = std::make_shared<IVF>(); #endif auto model = preprocess_index->Train(dataset, config); preprocess_index->set_index_model(model); preprocess_index->AddWithoutIds(dataset, config); Graph knng; preprocess_index->GenGraph(build_cfg->knng, knng, dataset, config); #endif algo::BuildParams b_params; b_params.candidate_pool_size = build_cfg->candidate_pool_size; Loading Loading
CHANGELOG.md +2 −0 Original line number Diff line number Diff line Loading @@ -34,8 +34,10 @@ Please mark all change in change log and use the ticket from JIRA. - \#533 - NSG build failed with MetricType Inner Product - \#543 - client raise exception in shards when search results is empty - \#545 - Avoid dead circle of build index thread when error occurs - \#547 - NSG build failed using GPU-edition if set gpu_enable false - \#552 - Server down during building index_type: IVF_PQ using GPU-edition - \#561 - Milvus server should report exception/error message or terminate on mysql metadata backend error - \#579 - Build index hang in GPU version when gpu_resources disabled - \#599 - Build index log is incorrect - \#602 - Optimizer specify wrong gpu_id - \#606 - No log generated during building index with CPU Loading
core/src/db/DBImpl.cpp +0 −4 Original line number Diff line number Diff line Loading @@ -1033,11 +1033,7 @@ DBImpl::BuildTableIndexRecursively(const std::string& table_id, const TableIndex if (!failed_files.empty()) { std::string msg = "Failed to build index for " + std::to_string(failed_files.size()) + ((failed_files.size() == 1) ? " file" : " files"); #ifdef MILVUS_GPU_VERSION msg += ", file size is too large or gpu memory is not enough."; #else msg += ", please double check index parameters."; #endif return Status(DB_ERROR, msg); } Loading
core/src/db/engine/ExecutionEngineImpl.cpp +20 −9 Original line number Diff line number Diff line Loading @@ -86,6 +86,11 @@ ExecutionEngineImpl::ExecutionEngineImpl(VecIndexPtr index, const std::string& l VecIndexPtr ExecutionEngineImpl::CreatetVecIndex(EngineType type) { #ifdef MILVUS_GPU_VERSION server::Config& config = server::Config::GetInstance(); bool gpu_resource_enable = true; config.GetGpuResourceConfigEnable(gpu_resource_enable); #endif std::shared_ptr<VecIndex> index; switch (type) { case EngineType::FAISS_IDMAP: { Loading @@ -94,18 +99,20 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { } case EngineType::FAISS_IVFFLAT: { #ifdef MILVUS_GPU_VERSION if (gpu_resource_enable) index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_MIX); #else index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_CPU); else #endif index = GetVecIndexFactory(IndexType::FAISS_IVFFLAT_CPU); break; } case EngineType::FAISS_IVFSQ8: { #ifdef MILVUS_GPU_VERSION if (gpu_resource_enable) index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_MIX); #else index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_CPU); else #endif index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_CPU); break; } case EngineType::NSG_MIX: { Loading @@ -120,10 +127,11 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { #endif case EngineType::FAISS_PQ: { #ifdef MILVUS_GPU_VERSION if (gpu_resource_enable) index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_MIX); #else index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_CPU); else #endif index = GetVecIndexFactory(IndexType::FAISS_IVFPQ_CPU); break; } case EngineType::SPTAG_KDT: { Loading Loading @@ -611,6 +619,9 @@ ExecutionEngineImpl::Init() { server::Config& config = server::Config::GetInstance(); std::vector<int64_t> gpu_ids; Status s = config.GetGpuResourceConfigBuildIndexResources(gpu_ids); if (!s.ok()) { gpu_num_ = knowhere::INVALID_VALUE; } for (auto id : gpu_ids) { if (gpu_num_ == id) { return Status::OK(); Loading
core/src/grpc/README.mddeleted 100644 → 0 +0 −6 Original line number Diff line number Diff line We manually change two APIs in "milvus.pb.h": add_vector_data() add_row_id_array() add_ids() add_distances() If proto files need be generated again, remember to re-change above APIs. No newline at end of file
core/src/index/knowhere/knowhere/index/vector_index/IndexNSG.cpp +15 −4 Original line number Diff line number Diff line Loading @@ -116,17 +116,28 @@ NSG::Train(const DatasetPtr& dataset, const Config& config) { } // TODO(linxj): dev IndexFactory, support more IndexType Graph knng; #ifdef MILVUS_GPU_VERSION if (build_cfg->gpu_id == knowhere::INVALID_VALUE) { auto preprocess_index = std::make_shared<IVF>(); auto model = preprocess_index->Train(dataset, config); preprocess_index->set_index_model(model); preprocess_index->AddWithoutIds(dataset, config); preprocess_index->GenGraph(build_cfg->knng, knng, dataset, config); } else { auto preprocess_index = std::make_shared<GPUIVF>(build_cfg->gpu_id); auto model = preprocess_index->Train(dataset, config); preprocess_index->set_index_model(model); preprocess_index->AddWithoutIds(dataset, config); preprocess_index->GenGraph(build_cfg->knng, knng, dataset, config); } #else auto preprocess_index = std::make_shared<IVF>(); #endif auto model = preprocess_index->Train(dataset, config); preprocess_index->set_index_model(model); preprocess_index->AddWithoutIds(dataset, config); Graph knng; preprocess_index->GenGraph(build_cfg->knng, knng, dataset, config); #endif algo::BuildParams b_params; b_params.candidate_pool_size = build_cfg->candidate_pool_size; Loading