Repository navigation
【PIR API adaptor No.19】Migrate paddle.incubate.ModelAverage into pir - #59615
ooooo-create wants to merge 3 commits into
Conversation
|
你的PR提交成功,感谢你对开源项目的贡献! |
|
|
… branch 'develop' of https://github.com/PaddlePaddle/Paddle into ooooo/pir19
done 238: test_program = train_program.clone()
1238: AttributeError: 'paddle.base.libpaddle.pir.Program' object has no attribute 'clone'这个要怎么解决呢~ |
MarioLulab
left a comment
There was a problem hiding this comment.
pir下的 fetch 可能比较麻烦,辛苦修改一下吧
| 'linear_0.b_0', | ||
| 'linear_0.b_0_sum_1_0', | ||
| 'linear_0.b_0_sum_2_0', | ||
| 'linear_0.b_0_sum_3_0', | ||
| 'linear_0.b_0_num_accumulates_0', | ||
| 'linear_0.b_0_old_num_accumulates_0', | ||
| 'linear_0.b_0_num_updates_0', |
There was a problem hiding this comment.
pir 模式下的 fetch_list 目前还不支持传入 value 的 name。需要通过打印pir的program,然后根据单测含义找到需要fetch的value是哪个op下的,通过program索引到对应的op,再通过op的result方法将op的输出传入到fetch_list中
There was a problem hiding this comment.
pir 模式下的 fetch_list 目前还不支持传入 value 的 name,所以只能构造内容是 pir.Value 或 pir.OpResult 的 fetch_list。
比方说根据上图打印出来的 program,'linear_0.w_0' 是 train_program 中第一个 op 的输出,那么拿到这个 OpResult 的办法如下:
block = train_program.global_block()
linear_0_b_0 = block.ops[1].result(0)
# 那么 fetch_list 可写为
fetch_list = [linear_0_b_0]
# 以此类推还可以写一个工具函数,遍历 program 下所有 op,判断其 name 是否是想要的 name,并返回 op 的 OpResult。比方说:
def get_pir_value_by_name(program, fetch_name):
block = program.global_block()
for op in block.ops:
if op.name == "pd_op.data" and op.attrs()['name'] == fetch_name:
return op.result(0)
elif op.name == "builtin.parameter" and op.attrs()['parameter_name'] == fetch_name:
return op.result(0)
return None则使用该工具函数可以改写为:
fetch_list=[
get_pir_value_by_name(train_program, 'linear_0.b_0'),
get_pir_value_by_name(train_program, 'linear_0.b_0_sum_1_0'),
...
],There was a problem hiding this comment.
感谢感谢,理解了,但是 ·linear_0.b_0_sum_1_0 好像是内部的,program里我找不到~
| program=test_program, | ||
| feed={'X': x}, | ||
| fetch_list=[loss.name, 'fc_0.b_0'], | ||
| fetch_list=[loss.name, 'linear_0.b_0'], |
| program=test_program, | ||
| feed={'X': x}, | ||
| fetch_list=[loss.name, 'fc_0.b_0'], | ||
| fetch_list=[loss.name, 'linear_0.b_0'], |
|
Sorry to inform you that 8c9c3d8's CIs have passed for more than 7 days. To prevent PR conflicts, you need to re-run all CIs manually. |

PR types
Others
PR changes
APIs
Description
link #58067
PIR API 推全升级
将
paddle.incubate.ModelAverage迁移升级至 pir,并更新单测单测覆盖率: 1/1