簡體   English   中英

mlflow項目中有多個入口點時如何跳過入口點

[英]how to skip entry point when having multiple entry points in mlflow project

我希望能夠根據某些 arguments 或早期入口點的結果跳過我的MLProject中指定的一些入口點。

如何在不退出整個 MLflow 項目的情況下跳過入口點並繼續下一個入口點?

我的文件如下:

#MLproject
name: ...
conda_env: ...
entry_points:
  main:
    command: "python3 a.py"
  secondary:
    command: "python3 b.py"
#a.py
import sys
if __name__ == "__main__":
    print("skipping a.py.")
    sys.exit(0)
#b.py
if __name__ == "__main__":
    print("reached b.py.")

我預計這將退出a.py並繼續b.py ,但似乎sys.exit(0)殺死了一切,從mlflow run. :

INFO mlflow.projects.utils: === Created directory /var/folders/bm/dbpln1sj3c1cn4p1gnvvp8s80000gn/T/tmpz1u4wkqq for downloading remote URIs passed to arguments of type 'path' ===
INFO mlflow.projects.backend.local: === Running command 'source /Users/pme/opt/anaconda3/bin/../etc/profile.d/conda.sh && conda activate mlflow-19a070d548e136c3ce89701ba50b4a6b5f1d047b 1>&2 && python3 a.py' in run with ID '0ee84f73fc044603b3e625d8029337de' === 
skipping 'a.py'.
INFO mlflow.projects: === Run (ID '0ee84f73fc044603b3e625d8029337de') succeeded ===

這不是入口點的使用方式。 入口點是可以在項目中執行的命令,因此您必須在需要時調用它們。 無論是mlflow run命令行工具,還是mlflow.run() Python API。(它們不會自動調用)
當你運行mlflow run命令時,你還可以告訴入口點的名稱與-e一起使用,否則,它的值默認為main

那么解決方案是什么? 您可以更改命令以使用-e參數,如 文檔中所述

mlflow run . -e secondary

或者您可以將MLproject文件更改為此並更改main入口點(默認入口點)。

#MLproject
name: ...
conda_env: ...
entry_points:
  main:
    command: "python3 b.py"
  secondary:
    command: "python3 a.py"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM