xSky 实验室关注高性能计算,分布式系统/存储,大数据/机器学习/WebRTC
目录
  • 首页
  • 技术相关
  • 原创作品
  • 人工智能/机器学习
  • 系统与架构
  • 数据库/数据分析
  • 分布式系统/存储
  • 服务端开发
  • WEBRTC研究
  • 开发调试
  • 网络与安全
  • 常用工具
  • 杂七杂八

编译运行Milvus

2022-09-27 11:40:01

Milvus 是什么

Milvus 是一款开源的向量数据库,支持针对 TB 级向量的增删改操作和近实时查询,具有高度灵活、稳定可靠以及高速查询等特点。Milvus 集成了 Faiss、NMSLIB、Annoy 等广泛应用的向量索引库,提供了一整套简单直观的 API,让你可以针对不同场景选择不同的索引类型。此外,Milvus 还可以对标量数据进行过滤,进一步提高了召回率,增强了搜索的灵活性。


Milvus主要是在Ubuntu环境下进行开发的,我们推荐的编译环境首选是Ubuntu 18.04。在0.6.0之前的版本都是使用GPU加速的版本,但很多使用者反映他们希望在无GPU的机器上运行Milvus。于是我们在0.6.0上通过编译选项提供了CPU和GPU两种版本,但在CPU版本的Docker镜像没有发布前,很多使用者不得不自己去编译CPU版本,由于各人的机器环境千差万别而遇到了各种各样的编译问题。因此我们上传了两个Docker镜像,分别提供了Milvus CPU和GPU版本所需要的编译环境。

使用这两个镜像编译Milvus,具体做法如下:

步骤1 拉取镜像

CPU版编译环境的镜像:

docker pull milvusdb/milvus-cpu-build-env:v0.6.0-ubuntu18.04

GPU版编译环境的镜像:

docker pull milvusdb/milvus-gpu-build-env:v0.6.0-ubuntu18.04

我的docker做了免sudo运行的设置,有些使用者可能需要加sudo才能运行,如果嫌麻烦,可以查阅“免sudo使用docker”相关文档。

这里需要注意的是,如果使用GPU版本的镜像,必须要安装nvidia-docker,具体可参考

nvidia-docker官方文档

步骤2 启动容器

启动CPU版本容器:

docker run  -it -p 19530:19530 -d milvusdb/milvus-cpu-build-env:v0.6.0-ubuntu18.04

启动GPU版本容器:

docker run --runtime=nvidia -it -p 19530:19530 -d milvusdb/milvus-gpu-build-env:v0.6.0-ubuntu18.04

容器创建出来后,会给出一个容器的ID,比如上面这个“d4adxxxxx”。我们现在要进入这个容器里:

docker exec -it [container_id] bash

这里的container_id就换成上一条命令看到的那个“d4adxxxxx”,我们就进入了容器内部。

步骤3 在容器中下载Milvus源码并进行编译

先进入一个能往里写东西的目录,比如home目录:

cd /home

下载源码,目前是0.6.0:

wget https://github.com/milvus-io/milvus/archive/0.6.0.zip

更新一下apt-get,安装一个解压工具

apt-get update
apt-get install unzip

解压源码包:

unzip ./0.6.0.zip

我们看到源码被解压到一个叫milvus-0.6.0的文件夹里,进入其core目录:

cd ./milvus-0.6.0/core

如果你用的是CPU镜像,就这么编译:

./build.sh -t Release

如果你用的是GPU镜像,就需要加一个“-g”参数:

./build.sh -g -t Release

参数“-t Release”意思是编译Release版本,如果你想调试的话,也可以编译Debug版本。

不出意外的话,编译成功。然后我们启动编译好的Milvus服务程序:

./start_server.sh

这个start_server.sh指定core/conf目录下的server_config.yaml和log_config.conf作为配置启动Milvus。Milvus数据存储路径是由server_config.yaml文件里的primary_path这一项指定的,默认的路径是:/tmp/milvus

所以,如果之后你想查看Milvus的日志文件,就可以到 /tmp/milvus/logs目录里去看。

步骤4 使用python 连接Milvus并做些操作

在写脚本之前,先确定 pymilvus 已经安装:

pip3 install pymilvus==0.2.5

pymilvus的主页上有一张Milvus和pymilvus版本配对的表格,目前还没有0.6.0的配对信息,但之前0.5.3所对应的pymilvus-0.2.5也是能用在0.6.0上的,之后会有新的版本和0.6.0对应。

python的环境都没问题的话,就可以写测试脚本了,比如可以在pycharm里写个脚本在Milvus里创建一张表,运行之后就能看到返回的成功信息:

 

注:

  • 如果想使用C++SDK的,可以参考源码目录milvus/core/src/sdk下的README.MD文件
  • 如果想使用JavaSDK的,可以参考milvus-java-sdk源码里的相关文档
  • Milvus默认的对外服务端口是19530,如果你拉取了Milvus发布版镜像想运行,就有可能跟你自己编译启动的Milvus有端口冲突,所以记得用docker stop [container_id]来停止容器

By:xSky | 技术相关 |

  • 分类目录

    • 技术相关 (34)
    • 原创作品 (13)
    • 人工智能/机器学习 (6)
    • 系统与架构 (9)
    • 数据库/数据分析 (11)
    • 分布式系统/存储 (4)
    • 服务端开发 (7)
    • WEBRTC研究 (7)
    • 开发调试 (7)
    • 网络与安全 (9)
    • 常用工具 (9)
    • 杂七杂八 (6)
  • 最新文章

    • WSL从C盘迁移到其他盘区
    • 赵何娟:中国AI追随之路的五大误区,我们至少落后十年
    • zap  发送日志到 websocket
    • QUIC(隐藏的)超能力
    • MYSQL 生成日期/时间序列总结
    • Linux bash终端设置代理(proxy)访问
    • centos 下 yum安装python3
    • 使用SQL查询Milvus 向量数据库
    • 浅谈 MySQL 新的身份验证插件 caching_sha2_password
    • Milvus v2.2.1 开源向量搜索引擎使用教程
    • 部署了一个SRS的demo
    • Dockerfile 详解
    • Docker常用命令
    • Tus文件上传协议
    • 编译运行Milvus
    • MinIO 快速入门
    • ESP32
    • Prometheus监控报警系统搭建
    • go语言JSON字典模拟
    • go语言的sql解析器
    • Grafana配置数据源,自定义查询语法
    • TDengine + Telegraf + Grafana
    • gRPC-Gateway 返回JSON数据int64类型被转为string类型问题
    • LLAMA模型试玩
    • 语音识别的一些开源项目整理
    • 使用MYSQL8进行统计分析
    • 记录FFmpeg抽帧、合流、转码、加水印等操作
    • 移动网络弱网处理研究
    • 翻译:使用 Semgrep 进行热点代码评审
    • 共享内存并发路线图
  • 链接

    • xSky的Blog
    • 我的Github
    • 实时监控图表
    • 预印本
    • xRedis 在线文档
    • xSkyProxy
    • xChart 数据在线测试
    • 我的电子书
    • xChart 数据可视化系统
    • 树莓派技术圈
    • WebRTC开发者社区
  • 开源项目

    • xReis C++的redis客户端库
    • xBlog-C++ 博客程序
    • xSkyProxy-新型MySQL代理网关
    • 数据可视化平台- xChart
    • xhttpcache 高速数据缓存服务
    • xMonitor-图形监测工具
    • 网址收集

Powered By xBlog

Copyright 2010~2024 0xsky.com All Rights Reserved.