如何修改MLflow artifact store的子目录存储路径
MLflow artifact存储路径自定义问题解答
你提到的路径中3/是MLflow自动生成的实验ID,属于默认存储路径的固定组成部分,原生不支持直接修改这套默认的根路径生成规则,但可以通过两种官方支持的方案实现自定义路径的需求:
- 方案1:创建实验时指定自定义artifact根路径
创建实验时通过mlflow.create_experiment()的artifact_location参数直接定义整个实验的artifact存储根目录,就可以替代默认生成的数字ID根路径,示例代码如下:
import mlflow from datetime import datetime experiment_name = "特征重要性分析实验" date_str = datetime.now().strftime("%Y%m%d") custom_root_path = f"s3://mlflow/{date_str}/{experiment_name}" # 创建实验时指定自定义根存储路径 experiment_id = mlflow.create_experiment( name=experiment_name, artifact_location=custom_root_path )
该实验下所有运行产生的artifact都会存储到你指定的自定义路径下,不会再生成数字ID的根目录。
- 方案2:上传artifact时指定自定义子路径
如果不需要修改整个实验的根路径,也可以在上传单个文件时通过artifact_path参数添加自定义前缀,示例代码如下:
with mlflow.start_run(experiment_id="3"): # 上传时指定自定义子目录,会拼接在默认artifact路径之后 mlflow.log_artifact( local_path="本地路径/feature_importance_split.json", artifact_path=f"{datetime.now().strftime('%Y%m%d')}/特征重要性实验" )
上传后文件的最终S3路径为:s3://mlflow/3/1353808bf7324824b7343658882b1e45/artifacts/20240520/特征重要性实验/feature_importance_split.json,也能满足按自定义维度分类存储的需求。
注意:默认生成的数字ID路径是MLflow内部关联实验元数据的核心标识,不要直接修改S3上已存在的数字目录名称,否则会导致MLflow界面和API无法正常读取对应实验的artifact数据。
内容的提问来源于stack exchange,提问作者dyao
相关产品推荐
相关产品推荐

