大模型学习: 亲测DockerCompose 部署支持 GPU 的 向量数据库Milvus

    Zilliz 采用 Milvus 作为其开源高性能、高扩展性向量数据库的名称,该数据库可在从笔记本电脑到大规模分布式系统等各种环境中高效运行。它既是开源软件,也是云服务。

    Milvus 由 Zilliz 开发,并很快捐赠给了 Linux 基金会下的 LF AI & Data 基金会,现已成为世界领先的开源向量数据库项目之一。它采用 Apache 2.0 许可发布,大多数贡献者都是高性能计算(HPC)领域的专家,擅长构建大规模系统和优化硬件感知代码。核心贡献者包括来自 Zilliz、ARM、英伟达、AMD、英特尔、Meta、IBM、Salesforce、阿里巴巴和微软的专业人士。

有趣的是,Zilliz 的每个开源项目都以鸟命名,这种命名方式象征着自由、远见和技术的敏捷发展。

非结构化数据、Embeddings 和 Milvus

    非结构化数据(如文本、图像和音频)格式各异,蕴含丰富的潜在语义,因此分析起来极具挑战性。为了处理这种复杂性,Embeddings 被用来将非结构化数据转换成能够捕捉其基本特征的数字向量。然后将这些向量存储在向量数据库中,从而实现快速、可扩展的搜索和分析。

Milvus 提供强大的数据建模功能,使您能够将非结构化或多模式数据组织成结构化的 Collections。它支持多种数据类型,适用于不同的属性模型,包括常见的数字和字符类型、各种向量类型、数组、集合和 JSON,为您节省了维护多个数据库系统的精力。

安装 Milvus

要使用 Docker Compose 安装支持 GPU 的 Milvus,请按照以下步骤操作。

1.下载并配置 YAML 文件

下载 milvus-standalone-docker-compose-gpu.yml并手动保存为 docker-compose.yml,或使用以下命令

mkdir milvus
cd milvus
wget https://github.com/milvus-io/milvus/releases/download/v2.5.10/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml

如果github超时,可以科学上网后,下载下来重命名, 再上传到目录里

接下来对 YAML 文件中单机服务的环境变量做如下修改,

分配GPU 设备

要为 Milvus 分配特定的 GPU 设备,请找到standalone 服务定义中的deploy.resources.reservations.devices[0].devices_ids 字段,并将其值替换为所需 GPU 的 ID

GPU信息查询使用 nvidia-smi 工具,来确定 GPU 设备的 ID

 nvidia-smi 工具安装命令,需要根据自己linux系统选择合适版本安装

nvidia-smi
apt install nvidia-utils-570-server

 GPU信息拿到后,我们修改yml文件,确保id一致,如果默认是0,和显卡索引0一样,那就不用修改,如果多个设备,可以逗号间隔配置

2.启动 Milvus

sudo docker compose up -d

启动 Milvus 后

名为milvus- standalonemilvus-minio 和milvus-etcd的容器启动。

milvus-etcd容器不向主机暴露任何端口,并将其数据映射到当前文件夹中的volumes/etcd
milvus-minio容器使用默认身份验证凭据在本地为端口90109011提供服务,并将其数据映射到当前文件夹中的volumes/minio
Milvus-standalone容器使用默认设置为本地19530端口提供服务,并将其数据映射到当前文件夹中的volumes/milvus

检查容器运行状态可用下面命令

sudo docker compose ps

 如下说明启动成功

 遇到下面错误,是minio端口占用,请修改2个端口再重试

Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint milvus-minio (52d317091f64cdd7669d2d7a0555637804c8183423aab487223eadf8c377be4c): Bind for 0.0.0.0:9000 failed: port is already allocated

如果遇到etcd权限问题,请加权限

chmod 777 /volumes/etcd/

3、使用

 可以结合lightRAG,使用向量化存储

4、docker-compose.yml文件源码 

这里贴出源码,供大家部署使用

version: '3.5'

services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.18
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9011:9001"
      - "9010:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.5.10-gpu
    command: ["milvus", "run", "standalone"]
    security_opt:
    - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    ports:
      - "19530:19530"
      - "9091:9091"
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              capabilities: ["gpu"]
              device_ids: ["0"]
    depends_on:
      - "etcd"
      - "minio"

networks:
  default:
    name: milvus

今天的大模型介绍就到这里了,感谢能看到这里的朋友😉

        本次的分享就到这里,【终极量化数据】致力于为大家分享技术干货😎

        如果以上过程中出现了任何的纰漏错误,烦请大佬们指正😅

        受益的朋友或对技术感兴趣的伙伴记得点赞已关注支持一波🙏

        也可以搜索已关注我的微信公众号【终极量化数据】,留言交流🙏

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容