在Spark 上實現 TensorFlow 的庫——Sparkflow
該庫是 TensorFlow 在 Spark 上的實現,旨在 Spark 上使用 TensorFlow 提供一個簡單的、易於理解的介面。藉助 SparkFlow,開發者可以輕鬆地將深度學習模型與 ML Spark Pipeline 相集成。SparkFlow 使用參數伺服器以分散式方式訓練 Tensorflow 網路,通過 API,用戶可以指定訓練風格,無論是 Hogwild 還是非同步鎖定。
為什麼要使用 SparkFlow
雖然有很多的庫都能在 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 tensorflowastf
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)
returnloss
df = spark.read.option("inferSchema","true").csv("mnist_train.csv")
mg = build_graph(small_model)
#Assembleandone 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 上實現,這裡有一份詳盡的開發教程(含代碼)
※AI 開發持續火熱,今日頭條、華為諾亞方舟實驗室大量 AI 崗位虛左以待!
※數據科學、機器學習、人工智慧,都有哪些區別?
TAG:AI研習社 |