[PaddlePaddle/Paddle]在fluid下增op时,设置输入的属性,有AsDuplicable,可以接收vector tensor的输入,但每张卡上的输入都一样,如何设置每张卡上接收不一样的vector tensor呢?

2024-03-22 474 views
2
请提出你的问题 Please ask your question

在fluid下增op时,设置输入的属性,有AsDuplicable,可以接收vector tensor的输入,但每张卡上的输入都一样,如何设置每张卡上接收不一样的vector tensor呢?

回答

0

可以将代码贴出来吗,看一下具体情况

8
image

我希望这几个圈出来的输入是vector tensor的,没设置AsDuplicable的话,会告诉我只能接收tensor类型输入。但如果我设置了AsDuplicable,多卡跑的代码的时候,1号卡的输入跟0号卡的输入一样,实际是不一样的

2

对于分布式来说,Op 的输入内容不一样,应该是在 Op 外部决定接收内容是否不一样的。你是准备在这个 op 内部做分布式吗?还是外部?

7

我是在外部做了分布式的,并且我在模型热启,调用set_state_dict()后,查看模型的state dict,参数加载的是分布式的,但是到了调用这个新增的op的时候,我打印传入的参数,发现0号卡跟1号卡是一样的

8

那你在调用这个op之前打印一下?

6

那你在调用这个op之前打印一下? 就是在调用这个OP之前打印的,发现两张卡的参数一样

5

那这个跟 op 没关系了。查一下为什么送到 Op 之前预期是不一样的,反而一样。

换句话说,你想问的问题和你实际想问的不符。

2

好的,我再看下。还想问下AsDuplicable,这个设置的是什么呢?

2

这个是 fluid op 的写法,意思代表着这输入是可选的,可以传,可不传。不传他的 tensor 的数据指针就是 null

9

可传可不传不是AsDispensable这个设置的吗

4

看错了。

AsDuplicable 就是说这个可以重复,输入可能是个vector tensor AsDispensable 就是optional,这个参数可有可无

8

好的好的,谢谢。那个传入参数的问题确实是我外部代码的问题,感谢~