安装、启动 Milvus 服务

CPU 版 MilvusGPU 版 Milvus

安装前提

操作系统

操作系统版本
CentOS7.5 或以上
Ubuntu LTS18.04 或以上

硬件

硬件建议配置
CPUIntel CPU Sandy Bridge 或以上
CPU 指令集
  • SSE42
  • AVX
  • AVX2
  • AVX512
内存8 GB 或以上(取决于具体向量数据规模)
硬盘SATA 3.0 SSD 或以上

软件

软件版本
Docker19.03 或以上

请确保可用内存大于你在 server_config.yaml 文件中设置的 cache.insert_buffer_sizecache.cache_size 之和。

确认 Docker 状态

确认 Docker daemon 正在运行:

  1. $ sudo docker info
  • 如果无法正常打印 Docker 相关信息,请启动 Docker daemon。
  • 在 Linux 上需要使用 sudo 执行 Docker 命令。若要在没有 sudo 的情况下运行 Docker 命令,请创建 docker 组并添加用户,详见 Linux 安装步骤

拉取 Milvus 镜像

拉取 CPU 版本的 Milvus 镜像:

  1. $ sudo docker pull milvusdb/milvus:1.0.0-cpu-d030521-1ea92e
  • 如果你的主机由于网络限制无法在线获得 Docker 镜像和配置文件,请从其他主机在线获取镜像,保存为 TAR 文件传输回本地,传输完成后重新加载为 Docker 镜像: 点击查看离线传输相关代码示例。

    1. 将 Docker 镜像保存为 TAR 文件再使用合适的方式传输。
      $ docker save milvusdb/milvus > milvus_image.tar
    2. 将 TAR 文件传输完成后使用以下命令重新加载成 Docker 镜像。
      $ docker load < milvus_image.tar
  • 如果拉取镜像的速度过慢或一直失败,请参考 部署运维问题 中提供的解决办法。

下载配置文件

  1. $ mkdir -p /home/$USER/milvus/conf
  2. $ cd /home/$USER/milvus/conf
  3. $ wget https://raw.githubusercontent.com/milvus-io/milvus/v1.0.0/core/conf/demo/server_config.yaml

如果无法通过 wget 命令下载配置文件,你也可以在 /home/$USER/milvus/conf 目录下创建 server_config.yaml 文件,然后将 server config 文件 的内容复制到你创建的配置文件中。

启动 Milvus Docker 容器

启动 Docker 容器,将本地的文件路径映射到容器中:

  1. $ sudo docker run -d --name milvus_cpu_1.0.0 \
  2. -p 19530:19530 \
  3. -p 19121:19121 \
  4. -v /home/$USER/milvus/db:/var/lib/milvus/db \
  5. -v /home/$USER/milvus/conf:/var/lib/milvus/conf \
  6. -v /home/$USER/milvus/logs:/var/lib/milvus/logs \
  7. -v /home/$USER/milvus/wal:/var/lib/milvus/wal \
  8. milvusdb/milvus:1.0.0-cpu-d030521-1ea92e

上述命令中用到的参数定义如下:

  • -d: 在后台运行容器。
  • --name: 为容器指定一个名字。
  • -p: 指定端口映射。
  • -v: 将宿主机路径挂载至容器。

确认 Milvus 运行状态:

  1. $ sudo docker ps

如果 Milvus 服务没有正常启动,执行以下命令查询错误日志:

  1. $ sudo docker logs milvus_cpu_1.0.0

常见问题

可以在 Windows 上安装 Milvus 吗? 理论上只要能够支持 Docker 的操作系统都可以运行 Milvus。 为什么 Milvus 在启动时返回 Illegal instruction? 如果你的 CPU 不支持 SSE42、AVX、AVX2、AVX512 其中任何一个指令集,则 Milvus 无法正常启动。可以通过 cat /proc/cpuinfo 查看 CPU 支持的指令集。 Milvus 中如何实现数据迁移? 详见数据迁移

注意:不同版本之间,数据可能会不兼容。目前数据格式兼容到 Milvus v0.7.0。

Milvus 只能使用 Docker 部署吗? Milvus 还支持源码编译,该方法仅支持 Linux 系统。详见 从源代码编译 Milvus。 应如何设置 IVF 索引的 nlistnprobe 参数? IVF 索引的 nlist 值需要根据具体的使用情况去设置。一般来说,推荐值为 4 × sqrt(n),其中 n 为 segment 内的 entity 总量。

nprobe 的选取需要根据数据总量和实际场景在速度性能和准确率之间进行取舍。建议通过多次实验确定一个合理的值。

以下是使用公开测试数据集 sift50m 针对 nlistnprobe 的一个测试。以索引类型 IVF_SQ8 为例,针对不同 nlist/nprobe 组合的搜索时间和召回率分别进行对比。

因 CPU 版 Milvus 和 GPU 版 Milvus 测试结果类似,此处仅展示基于 GPU 版 Milvus 测试的结果。

accuracy_nlist_nprobe.png

在本次测试中,nlistnprobe 的值成比例增长,召回率随 nlist/nprobe 组合增长呈现上升的趋势。

performance_nlist_nprobe.png

nlist 为 4096 和 nprobe 为 128 时,速度性能最佳。

接下来你可以