笔记本
笔记本对编写代码、使用深度学习库和进行实验很有用。有几个关键特性与skil直接相关,允许你保存模型、评估结果等。笔记本是工作间的专有产品,与实验概念有直接关系。
Apache Zeppelin是笔记本的后端,主要由spark解释器(Spark Interpreter)提供支持。
阅读以下内容了解有关Zeppelin和Spark的更多信息:
创建笔记本
创建并打开“工作间”和“实验”后,将自动生成一个笔记本并将其附加到该实验上。没有实验,笔记本就不能独立存在。要了解更多关于实验的信息,请参见进行实验。
可以在“实验视图”屏幕的“笔记本”选项卡中访问和编辑笔记本。此选项卡是Zeppelin集成笔记本的框架。
基本概念
笔记本是动态解释的,并不像编译的代码那样工作。每个笔记本都由代码单元组成,每个新单元默认使用Spark解释器。
在单元格中编写了一个小程序后,键入shift+enter来评估该单元格并运行代码。代码将提交给解释器,输出将直接显示在下面。当解释器运行时,单元格上方将出现一个进度条。
如果出现错误,单元格的状态将从正在RUNNING
更改为ERROR
,错误将直接显示在代码下方。
如果要动态加载依赖项,可以在笔记本顶部放置%dep解释器块。有关更多信息,请参见ApacheZeppelin网站上的“动态依赖加载”。
SKILContext
在笔记本中提供专门的类,允许你在程序中直接使用skil。SkilContext类允许你直接将模型添加到存储中,查看当前实验ID,并为实验执行其他功能。
为了使用skil上下文,必须正确实例化类:
%pyspark
import skil
skilContext = skil.SkilContext(sc)
client = skilContext.client
查看skil上下文中所有可用功能的源。下面是对实验有用的函数的常见列表:
函数 | 描述 |
experimentId |
获取此笔记本的实验ID。 |
saveModel |
将权重保存到Skil的存储机制。 |
addModelToExperiment |
将模型添加到此笔记本的实验存储机制中。 |
addEvaluationToModel |
将评估数据保存到模型中。对从维持测试集保存结果有用。 |
batchInference |
使用modelId在execResource上启动本地Spark批量推理作业,使用KeyedDatasetProvider类提供数据并将结果存储在outputPath中。 |
renderBufferedImage |
将BufferedImage递交到<img>标记。 |
可用的编程语言
如果要更改默认情况下使用的语言或解释器,请在键入代码之前在单元格顶部使用以下绑定之一:
绑定 | 解释器 | 语言 |
%spark | Spark解释器 | Scala |
%pyspark | Spark解释器 | Python |
%sql | Spark解释器 | SQL |
默认情况下使用%spark绑定。你可以在笔记本设置中更改此设置,方法是单击右上角的齿轮图标并将首选的解释程序移到列表顶部。完成后请记住单击“保存”。
调度笔记本
如果你的工作流程需要定期更新,例如在线学习,则可以在笔记本中启用计划。这可能涉及到在预定的笔记本中使用DataVec从Oracle数据库中获取数据并将其以numpy格式保存到磁盘。
创建笔记本并对其进行测试以确认所有单元格正确运行后,可以使用工具栏中的“计时器”图标启用计划:
Cron 表达式用于定义执行间隔。例如:
表达式 | 描述 |
0 0/5 * * * ? |
每五分钟 |
0 0 0/6 * * ? |
每6小时 |
0 0 0 * * ? |
每天 |
在大多数情况下,以管理员用户身份运行笔记本就足够了。如果你的笔记本运行间隔超过6小时,我们建议你在每次执行时重新启动解释器。重新启动解释器时,请记住正确地重新加载任何动态依赖项。