潮汐模型的Sagemaker框架
sagemaker-tidymodels的Python项目详细描述
sagemaker tidymodels公司
sagemaker-tidymodels
是用于培训和
部署用R编写的机器学习模型
此框架允许您使用 tidymodels,使用与您相同的代码 本地写入。在
安装
可以使用从安装框架 PyPi:
pip install sagemaker-tidymodels
docker镜像在 dockerhub:
^{pr2}$使用
sagemaker-tidymodels
Python包提供了简单的包装器
周围
Estimator
和模型sagemaker
类。在
主要区别在于entry_point
参数,在这里可以提供
R脚本。这个R脚本应该处理原始数据,训练模型,
保存最后的配合。在
fromsagemaker_tidymodelsimportTidymodels,get_roletidymodels=Tidymodels(entry_point="tests/train.R",train_instance_type="local",role=get_role(),image_name="tmastny/sagemaker-tidymodels:latest",)s3_data="s3://sagemaker-sample-data-us-east-2/processing/census/census-income.csv"tidymodels.fit({"train":s3_data})
train.R
是一个普通的R脚本,有一些必要的添加,因此它可以
在命令行上有效运行。在
#!/usr/bin/env Rscriptlibrary(tidymodels)if (sys.nframe()==0){input_path<-file.path(Sys.getenv("SM_CHANNEL_TRAIN"),"census-income.csv")df<-read.csv(input_path,stringsAsFactors=TRUE)pipeline<-workflow()%>%add_formula(income~age)%>%add_model(logistic_reg()%>%set_engine("glm"))model<-pipeline%>%fit(data=df)output_path<-file.path(Sys.getenv("SM_MODEL_DIR"),"model.RDS")saveRDS(model,output_path)}
- 在
第一行应该是shebang
在#!/usr/bin/env Rscript
,所以 根据框架的要求,可以作为./train.R
运行。一定要 运行chmod +x train.R
使其成为可执行文件。在 - 在
所有的训练逻辑都应该用下面的
在if
来包装 声明。这似乎有点神秘,但它确保 当我们不小心部署了我们的逻辑 预测模型。在
if (sys.nframe()==0){# training logic goes here!}
- Sagemaker对输入和输出位置非常具体。这个
在可以读取的环境变量中找到输入数据路径
使用
Sys.getenv('SM_CHANNEL_TRAIN')
。同样,输出模型 路径可以用Sys.getenv('SM_MODEL_DIR')
找到。在
从那里,你可以像平常一样部署模型!在
predictor=model.deploy(initial_instance_count=1,instance_type="local")predictor.predict("28\n")
高级用法
docker容器有一些有用的附加功能。在
定制型号服务
服务于默认值的模型在docker/server/default_fn.R
中定义。
如果要自定义模型的服务方式,可以覆盖
这些默认值是通过在entry_point
脚本中定义这些函数来实现的。在
有效的选项是model_fn
,input_fn
,predict_fn
,以及
output_fn
。在我们的脚本train.R
中,默认的predict_fn
表示我们
获取类预测器,- 50000.
或{
如果我们想输出属于任一类的概率,我们
可以在train.R
中包含我们自己的predict_fn
:
# add to `train.R`predict_fn<-function(model,new_data){predict(model,new_data,type="prob")}
这也是为什么培训脚本需要由if
包装的原因
声明。在
相同的本地和云脚本
在train.R
中,您用于训练的逻辑与您所使用的完全相同
本地写入。但是,不能按原样在本地运行脚本,因为
sagemaker
定义环境变量SM_CHANNEL_TRAIN
和
SM_MODEL_DIR
(以及many
others
您可能需要使用)。在
设置一些默认值的好方法,这样脚本就可以在本地和 圣人是通过使用 r-optparse。在
例如:
library(optparse)option_list<-list(make_option(c("-i","--input"),default=Sys.getenv("SM_CHANNEL_TRAIN")),make_option(c("-o","--output"),default=Sys.getenv("SM_MODEL_DIR")))args<-parse_args(OptionParser(option_list=option_list))
这使我们可以使用args$input
和args$output
来引用输入
数据路径和输出模型路径。在本地运行时,我们可以
定义输入和输出
Rscript tests/train.R -i data/census-income.csv -o models/
它的工作原理和sagemaker
中的一样。在
- 项目
标签: