mlrun.code_to_function 和 mlrun.new_project 有什么区别

what is the difference between mlrun.code_to_function and mlrun.new_project

mlrun.code_to_function 和 mlrun.new_project 有什么区别? 例如,我们可以使用 code_to_function

部署一个函数
a_fn = mlrun.code_to_function(name='my_function', 
                              handler='handler', 
                              kind='nuclio', 
                              image='mlrun/mlrun')
a_fn.deploy()

或者我们可以使用 mlrun.project.set_function

部署一个函数
project = mlrun.new_project(project_name_base,
                            context=project_path,                           
                            user_project=True)                                                    
fn = project.set_function("my_function.ipynb", 
                           name='my_function')

在哪种情况下我应该使用 code_to_function 或 set_function?

MLRun 的核心概念之一是用一段代码创建无服务器函数。您可以指定 Python 文件、入口点函数、Docker 图像、K8s 资源等。 code_to_function 就是这样完成的。有关详细信息,请参阅 docs 中的此页面。

# file.py
def handler(context):
    context.logger.info("Hello World")

# deploy.py
from mlrun import code_to_function, new_project

project = new_project(name="my-project")

fn = code_to_function(
    name="my-function",
    project="my-project",
    filename="file.py",
    kind="job",
    handler="handler",
    image="mlrun/mlrun"
)
fn.run()

您可以自己创建和 运行 这些函数,或者使用 KubeFlow 之类的东西来编排具有多个函数的管道。 set_project 是该工作流程的一部分。您可以使用通过 code_to_function 创建的函数或仅在 set_project 中指定一些参数。然后,您将能够将此功能用作更大的 KubeFlow 管道的一部分。有关详细信息,请参阅 docs 中的此页面。

project.set_function(fn)

project.set_function(
    name="my-function",
    func="file.py",
    kind="job",
    image="mlrun/mlrun"
)