蝠鲼 — 海洋协议推出的数据科学项目

海洋协议团队打造的Jupyter Notebook沙盒

Ju Du
Ocean Protocol International
8 min readMar 26, 2019

--

阅读英文原文(作者Marcus Jones

本文介绍的是海洋协议(Ocean Protocol,以下简称Ocean)为数据科学家、数据工程师和Python开发者打造的“Manta Ray”项目(蝠鲼,以下简称Manta),旨在利用Ocean API(squid-py)来实现海洋协议平台内的数据搜索、发布和资产消费等功能。

对Jupyter Notebooks已有了解?不妨亲自动手来体验一下海洋协议的Manta项目吧?欢迎访问https://datascience.oceanprotocol.com/

概论

蝠鲼(fú fèn)的翼长可达7米!图片来自 jon hanson from london, UK — Flickr, CC BY-SA 2.0, https://commons.wikimedia.org/w/index.php?curid=665502

Manta可以带领我们毫不费力地进入海洋协议平台内,浏览互动教程和演示、并使用海洋协议开发团队所提供的最新代码模版。

Manta是一个基于JupyterHub云服务器,在连接了海洋协议的浏览器中运行JupyterLab的项目。JupyterLab是数据科学家经常使用的交互式IPython shell,在公司和机构内的生产环境中不断得以应用。

我在本文中将着重介绍Manta的基本架构,和几个利用Kubernetes集群在云服务器上模拟运行的Jupyter Notebooks(用来实现代码与Ocean平台内的区块链等模块的交互和代码执行)。

我们准备发表有关Manta 项目的一系列文章,包括:

1. 本文,主要介绍Manta的基本架构和基础模块(见Notebooks)

2. 进一步演示基于海洋协议的数据科学的工作流程:包括数据搜索、购买资产及设置访问权限、数据模型的训练以及模型在Ocean平台上的发布。

3. 更多关于Manta功能的演示,以及如何使用Ocean平台来解决数据工程问题、建立预测性/预见性的数据分析流程。

除此之外,我们还会推出一系列的悬赏计划来请你参与!

海洋协议为数据科学家打造的Jupyter云运行环境

Jupyter Notebooks的所有代码首先由Python语言编写,并使用#%%来标记和注释代码。然后我们将代码脚本用nbconvert程序包转化为Jupyter Notebook格式。最后,我们把Jupyter Notebooks上传到Notebook服务器,并存储在一个独立的存储库中(mantaray_jupyter)。

一切源于一个磁盘镜像……

首先,我们通过JupyterHub从dockerhub上的Jupyter容器中下载一个预先加载和配置了TensorFlow,pyspark和一些其他程序运行环境的基本容器。

然后,我们在此基本容器中,添加海洋协议API(应用程序编程接口)。最后,将包含了终端配置和最新版本Jupyter Notebooks 的mantaray_jupyter存储库克隆到磁盘上,就完成了全部的配置和加载。由此得到的磁盘镜像可被用于海洋协议平台上的功能和教程的演示,甚至是整合测试。海洋协议的主要API叫做Squid(乌贼),可通过Python和JavaScript进行使用(Java版本也即将推出!)。想了解更多关于Squid的信息,请阅读最近的这篇博客

1) 可组合的磁盘镜像

从镜像到云主机(也称实例)

接下来,已完成配置的磁盘镜像需要通过一个云主机来启动。根据实际情况,我们可以选择用于基本测试的单核低内存的云主机,或者选择适合深度学习模型训练的GPU和多核的云主机。在云主机启动后,Jupyter Notebooks将自动在浏览器中运行,用户可根据需要,自行改动或下载。

2)可组合的虚拟主机

从镜像到海洋协议

注意哦,你的Jupyter Notebook并非是独自一人在海上飘着。实际上,在海洋协议的平台里,配置了智能交互终端的其他核心组件也一同在云服务器中运行着。

海洋协议平台里的核心组件是区块链的服务节点,用以运行以太坊虚拟主机和我们的智能合约。这也正是我们平台“服务执行协议(SEA)”的业务逻辑。

JupyterLab 的Python运行环境

包含mantaray_jupyter 存储库文件的JupyterLab页面

页面上完成账号登录和身份验证后,JupyterHub会自动运行Jupyter Notebook个人用户的服务器。在JupyterLab 页面左侧的文件夹结构面板里,点击并进入mantaray_jupyter文件夹,然后从“00Welcome”开始,依次运行文件夹里的Jupyter Notebooks。

JupyterLab的运行基于类似于虚拟环境的内核,这里指的是用于执行代码单元格的Python(或其他语言)版本。本项目安装的是带有Ocean API的Python 3基本内核 。

连接了海洋协议平台的JupyterLab代码单元格

Jupyter Notebook由可自由排序的“代码单元格”组成。单元格中的代码被执行后,结果会显示在每个单元格的下方。Notebook里有两种主要的单元格:用于运行代码的单元格和用于注解代码的markdown笔记单元格。

自己动手试试吧!

我们希望借本文对数据服务流程的描述,向您阐明一些实现数据科学融合的基本理念。如果您已经摩拳擦掌了的话,现在就使用GitHub账户来潜入datascience.oceanprotocol.com 的Manta Ray吧。

本文撰写之时,正值Manta内测版本的发布。所以,如果您在运行Manta时发现了程序漏洞,请在 Gitter 聊天室中告诉我们或者在 GitHub 上向我们提问。另外,请注意,该程序目前仅用于演示,所有的存储文件都将被定期(或不定期)删除,所以请不要在Notebook云主机中保存任何重要信息!

敬请期待!

一大波关于数据科学的Jupyter Notebooks,以及我们博客https://blog.oceanprotocol.com/中描述的编程技术正在赶来发表的路上!

感谢 ……

本项目的灵感来自于Netflix的一系列博客,我们也希望在使用Jupyter Notebooks进行集成测试和项目上线时能获得更多的启发!

当然,还要感谢构建基础组件及API的Ocean开发团队,还有管理k8s集群的DevOps 们(开发和运维人员)!

那么,您已经跃跃欲试了吗?现在就访问Dev-Ocean来看看我们在做什么,并登陆Gitter聊天室开始向我们提问吧。

您还可以通过 Twitter, Telegram, LinkedIn, Reddit, GitHub & Newsletter来关注海洋协议,了解项目进展,获得最新资讯 。

衷心感谢 Sebastian GerskeEmily HirschbergDon Gossen

*This is a community-translated blog. Ocean Protocol cannot be held responsible for any translated content. For an official English-language version of this blog, please visit Project Manta Ray.

--

--