You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
问题一: 在ops.yaml中添加dpsgd的注册信息之后,运行报错 [Hint: Expected param->numel() == sz, but received param->numel():10710 != sz:0.],原因是没有给dpsgd配置infermeta,在paddle/phi/infermeta/ternary.cc下添加infermeta函数后成功解决. 问题二:error: eager_api_dpsgd was not declared in this scope,添加算子n时编译出现该问题需要将算子名称加入paddle/fluid/pir/dialect/op_generator/ops_api_gen.py NO_NEED_GEN_STATIC_ONLY_APIS
2
test_exponential_op
Op exponential should have corresponding OpInfo pd.exponential & The difference in accuracy is too great & The difference in accuracy is too great
问题一:新Ir下需要将repeat_interleave这个op根据输入RepeatsTensor翻译成repeat_interleave_with_tensor_index或者repeat_interleave这里增加RepeatInterLeaveOpTranscriber就可以实现,但是要注意对对应的grad op也要做相同的处理。 问题二:报错the type of data we are trying to retrieve (float32) does not match the type of data (flaot64) 这个错误原因主要是组网时声明的tensor的dtype为float32但是测试文件中给出的数据是float64,旧Ir下的GetExpectedKernelType函数可以根据输入的数据的数据类型选择kernel,而新ir下暂不支持,新ir下根据x的dtype选择对应的kernel。所以对于此类问题需要修改单测文件,强制输入的数据类型和声明的dtype一致。
8
test_seed_op
(NotFound) The kernel with key (CPU, Undefined(AnyLayout), int64) of kernel seed is not registered. Selected wrong DataType int64. Paddle support following DataTypes: int32.
PreconditionNotMetError: Tensor holds no memory. Call Tensor::mutable_data firstly.
问题一:test_unique在新Ir下执行报错为PreconditionNotMetError: Tensor holds no memory. Call Tensor::mutable_data firstly..这里的问题是由新Ir下默认将旧Ir下的unique只翻译成新Ir下的unique导致的。在旧Ir下unique会根据属性is_sorted的值选择unique或者unique_raw两个kernel执行。在新Ir下不存在这样的机制,所以需要根据is_sorted的值将旧Ir下的unique翻译为新Ir下的unique或者unique_raw两个OP.这里在新Ir下补充了unique_raw的定义。 问题二:修复后在GPU环境上运行,在GPU版本的kernel中发生空指针异常,这是选kernel的逻辑存在问题,旧Ir下通过GetReduceGradExpectedKernelType在GPU环境下选择CPU中的kernel,新IR下不适配GetReduceGradExpectedKernelType导致在GPU环境下Kernel选择 出现问题,暂时尚未处理
14
test_uniform_random_bf16_op
Op uniform_random_batch_size_like should have corresponding OpInfo pd_op.uniform_random_batch_size_like,RuntimeError: (NotFound) Variable is not initialized.1558: [Hint: holder_ should not be null.]
记录正在修复的算子
ops.yaml
中添加dpsgd的注册信息之后,运行报错[Hint: Expected param->numel() == sz, but received param->numel():10710 != sz:0.]
,原因是没有给dpsgd配置infermeta,在paddle/phi/infermeta/ternary.cc
下添加infermeta函数后成功解决.问题二:
error: eager_api_dpsgd was not declared in this scope
,添加算子n时编译出现该问题需要将算子名称加入paddle/fluid/pir/dialect/op_generator/ops_api_gen.py NO_NEED_GEN_STATIC_ONLY_APIS
new_ir_op_test_no_check_list
不对输出结果做相应的检查St6vectorIlSaIlEE
问题二:randint的输出同样具有随机性,所以这里将其加入
new_ir_op_test_no_check_list
对输出值不做检查FLAGS_enable_new_ir_in_executor
时执行错误,开启FLAGS_PIR_OPTEST
,FLAGS_PIR_OPTEST_WHITE_LIST
单测成功,这里暂时不做处理RepeatsTensor
翻译成repeat_interleave_with_tensor_index
或者repeat_interleave
这里增加RepeatInterLeaveOpTranscriber就可以实现,但是要注意对对应的grad op也要做相同的处理。问题二:报错
the type of data we are trying to retrieve (float32) does not match the type of data (flaot64)
这个错误原因主要是组网时声明的tensor的dtype为float32但是测试文件中给出的数据是float64,旧Ir下的GetExpectedKernelType函数可以根据输入的数据的数据类型选择kernel,而新ir下暂不支持,新ir下根据x的dtype选择对应的kernel。所以对于此类问题需要修改单测文件,强制输入的数据类型和声明的dtype一致。seed
is not registered. Selected wrong DataTypeint64
. Paddle support following DataTypes: int32.GetExpectedKernelType
不一致造成的,旧Ir下kerneltype为INT32
,而新ir下的GetExpectedKernelType
返回的是Out的dtype,修改新ir下的GetExpectedKernelType
问题解决OpYamlInfoParser
在解析runtime_info.kernel_param
时会将可变属性放入kernel_fn_attr_params
这样对于新Ir下定义的sparse_momentum_op(定义了Scalar axis)会造成AttributeMap
中不存在axis
属性的问题。所以对于此类legacy op
暂时将可变属性统一放入kernel_fn_tensor_params
中。解决方案是需要给OpYamlInfoParser
多增加一个属性,用来判断当前翻译的Op是非为legacy op
。Segmentation fault
is detected by the operating system.FLAGS_enable_new_ir_in_executor
时执行错误,开启FLAGS_PIR_OPTEST
,FLAGS_PIR_OPTEST_WHITE_LIST
单测成功,这里暂时不做处理Segmentation fault
is detected by the operating system.FLAGS_enable_new_ir_in_executor
时执行错误,开启FLAGS_PIR_OPTEST
,FLAGS_PIR_OPTEST_WHITE_LIST
单测成功,这里暂时不做处理is_sorted
的值选择unique或者unique_raw两个kernel
执行。在新Ir下不存在这样的机制,所以需要根据is_sorted的值将旧Ir下的unique翻译为新Ir下的unique或者unique_raw两个OP.这里在新Ir下补充了unique_raw的定义。问题二:修复后在GPU环境上运行,在GPU版本的
kernel
中发生空指针异常,这是选kernel
的逻辑存在问题,旧Ir下通过GetReduceGradExpectedKernelType
在GPU环境下选择CPU中的kernel
,新IR下不适配GetReduceGradExpectedKernelType导致在GPU环境下Kernel选择 出现问题,暂时尚未处理input
对应的Variable
在构建PhiContext
时holder_
为空。在python侧_StandaloneExecutor执行run函数时传入的feed_names为空,在旧IR中会在program_interpreter中执行run函数,对于program_interpreter初始化Variable的机制,他会在构建Varibale是就将其初始化。而pir_interpreter不会先初始化Variable,它根据feed_names为输入变量初始化,所以如果feed_names为空,会导致input不会被初始化,导致后面运行报错。解决方案是在exe.run()中加入feed
The text was updated successfully, but these errors were encountered: