如何用Layer AI建立、训练、跟踪和分享你的ML模型

486 阅读4分钟

该层是一个协作式机器学习平台,允许用户创建、训练、跟踪和分享机器学习模型。它通过语义版本、完整的人工制品记录和动态报告实现协作,同时协助用户创建生产级的机器学习管道,实现本地到云的无缝过渡。这篇文章的重点是用Layer AI平台构建、训练和跟踪机器学习模型。以下是本文将涉及的主题。

目录

  1. 安装Layer
  2. 连接到Layer API
  3. 构建模型
  4. 将模型注册到Layer
  5. 远程训练

在这篇文章中,我们将在一个与2000年至2019年被Spotify列入前2000名的音乐有关的数据集上建立一个回归模型。

安装Layer

本文使用的是Colab笔记本,所以对于安装Layer来说,其语法会像下面这样。

!pip install layer

你是否在寻找数据科学中使用的Python库的完整库。查看这里.

连接到Layer API

一旦在Layer AI的网页上完成了注册,就可以创建一个项目,然后将笔记本连接到Layer上。

import layer
layer.login()

印度分析杂志

需要有连接笔记本和API的钥匙,为此只需点击输出中Layer给出的点击,并将代码复制到剪贴板上,然后粘贴到输出门户中。

一旦连接到API,通过使用以下代码启动该项目

layer.init("experiment-1")

印度分析杂志

印度分析》杂志

该层将提供一个启动项目的链接,当前会话的所有活动都将记录在这里。

构建模型

构建一个回归模型,用于预测基于不同特征的歌曲的受欢迎程度。对于这篇文章,使用 XG boost算法进行预测

导入必要的库

import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt

读取和预处理数据

data=pd.read_csv('/content/drive/MyDrive/Datasets/songs_normalize.csv')
data[:5]

分析印度杂志

使用的数据与音乐行业有关。它是关于根据Spotify的2000年到2019年的前2000首歌曲。目标列计算了歌曲的受欢迎程度。下面是对特征的详细描述。

对分类变量进行编码,将数据处理为训练集。

encoder=LabelEncoder()
data['explicit_enc']=encoder.fit_transform(data['explicit'])
X=data.drop(['artist', 'song', 'genre', 'popularity','explicit'],axis=1)
y=data['popularity']

由于有与测量有关的特征,而测量有不同的单位来衡量。因此,我需要将数据转换为标准形式。为此目的,使用sklearn库中的标准缩放器。

std_scale=StandardScaler()
X_scaler=std_scale.fit_transform(X)
X_scaled = pd.DataFrame(X_scaler, columns = X.columns)
X_scaled.head()

印度分析杂志

将数据分成测试集和训练集,分别使用30:70的标准划分。

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.30, random_state=42)

训练模型

import xgboost
from sklearn.metrics import mean_squared_error,r2_score
xgb_model = xgboost.XGBRegressor()
xgb_model.fit(X_train, y_train)    
predictions = xgb_model.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test, predictions))
r_score = r2_score(y_test,predictions)
print("Root mean squared error = ",np.round(rmse,3))
print("R2 score = ",np.round(r_score,3))

印度分析》杂志

将模型注册到Layer

简单地将装饰器"@model "添加到你的训练函数中。返回的训练模型将被注册到你的Layer项目。为了允许实验跟踪,用 "layer.log "代替 "print"。

@model("experiment_model")
def train_model():
  xgb_model = xgboost.XGBRegressor()
  xgb_model.fit(X_train, y_train)    
  predictions = xgb_model.predict(X_test)
  
  table = pd.DataFrame(zip(predictions,y_test),columns=['Predicted Popularity', "Actual Popularity"])
 
  rmse = np.sqrt(mean_squared_error(y_test, predictions))
  r_score = r2_score(y_test,predictions)
  
  plt.figure(figsize=(10,6))
  reg_plot=sns.regplot(x=predictions, y=y_test).figure
  plt.xlabel("Predicted popularity")
  plt.ylabel("Actual popularity")
  
  layer.log({"Root mean squared error": rmse})
  layer.log({"R2 score":r_score})
  layer.log({"Regression plot":reg_plot})
  layer.log({"Predictions vs Actual":table[:50]})
  
  return xgb_model
 
xgb_model = train_model()

印度分析杂志

装饰器"@model "将被用来提供模型的名称,以便它可以被保存,并可以在另一个项目中共享或重复使用。有必要在一个函数中提供与模型相关的所有信息。完成后,将生成一个链接,所有的模型版本和其他细节的跟踪都将被存储。人们可以通过在连接到笔记本的项目下的模型部分进行手动访问同一页面。

印度分析杂志

通过使用 "log()",所有的数据都存储在API服务器上,可以随时通过访问项目下的模型部分进行访问。

远程培训

层是一个复杂的元数据存储库,可以保存你的模型、数据集和流程。机器学习管道可以在Layer上注册和执行,其方式与通过笔记本注册的方式相同。这在以下情况下特别有利。

  • 训练数据太大,本地机器无法处理。
  • 该模型需要专门的红外线,如高端GPU,而本地机器上没有。

与其直接执行训练函数,不如使用 "layer.run() "来把它交给Layer。该层将在Layer infra上挑出并执行该函数。

layer.run([train_model])

印度分析杂志

印度分析杂志

结论

Layer是一个复杂的元数据存储库,你可以在这里保存你的模型、数据集和流程。通过这篇文章,我们已经了解了用Layer AI平台构建、训练和注册一个ML模型的情况。

参考资料

The postBuild, train, track and share your ML models with Layer AIappeared first onAnalytics India Magazine.