MLRun项目实战:函数运行、构建与部署全指南
概述
在MLRun项目中,函数是核心执行单元。本文将深入讲解如何在MLRun项目中运行、构建和部署函数,涵盖从基础操作到高级配置的全流程。通过本指南,您将掌握MLRun函数管理的核心技能。
函数运行机制
run_function方法详解
run_function
是MLRun中执行批处理任务的核心方法,支持本地和远程运行模式。其核心功能包括:
- 任务执行控制:可同步或异步执行任务
- 参数传递:支持params参数和inputs数据输入
- 结果追踪:返回RunObject对象用于追踪任务状态和结果
典型使用场景示例:
# 创建项目并设置函数
project = mlrun.new_project("demo", "./demo")
project.set_function("preprocess.py", "prep", image="mlrun/mlrun")
# 运行函数并传递参数
run_result = project.run_function(
"prep",
params={"threshold": 0.8},
inputs={"raw_data": "v3io:///data/raw.csv"}
)
高级运行技巧
- 多处理器支持:单个函数可包含多个处理器方法,运行时指定目标处理器
- 任务模板:使用
new_task
创建复杂任务配置 - 本地调试:设置
local=True
可在本地环境调试运行
函数构建实践
build_function深度解析
build_function
用于构建包含函数依赖的容器镜像,关键特性包括:
- 依赖管理:自动处理Python依赖
- 镜像定制:支持自定义基础镜像和构建命令
- 环境配置:可配置构建环境变量和凭证
构建示例:
# 构建包含特定依赖的函数镜像
project.build_function(
"trainer",
requirements=["scikit-learn==1.0.2", "pandas>=1.3.0"],
commands=["apt-get install -y libgomp1"]
)
实时函数部署
deploy_function实战
deploy_function
专为实时服务设计,支持Nuclio和Serving运行时:
# 部署实时服务函数
serving_fn = mlrun.new_function("price-predictor", kind="serving")
project.deploy_function(
serving_fn,
models=[{
"key": "house-price",
"model_path": train.outputs["model"]
}]
)
# 调用部署的服务
resp = serving_fn.invoke("/predict", body={"features": [...]})
部署注意事项:
- 模型集成:支持多模型同时部署
- 环境隔离:可配置独立环境变量
- 模拟测试:使用
mock=True
进行服务模拟
镜像管理策略
默认镜像配置
项目级默认镜像简化函数管理:
# 设置项目默认镜像
project.set_default_image("registry.mycorp.com/ml-projects/base:v1.2")
# 后续函数自动使用默认镜像
project.set_function("analyze.py", "analyzer") # 使用base:v1.2
镜像构建配置
通过build_config
定义镜像构建规范:
# 配置高级构建参数
project.build_config(
image=".custom-image",
base_image="python:3.9-slim",
commands=[
"apt-get update",
"apt-get install -y libgomp1"
],
requirements=["numpy", "scipy"]
)
最佳实践建议
- 环境一致性:为生产环境固定镜像版本
- 构建缓存:合理使用.with_commands()避免重复构建
- 资源控制:使用.with_limits()限制函数资源
- 版本追踪:为重要函数添加标签和注释
通过掌握这些核心概念和技巧,您将能够高效地利用MLRun管理机器学习工作流中的各种函数任务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考