Skip to content

  • 体验新版
    • 正在加载...
  • 登录
  • PaddlePaddle
  • Paddle
  • Issue
  • #9571

P
Paddle
  • 项目概览

PaddlePaddle / Paddle
大约 2 年 前同步成功

通知 2325
Star 20933
Fork 5424
  • 代码
    • 文件
    • 提交
    • 分支
    • Tags
    • 贡献者
    • 分支图
    • Diff
  • Issue 1423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
  • Wiki 0
    • Wiki
  • 分析
    • 仓库
    • DevOps
  • 项目成员
  • Pages
P
Paddle
  • 项目概览
    • 项目概览
    • 详情
    • 发布
  • 仓库
    • 仓库
    • 文件
    • 提交
    • 分支
    • 标签
    • 贡献者
    • 分支图
    • 比较
  • Issue 1,423
    • Issue 1,423
    • 列表
    • 看板
    • 标记
    • 里程碑
  • 合并请求 543
    • 合并请求 543
  • Pages
  • 分析
    • 分析
    • 仓库分析
    • DevOps
  • Wiki 0
    • Wiki
  • 成员
    • 成员
  • 收起侧边栏
  • 动态
  • 分支图
  • 创建新Issue
  • 提交
  • Issue看板
“c8d89a2b78c035dfec7bd36fe836a97b82e9b107”上不存在“paddle/fluid/lite/api/cxx_api_bin_int8.cc”
已关闭
开放中
Opened 4月 02, 2018 by saxon_zh@saxon_zhGuest

How to do testing during training when using ParallelExecutor.

Created by: qingqing01

  1. 如何做并行test? 参考代码:https://github.com/dzhwinter/benchmark/pull/91/files
    ParallelExecutor用于train:
    exe =  fluid.ParallelExecutor(loss_name=avg_cost.name, use_cuda=True)
    for i xrange(iterations):
       loss = exe.run([avg_cost.name])
    如何用于test?是类似如下吗?
    test_exe =  fluid.ParallelExecutor(loss_name=avg_cost.name, use_cuda=True, main_program =test_program)
    for i xrange(test_iterations):
       loss, top1, top5 = test_exe.run([avg_cost.name, top1.name, top5.name])

【ParallelExecutor用于test,当前存在以下问题】:


  1. ParallelExecutor构造函数【始终】运行了一个startup_program。
    • 代码: https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/framework/parallel_executor.cc#L56
    • 存在的问题:并行测试startup_program是什么?要去掉startup_program里参数初始化吗?
    • 是否要移动到Python里?:
        1. 删掉C++里的exe.Run(startup_program, scope, 0);
        1. Python中ParallelExecutor构造函数判断是否要做初始化?
        class ParallelExecutor(object):
          def __init__(self, loss_name, use_cuda, num_threads=None,
               main_program=None, startup_program=None, run_startup=True):
            # ...
            startup = startup_program if startup_program else framework.default_startup_program()
            if run_startup:
              place = core.CUDAPlace(0) if use_cuda else core.CPUPlace()
              exe = executor.Executor(place)
              exe.run(startup)

  1. ParallelExecutor里不管输入的Program是什么,【始终】创建grad vars和插入用于grad聚合的NCCLAllReduceOp 。
    • 插入Grad聚合代码:
        1. 创建MultiDevSSAGraphBuilder: https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/framework/parallel_executor.cc#L75
        1. 构造函数始终创建了Grad Vas: https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/framework/details/multi_devices_graph_builder.cc#L50
        1. 插入NCCLAllReduceOp: https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/framework/details/multi_devices_graph_builder.cc#L130
    • 存在的问题:并行测试并不需要这些操作

  1. ParallelExecutor不支持Python data reader。Recordio 参考代码 https://github.com/dzhwinter/benchmark/pull/91/files train的Program定义如下, 训练数据路径是./flowers.train.recordio,以及相关的var是train Program的一部分。
    with fluid.program_guard(main, startup):
        reader = fluid.layers.open_recordio_file(
            filename='./flowers.train.recordio',
            shapes=[[-1, 3, 224, 224], [-1, 1]],
            lod_levels=[0, 0],
            dtypes=['float32', 'int64'])
        image, label = fluid.layers.read_file(reader)
        prediction, avg_cost, accuracy, accuracy5 = net_conf(image, label, class_dim)
    问题是:test时,数据路径是'./flowers.test.recordio',不同于train, 如何获取test Program?

  1. fluid.ParallelExecutor的输入有个loss_name,test时如何指定? 代码在:https://github.com/PaddlePaddle/Paddle/blob/develop/python/paddle/fluid/parallel_executor.py#L24 。 看代码https://github.com/PaddlePaddle/Paddle/blob/develop/paddle/fluid/framework/details/multi_devices_graph_builder.cc#L94 , loss_name似乎是用来分割forward ops和backward ops,插入Grad聚合op的一个辅助变量。
指派人
分配到
无
里程碑
无
分配里程碑
工时统计
无
截止日期
无
标识: paddlepaddle/Paddle#9571
渝ICP备2023009037号

京公网安备11010502055752号

网络110报警服务 Powered by GitLab CE v13.7
开源知识
Git 入门 Pro Git 电子书 在线学 Git
Markdown 基础入门 IT 技术知识开源图谱
帮助
使用手册 反馈建议 博客
《GitCode 隐私声明》 《GitCode 服务条款》 关于GitCode
Powered by GitLab CE v13.7