潮汐模型的Sagemaker框架

sagemaker-tidymodels的Python项目详细描述


sagemaker tidymodels公司

sagemaker-tidymodels是用于培训和 部署用R编写的机器学习模型

此框架允许您使用 tidymodels,使用与您相同的代码 本地写入。在

安装

可以使用从安装框架 PyPi

pip install sagemaker-tidymodels

docker镜像在 dockerhub

^{pr2}$

使用

sagemaker-tidymodelsPython包提供了简单的包装器 周围 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)}
  1. 第一行应该是shebang#!/usr/bin/env Rscript,所以 根据框架的要求,可以作为./train.R运行。一定要 运行chmod +x train.R使其成为可执行文件。在

  2. 所有的训练逻辑都应该用下面的if来包装 声明。这似乎有点神秘,但它确保 当我们不小心部署了我们的逻辑 预测模型。在

if (sys.nframe()==0){# training logic goes here!}
  1. 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_fninput_fnpredict_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_TRAINSM_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$inputargs$output来引用输入 数据路径和输出模型路径。在本地运行时,我们可以 定义输入和输出

Rscript tests/train.R -i data/census-income.csv -o models/

它的工作原理和sagemaker中的一样。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java爬虫获取外部网站搜索结果   java Bluestack未连接到eclipse   java如何从ConstraintViolationException Hibernamte获取数据库字段名   HttpResponse HttpResponse=httpClient引发java运行时错误。执行(httpPost);   Jama中矩阵的java点积和叉积   java有什么方法可以唯一地识别可扩展设备吗?   java我需要用*来写我的名字,但我不断遇到一个错误,我对编码很陌生   java变量是在内部类中访问的。需要被宣布为最终决定。但我不想宣布最终结果   java如何缩短base64图像字符串,Android?   JavaSpringMVC:计划方法不自动触发   图形学习Java 2D API的好资源是什么?   如何在java中对方法进行排队   java JavaFX多行   java Selenium无法在[链接]上找到基于CSS元素的密码字段元素http://www.cartasi.it/gtwpages/index.jsp   Java中的equals()和hashCode()契约   软删除情况下的java Hibernate二级缓存   java为什么这段代码要两次调用这些方法?