该库是 TensorFlow 在 Spark 上的实现,旨在 Spark 上使用 TensorFlow 提供一个简单的、易于理解的接口。借助 SparkFlow,开发者可以轻松地将深度学习模型与 ML Spark Pipeline 相集成。SparkFlow 使用参数服务器以分布式方式训练 Tensorflow 网络,通过 API,用户可以指定训练风格,无论是 Hogwild 还是异步锁定。
虽然有很多的库都能在 Apache Spark 上实现 TensorFlow,但 SparkFlow 的目标是使用 ML Pipelines,为训练 Tensorflow 图提供一个简单的界面,并为快速开发提供基本抽象。关于训练,SparkFlow 使用一个参数服务器,它位于驱动程序上并允许异步培训。此工具在训练大数据时提供更快的训练时间。
Github:
https://github.com/lifeomic/sparkflow
通过 pip 安装:pip install sparkflow
安装需求:Apache Spark 版本 >= 2.0,同时安装好 TensorFlow
简单的 MNIST 深度学习例子:
from sparkflow.graph_utils import build_graph
from sparkflow.tensorflow_async import SparkAsyncDL
import tensorflow as tf
from pyspark.ml.feature import VectorAssembler, OneHotEncoder
from pyspark.ml.pipeline import Pipeline
#simple tensorflow network
def small_model():
x = tf.placeholder(tf.float32, shape=[None, 784], name='x')
y = tf.placeholder(tf.float32, shape=[None, 10], name='y')
layer1 = tf.layers.dense(x, 256, activation=tf.nn.relu)
layer2 = tf.layers.dense(layer1, 256, activation=tf.nn.relu)
out = tf.layers.dense(layer2, 10)
z = tf.argmax(out, 1, name='out')
loss = tf.losses.softmax_cross_entropy(y, out)
return loss
df = spark.read.option("inferSchema", "true").csv('mnist_train.csv')
mg = build_graph(small_model)
#Assemble and one hot encode
va = VectorAssembler(inputCols=df.columns[1:785], outputCol='features')
encoded = OneHotEncoder(inputCol='_c0', outputCol='labels', dropLast=False)
spark_model = SparkAsyncDL(
inputCol='features',
tensorflowGraph=mg,
tfInput='x:0',
tfLabel='y:0',
tfOutput='out:0',
tfLearningRate=.001,
iters=1,
predictionCol='predicted',
labelCol='labels',
verbose=1
)
p = Pipeline(stages=[va, encoded, spark_model]).fit(df)
p.write().overwrite().save("location")
4 月 AI 求职季
8 大明星企业
10 场分享盛宴
20 小时独门秘籍
4.10-4.19,我们准时相约!
新人福利
关注 AI 研习社(okweiwu),回复 1 领取
【超过 1000G 神经网络 / AI / 大数据资料】
最经典的 SVM 算法在 Spark 上实现,这里有一份详尽的开发教程(含代码)
▼▼▼