【百度云搜索,搜各种资料:http://www.81ad.cn】
SQLflow:基于python开发的分布式机器学习平台:https://github.com/lqkweb/sqlflow
每个尝试机器学习开发的人都知道这很复杂。除了软件开发中常见的问题之外,机器学习(ML)开发带来了多种新挑战。在Databricks,我们与数百家使用ML的公司合作,我们一再听到同样的担忧:
1.有无数的工具。
数百种开源工具涵盖了ML生命周期的每个阶段,从数据准备到模型训练。然而,与团队为每个阶段选择一个工具的传统软件开发不同,在ML中,您通常需要尝试每种可用的工具(例如算法)以查看它是否改进了结果。ML开发人员因此需要使用和生产数十种库。
2.很难跟踪实验。
机器学习算法有几十个可配置参数,无论您是单独工作还是团队工作,都很难跟踪哪些参数,代码和数据进入每个实验以生成模型。
3.很难重现结果。
如果没有详细的跟踪,团队往往难以获得相同的代码再次工作。无论您是数据科学家将您的培训代码传递给工程师以用于生产,还是回到以前的工作来调试问题,ML工作流程的复制步骤都至关重要。
4.部署ML很困难。
由于需要运行的部署工具和环境过多(例如REST服务,批处理推理或移动应用程序),因此将模型迁移到生产可能具有挑战性。没有标准的方法将模型从任何库移动到这些工具中,从而为每个新部署创建新的风险。
由于这些挑战,显然ML开发必须发展成为与传统软件开发一样强大,可预测和广泛推广的产品。为此,许多组织已经开始构建内部机器学习平台来管理ML生命周期。例如,Facebook,Google和Uber已经建立了FBLearner Flow,TFX和Michelangelo来管理数据准备,模型训练和部署。但是,即使这些内部平台也是有限的:典型的ML平台仅支持一小组内置算法或单个ML库,并且它们与每个公司的基础设施相关联。用户无法轻松利用新的ML库,或与更广泛的社区共享他们的工作。
在Databricks,我们相信应该有一个更好的方式来管理ML生命周期,所以我们很高兴地宣布MLflow:一个开源的机器学习平台。
MLflow:开放式机器学习平台
MLflow的灵感来源于现有的ML平台,但其设计目的有两个方面:
1.开放接口:
MLflow被设计用于任何ML库,算法,部署工具或语言。它基于REST API和简单的数据格式(例如,可将模型视为lambda函数)构建,可以使用各种工具,而不是仅提供一小组内置功能。这也很容易将MLflow添加到现有的ML代码中,以便您立即受益,并使用组织中其他人可以运行的任何ML库来共享代码。
2.开源:
我们将MLflow作为一个开源项目发布,供用户和库开发人员扩展。此外,如果您希望开源代码,MLflow的开放格式可以轻松地跨组织共享工作流步骤和模型。
Mlflow目前仍处于初始版,但我们相信它已经提供了一个有用的框架来处理ML代码,我们很乐意听到您的反馈。在这篇文章中,我们将详细介绍MLflow并解释其组件。
MLflow Alpha发布组件
MLflow的第一个alpha版本有三个组件:
MLflow跟踪支持记录和查询实验周围的数据,如评估指标和参数。MLflow项目提供了可重复运行的简单包装格式。最后,MLflow模型提供了管理和部署模型的工具。
MLflow跟踪
MLflow跟踪是一个API和用户界面,用于在运行机器学习代码时记录参数,代码版本,指标和输出文件,以便以后可视化它们。通过几行简单的代码,您可以跟踪参数,指标和工件:
import mlflow
# Log parameters (key-value pairs)
mlflow.log_parameter("num_dimensions", 8)
mlflow.log_parameter("regularization", 0.1)
# Log a metric; metrics can be updated throughout the run
mlflow.log_metric("accuracy", 0.1)
...
mlflow.log_metric("accuracy", 0.45)
# Log artifacts (output files)
mlflow.log_atrifact("roc.png")
mlflow.log_artifact("model.pkl")
您可以在任何环境(例如,独立脚本或笔记本)中使用MLflow Tracking将结果记录到本地文件或服务器,然后比较多次运行。使用Web UI,您可以查看和比较多次运行的输出。团队也可以使用这些工具来比较不同用户的结果。
MLflow项目
MLflow项目提供了打包可重用数据科学代码的标准格式。每个项目都只是一个包含代码或Git存储库的目录,并使用一个描述符文件来指定它的依赖关系以及如何运行代码。MLflow项目由一个名为MLproject的简单YAML文件定义。
name: My Project
conda_env: conda.yaml
entry_points:
main:
parameters:
data_file: path
regularization: {type: float, default: 0.1}
command: "python train.py -r {regularization} {data_file}"
validate:
parameters:
data_file: path
command: "python validate.py {data_file}"
项目可以通过Conda环境指定它们的依赖关系。一个项目也可能有多个入口点用于调用带有命名参数的运行。您可以使用mlflow run命令行工具运行项目,无论是从本地文件还是从Git存储库中运行:
mlflow run example/project -P num_dimensions=5
mlflow run git@github.com:databricks/mlflow-example.git -P num_dimensions=5
MLflow将自动为项目设置合适的环境并运行它。另外,如果你在项目中使用MLflow Tracking API,MLflow将记住执行的项目版本(即Git commit)和任何参数。然后您可以轻松地重新运行完全相同的代码。
无论是在公司还是在开源社区,项目格式都可以轻松共享可复制的数据科学代码。结合MLflow跟踪,MLflow项目为重现性,可扩展性和实验提供了很好的工具。
MLflow模型
MLflow模型是一种用多种格式打包机器学习模型的惯例,称为“风味”。MLflow提供了多种工具来帮助您部署不同风格的模型。每个MLflow模型都保存为一个包含任意文件和MLmodel描述符文件的目录,该文件列出了可以使用的口味。
time_created: 2018-02-21T13:21:34.12
flavors:
sklearn:
sklearn_version: 0.19.1
pickled_model: model.pkl
python_function:
loader_module: mlflow.sklearn
pickled_model: model.pkl