(一)首先,请确保已安装Docker和NVIDIA-Docker,如没有安装,请自行百度。
(二)下载并运行cuda-ubuntu容器
Milvus目前支持的cuda版本为10.x,在dockerhub上我们可以找到英伟达官方发布的cuda-ubuntu镜像:https://hub.docker.com/r/nvidia/cuda/tags?page=1&name=10.2
该页面列举了所有cuda 10.2的镜像,cuda有base、runtime、devel三种安装方式,对于编译来说需要使用devel方式,我们推荐在ubuntu 18.04下进行编译,于是我们就选定这个镜像作为现成的编译环境:
docker pull nvidia/cuda:10.2-devel-ubuntu18.04
镜像下载完成后,我们启动一个容器:
docker run --gpus all -it -d -p 19530:19530 nvidia/cuda:10.2-devel-ubuntu18.04
得到容器ID,进入容器:
docker exec -it [container_id] bash
(三)在容器中安装必要的工具
apt-get update
apt-get install git
apt-get install vim
apt-get install wget
(四)编译安装 cmake 3.14
由于apt-get默认安装的cmake是3.10版本,未达到Milvus编译的要求,因此要在容器中下载cmake 3.14的源码并编译安装。
这里我们在根目录下创建了一个叫my_project的目录,之后的Milvus源码也会放在这个目录下:
cd /
mkdir my_project
cd /my_project
下载cmake 3.14的源码并编译安装:
注:后面编译时可能会碰到“Protocol "https" not supported or disabled in libcurl”的错误,所以把这里的“./bootstrap”改为“./bootstrap --system-curl”
wget https://github.com/Kitware/CMake/releases/download/v3.14.0/cmake-3.14.0.tar.gz
tar -zxv -f ./cmake-3.14.0.tar.gz
cd cmake-3.14.0
./bootstrap --system-curl
make
make install
安装好cmake后,查看cmake版本以确保安装正确:
cmake --version
(五)下载并编译 Milvus 源码
下载Milvus源码并切换到0.10.3分支:
cd /my_project
git clone https://github.com/milvus-io/milvus.git
cd ./milvus/core
git checkout 0.10.3
安装Milvus依赖的软件。由于进入容器时自带了root权限,无需使用sudo,因此我们用vim打开该脚本并将“sudo”字样全部去除:
vim ./ubuntu_build_deps.sh
运行该脚本以安装依赖软件:
./ubuntu_build_deps.sh
全部准备工作完成,开始编译:
./build.sh -g -t Release
步骤正确,如无特殊情况,编译应能成功完成。
根据自己的需要,修改/milvus/core/conf目录下的milvus.yaml配置文件,比如缓存大小、db目录等。然后在/milvus/core目录下运行脚本启动Milvus server:
./start_server.sh
由于我们之前在启动这个容器时加了端口映射 -p 19530:19530,因此可在外部使用pymilvus与server交互。