利用 RustFS + MLflow,打造 MLOps 平台的超详细教程

MLOps流水线建设与自动化:从手工作坊到工业级AI工厂 我见过太多团队犯的错误:一开始就追求完美的全自动化,结果半年过去了,连一个模型都没上线。我的建议从最小的痛点开始:先解决模型版本混乱,再搞自动化训练迭代改进:每季度优化一个环节,不要想一步到位文化先行:MLOps本质是研发流程变革,不是技术工具堆砌记住这句话没有MLOps的AI就像没有刹车的赛车,但一开始就造F1赛车的新手,第一个弯道就会冲出赛道。实用下一步如果你的团队还没开始,今天就在GitHub Actions上配置第一个模型CI/CD如果已经有基础流水线,增加特征一致性检查和数据漂移监控。 阅读详情

本文的构建示例已在以下 Github 仓库中公开。

  • GitHub - mjun0812/MLflow-Docker

官方文档如下。

  • MLflow Documentation
  • RustFS Documentation

引入背景

在机器学习项目中,我们需要在更改超参数、模型和数据集的同时进行各种实验。此时,通过引入可以高效比较结果的实验管理工具,我们可以专注于模型的开发。这类实验管理工具有 Tensorboard 和 Weight and Bias (wandb) 等多种,但如果着眼于无需将数据发送到外部即可使用的“本地部署(On-Premise)”这一点,选择并不多。因此,我打算尝试构建可以在本地构建的代表性平台 MLflow。

什么是 MLflow

MLflow 是一个开源的 MLOps 平台,支持以下 5 种场景:

  • Tracking & Experiment Management: 管理实验结果并进行比较
  • Model Registry: 进行机器学习模型的版本管理
  • Model Deployment: 进行机器学习模型的服务化
  • ML Library Integration: 与机器学习库集成
  • Model Evaluation: 机器学习模型的性能评估

为了在这些场景中使用 MLflow,需要一个作为 backend store 保存参数的数据库,以及一个作为 artifact store 保存模型权重和日志文件等的对象文件存储。因此,这次我们将使用 Docker Compose 采用以下配置,完全在本地构建 MLflow。

  • backend store: MySQL
  • artifact store: RustFS

由于我主要使用进行实验管理的 Tracking Server,因此文章将以该部分为中心进行撰写,但其他场景应该也可以基于本次的构建示例进行使用。

架构图

这次我们将使用 Docker Compose,按以下配置构建 MLflow Server。

在这里插入图片描述

MLflow 的 Tracking Server 将实验参数和结果保存到 MySQL 数据库中,将 artifact 保存到 RustFS 中。此外,MLflow 的 WebUI 通过使用 Nginx Proxy 设置 Basic 认证,仅允许部分用户访问。

快速开始 (Quick Start)

如果想快速构建,请克隆以下 GitHub 仓库并按照 README.md 的步骤操作,或者执行以下命令。

git clone https://github.com/mjun0812/MLflow-Docker.git
cd MLflow-Docker
cp env.template .env
vim .env

编辑 .env 文件,指定监听域名和 MLflow 的版本。

# 指定监听域名。
# 如果仅为 localhost,则只能从本地访问。
VIRTUAL_HOST=localhost
# 如果想指定 MLflow 的版本,请在此处指定
# 如果不指定,将使用最新版
MLFLOW_VERSION=

(可选) 如果要设置 Basic 认证,请在 nginx/htpasswd/localhost 文件中设置用户名和密码。

htpasswd -c nginx/htpasswd/localhost [username]

接下来,执行以下命令进行镜像构建和容器启动。

docker compose up -d

这样,就可以通过 localhost:15000 访问 MLflow 的 WebUI 了。

如果从 Python 代码中使用 MLflow,请按如下方式操作。

import os

import mlflow

# 如果设置了 Basic 认证
os.environ["MLFLOW_TRACKING_USERNAME"] = "username"
os.environ["MLFLOW_TRACKING_PASSWORD"] = "password"

# 通过环境变量设置的情况
os.environ["MLFLOW_TRACKING_URI"] = "http://localhost:15000"

mlflow.set_tracking_uri("http://localhost:15000")
mlflow.set_experiment("example")

with mlflow.start_run():
  mlflow.log_param("param1", 1)
  mlflow.log_metric("metric1", 1)

构建详情

接下来,说明构建的详细信息。首先展示文件的整体结构,然后查看各容器的设置。在本文的示例中,我们通过启动以下容器进行构建。

  • Nginx Proxy (jwilder/nginx-proxy)
  • MLflow Server (自制 Dockerfile)
  • MySQL
  • RustFS
services:
  nginx-proxy:
    image:jwilder/nginx-proxy:latest
    restart:unless-stopped
    ports:
      -"15000:80"
    volumes:
      -./nginx/htpasswd:/etc/nginx/htpasswd
      -./nginx/conf.d/proxy.conf:/etc/nginx/conf.d/proxy.conf
      -/var/run/docker.sock:/tmp/docker.sock:ro
    networks:
      -mlflow-net

mlflow:
    build:
      context:.
      dockerfile:Dockerfile
      args:
        MLFLOW_VERSION:${MLFLOW_VERSION}
    expose:
      -"80"
    restart:unless-stopped
    depends_on:
      db:
        condition:service_healthy
      rustfs-init:
        condition:service_completed_successfully
    env_file:
      -.env
    environment:
      TZ:Asia/Tokyo
      VIRTUAL_HOST:"${VIRTUAL_HOST:-localhost}"
      MLFLOW_S3_ENDPOINT_URL:http://rustfs:9000
      AWS_ACCESS_KEY_ID:rustfs-mlflow
      AWS_SECRET_ACCESS_KEY:rustfs-mlflow
      MLFLOW_BACKEND_STORE_URI:mysql+mysqldb://mlflow:mlflow@db:3306/mlflow
    command:>
      mlflow server
      --backend-store-uri 'mysql+mysqldb://mlflow:mlflow@db:3306/mlflow'
      --artifacts-destination 's3://mlflow/artifacts'
      --serve-artifacts
      --host 0.0.0.0
      --port 80
    networks:
      -mlflow-net
      -mlflow-internal-net

db:
    image:mysql:latest
    restart:unless-stopped
    environment:
      MYSQL_USER:mlflow
      MYSQL_PASSWORD:mlflow
      MYSQL_ROOT_PASSWORD:mlflow
      MYSQL_DATABASE:mlflow
      TZ:Asia/Tokyo
    volumes:
      -./mysql/data:/var/lib/mysql
      -./mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    healthcheck:
      test:["CMD","mysqladmin","ping","-h","localhost"]
      interval:5s
      timeout:10s
      retries:5
    networks:
      -mlflow-internal-net

rustfs:
    image:rustfs/rustfs:latest
    security_opt:
      -"no-new-privileges:true"
    # ports:
    #   - "9000:9000" # S3 API port
    environment:
      -RUSTFS_VOLUMES=/data/rustfs
      -RUSTFS_ADDRESS=0.0.0.0:9000
      -RUSTFS_CONSOLE_ENABLE=false
      -RUSTFS_EXTERNAL_ADDRESS=:9000
      -RUSTFS_CORS_ALLOWED_ORIGINS=*
      -RUSTFS_ACCESS_KEY=rustfs-mlflow
      -RUSTFS_SECRET_KEY=rustfs-mlflow
      -RUSTFS_OBS_LOGGER_LEVEL=info
      # Object Cache
      -RUSTFS_OBJECT_CACHE_ENABLE=true
      -RUSTFS_OBJECT_CACHE_TTL_SECS=300
    volumes:
      -./rustfs:/data/rustfs
    restart:unless-stopped
    healthcheck:
      test:["CMD","sh","-c","curl -f http://localhost:9000/health"]
      interval:30s
      timeout:10s
      retries:3
      start_period:40s
    networks:
      -mlflow-internal-net
      # - mlflow-net

rustfs-init:
    image:amazon/aws-cli:latest
    depends_on:
      rustfs:
        condition:service_healthy
    environment:
      -AWS_ACCESS_KEY_ID=rustfs-mlflow
      -AWS_SECRET_ACCESS_KEY=rustfs-mlflow
      -AWS_DEFAULT_REGION=us-east-1
      -AWS_REGION=us-east-1
    entrypoint:/bin/sh
    command:-c"aws --endpoint-url http://rustfs:9000 s3api create-bucket --bucket mlflow || true"
    restart:"no"
    networks:
      -mlflow-internal-net

# RustFS volume permissions fixer service
volume-permission-helper:
    image:alpine
    volumes:
      -./rustfs:/data
    command:>
      sh -c "
        chown -R 10001:10001 /data &&
        echo 'Volume Permissions fixed' &&
        exit 0
      "
    restart:"no"

networks:
mlflow-net:
    driver:bridge
mlflow-internal-net:
    internal:true

nginx-proxy

Nginx Proxy 用于通过 Nginx 代理 MLflow 的 WebUI。这里使用的 jwilder/nginx-proxy Docker 镜像,几乎不需要编写 Nginx 配置文件,只需在 compose.yml 中进行描述、挂载特定卷并编辑环境变量,即可建立带有 Basic 认证的 Nginx Proxy。

nginx-proxy:
  image:jwilder/nginx-proxy:latest
restart:unless-stopped
ports:
    -"15000:80"
volumes:
    -./nginx/htpasswd:/etc/nginx/htpasswd
    -./nginx/conf.d/proxy.conf:/etc/nginx/conf.d/proxy.conf
    -/var/run/docker.sock:/tmp/docker.sock:ro
networks:
    -mlflow-net

这次想要代理的服务只有 MLflow Server 一个,所以使用 nginx-proxy 看起来有些过头,但因为它只需配置文件放置即可轻松切换监听域名的指定和 Basic 认证的开启/关闭,所以我们使用了它。首先,作为 nginx 的整体设置,在 nginx/conf.d/proxy.conf 中添加以下设置。

client_max_body_size 100g;

这是为了应对 MLflow Server 发送的文件尺寸较大的情况,以便能够发送巨大的文件。接下来,在 mlflow 容器的环境变量 VIRTUAL_HOST 中描述监听域名的指定和 Basic 认证的设置。

mlflow:
  expose:
    - "80"
  environment:
    VIRTUAL_HOST: "example.com,localhost"

该环境变量的值可以用逗号分隔指定多个域名。此外,通过 expose 指定想要代理的端口。这里 expose 指定的端口会映射到 nginx-proxy 的端口,因此在 nginx-proxy 侧按如下方式指定端口。

nginx-proxy:
  ports:
    - "15000:80"

这样,就可以从外部通过 example.com:15000 和 localhost:15000 访问 MLflow 的 WebUI 了。如果设置 Basic 认证,请在挂载到 nginx-proxy 卷的 nginx/htpasswd 文件中设置用户名和密码。此时,Basic 认证的文件名应与域名相同。

cd nginx/htpasswd
htpasswd -c example.com [username]
cp example.com localhost

这样,就可以从 example.com 和 localhost 访问 MLflow 的 WebUI 了。即使更改监听域名或不再需要 Basic 认证,nginx 的配置文件也会在容器启动时更新,因此无需手动更改。

MLflow

MLflow Server 使用以下 Dockerfile 和 compose.yml 进行构建。可以通过环境变量 MLFLOW_VERSION 指定 MLflow 的版本。如果不指定,将使用最新版。由于 MLflow 使用 SQLAlchemy 连接 DB,因此需要适配 DB 的驱动程序,即 MySQL 的客户端库 mysqlclient。此外,为了访问 S3 兼容的对象文件存储 RustFS,还需要安装 boto3。

FROM python:3.13

ARG MLFLOW_VERSION=""

RUN if [ -n "$MLFLOW_VERSION" ]; then \
        pip install --no-cache-dir mlflow=="$MLFLOW_VERSION" mysqlclient boto3; \
    else \
        pip install --no-cache-dir mlflow mysqlclient boto3; \
    fi

在容器内执行 mlflow server 命令来启动 MLflow Server。这里,通过 --backend-store-uri 选项指定 MySQL 的连接信息,通过 --artifacts-destination 选项指定 RustFS 内的存储桶和文件夹路径。此外,通过 --serve-artifacts 选项,让 artifact 从运行 MLflow Server 的容器保存到 RustFS。如果没有此设置,客户端将直接访问 S3 并保存 artifact。

mlflow:
  build:
    context:.
    dockerfile:Dockerfile
    args:
      MLFLOW_VERSION:${MLFLOW_VERSION}
expose:
    -"80"
restart:unless-stopped
depends_on:
    db:
      condition:service_healthy
    rustfs-init:
      condition:service_completed_successfully
env_file:
    -.env
environment:
    TZ:Asia/Tokyo
    VIRTUAL_HOST:"${VIRTUAL_HOST:-localhost}"
    MLFLOW_S3_ENDPOINT_URL:http://rustfs:9000
    AWS_ACCESS_KEY_ID:rustfs-mlflow
    AWS_SECRET_ACCESS_KEY:rustfs-mlflow
    MLFLOW_BACKEND_STORE_URI:mysql+mysqldb://mlflow:mlflow@db:3306/mlflow
command:>
    mlflow server
    --backend-store-uri 'mysql+mysqldb://mlflow:mlflow@db:3306/mlflow'
    --artifacts-destination 's3://mlflow/artifacts'
    --serve-artifacts
    --host 0.0.0.0
    --port 80
networks:
    -mlflow-net
    -mlflow-internal-net

RustFS

RustFS 由仅在启动时运行的 rustfs-init、volume-permission-helper 这 2 个容器,以及进行服务的容器 rustfs 共 3 个容器组成。

  • rustfs-init: 用于在 RustFS 启动时创建存储桶的容器。
  • volume-permission-helper: 用于修正 RustFS 卷权限的容器。当 RustFS 卷的权限不正确时运行。
  • rustfs: RustFS 的容器。
rustfs:
  image:rustfs/rustfs:latest
security_opt:
    -"no-new-privileges:true"
# ports:
#   - "9000:9000" # S3 API port
environment:
    -RUSTFS_VOLUMES=/data/rustfs
    -RUSTFS_ADDRESS=0.0.0.0:9000
    -RUSTFS_CONSOLE_ENABLE=false
    -RUSTFS_EXTERNAL_ADDRESS=:9000
    -RUSTFS_CORS_ALLOWED_ORIGINS=*
    -RUSTFS_ACCESS_KEY=rustfs-mlflow
    -RUSTFS_SECRET_KEY=rustfs-mlflow
    -RUSTFS_OBS_LOGGER_LEVEL=info
    # Object Cache
    -RUSTFS_OBJECT_CACHE_ENABLE=true
    -RUSTFS_OBJECT_CACHE_TTL_SECS=300
volumes:
    -./rustfs:/data/rustfs
restart:unless-stopped
healthcheck:
    test:["CMD","sh","-c","curl -f http://localhost:9000/health"]
    interval:30s
    timeout:10s
    retries:3
    start_period:40s
networks:
    -mlflow-internal-net
    # - mlflow-net

rustfs-init:
image:amazon/aws-cli:latest
depends_on:
    rustfs:
      condition:service_healthy
environment:
    -AWS_ACCESS_KEY_ID=rustfs-mlflow
    -AWS_SECRET_ACCESS_KEY=rustfs-mlflow
    -AWS_DEFAULT_REGION=us-east-1
    -AWS_REGION=us-east-1
entrypoint:/bin/sh
command:-c"aws --endpoint-url http://rustfs:9000 s3api create-bucket --bucket mlflow || true"
restart:"no"
networks:
    -mlflow-internal-net

# RustFS volume permissions fixer service
volume-permission-helper:
image:alpine
volumes:
    -./rustfs:/data
command:>
    sh -c "
      chown -R 10001:10001 /data &&
      echo 'Volume Permissions fixed' &&
      exit 0
    "
restart:"no"

在上面的示例中,RustFS 的 WebUI 被禁用了,但根据需要,可以按如下方式设置并启用它。

nginx-proxy:
  ports:
    -"15001:9001"

rustfs:
image:rustfs/rustfs:latest
security_opt:
    -"no-new-privileges:true"
ports:
    # - "9000:9000" # S3 API port
# 追记 Nginx Proxy 的设置
expose:
    -"9001"
environment:
    # 指定监听域名
    -VIRTUAL_HOST=example.com,localhost

    -RUSTFS_VOLUMES=/data/rustfs
    -RUSTFS_ADDRESS=0.0.0.0:9000
    -RUSTFS_EXTERNAL_ADDRESS=:9000
    -RUSTFS_CORS_ALLOWED_ORIGINS=*
    -RUSTFS_ACCESS_KEY=rustfs-mlflow
    -RUSTFS_SECRET_KEY=rustfs-mlflow
    -RUSTFS_OBS_LOGGER_LEVEL=info

    # 追记 WebUI 的设置
    -RUSTFS_CONSOLE_ADDRESS=0.0.0.0:9001
    -RUSTFS_CONSOLE_ENABLE=true
    -RUSTFS_CONSOLE_CORS_ALLOWED_ORIGINS=*

    # Object Cache
    -RUSTFS_OBJECT_CACHE_ENABLE=true
    -RUSTFS_OBJECT_CACHE_TTL_SECS=300
volumes:
    -./rustfs:/data/rustfs
restart:unless-stopped
healthcheck:
    test:["CMD","sh","-c","curl -f http://localhost:9000/health"]
    interval:30s
    timeout:10s
    retries:3
    start_period:40s
networks:
    -mlflow-internal-net

在上述设置中,可以通过 example.com:15001 和 localhost:15001 访问 RustFS 的 WebUI。

迁移到 RustFS 的方法

将数据迁移到 RustFS 时,使用 MinIO 开发的 mc 命令非常方便。

mc 命令具有存储桶镜像 (rsync) 功能,因此可以使用它轻松迁移数据。

  1. 确保可以访问迁移源和迁移目标双方的 S3 兼容存储。
  2. 使用 --net host 启动 MinIO Client (mc) 容器。
docker run --rm -it --net host --entrypoint sh minio/mc
  1. 在容器内,设置迁移源和迁移目标的连接信息。
# 迁移源
mc alias set src http://host.docker.internal:10000 <ACCESS_KEY> <SECRET_KEY>
# 迁移目标
mc alias set dst http://host.docker.internal:9000 <ACCESS_KEY> <SECRET_KEY>
  1. 使用 mc mirror 命令复制数据。
mc mirror src/mlflow/artifacts dst/mlflow/artifacts
从实验管理到模型部署:用ClearML搭建完整MLOps流水线(附Python代码片段) 本文详细介绍了如何使用ClearML构建完整的MLOps流水线,从实验管理到模型部署的全流程实践。通过Python代码示例展示环境配置、实验跟踪、数据集管理及自动化部署等关键步骤,特别适合中大型ML团队实现标准化协作。ClearML的基础组件和中文文档支持为开发者提供了便捷的解决方案。 阅读详情

相关推荐

6大开源MLOps平台深度对比报告 -- Zenml、Kubeflow、Metaflow、Polyaxon、MLRun与Pachyderm

在将机器学习(ML)从实验性研究转化为可带来商业价值的生产级应用的过程中,企业面临着巨大的复杂性。机器学习运营(MLOps)的出现正是为了应对这一挑战,它旨在将DevOps的原则应用于ML生命周期,以实现流程的自动化、标准化和可重复性。一个强大的MLOps平台对于管理从数据准备、模型训练、验证到部署、监控和再训练的整个工作流至关重要。选择正确的平台是一项关键的战略决策,它将深刻影响团队的生产力、运营成本以及技术栈的长期演进。本报告对六个领先的开源MLOps平台进行了全面比较。

分享AI和大数据领域的知识和研究 3297

2022年最好用的8个MLOps工具和平台

该平台为开发团队提供有关模型、算法和数据集的警报,这些模型、算法和数据集需要随着时间的推移进行调整。Domino Data Lab 的 Domino 数据科学平台对于专注于数据管理的团队来说是一个受欢迎的平台,特别是因为它专注于为 MLOps的数据创建集中式的存储和可视化空间。Domino 的平台对于希望进行数据民主化的团队来说是一个强大的解决方案,因为它提供了如此多的学习和模板资源——例如它的知识中心和工作台。为这些模型提供模板的工具,以及可以通过目录轻松查找模板的工具,是 MLOps 团队的最爱。

soaring_casia的专栏 3104

从零开始开发AI Agent:基于大模型的智能体实战指南

### 摘要 本文介绍了AI Agent的开发全流程,从基础概念到实际部署,涵盖大模型集成、工具调用和记忆系统构建等核心技术。通过电商客服案例展示实战应用,并提供调试优化与部署方案,最后展望了AI Agent的未来发展方向,帮助开发者快速掌握智能体开发技能。

ghs_gss的博客 4868

Top 5 OSSInsight 年度最佳 MLOps 开源工具

MLOps 能够帮助企业或组织更好地管理生产中的机器学习模型的复杂性,从而使机器学习项目更快速、更可靠地推广到市场。在本文中,我们将回顾2022 年列出的排名前 5 的最热门开源 MLOps 工具。

Jina AI 的博客 2149

时序SDC约束set_data_check及常见应用场景

时序约束SDC之set_data_check命令及常见应用场景解析

weixin_37584728的博客 2288

46、大数据助力SDN优化流量管理与控制器

本文探讨了大数据在软件定义网络(SDN)中的应用,重点分析了如何利用大数据技术优化SDN控制器的可扩展性和弹性。通过介绍SDN控制器的核心功能及其面临的挑战,提出了集中式、分布式、混合式和分层式控制器放置策略,并结合大数据分析系统架构与技术,详细阐述了在控制器放置优化、流聚合和备份路径识别等场景中的实际应用。文章还给出了大数据分析在SDN控制器优化中的操作流程与优势,展望了未来结合人工智能与物联网的发展方向,强调了数据安全与算法效率的重要性。

xx56789的博客 86

KnoxPatch深度技术解析:三星设备Root后完整功能恢复的专业方案

三星Knox安全机制是三星设备的核心安全框架,旨在为企业级用户提供硬件级安全防护。然而,当设备被Root后,Knox的熔断机制会永久标记设备为"已损坏",导致大量三星原生应用和服务无法正常工作。KnoxPatch通过创新的系统修复技术,为Root用户提供了一套完整的设备解锁和功能恢复方案,实现了系统修复与Root权限的完美共存。 ## 问题分析:Knox安全机制的技术限制 三星Knox安全框架

gitblog_00216的博客 1000

基于Simulink的电力电子负载特性模拟仿真实例

电阻性负载是最简单的负载形式,其阻抗为纯电阻,电流和电压之间的关系符合欧姆定律。电阻性负载的特点是消耗能量,不会存储能量。本示例将以一个典型的直流电源供电系统为例,展示如何利用Simulink进行不同负载特性的仿真模拟。直流电源:提供固定电压输入。逆变器(可选):根据需要产生PWM调制信号,驱动负载。负载模块:模拟不同类型的负载特性,如电阻性负载、电感性负载和容性负载。测量模块:用于观察负载上的电压和电流波形。系统架构视图plaintext深色版本v| || |

xiaoheshang_123的博客 430

MLOps 工程指南(二)

在本章中,我们学习了 MLOps 中持续操作的关键原则,主要是持续集成、交付和部署。我们通过在 Azure DevOps 上设置 CI/CD 管道和测试环境的实际操作来学习这一点。我们测试了管道的执行稳健性,并最终探讨了增强管道功能的一些触发器,并为测试环境设置了 Git 触发器。本章是 MLOps 持续操作的基础,并为您提供了在云上自动化部署任何给定场景的 ML 模型部署管道的技能,这些技能与您的业务持续学习能力相匹配。

龙哥盟 862

Untiy之如何实现AI+MR (Pico4u 相机推流MR画面给Server做实时AI图像识别)

本文介绍了基于Pico4U企业版开发AI+MR应用的实现方案。文章详细说明了硬件准备步骤,包括购买企业版设备、申请相机权限和注册管理平台。重点讲解了Unity开发中获取摄像头画面的两种技术方案:通过Overlay直接渲染到Android Surface,或使用API获取图像数据转换为Texture。提供了完整的代码示例和权限配置说明,并揭示了底层通过JNI调用Android原生API的技术原理。该方案适用于带电操作等实习场景,可提升安全性和学习趣味性。

TxNet 1342

CAPL如何设置或修改CANoe TCP/IP协议栈的底层配置

MSS = MTU - tcpHeader - ipHeader,也就是MTU = MSS(1360) + tcpHeader(20) + ipHeader(20) = 1400,说明CAPL是可以动态设置网络底层配置参数的!然后在CAPL中设置此网卡MTU值为1400,然后创建UDP套接字,一次性发送2000个字节,在Trace窗口看看首帧报文二层Data的长度。所以我们还不能用UDP协议来验,应该用TCP协议来验,也就是在TCP三次握手时通过Tester的MSS值推导出自己的MTU值。

jasonj333 992

cube studio开源一站式云原生机器学习平台--volcano 多机分布式计算

volcano主要为我们提供index job, 也就是启动多个pod,并为每个pod提供index,role,以及其他role的访问地址。保留单机的代码,添加识别集群信息的代码(多少个worker,当前worker是第几个),添加分工(只处理归属于当前worker的任务),使用volcano这个模板,填上自己的worker数量,每个worker的镜像和启动命令就可以了。3、每个worker里面都判别一遍总共需要处理的数据,和当前worker需要处理的数据。1、单机器算力有限,核数不足。

2908

【AIGC】大模型面试高频考点07-注意力(Attention)篇

AIGC面试高频考点

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 3363

企业级MLOps实践,基于MCP平台的自动化流水线构建秘籍

掌握企业级MLOps落地难题,本文详解基于MCP平台的自动化流水线构建方法。涵盖模型开发、部署监控全流程,突出MCP MLOps工具使用优势,提升团队协作效率与交付稳定性。适用金融、制造等多行业场景,值得收藏

ProceNest的博客 1602

基于VLFM的中文指令视觉语言导航系统设计与实现

文章摘要 本文介绍了一个基于VLFM(视觉语言边界地图)的中文指令视觉语言导航系统设计与实现。该系统采用模块化架构,包含三维场景渲染、URDF机器人仿真、VLFM导航引擎、中文指令解析和PyQt图形界面五大核心模块。系统支持自定义GLB场景模型和URDF机器人模型,通过transformers和langchain实现中文自然语言指令解析,利用VLFM算法进行语义导航决策。技术实现上详细介绍了GLB模型加载器开发、URDF机器人控制、VLFM导航算法集成以及PyQt界面设计。该系统在Ubuntu环境下运行,依

AI的内部世界的博客 209

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

探索高效MLOps平台:MLOps Level 1

探索高效MLOps平台:MLOps Level 1 在数据科学领域,高效的模型部署和管理是成功的关键。现在,让我们一起深入了解一个全新的开源项目——MLOps,这是一个云中立的技术栈,旨在帮助你快速搭建起自己的MLOps平台。无论你是新手还是经验丰富的开发者,这个项目都将提供强大的工具集,助力你的机器学习工作流。 项目介绍 MLOps Level 1是一个精心设计的端到端解决方案,包含了从数据收集...

gitblog_00077的博客 454

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

LLM Agent实战:如何用Alauda MLOps快速搭建企业级AI助手(附避坑指南)

本文详细介绍了如何利用灵雀云Alauda MLOps平台快速构建企业级LLM Agent。通过分步实战,涵盖知识库创建、工具API集成、Agent配置等核心环节,并提供了AutoGPT与BabyAGI架构的选型对比及企业落地避坑指南,帮助企业将大语言模型能力安全、高效地融入具体业务场景。

delta的博客 496

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

pythonz vs 其他版本管理器:谁才是Python开发者的最佳选择?终极指南

Python作为全球最流行的编程语言之一,版本管理是每个开发者必须面对的重要课题。在众多Python版本管理工具中,pythonz以其独特的设计理念和强大的功能脱颖而出。本文将深入对比pythonz与其他主流版本管理器,帮助您找到最适合的开发工具。 ## 🚀 Python版本管理器的重要性 在Python开发中,不同项目可能需要不同的Python版本、解释器类型(如CPython、PyPy、

gitblog_01097的博客 468

cube studio开源一站式机器学习平台:kubesphere部署cube-studio平台

开源地址:https://github.com/tencentmusic/cube-studiocube studio 腾讯开源的国内最热门的一站式机器学习mlops/大模型训练平台,支持多租户,sso单点登录,支持在线镜像调试,在线ide开发,数据集管理,图文音标注和自动化标注,任务模板自定义,拖拉拽任务流,模型分布式多机多卡训练,超参搜索,模型管理,推理服务弹性伸缩,支持ml/tf/pytorch/onnx/tensorrt/llm模型0代码服务发布,以及配套资源监控和算力,存储资源管理。

2957

从零搭建MLOps平台:MLflow一站式机器学习运维方案

你还在为模型版本混乱、实验结果无法复现、部署流程繁琐而头疼吗?作为机器学习工程师或数据科学家,你是否经常面临这些痛点:训练十次模型却找不到最优参数、不同团队使用各自的工具导致协作困难、好不容易训练好的模型部署时却出现环境依赖问题?本文将带你全面了解如何利用MLflow构建端到端的MLOps平台,解决这些问题,让你的机器学习项目从实验到部署全程可控。 读完本文,你将能够: - 快速安装和配置MLf...

gitblog_00795的博客 664

| 机器学习平台(MLOps) | 平台架构设计(训练/推理/实验管理)、模型生命周期管理(数据标注→训练→部署→监控)

- **分层优化**:从“应用层(代码)→ 中间件层(缓存/消息队列)→ 数据库层 → 基础设施层(网络/服务器)”逐一排查瓶颈; - **瓶颈定位**: - 应用层:通过JProfiler/Arthas分析代码耗时、线程阻塞; - 数据库层:通过慢查询日志、执行计划分析SQL性能; - 网络层:通过Wireshark/Tcpdump分析网络延迟、丢包; - **优化优先级**:先解决“最高效”的优化点(如缓存命中率从80%提升至95%,比优化代码逻辑更显著),再处理细节优化。

[Blog][Domain] programb.blog.youkuaiyun.com 1475

全球的MLOps和ML工具概览

摘要 对于人工智能领域的任何人来说,MLOps一词是解决所有问题的一个神奇词汇。 它结合了所有与机器学习相关的任务,从管理、处理和可视化数据、运行和跟踪实验到将创建的模型投入生产,理想情况下是大规模、合规和安全的。它定义了实施ML工作以创建基于AI的应用程序和服务的过程。 我们在MLOps这个市场开展业务,但我们对还有哪些其他工具、平台和服务只有一个粗略的概念。 为了找到答案,我们对相关供应商进行了全面的搜索,一共找到了300多家! 我们决定整理我们发现的活跃项目,只列出那些专门针对机器学习任务和目标的项目

吃果冻不吐果冻皮 3876

MLOps介绍:机器学习技术债

点击上方“AI公园”,关注公众号,选择加“星标“或“置顶”作者:Vincent Tatan编译:ronghuaiyang正文共:3392 字 8 图预计阅读时间:10分钟导读为什么机器...

AI公园 3741

开源机器学习流水线(Pipeline)工具调研(MLOps)

简介 实施数据科学项目不是一件简单的任务。至少,数据分析工作流程必须定期运行,以产生最新的结果。比如,一份上周数据的报告,或者由于概念发生变化而重新训练机器学习模型。在某些情况下,这类工作流的输出需要作为API公开,例如,一个经过训练的机器学习模型,通过点击REST端点来生成预测结果。 这就需要开发实践允许工作流(也称为pipeline)是可重现、可重复,并且可以很容易地部署。近年来,涌现了大量开源工作流管理工具。由于有太多的选择,团队很难选择最适合他们需求的工具,本文回顾了13种开源工作流管理工具。 评

吃果冻不吐果冻皮 3190

机器学习新概念-MLOps简介

什么是 MLOps? 机器学习操作 (MLOps) 基于可提高工作流效率的DevOps原理和做法。例如持续集成、持续交付和持续部署。MLOps 将这些原理应用到机器学习过程,其目标是: 更快地试验和开发模型 更快地将模型部署到生产环境 质量保证 顾名思义,MLOps就是机器学习时代的DevOps。它的主要作用就是连接模型构建团队和业务,运维团队,建立起一个标准化的模型开发,部署与运维流程,使得企业组织能更好的利用机器学习的能力来促进业务增长。 举个简单的例子,几年前我们对于机器学习的印象主...

java、c++、机器学习方向King 2万+

云原生运维学习笔记:Docker 数据卷、网络管理与镜像自定义深度实践

本文深入探讨Docker数据持久化、网络管理与镜像自定义三大核心运维技术。通过数据卷(Volume)实现容器数据持久化,支持匿名卷、命名卷及宿主机目录绑定;利用--volumes-from构建数据卷容器,实现多容器间数据共享。在网络层面,掌握端口映射(-p/-P)、自定义网络及容器通信机制。最后,基于Dockerfile实现应用镜像的定制化构建,为Kubernetes等云原生平台部署奠定基础。内容涵盖实践操作与原理剖析,是进阶容器运维的关键一环。

2604_96593683的博客 442
上一篇: RustFS 实现对象存储前端直传的超详细教程!
下一篇: RustFS x Distribution Registry,构建本地镜像仓库
rustfs
博客等级 码龄1年 21粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值