tencent cloud

文档反馈

TensorFlowOnSpark 简介

最后更新时间:2022-04-18 15:28:42

    TensorFlowOnSpark 为 Apache Hadoop 和 Apache Spark 集群提供了可扩展的深度学习,TensorFlowOnSpark 支持所有类型的 TensorFlow 程序,可以实现异步/同步的训练和推理,同时也支持模型并行性和数据的并行处理。详情可查阅 TensorFlowOnSpark 官网

    TensorFlowOnSpark 架构图


    TensorFlowOnSpark 支持 TensorFlow 进程(计算节点和参数服务节点)之间的直接张量通信。过程到过程的直接通信机制使 TensorFlowOnSpark 程序能够在增加的机器上很轻松的进行扩展。TensorFlowOnSpark 不涉及张量通信中的 Spark 驱动程序,因此实现了与独立 TensorFlow 集群类似的可扩展性。

    安装 TensorFlowOnSpark

    1. 进入 EMR 购买页,选择产品 EMR-2.3.0 版本及以上版本。

    2. 在【可选组件】列表中,勾选 tensorflowonspark 1.4.4 组件。

    3. tensorflowonspark 默认安装在 /usr/local/service/tensorflowonspark 目录下。

      注意:

      tensorflowonspark 依赖的组件包含 hive 和 spark,在 tensorflowonspark 的同时也会安装 hive 和 spark 组件。

      使用示例

      在安装好的 tensorflowonspark 组件目录下,已经有完整的 example 代码,可以按如下操作步骤:

    • 下载测试数据
      使用 hadoop 用户,在/usr/local/service/tensorflowonspark目录下,执行命令:

      sh mnist_download.sh
      cat mnist_download.sh
      mkdir ${HOME}/mnist
      pushd ${HOME}/mnist >/dev/null
      curl -O "http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz"
      curl -O "http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz"
      curl -O "http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz"
      curl -O "http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz"
      zip -r mnist.zip *
      popd >/dev/null
      
    • 上传原始数据和依赖包

      hdfs dfs -mkdir -p /mnist/tools/
      hdfs dfs -put ~/mnist/mnist.zip /mnist/tools
      hdfs dfs -mkdir /tensorflow
      hdfs dfs -put TensorFlowOnSpark/tensorflow-hadoop-1.10.0.jar /tensorflow
      
    • 特征数据准备

      sh prepare_mnist.sh
      
      

    可以看到特征数据已准备就绪:

    hdfs dfs -ls /user/hadoop/mnist
    Found 2 items
    drwxr-xr-x - hadoop supergroup 0 2020-05-21 11:40 /user/hadoop/mnist/csv
    drwxr-xr-x - hadoop supergroup 0 2020-05-21 11:41 /user/hadoop/mnist/tfr
    
    • 基于 InputMode.SPARK 模型训练
      sh mnist_train_with_spark_cpu.sh
      
      

    查看模型训练好的模型:

    [hadoop@10 tensorflow-on-spark]$ hdfs dfs -ls /user/hadoop/mnist_model
    Found 10 items
    -rw-r--r-- 1 hadoop supergroup 128 2020-05-21 11:46 /user/hadoop/mnist_model/checkpoint
    -rw-r--r-- 1 hadoop supergroup 243332 2020-05-21 11:46 /user/hadoop/mnist_model/events.out.tfevents.1590032704.10.0.0.114
    -rw-r--r-- 1 hadoop supergroup 164619 2020-05-21 11:45 /user/hadoop/mnist_model/graph.pbtxt
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 11:45 /user/hadoop/mnist_model/model.ckpt-0.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 11:45 /user/hadoop/mnist_model/model.ckpt-0.index
    -rw-r--r-- 1 hadoop supergroup 64658 2020-05-21 11:45 /user/hadoop/mnist_model/model.ckpt-0.meta
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 11:46 /user/hadoop/mnist_model/model.ckpt-595.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 11:46 /user/hadoop/mnist_model/model.ckpt-595.index
    -rw-r--r-- 1 hadoop supergroup 64658 2020-05-21 11:46 /user/hadoop/mnist_model/model.ckpt-595.meta
    drwxr-xr-x - hadoop supergroup 0 2020-05-21 11:46 /user/hadoop/mnist_model/train
    
    • 基于 InputMode.SPARK 模型预测
      sh mnist_inference_with_spark_cpu.sh
      
      

    查看预测结果:

    hdfs dfs -cat /user/hadoop/predictions/part-00000 |more 
    2020-05-21T11:49:56.561506 Label: 7, Prediction: 7
    2020-05-21T11:49:56.561535 Label: 2, Prediction: 2
    2020-05-21T11:49:56.561541 Label: 1, Prediction: 1
    2020-05-21T11:49:56.561545 Label: 0, Prediction: 0
    2020-05-21T11:49:56.561550 Label: 4, Prediction: 4
    2020-05-21T11:49:56.561555 Label: 1, Prediction: 1
    2020-05-21T11:49:56.561559 Label: 4, Prediction: 4
    2020-05-21T11:49:56.561564 Label: 9, Prediction: 9
    2020-05-21T11:49:56.561568 Label: 5, Prediction: 6
    2020-05-21T11:49:56.561573 Label: 9, Prediction: 9
    2020-05-21T11:49:56.561578 Label: 0, Prediction: 0
    2020-05-21T11:49:56.561582 Label: 6, Prediction: 6
    2020-05-21T11:49:56.561587 Label: 9, Prediction: 9
    2020-05-21T11:49:56.561603 Label: 0, Prediction: 0
    2020-05-21T11:49:56.561608 Label: 1, Prediction: 1
    2020-05-21T11:49:56.561612 Label: 5, Prediction: 5    
    
    • 基于 InputMode.TENSORFLOW 训练模型
      sh mnist_train_with_tf_cpu.sh
      
      

    查看模型:

    hdfs dfs -ls mnist_model
    Found 25 items
    -rw-r--r-- 1 hadoop supergroup 265 2020-05-21 14:58 mnist_model/checkpoint
    -rw-r--r-- 1 hadoop supergroup 40 2020-05-21 14:53 mnist_model/events.out.tfevents.1590044017.10.0.0.144
    -rw-r--r-- 1 hadoop supergroup 40 2020-05-21 14:57 mnist_model/events.out.tfevents.1590044221.10.0.0.144
    -rw-r--r-- 1 hadoop supergroup 40 2020-05-21 14:57 mnist_model/events.out.tfevents.1590044227.10.0.0.144
    -rw-r--r-- 1 hadoop supergroup 40 2020-05-21 14:57 mnist_model/events.out.tfevents.1590044232.10.0.0.144
    -rw-r--r-- 1 hadoop supergroup 40 2020-05-21 14:57 mnist_model/events.out.tfevents.1590044238.10.0.0.144
    -rw-r--r-- 1 hadoop supergroup 40 2020-05-21 14:58 mnist_model/events.out.tfevents.1590044303.10.0.0.114
    -rw-r--r-- 1 hadoop supergroup 198078 2020-05-21 14:58 mnist_model/graph.pbtxt
    drwxr-xr-x - hadoop supergroup 0 2020-05-21 14:58 mnist_model/inference
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 14:57 mnist_model/model.ckpt-238.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 14:57 mnist_model/model.ckpt-238.index
    -rw-r--r-- 1 hadoop supergroup 76255 2020-05-21 14:57 mnist_model/model.ckpt-238.meta
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 14:57 mnist_model/model.ckpt-277.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 14:57 mnist_model/model.ckpt-277.index
    -rw-r--r-- 1 hadoop supergroup 76255 2020-05-21 14:57 mnist_model/model.ckpt-277.meta
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 14:57 mnist_model/model.ckpt-315.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 14:57 mnist_model/model.ckpt-315.index
    -rw-r--r-- 1 hadoop supergroup 76255 2020-05-21 14:57 mnist_model/model.ckpt-315.meta
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 14:57 mnist_model/model.ckpt-354.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 14:57 mnist_model/model.ckpt-354.index
    -rw-r--r-- 1 hadoop supergroup 76255 2020-05-21 14:57 mnist_model/model.ckpt-354.meta
    -rw-r--r-- 1 hadoop supergroup 814168 2020-05-21 14:58 mnist_model/model.ckpt-393.data-00000-of-00001
    -rw-r--r-- 1 hadoop supergroup 375 2020-05-21 14:58 mnist_model/model.ckpt-393.index
    -rw-r--r-- 1 hadoop supergroup 76255 2020-05-21 14:58 mnist_model/model.ckpt-393.meta
    drwxr-xr-x - hadoop supergroup 0 2020-05-21 14:53 mnist_model/train
    
    • 基于 InputMode.TENSORFLOW 模型预测
      sh mnist_train_with_tf_cpu.sh
      
      

    查看预测结果:

    hdfs dfs -cat predictions/part-00000 |more
    9 4
    9 9
    4 4
    1 1
    4 4
    8 8
    9 9
    2 2
    3 5
    6 6
    9 9
    2 2
    6 6
    0 0
    7 7
    5 5
    3 3
    
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持