如何用 mlflow migrate-filestore 把 MLflow 文件存储(mlruns)迁移到 SQLite 数据库
如何用 mlflow migrate-filestore 把 MLflow 文件存储mlruns迁移到 SQLite 数据库【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow如果你的 MLflow 元数据一直存放在文件后端./mlruns目录现在想把它们迁移到数据库后端MLflow 内置了mlflow migrate-filestore迁移命令来完成这件事。文件存储后端目前处于维护模式、不再获得功能更新MLflow 建议通过这条迁移路径把已有数据无损地转入数据库。这篇文章给出从执行迁移、启动服务到验证结果的完整操作路径。前提条件需要安装 MLflow 3.10 或更高版本。用以下命令升级pip install mlflow3.10如果正在运行 MLflow tracking server迁移前必须先停掉它。执行迁移命令mlflow migrate-filestore --source /path/to/mlruns --target sqlite:///path/to/mlflow.db两个参数都需要替换为你自己的值--source包含mlruns/FileStore 数据的根目录。/path/to/mlruns替换为你的mlruns目录实际路径例如fs2db/README.md中给出的./mlruns。--target目标 SQLite URI必须以sqlite:///开头例如sqlite:///mlflow.db。URI 中数据库文件的父目录必须已经存在否则命令会直接报Parent directory does not exist错误。此外还有一个可选参数--progress/--no-progress默认开启迁移过程中按实验输出进度信息。命令会读取指定目录中的全部数据并写入指定的 SQLite 数据库。迁移对已迁移的数据是原子的如果过程中出现任何错误所有已插入的行都会回滚、不提交任何迁移数据因此你可以在修复问题后安全地重新执行该命令。需要注意两点限制见 migrate-from-file-store.mdx目标数据库必须为空。工具拒绝写入已包含数据的数据库以防冲突。如果目标文件已经存在会提示是否覆盖见 CLI 实现。只支持 SQLite 作为目标。原因是 FileStore 会生成超出 PostgreSQL 和 MySQL 32 位整数上限的大型实验 ID而 SQLite 可以原生处理这些 ID。迁移了哪些数据工具会迁移文件后端中的全部元数据类别实体Experiments实验、实验 tagsRunsrun、params、metrics、latest metrics、tagsDatasets数据集、inputs、input tagsRun I/O模型输入run → model、模型输出run → modelTracestrace 信息、trace tags、trace 请求元数据Assessments评估feedback、expectationsLogged Models日志模型及其 tagsModel Registry注册模型、模型版本、tags、别名Prompts提示词以注册模型和模型版本形式存储迁移是无损的实验、run、trace、model 等所有 ID 原样保留creation_time、start_time、end_time、last_update_time等时间戳保留原有的毫秒精度.trash目录中已删除的实验和 run 也会带着deleted生命周期阶段一并迁移artifact URI 保持不变。不会迁移的内容Artifacts模型文件、图片等留在原位置不动数据库里存储的 artifact URI 仍指向原有文件。Trace spans以 artifact 文件形式存储不进入数据库。用新数据库启动服务并验证迁移完成后显式指定新数据库启动 tracking servermlflow server --backend-store-uri sqlite:///path/to/mlflow.db这里要显式指定--backend-store-uri是有原因的如果没有显式设置tracking server 在./mlruns中检测到已有文件后端实验数据时会优先使用./mlruns否则回退到sqlite:///mlflow.db。依赖这种默认行为容易让服务继续读旧的文件存储因此迁移后应始终显式指向新数据库。启动后打开 MLflow UI确认你的实验、runs 和模型都在即表示迁移成功。边界说明与相关路径和mlflow-export-import的区别后者是另一个独立工具用于在两个运行中的 MLflow server 之间复制对象runs、实验、注册模型等。它不保留原始 ID 和时间戳且要求源和目标 server 都在运行。如果你要保留 ID 和时间戳、从文件存储迁到数据库用migrate-filestore而不是mlflow-export-import。确有必要继续用文件系统后端时的逃生口在极少数无法迁移的场景例如浏览从无法运行数据库的 HPC 集群同步过来的只读mlruns数据或用rsync在机器间共享目录快照可以在启动 server 或运行客户端代码之前设置环境变量来关闭该异常export MLFLOW_ALLOW_FILE_STOREtrue mlflow server --backend-store-uri ./mlruns这个选项仅用于确实受约束的工作流正常情况下仍应使用上面的迁移工具。源码入口可参考 迁移命令 CLI 定义 与 fs2db/README.md。如果遇到 PostgreSQL/MySQL 支持相关的问题或想反馈文档指引到 MLflow 的 GitHub issue #18534详见 migrate-from-file-store.mdx 的 Feedback 一节。【免费下载链接】mlflowThe open source AI engineering platform for agents, LLMs, and ML models. MLflow enables teams of all sizes to debug, evaluate, monitor, and optimize production-quality AI applications while controlling costs and managing access to models and data.项目地址: https://gitcode.com/GitHub_Trending/ml/mlflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考