From d606f33eefe63533d07248c41c7fe6ddd7551878 Mon Sep 17 00:00:00 2001 From: quicksilver Date: Thu, 26 Dec 2019 20:55:29 +0800 Subject: [PATCH 1/6] Custom defined name for the upload on Codecov (#840) * specify multiple urls on sqlite_orm download stage * fix bug * fix bug * specify multiple urls on opentracing download stage * fix bug * specify multiple urls on download stage * delete jfrog cache * print jenkins enviroment variables * print jenkins enviroment variables * fix check_ccache.sh bug * debug * Update Jenkinfile * Add build enviroment resource limit on Jenkins CI * remove Jfrog cache build option * Custom defined name for the upload on Codecov --- .github/workflows/core.yml | 4 ++-- ci/jenkins/step/coverage.groovy | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/core.yml b/.github/workflows/core.yml index f7ec3f2536..168cf68b42 100644 --- a/.github/workflows/core.yml +++ b/.github/workflows/core.yml @@ -49,7 +49,7 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} file: ./ci/scripts/output_new.info - flags: unittests + name: ${{ matrix.ubuntu }}-unittests yml: ./codecov.yaml centos: @@ -90,5 +90,5 @@ jobs: with: token: ${{ secrets.CODECOV_TOKEN }} file: ./ci/scripts/output_new.info - flags: unittests + name: ${{ matrix.centos }}-unittests yml: ./codecov.yaml diff --git a/ci/jenkins/step/coverage.groovy b/ci/jenkins/step/coverage.groovy index 2fe96666cd..e159d388d6 100644 --- a/ci/jenkins/step/coverage.groovy +++ b/ci/jenkins/step/coverage.groovy @@ -3,7 +3,7 @@ timeout(time: 30, unit: 'MINUTES') { sh "./coverage.sh -o ${env.MILVUS_INSTALL_PREFIX} -u root -p 123456 -t \$POD_IP" // Set some env variables so codecov detection script works correctly withCredentials([[$class: 'StringBinding', credentialsId: "milvus-ci-codecov-token", variable: 'CODECOV_TOKEN']]) { - sh 'curl -s https://codecov.io/bash | bash -s - -f output_new.info || echo "Codecov did not collect coverage reports"' + sh "curl -s https://codecov.io/bash | bash -s - -f output_new.info -n ${BINARY_VERSION}-version-${OS_NAME}-unittest || echo \"Codecov did not collect coverage reports\"" } } } From 3401b4d0e87d58122868fe640a5eb652737b6d3c Mon Sep 17 00:00:00 2001 From: Lutkin Wang Date: Fri, 27 Dec 2019 18:58:16 +0800 Subject: [PATCH 2/6] Remove outdated content and fix broken link (#856) * [skip ci] Remove outdated content. * [skip ci] Remove outdated content. * [skip ci] Remove outdated content. --- README.md | 12 ++---------- README_CN.md | 12 ++---------- README_JP.md | 12 ++---------- 3 files changed, 6 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 98f9de0e94..436ab56975 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Milvus is the world's fastest similarity search engine for massive-scale feature For more detailed introduction of Milvus and its architecture, see [Milvus overview](https://www.milvus.io/docs/en/aboutmilvus/overview/). -Milvus provides stable [Python](https://github.com/milvus-io/pymilvus), [Java](https://github.com/milvus-io/milvus-sdk-java) and [C++](https://github.com/milvus-io/milvus/tree/master/core/src/sdk) SDKs. +Milvus provides stable [Python](https://github.com/milvus-io/pymilvus), [Java](https://github.com/milvus-io/milvus-sdk-java) and [C++](https://github.com/milvus-io/milvus/tree/master/sdk) SDKs. Keep up-to-date with newest releases and latest updates by reading Milvus [release notes](https://www.milvus.io/docs/en/release/v0.6.0/). @@ -29,15 +29,7 @@ To edit Milvus settings, read [Milvus configuration](https://www.milvus.io/docs/ ### Try your first Milvus program -Try running a program with Milvus using [Python](https://www.milvus.io/docs/en/userguide/example_code/) or [Java example code](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples). - -To use C++ example code, use below command: - -```shell - # Run Milvus C++ example - $ cd [Milvus root path]/core/milvus/bin - $ ./sdk_simple -``` +Try running a program with Milvus using [Python](https://www.milvus.io/docs/en/userguide/example_code/), [Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples), or [C++ example code](https://github.com/milvus-io/milvus/tree/master/sdk/examples). ## Roadmap diff --git a/README_CN.md b/README_CN.md index f7e6dacbea..6a158d150b 100644 --- a/README_CN.md +++ b/README_CN.md @@ -17,7 +17,7 @@ Milvus 是一款开源的、针对海量特征向量的相似性搜索引擎。 若要了解 Milvus 详细介绍和整体架构,请访问 [Milvus 简介](https://www.milvus.io/docs/zh-CN/aboutmilvus/overview/)。 -Milvus 提供稳定的 [Python](https://github.com/milvus-io/pymilvus)、[Java](https://github.com/milvus-io/milvus-sdk-java) 以及[C++](https://github.com/milvus-io/milvus/tree/master/core/src/sdk) 的 SDK。 +Milvus 提供稳定的 [Python](https://github.com/milvus-io/pymilvus)、[Java](https://github.com/milvus-io/milvus-sdk-java) 以及[C++](https://github.com/milvus-io/milvus/tree/master/sdk) 的 SDK。 通过 [版本发布说明](https://milvus.io/docs/zh-CN/release/v0.6.0/) 获取最新版本的功能和更新。 @@ -29,15 +29,7 @@ Milvus 提供稳定的 [Python](https://github.com/milvus-io/pymilvus)、[Java]( ### 开始您的第一个 Milvus 程序 -您可以尝试用 [Python](https://www.milvus.io/docs/en/userguide/example_code/) 或 [Java example code](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples) 运行 Milvus 示例代码。 - -若要使用 C++ 示例代码,请使用以下命令: - -```shell - # Run Milvus C++ example - $ cd [Milvus root path]/core/milvus/bin - $ ./sdk_simple -``` +您可以尝试用 [Python](https://www.milvus.io/docs/en/userguide/example_code/),[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples),或者 [C++](https://github.com/milvus-io/milvus/tree/master/sdk/examples) 运行 Milvus 示例代码。 ## 路线图 diff --git a/README_JP.md b/README_JP.md index f7dbc3bb70..485b2c0b63 100644 --- a/README_JP.md +++ b/README_JP.md @@ -16,7 +16,7 @@ Milvusは世界中一番早い特徴ベクトルにむかう類似性検索エンジンです。不均質な計算アーキテクチャーに基づいて効率を最大化出来ます。数十億のベクタの中に目標を検索できるまで数ミリ秒しかかからず、最低限の計算資源だけが必要です。 -Milvusは安定的な[Python](https://github.com/milvus-io/pymilvus)、[Java](https://github.com/milvus-io/milvus-sdk-java)又は [C++](https://github.com/milvus-io/milvus/tree/master/core/src/sdk) SDKを提供します。 +Milvusは安定的な[Python](https://github.com/milvus-io/pymilvus)、[Java](https://github.com/milvus-io/milvus-sdk-java)又は [C++](https://github.com/milvus-io/milvus/tree/master/sdk) SDKを提供します。 Milvus [リリースノート](https://milvus.io/docs/en/release/v0.6.0/)を読んで最新バージョンや更新情報を手に入れます。 @@ -29,15 +29,7 @@ Milvusをコンフィグするために、[Milvusコンフィグ](https://github ### 初めてのMilvusプログラムを試す -[Python](https://www.milvus.io/docs/en/userguide/example_code/)や[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples)などのサンプルコードを使ってMilvusプログラムを試す。 - -C++サンプルコードを実行するために、次のコマンドをつかってください。 - -```shell - # Run Milvus C++ example - $ cd [Milvus root path]/core/milvus/bin - $ ./sdk_simple -``` +[Python](https://www.milvus.io/docs/en/userguide/example_code/)、[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples)、または[C++](https://github.com/milvus-io/milvus/tree/master/sdk/examples)などのサンプルコードを使ってMilvusプログラムを試す。 ## Milvusロードマップ From 9f65f228a10407538f1f42c4d66bd76c37104654 Mon Sep 17 00:00:00 2001 From: Cai Yudong Date: Sat, 28 Dec 2019 14:24:19 +0800 Subject: [PATCH 3/6] #848 add ready-to-use config files to the Milvus repo for enhanced user experience (#858) --- CHANGELOG.md | 1 + core/conf/demo/log_config.conf | 27 ++++++ core/conf/demo/server_config.yaml | 149 ++++++++++++++++++++++++++++++ core/src/server/Config.h | 4 +- 4 files changed, 179 insertions(+), 2 deletions(-) create mode 100644 core/conf/demo/log_config.conf create mode 100644 core/conf/demo/server_config.yaml diff --git a/CHANGELOG.md b/CHANGELOG.md index 5f913fce70..2410465470 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Please mark all change in change log and use the issue from GitHub - \#738 - Use Openblas / lapack from apt install - \#758 - Enhance config description - \#791 - Remove Arrow +- \#848 - Add ready-to-use config files to the Milvus repo for enhanced user experince ## Task diff --git a/core/conf/demo/log_config.conf b/core/conf/demo/log_config.conf new file mode 100644 index 0000000000..ce3e7c8eda --- /dev/null +++ b/core/conf/demo/log_config.conf @@ -0,0 +1,27 @@ +* GLOBAL: + FORMAT = "%datetime | %level | %logger | %msg" + FILENAME = "/var/lib/milvus/logs/milvus-%datetime{%y-%M-%d-%H:%m}-global.log" + ENABLED = true + TO_FILE = true + TO_STANDARD_OUTPUT = false + SUBSECOND_PRECISION = 3 + PERFORMANCE_TRACKING = false + MAX_LOG_FILE_SIZE = 209715200 ## Throw log files away after 200MB +* DEBUG: + FILENAME = "/var/lib/milvus/logs/milvus-%datetime{%y-%M-%d-%H:%m}-debug.log" + ENABLED = true +* WARNING: + FILENAME = "/var/lib/milvus/logs/milvus-%datetime{%y-%M-%d-%H:%m}-warning.log" +* TRACE: + FILENAME = "/var/lib/milvus/logs/milvus-%datetime{%y-%M-%d-%H:%m}-trace.log" +* VERBOSE: + FORMAT = "%datetime{%d/%M/%y} | %level-%vlevel | %msg" + TO_FILE = false + TO_STANDARD_OUTPUT = false +## Error logs +* ERROR: + ENABLED = true + FILENAME = "/var/lib/milvus/logs/milvus-%datetime{%y-%M-%d-%H:%m}-error.log" +* FATAL: + ENABLED = true + FILENAME = "/var/lib/milvus/logs/milvus-%datetime{%y-%M-%d-%H:%m}-fatal.log" diff --git a/core/conf/demo/server_config.yaml b/core/conf/demo/server_config.yaml new file mode 100644 index 0000000000..11ce92c4be --- /dev/null +++ b/core/conf/demo/server_config.yaml @@ -0,0 +1,149 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +version: 0.1 + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# Server Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# address | IP address that Milvus server monitors. | String | 0.0.0.0 | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# port | Port that Milvus server monitors. Port range (1024, 65535) | Integer | 19530 | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# deploy_mode | Milvus deployment type: | DeployMode | single | +# | single, cluster_readonly, cluster_writable | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# time_zone | Use UTC-x or UTC+x to specify a time zone. | Timezone | UTC+8 | +#----------------------+------------------------------------------------------------+------------+-----------------+ +server_config: + address: 0.0.0.0 + port: 19530 + deploy_mode: single + time_zone: UTC+8 + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# DataBase Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# primary_path | Primary directory used to save meta data, vector data and | Path | /var/lib/milvus | +# | index data. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# secondary_path | A semicolon-separated list of secondary directories used | Path | | +# | to save vector data and index data. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# backend_url | URL for metadata storage, using SQLite (for single server | URL | sqlite://:@:/ | +# | Milvus) or MySQL (for distributed cluster Milvus). | | | +# | Format: dialect://username:password@host:port/database | | | +# | Keep 'dialect://:@:/', 'dialect' can be either 'sqlite' or | | | +# | 'mysql', replace other texts with real values. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# insert_buffer_size | Buffer size used for data insertion. | Integer | 1 (GB) | +# | The sum of 'insert_buffer_size' and 'cpu_cache_capacity' | | | +# | must be less than system memory size. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# preload_table | A comma-separated list of table names that need to be pre- | StringList | | +# | loaded when Milvus server starts up. | | | +# | '*' means preload all existing tables. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +db_config: + primary_path: /var/lib/milvus + secondary_path: + backend_url: sqlite://:@:/ + insert_buffer_size: 1 + preload_table: + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# Metric Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# enable_monitor | Enable monitoring function or not. | Boolean | false | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# collector | Connected monitoring system to collect metrics. | String | Prometheus | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# port | Port to visit Prometheus, port range (1024, 65535) | Integer | 8080 | +#----------------------+------------------------------------------------------------+------------+-----------------+ +metric_config: + enable_monitor: false + collector: prometheus + prometheus_config: + port: 8080 + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# Cache Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# cpu_cache_capacity | The size of CPU memory used for caching data for faster | Integet | 4 (GB) | +# | query. The sum of 'cpu_cache_capacity' and | | | +# | 'insert_buffer_size' must be less than system memory size. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# cache_insert_data | Whether to load inserted data into cache immediately for | Boolean | false | +# | hot query. If want to simultaneously insert and query | | | +# | vectors, it's recommended to enable this config. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +cache_config: + cpu_cache_capacity: 4 + cache_insert_data: false + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# Engine Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# use_blas_threshold | A Milvus performance tuning parameter. This value will be | Integer | 1100 | +# | compared with 'nq' to decide if OpenBLAS should be used. | | | +# | If nq >= use_blas_threshold, OpenBLAS will be used, search | | | +# | response times will be stable but the search speed will be | | | +# | slower; if nq < use_blas_threshold, SSE will be used, | | | +# | search speed will be faster but search response times will | | | +# | fluctuate. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# gpu_search_threshold | A Milvus performance tuning parameter. This value will be | Integer | 1000 | +# | compared with 'nq' to decide if the search computation will| | | +# | be executed on GPUs only. | | | +# | If nq >= gpu_search_threshold, the search computation will | | | +# | be executed on GPUs only; | | | +# | if nq < gpu_search_threshold, the search computation will | | | +# | be executed on both CPUs and GPUs. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +engine_config: + use_blas_threshold: 1100 + gpu_search_threshold: 1000 + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# GPU Resource Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# enable | Enable GPU resources or not. | Boolean | false | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# cache_capacity | The size of GPU memory per card used for cache. | Integer | 1 (GB) | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# search_resources | The list of GPU devices used for search computation. | DeviceList | gpu0 | +# | Must be in format gpux. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# build_index_resources| The list of GPU devices used for index building. | DeviceList | gpu0 | +# | Must be in format gpux. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +gpu_resource_config: + enable: false + cache_capacity: 1 + search_resources: + - gpu0 + build_index_resources: + - gpu0 + +#----------------------+------------------------------------------------------------+------------+-----------------+ +# Tracing Config | Description | Type | Default | +#----------------------+------------------------------------------------------------+------------+-----------------+ +# json_config_path | Absolute path for tracing config file. | Path | | +# | Leave it empty, a no-op tracer will be created. | | | +#----------------------+------------------------------------------------------------+------------+-----------------+ +tracing_config: + json_config_path: diff --git a/core/src/server/Config.h b/core/src/server/Config.h index 4ded3d85f9..e8a10b525f 100644 --- a/core/src/server/Config.h +++ b/core/src/server/Config.h @@ -81,7 +81,7 @@ static const char* CONFIG_METRIC_PROMETHEUS_PORT_DEFAULT = "8080"; /* engine config */ static const char* CONFIG_ENGINE = "engine_config"; static const char* CONFIG_ENGINE_USE_BLAS_THRESHOLD = "use_blas_threshold"; -static const char* CONFIG_ENGINE_USE_BLAS_THRESHOLD_DEFAULT = "20"; +static const char* CONFIG_ENGINE_USE_BLAS_THRESHOLD_DEFAULT = "1100"; static const char* CONFIG_ENGINE_OMP_THREAD_NUM = "omp_thread_num"; static const char* CONFIG_ENGINE_OMP_THREAD_NUM_DEFAULT = "0"; static const char* CONFIG_ENGINE_GPU_SEARCH_THRESHOLD = "gpu_search_threshold"; @@ -96,7 +96,7 @@ static const char* CONFIG_GPU_RESOURCE_ENABLE_DEFAULT = "true"; static const char* CONFIG_GPU_RESOURCE_ENABLE_DEFAULT = "false"; #endif static const char* CONFIG_GPU_RESOURCE_CACHE_CAPACITY = "cache_capacity"; -static const char* CONFIG_GPU_RESOURCE_CACHE_CAPACITY_DEFAULT = "4"; +static const char* CONFIG_GPU_RESOURCE_CACHE_CAPACITY_DEFAULT = "1"; static const char* CONFIG_GPU_RESOURCE_CACHE_THRESHOLD = "cache_threshold"; static const char* CONFIG_GPU_RESOURCE_CACHE_THRESHOLD_DEFAULT = "0.85"; static const char* CONFIG_GPU_RESOURCE_DELIMITER = ","; From 1e72267a65d6bbbd43d11aa0d95aec678b2b6f77 Mon Sep 17 00:00:00 2001 From: Heisenberg-Y <35055583+Heisenberg-Y@users.noreply.github.com> Date: Sat, 28 Dec 2019 17:28:11 +0800 Subject: [PATCH 4/6] add cpu mode for built-in Faiss (#841) * add cpu mode for built-in Faiss * delete customization options on build stage * delete faiss version * delete customization options on build stage * fix unittest problem in cpu mode * fix unittest problem in cpu mode Co-authored-by: quicksilver Co-authored-by: Jin Hai --- CHANGELOG.md | 1 + ci/jenkins/step/build.groovy | 2 +- ci/scripts/build.sh | 10 ++----- core/CMakeLists.txt | 1 - core/build.sh | 7 +---- core/cmake/DefineOptions.cmake | 2 +- core/src/db/engine/ExecutionEngineImpl.cpp | 2 ++ core/src/index/CMakeLists.txt | 1 - core/src/index/cmake/DefineOptionsCore.cmake | 2 +- .../index/cmake/ThirdPartyPackagesCore.cmake | 24 ++++++++-------- .../index/thirdparty/faiss/InvertedLists.cpp | 28 +++++++++++++++++++ .../index/thirdparty/faiss/InvertedLists.h | 11 ++++++-- .../thirdparty/faiss/impl/index_read.cpp | 9 ++++-- .../thirdparty/faiss/impl/index_write.cpp | 9 ++++-- core/src/index/thirdparty/versions.txt | 1 - core/src/wrapper/VecIndex.cpp | 2 ++ core/unittest/db/test_db.cpp | 2 ++ 17 files changed, 75 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2410465470..38615bbeff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Please mark all change in change log and use the issue from GitHub - \#738 - Use Openblas / lapack from apt install - \#758 - Enhance config description - \#791 - Remove Arrow +- \#834 - add cpu mode for built-in Faiss - \#848 - Add ready-to-use config files to the Milvus repo for enhanced user experince ## Task diff --git a/ci/jenkins/step/build.groovy b/ci/jenkins/step/build.groovy index aff5908900..b3a8a49278 100644 --- a/ci/jenkins/step/build.groovy +++ b/ci/jenkins/step/build.groovy @@ -4,7 +4,7 @@ timeout(time: 75, unit: 'MINUTES') { def checkResult = sh(script: "./check_ccache.sh -l ${params.JFROG_ARTFACTORY_URL}/ccache", returnStatus: true) if ("${BINARY_VERSION}" == "gpu") { - sh "/bin/bash --login -c \". ./before-install.sh && ./build.sh -t ${params.BUILD_TYPE} -o ${env.MILVUS_INSTALL_PREFIX} -l -g -x -u -c\"" + sh "/bin/bash --login -c \". ./before-install.sh && ./build.sh -t ${params.BUILD_TYPE} -o ${env.MILVUS_INSTALL_PREFIX} -l -g -u -c\"" } else { sh "/bin/bash --login -c \". ./before-install.sh && ./build.sh -t ${params.BUILD_TYPE} -o ${env.MILVUS_INSTALL_PREFIX} -l -u -c\"" } diff --git a/ci/scripts/build.sh b/ci/scripts/build.sh index 125677355b..f30644a3f2 100755 --- a/ci/scripts/build.sh +++ b/ci/scripts/build.sh @@ -17,14 +17,13 @@ BUILD_UNITTEST="OFF" INSTALL_PREFIX="/var/lib/milvus" FAISS_ROOT="" PRIVILEGES="OFF" -CUSTOMIZATION="OFF" # default use origin faiss BUILD_COVERAGE="OFF" RUN_CPPLINT="OFF" GPU_VERSION="OFF" WITH_MKL="OFF" CUDA_COMPILER=/usr/local/cuda/bin/nvcc -while getopts "o:t:b:f:pgxulcmh" arg +while getopts "o:t:b:f:pgulcmh" arg do case $arg in o) @@ -49,9 +48,6 @@ do echo "Build and run unittest cases" ; BUILD_UNITTEST="ON"; ;; - x) - CUSTOMIZATION="ON"; - ;; l) RUN_CPPLINT="ON" ;; @@ -71,7 +67,6 @@ parameter: -f: faiss root path -p: install command with elevated privileges -g: gpu version --x: milvus customization (default: OFF) -u: building unit test options(default: OFF) -l: run cpplint, clang-format and clang-tidy(default: OFF) -c: code coverage(default: OFF) @@ -79,7 +74,7 @@ parameter: -h: help usage: -./build.sh -o \${INSTALL_PREFIX} -t \${BUILD_TYPE} -b \${CORE_BUILD_DIR} -f \${FAISS_ROOT} [-p] [-g] [-x] [-u] [-l] [-c] [-m] [-h] +./build.sh -o \${INSTALL_PREFIX} -t \${BUILD_TYPE} -b \${CORE_BUILD_DIR} -f \${FAISS_ROOT} [-p] [-g] [-u] [-l] [-c] [-m] [-h] " exit 0 ;; @@ -104,7 +99,6 @@ CMAKE_CMD="cmake \ -DCMAKE_BUILD_TYPE=${BUILD_TYPE} \ -DCMAKE_CUDA_COMPILER=${CUDA_COMPILER} \ -DMILVUS_GPU_VERSION=${GPU_VERSION} \ --DCUSTOMIZATION=${CUSTOMIZATION} \ -DBUILD_UNIT_TEST=${BUILD_UNITTEST} \ -DBUILD_COVERAGE=${BUILD_COVERAGE} \ -DFAISS_ROOT=${FAISS_ROOT} \ diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt index 4290bc74fd..b4b221a74b 100644 --- a/core/CMakeLists.txt +++ b/core/CMakeLists.txt @@ -160,7 +160,6 @@ if (MILVUS_USE_CCACHE) endif () if (CUSTOMIZATION) - set(MILVUS_GPU_VERSION ON) add_compile_definitions(CUSTOMIZATION) endif () diff --git a/core/build.sh b/core/build.sh index 5239e7060c..126fcc224a 100755 --- a/core/build.sh +++ b/core/build.sh @@ -9,7 +9,6 @@ BUILD_COVERAGE="OFF" DB_PATH="/tmp/milvus" PROFILING="OFF" RUN_CPPLINT="OFF" -CUSTOMIZATION="OFF" # default use ori faiss CUDA_COMPILER=/usr/local/cuda/bin/nvcc GPU_VERSION="OFF" #defaults to CPU version WITH_MKL="OFF" @@ -18,7 +17,7 @@ FAISS_SOURCE="BUNDLED" WITH_PROMETHEUS="ON" FIU_ENABLE="OFF" -while getopts "p:d:t:f:ulrcghxzmei" arg; do +while getopts "p:d:t:f:ulrcghzmei" arg; do case $arg in p) INSTALL_PREFIX=$OPTARG @@ -52,9 +51,6 @@ while getopts "p:d:t:f:ulrcghxzmei" arg; do z) PROFILING="ON" ;; - x) - CUSTOMIZATION="ON" - ;; g) GPU_VERSION="ON" ;; @@ -120,7 +116,6 @@ CMAKE_CMD="cmake \ -DBUILD_COVERAGE=${BUILD_COVERAGE} \ -DMILVUS_DB_PATH=${DB_PATH} \ -DMILVUS_ENABLE_PROFILING=${PROFILING} \ --DCUSTOMIZATION=${CUSTOMIZATION} \ -DMILVUS_GPU_VERSION=${GPU_VERSION} \ -DFAISS_WITH_MKL=${WITH_MKL} \ -DMILVUS_WITH_PROMETHEUS=${WITH_PROMETHEUS} \ diff --git a/core/cmake/DefineOptions.cmake b/core/cmake/DefineOptions.cmake index 8f5a42420a..164856866b 100644 --- a/core/cmake/DefineOptions.cmake +++ b/core/cmake/DefineOptions.cmake @@ -45,7 +45,7 @@ set_option_category("Milvus Build Option") define_option(MILVUS_GPU_VERSION "Build GPU version" OFF) -define_option(CUSTOMIZATION "Build with customized FAISS library" OFF) +define_option(CUSTOMIZATION "Build with customized FAISS library" ON) #---------------------------------------------------------------------- set_option_category("Thirdparty") diff --git a/core/src/db/engine/ExecutionEngineImpl.cpp b/core/src/db/engine/ExecutionEngineImpl.cpp index 838346695d..b9dbd327ac 100644 --- a/core/src/db/engine/ExecutionEngineImpl.cpp +++ b/core/src/db/engine/ExecutionEngineImpl.cpp @@ -120,6 +120,7 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { break; } #ifdef CUSTOMIZATION +#ifdef MILVUS_GPU_VERSION case EngineType::FAISS_IVFSQ8H: { if (gpu_resource_enable) { index = GetVecIndexFactory(IndexType::FAISS_IVFSQ8_HYBRID); @@ -128,6 +129,7 @@ ExecutionEngineImpl::CreatetVecIndex(EngineType type) { } break; } +#endif #endif case EngineType::FAISS_PQ: { #ifdef MILVUS_GPU_VERSION diff --git a/core/src/index/CMakeLists.txt b/core/src/index/CMakeLists.txt index 5664694155..d020104d6d 100644 --- a/core/src/index/CMakeLists.txt +++ b/core/src/index/CMakeLists.txt @@ -73,7 +73,6 @@ include(DefineOptionsCore) include(BuildUtilsCore) if (CUSTOMIZATION) - set(MILVUS_GPU_VERSION ON) add_compile_definitions(CUSTOMIZATION) endif () diff --git a/core/src/index/cmake/DefineOptionsCore.cmake b/core/src/index/cmake/DefineOptionsCore.cmake index 1777fdbe8e..3ada0e2a35 100644 --- a/core/src/index/cmake/DefineOptionsCore.cmake +++ b/core/src/index/cmake/DefineOptionsCore.cmake @@ -49,7 +49,7 @@ else () define_option(KNOWHERE_GPU_VERSION "Build GPU version" OFF) endif () -define_option(CUSTOMIZATION "Build with customized FAISS library" OFF) +define_option(CUSTOMIZATION "Build with customized FAISS library" ON) #---------------------------------------------------------------------- set_option_category("Thirdparty") diff --git a/core/src/index/cmake/ThirdPartyPackagesCore.cmake b/core/src/index/cmake/ThirdPartyPackagesCore.cmake index b905aed355..1bb042cd23 100644 --- a/core/src/index/cmake/ThirdPartyPackagesCore.cmake +++ b/core/src/index/cmake/ThirdPartyPackagesCore.cmake @@ -206,11 +206,6 @@ foreach (_VERSION_ENTRY ${TOOLCHAIN_VERSIONS_TXT}) endforeach () set(FAISS_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/faiss) -if (DEFINED ENV{FAISS_SOURCE_URL}) - set(FAISS_SOURCE_URL "$ENV{FAISS_SOURCE_URL}") -else () - set(FAISS_SOURCE_URL "https://github.com/JinHai-CN/faiss/archive/${FAISS_VERSION}.tar.gz") -endif () if (DEFINED ENV{KNOWHERE_ARROW_URL}) set(ARROW_SOURCE_URL "$ENV{KNOWHERE_ARROW_URL}") @@ -467,15 +462,16 @@ macro(build_faiss) "--with-cuda-arch=-gencode=arch=compute_60,code=sm_60 -gencode=arch=compute_61,code=sm_61 -gencode=arch=compute_70,code=sm_70 -gencode=arch=compute_75,code=sm_75" ) else () - set(FAISS_CONFIGURE_ARGS ${FAISS_CONFIGURE_ARGS} --without-cuda) + set(FAISS_CONFIGURE_ARGS ${FAISS_CONFIGURE_ARGS} + "CPPFLAGS=-DUSE_CPU" + --without-cuda) endif () - if (CUSTOMIZATION) + if (DEFINED ENV{FAISS_SOURCE_URL}) + set(FAISS_SOURCE_URL "$ENV{FAISS_SOURCE_URL}") externalproject_add(faiss_ep - DOWNLOAD_COMMAND - "" - SOURCE_DIR - ${FAISS_SOURCE_DIR} + URL + ${FAISS_SOURCE_URL} ${EP_LOG_OPTIONS} CONFIGURE_COMMAND "./configure" @@ -490,8 +486,10 @@ macro(build_faiss) ${FAISS_STATIC_LIB}) else () externalproject_add(faiss_ep - URL - ${FAISS_SOURCE_URL} + DOWNLOAD_COMMAND + "" + SOURCE_DIR + ${FAISS_SOURCE_DIR} ${EP_LOG_OPTIONS} CONFIGURE_COMMAND "./configure" diff --git a/core/src/index/thirdparty/faiss/InvertedLists.cpp b/core/src/index/thirdparty/faiss/InvertedLists.cpp index 86a9d6c711..8636b89efd 100644 --- a/core/src/index/thirdparty/faiss/InvertedLists.cpp +++ b/core/src/index/thirdparty/faiss/InvertedLists.cpp @@ -14,6 +14,8 @@ #include #include + +#ifndef USE_CPU #include "gpu/utils/DeviceUtils.h" #include "cuda.h" #include "cuda_runtime.h" @@ -47,6 +49,7 @@ PageLockMemory::PageLockMemory(PageLockMemory &&other) { other.nbytes = 0; } } +#endif namespace faiss { @@ -257,6 +260,11 @@ ReadOnlyArrayInvertedLists::ReadOnlyArrayInvertedLists(size_t nlist, auto total_size = std::accumulate(readonly_length.begin(), readonly_length.end(), 0); readonly_offset.reserve(nlist); +#ifdef USE_CPU + readonly_codes.reserve(total_size * code_size); + readonly_ids.reserve(total_size); +#endif + size_t offset = 0; for (auto i=0; i readonly_codes; std::vector readonly_ids; +#endif readonly_length.reserve(nlist); size_t offset = 0; for (auto& list_ids : other.ids) { @@ -281,6 +291,7 @@ ReadOnlyArrayInvertedLists::ReadOnlyArrayInvertedLists(const ArrayInvertedLists& readonly_codes.insert(readonly_codes.end(), list_codes.begin(), list_codes.end()); } +#ifndef USE_CPU // convert to page-lock memory { size_t size = readonly_codes.size() * sizeof(uint8_t); @@ -292,6 +303,7 @@ ReadOnlyArrayInvertedLists::ReadOnlyArrayInvertedLists(const ArrayInvertedLists& pin_readonly_ids = std::make_shared(size); memcpy(pin_readonly_ids->data, readonly_ids.data(), size); } +#endif valid = true; } @@ -352,25 +364,41 @@ size_t ReadOnlyArrayInvertedLists::list_size(size_t list_no) const const uint8_t * ReadOnlyArrayInvertedLists::get_codes (size_t list_no) const { FAISS_ASSERT(list_no < nlist && valid); +#ifdef USE_CPU + return readonly_codes.data() + readonly_offset[list_no] * code_size; +#else uint8_t *pcodes = (uint8_t *)(pin_readonly_codes->data); return pcodes + readonly_offset[list_no] * code_size; +#endif } const InvertedLists::idx_t* ReadOnlyArrayInvertedLists::get_ids (size_t list_no) const { FAISS_ASSERT(list_no < nlist && valid); +#ifdef USE_CPU + return readonly_ids.data() + readonly_offset[list_no]; +#else idx_t *pids = (idx_t *)pin_readonly_ids->data; return pids + readonly_offset[list_no]; +#endif } const InvertedLists::idx_t* ReadOnlyArrayInvertedLists::get_all_ids() const { FAISS_ASSERT(valid); +#ifdef USE_CPU + return readonly_ids.data(); +#else return (idx_t *)(pin_readonly_ids->data); +#endif } const uint8_t* ReadOnlyArrayInvertedLists::get_all_codes() const { FAISS_ASSERT(valid); +#ifdef USE_CPU + return readonly_codes.data(); +#else return (uint8_t *)(pin_readonly_codes->data); +#endif } const std::vector& ReadOnlyArrayInvertedLists::get_list_length() const { diff --git a/core/src/index/thirdparty/faiss/InvertedLists.h b/core/src/index/thirdparty/faiss/InvertedLists.h index 1e0d84d5d0..9df0cb63dc 100644 --- a/core/src/index/thirdparty/faiss/InvertedLists.h +++ b/core/src/index/thirdparty/faiss/InvertedLists.h @@ -19,6 +19,8 @@ #include #include + +#ifndef USE_CPU namespace faiss { struct PageLockMemory { @@ -42,6 +44,7 @@ public: }; using PageLockMemoryPtr = std::shared_ptr; } +#endif namespace faiss { @@ -232,10 +235,14 @@ struct ArrayInvertedLists: InvertedLists { }; struct ReadOnlyArrayInvertedLists: InvertedLists { +#ifdef USE_CPU + std::vector readonly_codes; + std::vector readonly_ids; +#else PageLockMemoryPtr pin_readonly_codes; PageLockMemoryPtr pin_readonly_ids; -// std::vector readonly_codes; -// std::vector readonly_ids; +#endif + std::vector readonly_length; std::vector readonly_offset; bool valid; diff --git a/core/src/index/thirdparty/faiss/impl/index_read.cpp b/core/src/index/thirdparty/faiss/impl/index_read.cpp index 8e977a323c..c092aa89dc 100644 --- a/core/src/index/thirdparty/faiss/impl/index_read.cpp +++ b/core/src/index/thirdparty/faiss/impl/index_read.cpp @@ -211,12 +211,17 @@ InvertedLists *read_InvertedLists (IOReader *f, int io_flags) { auto ails = new ReadOnlyArrayInvertedLists(nlist, code_size, list_length); size_t n; READ1(n); -// ails->readonly_ids.resize(n); -// ails->readonly_codes.resize(n*code_size); +#ifdef USE_CPU + ails->readonly_ids.resize(n); + ails->readonly_codes.resize(n*code_size); + READANDCHECK(ails->readonly_ids.data(), n); + READANDCHECK(ails->readonly_codes.data(), n * code_size); +#else ails->pin_readonly_ids = std::make_shared(n * sizeof(InvertedLists::idx_t)); ails->pin_readonly_codes = std::make_shared(n * code_size * sizeof(uint8_t)); READANDCHECK((InvertedLists::idx_t *) ails->pin_readonly_ids->data, n); READANDCHECK((uint8_t *) ails->pin_readonly_codes->data, n * code_size); +#endif return ails; } else if (h == fourcc ("ilar") && !(io_flags & IO_FLAG_MMAP)) { auto ails = new ArrayInvertedLists (0, 0); diff --git a/core/src/index/thirdparty/faiss/impl/index_write.cpp b/core/src/index/thirdparty/faiss/impl/index_write.cpp index 10b1d07c33..c18f8021e0 100644 --- a/core/src/index/thirdparty/faiss/impl/index_write.cpp +++ b/core/src/index/thirdparty/faiss/impl/index_write.cpp @@ -245,12 +245,17 @@ void write_InvertedLists (const InvertedLists *ils, IOWriter *f) { WRITE1 (oa->nlist); WRITE1 (oa->code_size); WRITEVECTOR(oa->readonly_length); +#ifdef USE_CPU + size_t n = oa->readonly_ids.size(); + WRITE1(n); + WRITEANDCHECK(oa->readonly_ids.data(), n); + WRITEANDCHECK(oa->readonly_codes.data(), n * oa->code_size); +#else size_t n = oa->pin_readonly_ids->size() / sizeof(InvertedLists::idx_t); WRITE1(n); -// WRITEANDCHECK(oa->readonly_ids.data(), n); -// WRITEANDCHECK(oa->readonly_codes.data(), n * oa->code_size); WRITEANDCHECK((InvertedLists::idx_t *) oa->pin_readonly_ids->data, n); WRITEANDCHECK((uint8_t *) oa->pin_readonly_codes->data, n * oa->code_size); +#endif } else if (const auto & od = dynamic_cast(ils)) { uint32_t h = fourcc ("ilod"); diff --git a/core/src/index/thirdparty/versions.txt b/core/src/index/thirdparty/versions.txt index efcef26fa9..97bd625bc6 100644 --- a/core/src/index/thirdparty/versions.txt +++ b/core/src/index/thirdparty/versions.txt @@ -3,5 +3,4 @@ BOOST_VERSION=1.70.0 GTEST_VERSION=1.8.1 LAPACK_VERSION=v3.8.0 OPENBLAS_VERSION=v0.3.6 -FAISS_VERSION=1.6.0 MKL_VERSION=2019.5.281 diff --git a/core/src/wrapper/VecIndex.cpp b/core/src/wrapper/VecIndex.cpp index 824e5be13d..e6eb06d75b 100644 --- a/core/src/wrapper/VecIndex.cpp +++ b/core/src/wrapper/VecIndex.cpp @@ -170,6 +170,7 @@ GetVecIndexFactory(const IndexType& type, const Config& cfg) { #endif #ifdef CUSTOMIZATION +#ifdef MILVUS_GPU_VERSION case IndexType::FAISS_IVFSQ8_HYBRID: { server::Config& config = server::Config::GetInstance(); bool gpu_resource_enable = true; @@ -181,6 +182,7 @@ GetVecIndexFactory(const IndexType& type, const Config& cfg) { throw Exception(DB_ERROR, "No GPU resources for IndexType::FAISS_IVFSQ8_HYBRID"); } } +#endif #endif case IndexType::NSG_MIX: { // TODO(linxj): bug. index = std::make_shared(gpu_device); diff --git a/core/unittest/db/test_db.cpp b/core/unittest/db/test_db.cpp index 16d2d42db8..6262bda7d6 100644 --- a/core/unittest/db/test_db.cpp +++ b/core/unittest/db/test_db.cpp @@ -510,9 +510,11 @@ TEST_F(DBTest, INDEX_TEST) { ASSERT_TRUE(stat.ok()); #ifdef CUSTOMIZATION +#ifdef MILVUS_GPU_VERSION index.engine_type_ = (int)milvus::engine::EngineType::FAISS_IVFSQ8H; stat = db_->CreateIndex(table_info.table_id_, index); ASSERT_TRUE(stat.ok()); +#endif #endif milvus::engine::TableIndex index_out; From a8756559c49aa1257f22dd97fe25f727c76ce026 Mon Sep 17 00:00:00 2001 From: Cai Yudong Date: Tue, 31 Dec 2019 10:47:52 +0800 Subject: [PATCH 5/6] add interface GetConfig()/SetConfig() (#877) * #665 add interface GetConfig()/SetConfig() * #665 remove test code --- sdk/grpc/ClientProxy.cpp | 20 ++++++++++++++++++++ sdk/grpc/ClientProxy.h | 8 ++++++-- sdk/include/MilvusApi.h | 26 ++++++++++++++++++++++++++ sdk/interface/ConnectionImpl.cpp | 9 +++++++++ sdk/interface/ConnectionImpl.h | 8 +++++++- 5 files changed, 68 insertions(+), 3 deletions(-) diff --git a/sdk/grpc/ClientProxy.cpp b/sdk/grpc/ClientProxy.cpp index a4b3091669..06b5b706f6 100644 --- a/sdk/grpc/ClientProxy.cpp +++ b/sdk/grpc/ClientProxy.cpp @@ -456,4 +456,24 @@ ClientProxy::DropPartition(const PartitionParam& partition_param) { } } +Status +ClientProxy::GetConfig(const std::string& node_name, std::string& value) const { + try { + return client_ptr_->Cmd(value, "get_config " + node_name); + } catch (std::exception& ex) { + return Status(StatusCode::UnknownError, "Fail to get config: " + node_name); + } +} + +Status +ClientProxy::SetConfig(const std::string& node_name, const std::string& value) const { + try { + std::string dummy; + return client_ptr_->Cmd(dummy, "set_config " + node_name + " " + value); + } catch (std::exception& ex) { + return Status(StatusCode::UnknownError, "Fail to set config: " + node_name); + } +} + + } // namespace milvus diff --git a/sdk/grpc/ClientProxy.h b/sdk/grpc/ClientProxy.h index 0a0ea0b8eb..bca81b9c53 100644 --- a/sdk/grpc/ClientProxy.h +++ b/sdk/grpc/ClientProxy.h @@ -104,10 +104,14 @@ class ClientProxy : public Connection { Status DropPartition(const PartitionParam& partition_param) override; - private: - std::shared_ptr<::grpc::Channel> channel_; + Status + GetConfig(const std::string& node_name, std::string& value) const override; + + Status + SetConfig(const std::string& node_name, const std::string& value) const override; private: + std::shared_ptr<::grpc::Channel> channel_; std::shared_ptr client_ptr_; bool connected_ = false; }; diff --git a/sdk/include/MilvusApi.h b/sdk/include/MilvusApi.h index 4abdf31357..61966695d1 100644 --- a/sdk/include/MilvusApi.h +++ b/sdk/include/MilvusApi.h @@ -444,6 +444,32 @@ class Connection { */ virtual Status DropPartition(const PartitionParam& param) = 0; + + /** + * @brief Get config method + * + * This method is used to set config. + * + * @param node_name, config node name. + * @param value, config value. + * + * @return Indicate if this operation is successful. + */ + virtual Status + GetConfig(const std::string& node_name, std::string& value) const = 0; + + /** + * @brief Set config method + * + * This method is used to set config. + * + * @param node_name, config node name. + * @param value, config value. + * + * @return Indicate if this operation is successful. + */ + virtual Status + SetConfig(const std::string& node_name, const std::string& value) const = 0; }; } // namespace milvus diff --git a/sdk/interface/ConnectionImpl.cpp b/sdk/interface/ConnectionImpl.cpp index 13412bb4cd..0632fb53d3 100644 --- a/sdk/interface/ConnectionImpl.cpp +++ b/sdk/interface/ConnectionImpl.cpp @@ -161,4 +161,13 @@ ConnectionImpl::DropPartition(const PartitionParam& param) { return client_proxy_->DropPartition(param); } +Status +ConnectionImpl::GetConfig(const std::string& node_name, std::string& value) const { + return client_proxy_->GetConfig(node_name, value); +} + +Status +ConnectionImpl::SetConfig(const std::string& node_name, const std::string& value) const { + return client_proxy_->SetConfig(node_name, value); +} } // namespace milvus diff --git a/sdk/interface/ConnectionImpl.h b/sdk/interface/ConnectionImpl.h index db91944b33..1ddcef8155 100644 --- a/sdk/interface/ConnectionImpl.h +++ b/sdk/interface/ConnectionImpl.h @@ -106,7 +106,13 @@ class ConnectionImpl : public Connection { Status DropPartition(const PartitionParam& param) override; - private: + Status + GetConfig(const std::string& node_name, std::string& value) const override; + + Status + SetConfig(const std::string& node_name, const std::string& value) const override; + +private: std::shared_ptr client_proxy_; }; From 36042605aea41ab7d7f4c54bcb361e09802808bc Mon Sep 17 00:00:00 2001 From: Lutkin Wang Date: Tue, 31 Dec 2019 10:54:48 +0800 Subject: [PATCH 6/6] [skip ci] Fix some broken links in the readme files (#879) * [skip ci] Fixed some broken links. * [skip ci] Fix another broken link. * [skip ci] Fix some broken links. * [skip ci] Fix some broken links. --- README.md | 15 ++++++--------- README_CN.md | 15 ++++++--------- README_JP.md | 13 +++++-------- 3 files changed, 17 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 436ab56975..254a582036 100644 --- a/README.md +++ b/README.md @@ -15,25 +15,22 @@ Milvus is the world's fastest similarity search engine for massive-scale feature vectors. Built with heterogeneous computing architecture for the best cost efficiency. Searches over billion-scale vectors take only milliseconds with minimum computing resources. -For more detailed introduction of Milvus and its architecture, see [Milvus overview](https://www.milvus.io/docs/en/aboutmilvus/overview/). +For more detailed introduction of Milvus and its architecture, see [Milvus overview](https://www.milvus.io/docs/about_milvus/overview.md). Milvus provides stable [Python](https://github.com/milvus-io/pymilvus), [Java](https://github.com/milvus-io/milvus-sdk-java) and [C++](https://github.com/milvus-io/milvus/tree/master/sdk) SDKs. -Keep up-to-date with newest releases and latest updates by reading Milvus [release notes](https://www.milvus.io/docs/en/release/v0.6.0/). +Keep up-to-date with newest releases and latest updates by reading Milvus [release notes](https://www.milvus.io/docs/v0.6.0/releases/v0.6.0.md). ## Get started -See the [Milvus install guide](https://www.milvus.io/docs/en/userguide/install_milvus/) for using Docker containers. To install Milvus from source code, see [build from source](install.md). +See the [Milvus install guide](https://www.milvus.io/docs/guides/get_started/install_milvus/install_milvus.md) for using Docker containers. To install Milvus from source code, see [build from source](install.md). -To edit Milvus settings, read [Milvus configuration](https://www.milvus.io/docs/en/reference/milvus_config/). +To edit Milvus settings, read [Milvus configuration](https://www.milvus.io/docs/v0.6.0/reference/milvus_config.md). ### Try your first Milvus program -Try running a program with Milvus using [Python](https://www.milvus.io/docs/en/userguide/example_code/), [Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples), or [C++ example code](https://github.com/milvus-io/milvus/tree/master/sdk/examples). +Try running a program with Milvus using [Python](https://www.milvus.io/docs/guides/get_started/example_code.md), [Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples), or [C++ example code](https://github.com/milvus-io/milvus/tree/master/sdk/examples). -## Roadmap - -Please read our [roadmap](https://milvus.io/docs/en/roadmap/) for upcoming features. ## Contribution guidelines @@ -75,7 +72,7 @@ Below is a list of Milvus contributors. We greatly appreciate your contributions - [Milvus test reports](https://github.com/milvus-io/milvus/tree/master/docs) -- [Milvus FAQ](https://www.milvus.io/docs/en/faq/operational_faq/) +- [Milvus FAQ](https://www.milvus.io/docs/faq/operational_faq.md) - [Milvus Medium](https://medium.com/@milvusio) diff --git a/README_CN.md b/README_CN.md index 6a158d150b..d33efe1c5d 100644 --- a/README_CN.md +++ b/README_CN.md @@ -15,25 +15,22 @@ Milvus 是一款开源的、针对海量特征向量的相似性搜索引擎。基于异构众核计算框架设计,成本更低,性能更好。在有限的计算资源下,十亿向量搜索仅毫秒响应。 -若要了解 Milvus 详细介绍和整体架构,请访问 [Milvus 简介](https://www.milvus.io/docs/zh-CN/aboutmilvus/overview/)。 +若要了解 Milvus 详细介绍和整体架构,请访问 [Milvus 简介](https://www.milvus.io/cn/docs/about_milvus/overview.md)。 Milvus 提供稳定的 [Python](https://github.com/milvus-io/pymilvus)、[Java](https://github.com/milvus-io/milvus-sdk-java) 以及[C++](https://github.com/milvus-io/milvus/tree/master/sdk) 的 SDK。 -通过 [版本发布说明](https://milvus.io/docs/zh-CN/release/v0.6.0/) 获取最新版本的功能和更新。 +通过 [版本发布说明](https://www.milvus.io/cn/docs/v0.6.0/releases/v0.6.0.md) 获取最新版本的功能和更新。 ## 开始使用 Milvus -请参阅 [Milvus 安装指南](https://www.milvus.io/docs/zh-CN/userguide/install_milvus/) 使用 Docker 容器安装 Milvus。若要基于源码编译,请访问 [源码安装](install.md)。 +请参阅 [Milvus 安装指南](https://www.milvus.io/cn/docs/guides/get_started/install_milvus/install_milvus.md) 使用 Docker 容器安装 Milvus。若要基于源码编译,请访问 [源码安装](install.md)。 -若要更改 Milvus 设置,请参阅 [Milvus 配置](https://www.milvus.io/docs/zh-CN/reference/milvus_config/)。 +若要更改 Milvus 设置,请参阅 [Milvus 配置](https://www.milvus.io/cn/docs/reference/milvus_config.md)。 ### 开始您的第一个 Milvus 程序 -您可以尝试用 [Python](https://www.milvus.io/docs/en/userguide/example_code/),[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples),或者 [C++](https://github.com/milvus-io/milvus/tree/master/sdk/examples) 运行 Milvus 示例代码。 +您可以尝试用 [Python](https://www.milvus.io/cn/docs/guides/get_started/example_code.md),[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples),或者 [C++](https://github.com/milvus-io/milvus/tree/master/sdk/examples) 运行 Milvus 示例代码。 -## 路线图 - -请阅读我们的[路线图](https://milvus.io/docs/zh-CN/roadmap/)以了解更多即将开发的新功能。 ## 贡献者指南 @@ -54,7 +51,7 @@ Milvus 提供稳定的 [Python](https://github.com/milvus-io/pymilvus)、[Java]( - [Milvus 测试报告](https://github.com/milvus-io/milvus/tree/master/docs) -- [Milvus 常见问题](https://www.milvus.io/docs/zh-CN/faq/operational_faq/) +- [Milvus 常见问题](https://www.milvus.io/cn/docs/faq/operational_faq.md) - [Milvus Medium](https://medium.com/@milvusio) diff --git a/README_JP.md b/README_JP.md index 485b2c0b63..685ef6eddb 100644 --- a/README_JP.md +++ b/README_JP.md @@ -18,22 +18,19 @@ Milvusは世界中一番早い特徴ベクトルにむかう類似性検索エ Milvusは安定的な[Python](https://github.com/milvus-io/pymilvus)、[Java](https://github.com/milvus-io/milvus-sdk-java)又は [C++](https://github.com/milvus-io/milvus/tree/master/sdk) SDKを提供します。 -Milvus [リリースノート](https://milvus.io/docs/en/release/v0.6.0/)を読んで最新バージョンや更新情報を手に入れます。 +Milvus [リリースノート](https://www.milvus.io/docs/v0.6.0/releases/v0.6.0.md)を読んで最新バージョンや更新情報を手に入れます。 ## はじめに -DockerでMilvusをインストールすることは簡単です。[Milvusインストール案内](https://milvus.io/docs/en/userguide/install_milvus/) を参考してください。ソースからMilvusを構築するために、[ソースから構築する](install.md)を参考してください。 +DockerでMilvusをインストールすることは簡単です。[Milvusインストール案内](https://www.milvus.io/docs/guides/get_started/install_milvus/install_milvus.md) を参考してください。ソースからMilvusを構築するために、[ソースから構築する](install.md)を参考してください。 -Milvusをコンフィグするために、[Milvusコンフィグ](https://github.com/milvus-io/docs/blob/master/reference/milvus_config.md)を読んでください。 +Milvusをコンフィグするために、[Milvusコンフィグ](https://www.milvus.io/docs/reference/milvus_config.md)を読んでください。 ### 初めてのMilvusプログラムを試す -[Python](https://www.milvus.io/docs/en/userguide/example_code/)、[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples)、または[C++](https://github.com/milvus-io/milvus/tree/master/sdk/examples)などのサンプルコードを使ってMilvusプログラムを試す。 +[Python](https://www.milvus.io/docs/guides/get_started/example_code.md)、[Java](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples)、または[C++](https://github.com/milvus-io/milvus/tree/master/sdk/examples)などのサンプルコードを使ってMilvusプログラムを試す。 -## Milvusロードマップ - -[ロードマップ](https://milvus.io/docs/en/roadmap/)を読んで、追加する予定の特性が分かります。 ## 貢献規約 @@ -54,7 +51,7 @@ Milvusをコンフィグするために、[Milvusコンフィグ](https://github - [Milvus テストレポート](https://github.com/milvus-io/milvus/tree/master/docs) -- [Milvusのよくある質問](https://www.milvus.io/docs/en/faq/operational_faq/) +- [Milvusのよくある質問](https://www.milvus.io/docs/faq/operational_faq.md) - [Milvus Medium](https://medium.com/@milvusio)