安装、启动 Milvus 服务
安装前提
操作系统
操作系统 | 版本 |
---|---|
CentOS | 7.5 或以上 |
Ubuntu LTS | 18.04 或以上 |
硬件
硬件 | 建议配置 |
---|---|
CPU | Intel CPU Sandy Bridge 或以上 |
CPU 指令集 |
|
内存 | 8 GB 或以上(取决于具体向量数据规模) |
硬盘 | SATA 3.0 SSD 或以上 |
软件
软件 | 版本 |
---|---|
Docker | 19.03 或以上 |
请确保可用内存大于你在 server_config.yaml 文件中设置的
cache.insert_buffer_size
和 cache.cache_size
之和。
确认 Docker 状态
确认 Docker daemon 正在运行:
$ sudo docker info
- 如果无法正常打印 Docker 相关信息,请启动 Docker daemon。
- 在 Linux 上需要使用
sudo
执行 Docker 命令。若要在没有sudo
的情况下运行 Docker 命令,请创建docker
组并添加用户,详见 Linux 安装步骤。
拉取 Milvus 镜像
拉取 CPU 版本的 Milvus 镜像:
$ sudo docker pull milvusdb/milvus:1.1.0-cpu-d050721-5e559c
- 如果你的主机由于网络限制无法在线获得 Docker 镜像和配置文件,请从其他主机在线获取镜像,保存为 TAR 文件传输回本地,传输完成后重新加载为 Docker 镜像:
点击查看离线传输相关代码示例。
- 将 Docker 镜像保存为 TAR 文件再使用合适的方式传输。
$ docker save milvusdb/milvus > milvus_image.tar
- 将 TAR 文件传输完成后使用以下命令重新加载成 Docker 镜像。
$ docker load < milvus_image.tar
- 将 Docker 镜像保存为 TAR 文件再使用合适的方式传输。
- 如果拉取镜像的速度过慢或一直失败,请参考 部署运维问题 中提供的解决办法。
下载配置文件
$ mkdir -p /home/$USER/milvus/conf
$ cd /home/$USER/milvus/conf
$ wget https://raw.githubusercontent.com/milvus-io/milvus/v1.1.0/core/conf/demo/server_config.yaml
如果无法通过
wget
命令下载配置文件,你也可以在 /home/$USER/milvus/conf 目录下创建 server_config.yaml 文件,然后将 server config 文件 的内容复制到你创建的配置文件中。
启动 Milvus Docker 容器
启动 Docker 容器,将本地的文件路径映射到容器中:
$ sudo docker run -d --name milvus_cpu_1.1.0 \
-p 19530:19530 \
-p 19121:19121 \
-v /home/$USER/milvus/db:/var/lib/milvus/db \
-v /home/$USER/milvus/conf:/var/lib/milvus/conf \
-v /home/$USER/milvus/logs:/var/lib/milvus/logs \
-v /home/$USER/milvus/wal:/var/lib/milvus/wal \
milvusdb/milvus:1.1.0-cpu-d050721-5e559c
上述命令中用到的参数定义如下:
-d
: 在后台运行容器。--name
: 为容器指定一个名字。-p
: 指定端口映射。-v
: 将宿主机路径挂载至容器。
确认 Milvus 运行状态:
$ sudo docker ps
如果 Milvus 服务没有正常启动,执行以下命令查询错误日志:
$ sudo docker logs milvus_cpu_1.1.0
常见问题
可以在 Windows 上安装 Milvus 吗?
理论上只要能够支持 Docker 的操作系统都可以运行 Milvus。为什么 Milvus 在启动时返回 Illegal instruction
?
如果你的 CPU 不支持 SSE42、AVX、AVX2、AVX512 其中任何一个指令集,则 Milvus 无法正常启动。可以通过 cat /proc/cpuinfo
查看 CPU 支持的指令集。
Milvus 只能使用 Docker 部署吗?
Milvus 还支持源码编译,该方法仅支持 Linux 系统。详见 从源代码编译 Milvus。应如何设置 IVF 索引的 nlist
和 nprobe
参数?
IVF 索引的 nlist
值需要根据具体的使用情况去设置。一般来说,推荐值为 4 × sqrt(n)
,其中 n 为 segment 内的 entity 总量。
nprobe
的选取需要根据数据总量和实际场景在速度性能和准确率之间进行取舍。建议通过多次实验确定一个合理的值。
以下是使用公开测试数据集 sift50m 针对 nlist
和 nprobe
的一个测试。以索引类型 IVF_SQ8 为例,针对不同 nlist
/nprobe
组合的搜索时间和召回率分别进行对比。
因 CPU 版 Milvus 和 GPU 版 Milvus 测试结果类似,此处仅展示基于 GPU 版 Milvus 测试的结果。
在本次测试中,nlist
和 nprobe
的值成比例增长,召回率随 nlist
/nprobe
组合增长呈现上升的趋势。
在 nlist
为 4096 和 nprobe
为 128 时,速度性能最佳。
接下来你可以
如果你刚开始了解 Milvus:
如果你已准备好在生产环境中部署 Milvus:
- 创建 监控与报警系统 实时查看系统表现
- 设置 Milvus 参数
如果你想使用针对大数据集搜索的 GPU 加速版 Milvus: