From 79ba943ee05aab1b8d0b7553d396221429f9c69e Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Mon, 8 May 2023 20:47:48 +0800 Subject: [PATCH 01/22] [Frontend][Paddle] [PaddlePaddle Hackathon 4] --- python/tvm/relay/frontend/paddlepaddle.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/python/tvm/relay/frontend/paddlepaddle.py b/python/tvm/relay/frontend/paddlepaddle.py index adff28187e5b..ffa1892aa376 100755 --- a/python/tvm/relay/frontend/paddlepaddle.py +++ b/python/tvm/relay/frontend/paddlepaddle.py @@ -308,6 +308,7 @@ def convert_conv2d(g, op, block): kernel = g.get_node(op.input("Filter")[0]) input_x = g.get_node(op.input("Input")[0]) + data_layout = op.attr("data_format") out_channels, _, k_h, k_w = infer_shape(kernel) if padding_algorithm == "VALID": paddings = [0, 0] @@ -335,7 +336,8 @@ def convert_conv2d(g, op, block): dilation=dilations, groups=groups, channels=out_channels, - kernel_size=[k_h, k_w], + kernel_size=[k_d, k_h, k_w], + data_layout=data_layout ) g.add_node(op.output("Output")[0], out) @@ -411,6 +413,7 @@ def convert_conv3d(g, op, block): kernel = g.get_node(op.input("Filter")[0]) input_x = g.get_node(op.input("Input")[0]) + data_layout = op.attr("data_format") out_channels, _, k_d, k_h, k_w = infer_shape(kernel) if padding_algorithm == "VALID": paddings = [0, 0, 0] @@ -450,6 +453,7 @@ def convert_conv3d(g, op, block): groups=groups, channels=out_channels, kernel_size=[k_d, k_h, k_w], + data_layout=data_layout ) g.add_node(op.output("Output")[0], out) @@ -825,7 +829,8 @@ def convert_gaussian_random(g, op, block): std = op.attr("std") shape = op.attr("shape") seed = op.attr("seed") - out = _op.random.normal(key=seed, shape=shape, mean=mean, scale=std) + dtype = op.attr("dtype") + out = _op.random.normal(key=seed, shape=shape,dtype=dtype,mean=mean, scale=std) g.add_node(op.output("Out")[0], out) @@ -2173,7 +2178,14 @@ def convert_softplus(g, op, block): dtype = infer_type(x).checked_type.dtype beta = op.attr("beta") beta = _expr.const(beta, dtype=dtype) - out = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta + threshold = op.attr("threshold") + if threshold is None: + threshold=_expr.const(20.0, dtype=dtype) + threshold = _expr.const(threshold, dtype=dtype) + if x*beta <= threshold: + out = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta + else: + out=x g.add_node(op.output("Out")[0], out) From 9f84017815836c495cd00382e8f8d3951d8d622b Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Mon, 8 May 2023 20:57:13 +0800 Subject: [PATCH 02/22] Update test_forward.py --- .../frontend/paddlepaddle/test_forward.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 289fc0faa3ef..60cef9f69c51 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -508,7 +508,26 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) + class Conv2D2(nn.Layer): + def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros", data_layout='NCHW'): + super(Conv2D2, self).__init__() + self.conv = nn.Conv2D( + 3, + 6, + 3, + stride=stride, + padding=padding, + dilation=dilation, + groups=groups, + padding_mode=padding_mode, + data_layout=data_layout, + ) + self.softmax = nn.Softmax() + @paddle.jit.to_static + def forward(self, inputs): + return self.softmax(self.conv(inputs)) + input_shapes = [[1, 3, 10, 10], [1, 3, 12, 12]] for input_shape in input_shapes: @@ -521,6 +540,7 @@ def forward(self, inputs): input_data=input_data, ) verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) + verify_model(Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NHWC'), input_data=input_data) @tvm.testing.uses_gpu @@ -574,7 +594,25 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) + class Conv3D2(nn.Layer): + def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros", data_layout='NCHW'): + super(Conv3D2, self).__init__() + self.conv = nn.Conv3D( + 3, + 6, + 3, + stride=stride, + padding=padding, + dilation=dilation, + groups=groups, + padding_mode=padding_mode, + data_layout=data_layout, + ) + self.softmax = nn.Softmax() + @paddle.jit.to_static + def forward(self, inputs): + return self.softmax(self.conv(inputs)) input_shapes = [[1, 3, 10, 10, 10], [1, 3, 12, 12, 12]] for input_shape in input_shapes: @@ -595,6 +633,7 @@ def forward(self, inputs): input_data=input_data, ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) + verify_model(Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NHWC'), input_data=input_data) @tvm.testing.uses_gpu @@ -838,7 +877,23 @@ def forward(self, inputs): verify_model(GroupNorm(num_channels, 1), input_data, rtol=1e-4, atol=1e-4) verify_model(GroupNorm(num_channels, 2), input_data, rtol=1e-4, atol=1e-4) +@tvm.testing.uses_gpu +def test_forward_gaussian_random(): + @paddle.jit.to_static + def gaussian_random1(shape): + return paddle.fluid.layers.gaussian_random(shape) + + @paddle.jit.to_static + def gaussian_random2(shape): + return paddle.fluid.layers.gaussian_random(shape,dtype='float32') + + + shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] + for shape in zip(shapes): + verify_model(gaussian_random1, shape=shape) + verify_model(gaussian_random2, shape=shape) + @tvm.testing.uses_gpu def test_forward_grid_sampler(): class GridSampler(nn.Layer): From cf7c143157f9fe5c9c8334d5325414da1d7f805a Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 12 May 2023 20:28:48 +0800 Subject: [PATCH 03/22] Update test_forward.py add test for softplus fix test for Conv3d --- .../frontend/paddlepaddle/test_forward.py | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 60cef9f69c51..59fb940e2756 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -633,7 +633,7 @@ def forward(self, inputs): input_data=input_data, ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) - verify_model(Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NHWC'), input_data=input_data) + verify_model(Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NCDHW'), input_data=input_data) @tvm.testing.uses_gpu @@ -1775,9 +1775,32 @@ def test_forward_sin(): pass -@run_math_api +@tvm.testing.uses_gpu def test_forward_softplus(): - pass + @paddle.jit.to_static + def Softplus1(input): + return nn.functional.Softplus(input,beta=1.0,threshold=20.0) + + @paddle.jit.to_static + def Softplus2(input): + return nn.functional.Softplus(input,beta=6.0,threshold=20.0) + + @paddle.jit.to_static + def Softplus3(input): + return nn.functional.Softplus(input,beta=1.0,threshold=10.0) + + x = paddle.to_tensor([-9.0, -12.0, 1.0, 18.0, 25.0]) + verify_model(Softplus1, x) + verify_model(Softplus2, x) + verify_model(Softplus3, x) + + + input_shapes = [[10], [2, 3], [5, 10, 11], [3, 4, 5, 6]] + for input_shape in input_shapes: + input_data = paddle.randn(shape=input_shape, dtype="float32") + verify_model(Softplus1, input_data=input_data) + verify_model(Softplus2, input_data=input_data) + verify_model(Softplus3, input_data=input_data) @run_math_api From ec3c524e3f6fec0059b5757eb16bef13c8c7a1a0 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Wed, 24 May 2023 21:22:19 +0800 Subject: [PATCH 04/22] Update paddlepaddle.py check lint --- python/tvm/relay/frontend/paddlepaddle.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/python/tvm/relay/frontend/paddlepaddle.py b/python/tvm/relay/frontend/paddlepaddle.py index 92ae3533ce4b..dfcf9b0574d9 100755 --- a/python/tvm/relay/frontend/paddlepaddle.py +++ b/python/tvm/relay/frontend/paddlepaddle.py @@ -332,8 +332,8 @@ def convert_conv2d(g, op, block): dilation=dilations, groups=groups, channels=out_channels, - kernel_size=[k_d, k_h, k_w], - data_layout=data_layout + kernel_size=[k_h, k_w], + data_layout=data_layout, ) g.add_node(op.output("Output")[0], out) @@ -449,7 +449,7 @@ def convert_conv3d(g, op, block): groups=groups, channels=out_channels, kernel_size=[k_d, k_h, k_w], - data_layout=data_layout + data_layout=data_layout, ) g.add_node(op.output("Output")[0], out) @@ -826,7 +826,7 @@ def convert_gaussian_random(g, op, block): shape = op.attr("shape") seed = op.attr("seed") dtype = op.attr("dtype") - out = _op.random.normal(key=seed, shape=shape,dtype=dtype,mean=mean, scale=std) + out = _op.random.normal(key=seed, shape=shape, dtype=dtype, mean=mean, scale=std) g.add_node(op.output("Out")[0], out) @@ -2171,12 +2171,12 @@ def convert_softplus(g, op, block): threshold = op.attr("threshold") if threshold is None: - threshold=_expr.const(20.0, dtype=dtype) + threshold = _expr.const(20.0, dtype=dtype) threshold = _expr.const(threshold, dtype=dtype) - if x*beta <= threshold: + if x * beta <= threshold: out = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta else: - out=x + out = x g.add_node(op.output("Out")[0], out) From 112ee5dd1d0e8d608c3e37061c2ddbb95ba7f9d4 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Wed, 24 May 2023 21:36:56 +0800 Subject: [PATCH 05/22] Update test_forward.py check lint --- .../frontend/paddlepaddle/test_forward.py | 46 ++++++++++++++----- 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index b247de2b031e..edef4ec6b712 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -509,7 +509,15 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero def forward(self, inputs): return self.softmax(self.conv(inputs)) class Conv2D2(nn.Layer): - def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros", data_layout='NCHW'): + def __init__( + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", + data_layout='NCHW' + ): super(Conv2D2, self).__init__() self.conv = nn.Conv2D( 3, @@ -540,7 +548,10 @@ def forward(self, inputs): input_data=input_data, ) verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) - verify_model(Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NHWC'), input_data=input_data) + verify_model( + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NHWC'), + input_data=input_data, + ) @tvm.testing.uses_gpu @@ -594,8 +605,17 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) + class Conv3D2(nn.Layer): - def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros", data_layout='NCHW'): + def __init__( + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", + data_layout='NCHW' + ): super(Conv3D2, self).__init__() self.conv = nn.Conv3D( 3, @@ -613,6 +633,7 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) + input_shapes = [[1, 3, 10, 10, 10], [1, 3, 12, 12, 12]] for input_shape in input_shapes: @@ -633,7 +654,10 @@ def forward(self, inputs): input_data=input_data, ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) - verify_model(Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NCDHW'), input_data=input_data) + verify_model( + Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NCDHW'), + input_data=input_data, + ) @tvm.testing.uses_gpu @@ -877,6 +901,7 @@ def forward(self, inputs): verify_model(GroupNorm(num_channels, 1), input_data, rtol=1e-4, atol=1e-4) verify_model(GroupNorm(num_channels, 2), input_data, rtol=1e-4, atol=1e-4) + @tvm.testing.uses_gpu def test_forward_gaussian_random(): @paddle.jit.to_static @@ -885,14 +910,14 @@ def gaussian_random1(shape): @paddle.jit.to_static def gaussian_random2(shape): - return paddle.fluid.layers.gaussian_random(shape,dtype='float32') - + return paddle.fluid.layers.gaussian_random(shape, dtype="float32") shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] for shape in zip(shapes): verify_model(gaussian_random1, shape=shape) verify_model(gaussian_random2, shape=shape) + @tvm.testing.uses_gpu def test_forward_grid_sampler(): @@ -1777,25 +1802,23 @@ def test_forward_sin(): @tvm.testing.uses_gpu def test_forward_softplus(): - @paddle.jit.to_static def Softplus1(input): - return nn.functional.Softplus(input,beta=1.0,threshold=20.0) + return nn.functional.Softplus(input, beta=1.0, threshold=20.0) @paddle.jit.to_static def Softplus2(input): - return nn.functional.Softplus(input,beta=6.0,threshold=20.0) + return nn.functional.Softplus(input, beta=6.0, threshold=20.0) @paddle.jit.to_static def Softplus3(input): - return nn.functional.Softplus(input,beta=1.0,threshold=10.0) + return nn.functional.Softplus(input, beta=1.0, threshold=10.0) x = paddle.to_tensor([-9.0, -12.0, 1.0, 18.0, 25.0]) verify_model(Softplus1, x) verify_model(Softplus2, x) verify_model(Softplus3, x) - input_shapes = [[10], [2, 3], [5, 10, 11], [3, 4, 5, 6]] for input_shape in input_shapes: input_data = paddle.randn(shape=input_shape, dtype="float32") @@ -1804,7 +1827,6 @@ def Softplus3(input): verify_model(Softplus3, input_data=input_data) - @run_math_api def test_forward_sqrt(): pass From aeec5b465920b998b6095b19520c6a84a4d80f5d Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 26 May 2023 13:43:26 +0800 Subject: [PATCH 06/22] Update paddlepaddle.py check lint --- python/tvm/relay/frontend/paddlepaddle.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/tvm/relay/frontend/paddlepaddle.py b/python/tvm/relay/frontend/paddlepaddle.py index dfcf9b0574d9..6043abe214f2 100755 --- a/python/tvm/relay/frontend/paddlepaddle.py +++ b/python/tvm/relay/frontend/paddlepaddle.py @@ -2174,9 +2174,9 @@ def convert_softplus(g, op, block): threshold = _expr.const(20.0, dtype=dtype) threshold = _expr.const(threshold, dtype=dtype) if x * beta <= threshold: - out = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta + out = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta else: - out = x + out = x g.add_node(op.output("Out")[0], out) From 9f500e322a5697bf756bbe80e673b34ec93ac3fb Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 26 May 2023 13:48:37 +0800 Subject: [PATCH 07/22] Update test_forward.py check lint --- tests/python/frontend/paddlepaddle/test_forward.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index edef4ec6b712..ea162d2798e7 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -508,6 +508,7 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) + class Conv2D2(nn.Layer): def __init__( self, @@ -516,7 +517,7 @@ def __init__( dilation=1, groups=1, padding_mode="zeros", - data_layout='NCHW' + data_layout="NCHW", ): super(Conv2D2, self).__init__() self.conv = nn.Conv2D( @@ -549,7 +550,7 @@ def forward(self, inputs): ) verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NHWC'), + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), input_data=input_data, ) @@ -614,7 +615,7 @@ def __init__( dilation=1, groups=1, padding_mode="zeros", - data_layout='NCHW' + data_layout="NCHW", ): super(Conv3D2, self).__init__() self.conv = nn.Conv3D( @@ -655,7 +656,7 @@ def forward(self, inputs): ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout='NCDHW'), + Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW"), input_data=input_data, ) From a97cbfa5add2045a3204d4020b16beb5b0fef518 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 26 May 2023 17:31:56 +0800 Subject: [PATCH 08/22] Update test_forward.py check lint --- tests/python/frontend/paddlepaddle/test_forward.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index ea162d2798e7..30fa70967867 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -508,7 +508,7 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + class Conv2D2(nn.Layer): def __init__( self, From 5d8e94c7a6f144b292594cb9305bd1f1e1389bd0 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 26 May 2023 18:03:01 +0800 Subject: [PATCH 09/22] Update test_forward.py check lint --- .../frontend/paddlepaddle/test_forward.py | 215 +++++++++++++----- 1 file changed, 152 insertions(+), 63 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 30fa70967867..51d598ddc85f 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -101,9 +101,9 @@ def verify_model(func, input_data, use_vm=False, rtol=1e-5, atol=1e-5): else: tvm_vm_input.append(data.numpy()) for target, dev in tvm.testing.enabled_targets(): - result = relay.create_executor("vm", mod=mod, device=dev, target=target).evaluate()( - *tvm_vm_input, **params - ) + result = relay.create_executor( + "vm", mod=mod, device=dev, target=target + ).evaluate()(*tvm_vm_input, **params) tvm_vm_output = [] if isinstance(result, tvm.runtime.NDArray): tvm_vm_output = result.numpy() @@ -114,7 +114,9 @@ def verify_model(func, input_data, use_vm=False, rtol=1e-5, atol=1e-5): for i, baseline_output in enumerate(baseline_outputs): assert_shapes_match(baseline_output, tvm_vm_output[i]) - tvm.testing.assert_allclose(baseline_output, tvm_vm_output[i], rtol=rtol, atol=atol) + tvm.testing.assert_allclose( + baseline_output, tvm_vm_output[i], rtol=rtol, atol=atol + ) else: with tvm.transform.PassContext(opt_level=3): for target, dev in tvm.testing.enabled_targets(): @@ -265,7 +267,9 @@ def forward(self, inputs): # Avoid duplicate elements in the array which will bring # different results with different sort algorithms np.random.seed(13) - np_data = np.random.choice(range(-5000, 5000), np.prod(input_shape), replace=False) + np_data = np.random.choice( + range(-5000, 5000), np.prod(input_shape), replace=False + ) input_data = paddle.to_tensor(np_data.reshape(input_shape).astype("int64")) verify_model(ArgSort1(), [input_data]) verify_model(ArgSort2(), [input_data]) @@ -442,7 +446,9 @@ def forward(self, inputs, min_value, max_value): def test_forward_concat_unsqueeze(): @paddle.jit.to_static def concat_unsqueeze1(inputs): - return paddle.concat([inputs[:, 0].unsqueeze(1), inputs[:, 1].unsqueeze(1)], axis=1) + return paddle.concat( + [inputs[:, 0].unsqueeze(1), inputs[:, 1].unsqueeze(1)], axis=1 + ) @paddle.jit.to_static def concat_unsqueeze2(inputs): @@ -491,7 +497,9 @@ def cusum3(inputs): @tvm.testing.uses_gpu def test_forward_conv(): class Conv2D1(nn.Layer): - def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros"): + def __init__( + self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros" + ): super(Conv2D1, self).__init__() self.conv = nn.Conv2D( 3, @@ -511,12 +519,12 @@ def forward(self, inputs): class Conv2D2(nn.Layer): def __init__( - self, - stride=1, - padding=0, - dilation=1, - groups=1, - padding_mode="zeros", + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", data_layout="NCHW", ): super(Conv2D2, self).__init__() @@ -536,21 +544,28 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + input_shapes = [[1, 3, 10, 10], [1, 3, 12, 12]] for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Conv2D1(), input_data=input_data) - verify_model(Conv2D1(stride=2, padding="VALID", dilation=3), input_data=input_data) - verify_model(Conv2D1(stride=2, padding="SAME", dilation=3), input_data=input_data) + verify_model( + Conv2D1(stride=2, padding="VALID", dilation=3), input_data=input_data + ) + verify_model( + Conv2D1(stride=2, padding="SAME", dilation=3), input_data=input_data + ) verify_model( Conv2D1(stride=2, padding=3, dilation=3, padding_mode="replicate"), input_data=input_data, ) - verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), + Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), + input_data=input_data, + ) + verify_model( + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), input_data=input_data, ) @@ -558,7 +573,9 @@ def forward(self, inputs): @tvm.testing.uses_gpu def test_forward_conv_transpose(): class Conv2DTranspose(nn.Layer): - def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros"): + def __init__( + self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros" + ): super(Conv2DTranspose, self).__init__() self.conv = nn.Conv2DTranspose( 6, @@ -581,15 +598,21 @@ def forward(self, inputs): input_data = paddle.rand(input_shape, dtype="float32") verify_model(Conv2DTranspose(), input_data=input_data) verify_model(Conv2DTranspose(stride=2, padding="VALID"), input_data=input_data) - verify_model(Conv2DTranspose(stride=2, padding="SAME", dilation=1), input_data=input_data) + verify_model( + Conv2DTranspose(stride=2, padding="SAME", dilation=1), input_data=input_data + ) verify_model(Conv2DTranspose(stride=2, padding=3), input_data=input_data) - verify_model(Conv2DTranspose(stride=3, padding="SAME", groups=1), input_data=input_data) + verify_model( + Conv2DTranspose(stride=3, padding="SAME", groups=1), input_data=input_data + ) @tvm.testing.uses_gpu def test_forward_conv3d(): class Conv3D(nn.Layer): - def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros"): + def __init__( + self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros" + ): super(Conv3D, self).__init__() self.conv = nn.Conv3D( 3, @@ -606,15 +629,15 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + class Conv3D2(nn.Layer): def __init__( - self, - stride=1, - padding=0, - dilation=1, - groups=1, - padding_mode="zeros", + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", data_layout="NCHW", ): super(Conv3D2, self).__init__() @@ -634,14 +657,18 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + input_shapes = [[1, 3, 10, 10, 10], [1, 3, 12, 12, 12]] for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Conv3D(), input_data=input_data) - verify_model(Conv3D(stride=2, padding="VALID", dilation=3), input_data=input_data) - verify_model(Conv3D(stride=2, padding="SAME", dilation=3), input_data=input_data) + verify_model( + Conv3D(stride=2, padding="VALID", dilation=3), input_data=input_data + ) + verify_model( + Conv3D(stride=2, padding="SAME", dilation=3), input_data=input_data + ) verify_model( Conv3D(stride=2, padding=(3, 3, 4, 4, 2, 2), dilation=3), input_data=input_data, @@ -654,9 +681,14 @@ def forward(self, inputs): Conv3D(stride=2, padding=3, dilation=3, padding_mode="replicate"), input_data=input_data, ) - verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW"), + Conv3D(stride=2, padding="SAME", dilation=2, groups=3), + input_data=input_data, + ) + verify_model( + Conv3D2( + stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW" + ), input_data=input_data, ) @@ -825,7 +857,9 @@ def __init__(self, start_axis=0, stop_axis=-1): @paddle.jit.to_static def forward(self, x): - return paddle.flatten(x, start_axis=self.start_axis, stop_axis=self.stop_axis) + return paddle.flatten( + x, start_axis=self.start_axis, stop_axis=self.stop_axis + ) input_data = paddle.rand([2, 3, 4, 5, 2], dtype="float32") verify_model(Flatten(), input_data=input_data) @@ -890,7 +924,9 @@ def test_forward_group_norm(): class GroupNorm(nn.Layer): def __init__(self, channels, groups): super(GroupNorm, self).__init__() - self.group_norm = paddle.nn.GroupNorm(num_channels=channels, num_groups=groups) + self.group_norm = paddle.nn.GroupNorm( + num_channels=channels, num_groups=groups + ) def forward(self, inputs): return self.group_norm(inputs) @@ -902,7 +938,7 @@ def forward(self, inputs): verify_model(GroupNorm(num_channels, 1), input_data, rtol=1e-4, atol=1e-4) verify_model(GroupNorm(num_channels, 2), input_data, rtol=1e-4, atol=1e-4) - + @tvm.testing.uses_gpu def test_forward_gaussian_random(): @paddle.jit.to_static @@ -915,11 +951,10 @@ def gaussian_random2(shape): shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] for shape in zip(shapes): - verify_model(gaussian_random1, shape=shape) verify_model(gaussian_random2, shape=shape) - + @tvm.testing.uses_gpu def test_forward_grid_sampler(): class GridSampler(nn.Layer): @@ -1014,7 +1049,11 @@ def full2(inputs): def test_forward_split(): class Split(nn.Layer): def __init__( - self, axis=None, num_or_sections=None, axis_is_tensor=False, num_is_tensor=False + self, + axis=None, + num_or_sections=None, + axis_is_tensor=False, + num_is_tensor=False, ): super(Split, self).__init__() self.axis = axis @@ -1041,10 +1080,12 @@ def forward(self, inputs): input_data = paddle.rand(input_shape, dtype="float32") verify_model(Split(axis=1, num_or_sections=3), input_data=input_data) verify_model( - Split(axis=[1], num_or_sections=[2, 3, 1], axis_is_tensor=True), input_data=input_data + Split(axis=[1], num_or_sections=[2, 3, 1], axis_is_tensor=True), + input_data=input_data, ) verify_model( - Split(axis=1, num_or_sections=[2, -1, [3]], num_is_tensor=True), input_data=input_data + Split(axis=1, num_or_sections=[2, -1, [3]], num_is_tensor=True), + input_data=input_data, ) @@ -1205,7 +1246,9 @@ def forward(self, x): verify_model(Interpolate(use_scale=True, use_const=True), input_data) verify_model(Interpolate(use_const=True, use_scaler=True), input_data) verify_model(Interpolate("bilinear", use_scale=True), input_data) - verify_model(Interpolate("bilinear", use_scale=True, align_corners=True), input_data) + verify_model( + Interpolate("bilinear", use_scale=True, align_corners=True), input_data + ) verify_model( Interpolate( "bilinear", @@ -1218,7 +1261,8 @@ def forward(self, x): input_data, ) verify_model( - Interpolate("bicubic", use_scale=True, align_corners=True, align_mode=1), input_data + Interpolate("bicubic", use_scale=True, align_corners=True, align_mode=1), + input_data, ) @@ -1226,7 +1270,9 @@ def forward(self, x): def test_forward_layer_norm(): @paddle.jit.to_static def layer_norm(inputs, weight, bias): - return nn.functional.layer_norm(inputs, inputs.shape[-1], weight=weight, bias=bias) + return nn.functional.layer_norm( + inputs, inputs.shape[-1], weight=weight, bias=bias + ) class LayerNorm(nn.Layer): def __init__(self): @@ -1407,7 +1453,9 @@ def test_forward_pad1d(): class Pad1D(nn.Layer): def __init__(self, padding=0, mode="constant", value=0.0, data_format="NCL"): super(Pad1D, self).__init__() - self.pad1d = paddle.nn.Pad1D(padding, mode=mode, value=value, data_format=data_format) + self.pad1d = paddle.nn.Pad1D( + padding, mode=mode, value=value, data_format=data_format + ) @paddle.jit.to_static def forward(self, inputs): @@ -1428,7 +1476,9 @@ def test_forward_pad2d(): class Pad2D(nn.Layer): def __init__(self, padding=0, mode="constant", value=0.0, data_format="NCHW"): super(Pad2D, self).__init__() - self.pad2d = paddle.nn.Pad2D(padding, mode=mode, value=value, data_format=data_format) + self.pad2d = paddle.nn.Pad2D( + padding, mode=mode, value=value, data_format=data_format + ) @paddle.jit.to_static def forward(self, inputs): @@ -1438,7 +1488,9 @@ def forward(self, inputs): for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Pad2D(padding=2), input_data=input_data) - verify_model(Pad2D(padding=[1, 2, 0, 2], data_format="NHWC"), input_data=input_data) + verify_model( + Pad2D(padding=[1, 2, 0, 2], data_format="NHWC"), input_data=input_data + ) verify_model(Pad2D(padding=[1, 2, 0, 2], value=0.3), input_data=input_data) verify_model(Pad2D(padding=[1, 2, 0, 2], mode="reflect"), input_data=input_data) verify_model(Pad2D(padding=3, mode="replicate"), input_data=input_data) @@ -1449,7 +1501,9 @@ def test_forward_pad3d(): class Pad3D(nn.Layer): def __init__(self, padding=0, mode="constant", value=0.0, data_format="NCDHW"): super(Pad3D, self).__init__() - self.pad3d = paddle.nn.Pad3D(padding, mode=mode, value=value, data_format=data_format) + self.pad3d = paddle.nn.Pad3D( + padding, mode=mode, value=value, data_format=data_format + ) @paddle.jit.to_static def forward(self, inputs): @@ -1459,9 +1513,16 @@ def forward(self, inputs): for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Pad3D(padding=2), input_data=input_data) - verify_model(Pad3D(padding=[1, 2, 0, 2, 1, 1], data_format="NDHWC"), input_data=input_data) - verify_model(Pad3D(padding=[1, 2, 0, 2, 1, 1], value=0.3), input_data=input_data) - verify_model(Pad3D(padding=[1, 2, 0, 2, 1, 1], mode="reflect"), input_data=input_data) + verify_model( + Pad3D(padding=[1, 2, 0, 2, 1, 1], data_format="NDHWC"), + input_data=input_data, + ) + verify_model( + Pad3D(padding=[1, 2, 0, 2, 1, 1], value=0.3), input_data=input_data + ) + verify_model( + Pad3D(padding=[1, 2, 0, 2, 1, 1], mode="reflect"), input_data=input_data + ) verify_model(Pad3D(padding=3, mode="replicate"), input_data=input_data) @@ -1493,7 +1554,9 @@ def __init__(self, op_name, axis=None, keepdim=False): @paddle.jit.to_static def forward(self, inputs): - result = getattr(paddle, self.op_name)(inputs, axis=self.axis, keepdim=self.keepdim) + result = getattr(paddle, self.op_name)( + inputs, axis=self.axis, keepdim=self.keepdim + ) result = result.astype("float32") return result @@ -1636,7 +1699,8 @@ def forward(self, inputs): verify_model(Unique(return_index=True), input_data=input_data) verify_model(Unique(return_index=True, return_inverse=True), input_data=input_data) verify_model( - Unique(return_index=True, return_inverse=True, return_counts=True), input_data=input_data + Unique(return_index=True, return_inverse=True, return_counts=True), + input_data=input_data, ) @@ -1958,10 +2022,14 @@ def arange1(inputs): @tvm.testing.uses_gpu def test_forward_rnn(): class RNN(nn.Layer): - def __init__(self, api_name, input_size, hidden_size, num_layers, direction="forward"): + def __init__( + self, api_name, input_size, hidden_size, num_layers, direction="forward" + ): super(RNN, self).__init__() rnn_func = getattr(paddle.nn, api_name, None) - self.rnn = rnn_func(input_size, hidden_size, num_layers, direction=direction) + self.rnn = rnn_func( + input_size, hidden_size, num_layers, direction=direction + ) @paddle.jit.to_static def forward(self, inputs, prev_h): @@ -1975,12 +2043,15 @@ def forward(self, inputs, prev_h): for api_name in ("SimpleRNN", "GRU"): prev_h = paddle.rand([4, 4, 16], dtype="float32") verify_model( - RNN(api_name, input_size, hidden_size, num_layers, direction="bidirectional"), + RNN( + api_name, input_size, hidden_size, num_layers, direction="bidirectional" + ), input_data=[input_data, prev_h], ) prev_h = paddle.rand([2, 4, 16], dtype="float32") verify_model( - RNN(api_name, input_size, hidden_size, num_layers), input_data=[input_data, prev_h] + RNN(api_name, input_size, hidden_size, num_layers), + input_data=[input_data, prev_h], ) @@ -2021,7 +2092,9 @@ def topk8(inputs): return paddle.fluid.layers.topk(inputs, k=2) input_data = paddle.to_tensor([[1, 4, 5, 7], [3, 6, 2, 5]], dtype=paddle.int32) - input_data_fp32 = paddle.to_tensor([[1, 4, 5, 7], [3, 6, 2, 5]], dtype=paddle.float32) + input_data_fp32 = paddle.to_tensor( + [[1, 4, 5, 7], [3, 6, 2, 5]], dtype=paddle.float32 + ) verify_model(topk1, input_data=input_data) # verify_model(topk2, input_data=input_data) verify_model(topk3, input_data=input_data) @@ -2309,22 +2382,38 @@ def test_forward_eye(): class Eye1(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return paddle.eye(3, 5, dtype="int32"), paddle.eye(3, 5, dtype="float32"), inputs + return ( + paddle.eye(3, 5, dtype="int32"), + paddle.eye(3, 5, dtype="float32"), + inputs, + ) class Eye2(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return paddle.eye(5, 3, dtype="int64"), paddle.eye(5, 3, dtype="float64"), inputs + return ( + paddle.eye(5, 3, dtype="int64"), + paddle.eye(5, 3, dtype="float64"), + inputs, + ) class Eye3(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return paddle.eye(0, 3, dtype="int64"), paddle.eye(0, 0, dtype="float64"), inputs + return ( + paddle.eye(0, 3, dtype="int64"), + paddle.eye(0, 0, dtype="float64"), + inputs, + ) class Eye4(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return paddle.eye(4, None, dtype="int64"), paddle.eye(4, None, dtype="float64"), inputs + return ( + paddle.eye(4, None, dtype="int64"), + paddle.eye(4, None, dtype="float64"), + inputs, + ) x = paddle.to_tensor([1], dtype="float32") verify_model(Eye1(), input_data=[x]) From 9d8e0efa514449362785b95248cd4e2d89829010 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 26 May 2023 18:18:17 +0800 Subject: [PATCH 10/22] Update test_forward.py back --- .../frontend/paddlepaddle/test_forward.py | 215 +++++------------- 1 file changed, 63 insertions(+), 152 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 51d598ddc85f..30fa70967867 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -101,9 +101,9 @@ def verify_model(func, input_data, use_vm=False, rtol=1e-5, atol=1e-5): else: tvm_vm_input.append(data.numpy()) for target, dev in tvm.testing.enabled_targets(): - result = relay.create_executor( - "vm", mod=mod, device=dev, target=target - ).evaluate()(*tvm_vm_input, **params) + result = relay.create_executor("vm", mod=mod, device=dev, target=target).evaluate()( + *tvm_vm_input, **params + ) tvm_vm_output = [] if isinstance(result, tvm.runtime.NDArray): tvm_vm_output = result.numpy() @@ -114,9 +114,7 @@ def verify_model(func, input_data, use_vm=False, rtol=1e-5, atol=1e-5): for i, baseline_output in enumerate(baseline_outputs): assert_shapes_match(baseline_output, tvm_vm_output[i]) - tvm.testing.assert_allclose( - baseline_output, tvm_vm_output[i], rtol=rtol, atol=atol - ) + tvm.testing.assert_allclose(baseline_output, tvm_vm_output[i], rtol=rtol, atol=atol) else: with tvm.transform.PassContext(opt_level=3): for target, dev in tvm.testing.enabled_targets(): @@ -267,9 +265,7 @@ def forward(self, inputs): # Avoid duplicate elements in the array which will bring # different results with different sort algorithms np.random.seed(13) - np_data = np.random.choice( - range(-5000, 5000), np.prod(input_shape), replace=False - ) + np_data = np.random.choice(range(-5000, 5000), np.prod(input_shape), replace=False) input_data = paddle.to_tensor(np_data.reshape(input_shape).astype("int64")) verify_model(ArgSort1(), [input_data]) verify_model(ArgSort2(), [input_data]) @@ -446,9 +442,7 @@ def forward(self, inputs, min_value, max_value): def test_forward_concat_unsqueeze(): @paddle.jit.to_static def concat_unsqueeze1(inputs): - return paddle.concat( - [inputs[:, 0].unsqueeze(1), inputs[:, 1].unsqueeze(1)], axis=1 - ) + return paddle.concat([inputs[:, 0].unsqueeze(1), inputs[:, 1].unsqueeze(1)], axis=1) @paddle.jit.to_static def concat_unsqueeze2(inputs): @@ -497,9 +491,7 @@ def cusum3(inputs): @tvm.testing.uses_gpu def test_forward_conv(): class Conv2D1(nn.Layer): - def __init__( - self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros" - ): + def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros"): super(Conv2D1, self).__init__() self.conv = nn.Conv2D( 3, @@ -519,12 +511,12 @@ def forward(self, inputs): class Conv2D2(nn.Layer): def __init__( - self, - stride=1, - padding=0, - dilation=1, - groups=1, - padding_mode="zeros", + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", data_layout="NCHW", ): super(Conv2D2, self).__init__() @@ -544,28 +536,21 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + input_shapes = [[1, 3, 10, 10], [1, 3, 12, 12]] for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Conv2D1(), input_data=input_data) - verify_model( - Conv2D1(stride=2, padding="VALID", dilation=3), input_data=input_data - ) - verify_model( - Conv2D1(stride=2, padding="SAME", dilation=3), input_data=input_data - ) + verify_model(Conv2D1(stride=2, padding="VALID", dilation=3), input_data=input_data) + verify_model(Conv2D1(stride=2, padding="SAME", dilation=3), input_data=input_data) verify_model( Conv2D1(stride=2, padding=3, dilation=3, padding_mode="replicate"), input_data=input_data, ) + verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), - input_data=input_data, - ) - verify_model( - Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), input_data=input_data, ) @@ -573,9 +558,7 @@ def forward(self, inputs): @tvm.testing.uses_gpu def test_forward_conv_transpose(): class Conv2DTranspose(nn.Layer): - def __init__( - self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros" - ): + def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros"): super(Conv2DTranspose, self).__init__() self.conv = nn.Conv2DTranspose( 6, @@ -598,21 +581,15 @@ def forward(self, inputs): input_data = paddle.rand(input_shape, dtype="float32") verify_model(Conv2DTranspose(), input_data=input_data) verify_model(Conv2DTranspose(stride=2, padding="VALID"), input_data=input_data) - verify_model( - Conv2DTranspose(stride=2, padding="SAME", dilation=1), input_data=input_data - ) + verify_model(Conv2DTranspose(stride=2, padding="SAME", dilation=1), input_data=input_data) verify_model(Conv2DTranspose(stride=2, padding=3), input_data=input_data) - verify_model( - Conv2DTranspose(stride=3, padding="SAME", groups=1), input_data=input_data - ) + verify_model(Conv2DTranspose(stride=3, padding="SAME", groups=1), input_data=input_data) @tvm.testing.uses_gpu def test_forward_conv3d(): class Conv3D(nn.Layer): - def __init__( - self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros" - ): + def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zeros"): super(Conv3D, self).__init__() self.conv = nn.Conv3D( 3, @@ -629,15 +606,15 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + class Conv3D2(nn.Layer): def __init__( - self, - stride=1, - padding=0, - dilation=1, - groups=1, - padding_mode="zeros", + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", data_layout="NCHW", ): super(Conv3D2, self).__init__() @@ -657,18 +634,14 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + input_shapes = [[1, 3, 10, 10, 10], [1, 3, 12, 12, 12]] for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Conv3D(), input_data=input_data) - verify_model( - Conv3D(stride=2, padding="VALID", dilation=3), input_data=input_data - ) - verify_model( - Conv3D(stride=2, padding="SAME", dilation=3), input_data=input_data - ) + verify_model(Conv3D(stride=2, padding="VALID", dilation=3), input_data=input_data) + verify_model(Conv3D(stride=2, padding="SAME", dilation=3), input_data=input_data) verify_model( Conv3D(stride=2, padding=(3, 3, 4, 4, 2, 2), dilation=3), input_data=input_data, @@ -681,14 +654,9 @@ def forward(self, inputs): Conv3D(stride=2, padding=3, dilation=3, padding_mode="replicate"), input_data=input_data, ) + verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv3D(stride=2, padding="SAME", dilation=2, groups=3), - input_data=input_data, - ) - verify_model( - Conv3D2( - stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW" - ), + Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW"), input_data=input_data, ) @@ -857,9 +825,7 @@ def __init__(self, start_axis=0, stop_axis=-1): @paddle.jit.to_static def forward(self, x): - return paddle.flatten( - x, start_axis=self.start_axis, stop_axis=self.stop_axis - ) + return paddle.flatten(x, start_axis=self.start_axis, stop_axis=self.stop_axis) input_data = paddle.rand([2, 3, 4, 5, 2], dtype="float32") verify_model(Flatten(), input_data=input_data) @@ -924,9 +890,7 @@ def test_forward_group_norm(): class GroupNorm(nn.Layer): def __init__(self, channels, groups): super(GroupNorm, self).__init__() - self.group_norm = paddle.nn.GroupNorm( - num_channels=channels, num_groups=groups - ) + self.group_norm = paddle.nn.GroupNorm(num_channels=channels, num_groups=groups) def forward(self, inputs): return self.group_norm(inputs) @@ -938,7 +902,7 @@ def forward(self, inputs): verify_model(GroupNorm(num_channels, 1), input_data, rtol=1e-4, atol=1e-4) verify_model(GroupNorm(num_channels, 2), input_data, rtol=1e-4, atol=1e-4) - + @tvm.testing.uses_gpu def test_forward_gaussian_random(): @paddle.jit.to_static @@ -951,10 +915,11 @@ def gaussian_random2(shape): shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] for shape in zip(shapes): + verify_model(gaussian_random1, shape=shape) verify_model(gaussian_random2, shape=shape) - + @tvm.testing.uses_gpu def test_forward_grid_sampler(): class GridSampler(nn.Layer): @@ -1049,11 +1014,7 @@ def full2(inputs): def test_forward_split(): class Split(nn.Layer): def __init__( - self, - axis=None, - num_or_sections=None, - axis_is_tensor=False, - num_is_tensor=False, + self, axis=None, num_or_sections=None, axis_is_tensor=False, num_is_tensor=False ): super(Split, self).__init__() self.axis = axis @@ -1080,12 +1041,10 @@ def forward(self, inputs): input_data = paddle.rand(input_shape, dtype="float32") verify_model(Split(axis=1, num_or_sections=3), input_data=input_data) verify_model( - Split(axis=[1], num_or_sections=[2, 3, 1], axis_is_tensor=True), - input_data=input_data, + Split(axis=[1], num_or_sections=[2, 3, 1], axis_is_tensor=True), input_data=input_data ) verify_model( - Split(axis=1, num_or_sections=[2, -1, [3]], num_is_tensor=True), - input_data=input_data, + Split(axis=1, num_or_sections=[2, -1, [3]], num_is_tensor=True), input_data=input_data ) @@ -1246,9 +1205,7 @@ def forward(self, x): verify_model(Interpolate(use_scale=True, use_const=True), input_data) verify_model(Interpolate(use_const=True, use_scaler=True), input_data) verify_model(Interpolate("bilinear", use_scale=True), input_data) - verify_model( - Interpolate("bilinear", use_scale=True, align_corners=True), input_data - ) + verify_model(Interpolate("bilinear", use_scale=True, align_corners=True), input_data) verify_model( Interpolate( "bilinear", @@ -1261,8 +1218,7 @@ def forward(self, x): input_data, ) verify_model( - Interpolate("bicubic", use_scale=True, align_corners=True, align_mode=1), - input_data, + Interpolate("bicubic", use_scale=True, align_corners=True, align_mode=1), input_data ) @@ -1270,9 +1226,7 @@ def forward(self, x): def test_forward_layer_norm(): @paddle.jit.to_static def layer_norm(inputs, weight, bias): - return nn.functional.layer_norm( - inputs, inputs.shape[-1], weight=weight, bias=bias - ) + return nn.functional.layer_norm(inputs, inputs.shape[-1], weight=weight, bias=bias) class LayerNorm(nn.Layer): def __init__(self): @@ -1453,9 +1407,7 @@ def test_forward_pad1d(): class Pad1D(nn.Layer): def __init__(self, padding=0, mode="constant", value=0.0, data_format="NCL"): super(Pad1D, self).__init__() - self.pad1d = paddle.nn.Pad1D( - padding, mode=mode, value=value, data_format=data_format - ) + self.pad1d = paddle.nn.Pad1D(padding, mode=mode, value=value, data_format=data_format) @paddle.jit.to_static def forward(self, inputs): @@ -1476,9 +1428,7 @@ def test_forward_pad2d(): class Pad2D(nn.Layer): def __init__(self, padding=0, mode="constant", value=0.0, data_format="NCHW"): super(Pad2D, self).__init__() - self.pad2d = paddle.nn.Pad2D( - padding, mode=mode, value=value, data_format=data_format - ) + self.pad2d = paddle.nn.Pad2D(padding, mode=mode, value=value, data_format=data_format) @paddle.jit.to_static def forward(self, inputs): @@ -1488,9 +1438,7 @@ def forward(self, inputs): for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Pad2D(padding=2), input_data=input_data) - verify_model( - Pad2D(padding=[1, 2, 0, 2], data_format="NHWC"), input_data=input_data - ) + verify_model(Pad2D(padding=[1, 2, 0, 2], data_format="NHWC"), input_data=input_data) verify_model(Pad2D(padding=[1, 2, 0, 2], value=0.3), input_data=input_data) verify_model(Pad2D(padding=[1, 2, 0, 2], mode="reflect"), input_data=input_data) verify_model(Pad2D(padding=3, mode="replicate"), input_data=input_data) @@ -1501,9 +1449,7 @@ def test_forward_pad3d(): class Pad3D(nn.Layer): def __init__(self, padding=0, mode="constant", value=0.0, data_format="NCDHW"): super(Pad3D, self).__init__() - self.pad3d = paddle.nn.Pad3D( - padding, mode=mode, value=value, data_format=data_format - ) + self.pad3d = paddle.nn.Pad3D(padding, mode=mode, value=value, data_format=data_format) @paddle.jit.to_static def forward(self, inputs): @@ -1513,16 +1459,9 @@ def forward(self, inputs): for input_shape in input_shapes: input_data = paddle.rand(input_shape, dtype="float32") verify_model(Pad3D(padding=2), input_data=input_data) - verify_model( - Pad3D(padding=[1, 2, 0, 2, 1, 1], data_format="NDHWC"), - input_data=input_data, - ) - verify_model( - Pad3D(padding=[1, 2, 0, 2, 1, 1], value=0.3), input_data=input_data - ) - verify_model( - Pad3D(padding=[1, 2, 0, 2, 1, 1], mode="reflect"), input_data=input_data - ) + verify_model(Pad3D(padding=[1, 2, 0, 2, 1, 1], data_format="NDHWC"), input_data=input_data) + verify_model(Pad3D(padding=[1, 2, 0, 2, 1, 1], value=0.3), input_data=input_data) + verify_model(Pad3D(padding=[1, 2, 0, 2, 1, 1], mode="reflect"), input_data=input_data) verify_model(Pad3D(padding=3, mode="replicate"), input_data=input_data) @@ -1554,9 +1493,7 @@ def __init__(self, op_name, axis=None, keepdim=False): @paddle.jit.to_static def forward(self, inputs): - result = getattr(paddle, self.op_name)( - inputs, axis=self.axis, keepdim=self.keepdim - ) + result = getattr(paddle, self.op_name)(inputs, axis=self.axis, keepdim=self.keepdim) result = result.astype("float32") return result @@ -1699,8 +1636,7 @@ def forward(self, inputs): verify_model(Unique(return_index=True), input_data=input_data) verify_model(Unique(return_index=True, return_inverse=True), input_data=input_data) verify_model( - Unique(return_index=True, return_inverse=True, return_counts=True), - input_data=input_data, + Unique(return_index=True, return_inverse=True, return_counts=True), input_data=input_data ) @@ -2022,14 +1958,10 @@ def arange1(inputs): @tvm.testing.uses_gpu def test_forward_rnn(): class RNN(nn.Layer): - def __init__( - self, api_name, input_size, hidden_size, num_layers, direction="forward" - ): + def __init__(self, api_name, input_size, hidden_size, num_layers, direction="forward"): super(RNN, self).__init__() rnn_func = getattr(paddle.nn, api_name, None) - self.rnn = rnn_func( - input_size, hidden_size, num_layers, direction=direction - ) + self.rnn = rnn_func(input_size, hidden_size, num_layers, direction=direction) @paddle.jit.to_static def forward(self, inputs, prev_h): @@ -2043,15 +1975,12 @@ def forward(self, inputs, prev_h): for api_name in ("SimpleRNN", "GRU"): prev_h = paddle.rand([4, 4, 16], dtype="float32") verify_model( - RNN( - api_name, input_size, hidden_size, num_layers, direction="bidirectional" - ), + RNN(api_name, input_size, hidden_size, num_layers, direction="bidirectional"), input_data=[input_data, prev_h], ) prev_h = paddle.rand([2, 4, 16], dtype="float32") verify_model( - RNN(api_name, input_size, hidden_size, num_layers), - input_data=[input_data, prev_h], + RNN(api_name, input_size, hidden_size, num_layers), input_data=[input_data, prev_h] ) @@ -2092,9 +2021,7 @@ def topk8(inputs): return paddle.fluid.layers.topk(inputs, k=2) input_data = paddle.to_tensor([[1, 4, 5, 7], [3, 6, 2, 5]], dtype=paddle.int32) - input_data_fp32 = paddle.to_tensor( - [[1, 4, 5, 7], [3, 6, 2, 5]], dtype=paddle.float32 - ) + input_data_fp32 = paddle.to_tensor([[1, 4, 5, 7], [3, 6, 2, 5]], dtype=paddle.float32) verify_model(topk1, input_data=input_data) # verify_model(topk2, input_data=input_data) verify_model(topk3, input_data=input_data) @@ -2382,38 +2309,22 @@ def test_forward_eye(): class Eye1(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return ( - paddle.eye(3, 5, dtype="int32"), - paddle.eye(3, 5, dtype="float32"), - inputs, - ) + return paddle.eye(3, 5, dtype="int32"), paddle.eye(3, 5, dtype="float32"), inputs class Eye2(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return ( - paddle.eye(5, 3, dtype="int64"), - paddle.eye(5, 3, dtype="float64"), - inputs, - ) + return paddle.eye(5, 3, dtype="int64"), paddle.eye(5, 3, dtype="float64"), inputs class Eye3(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return ( - paddle.eye(0, 3, dtype="int64"), - paddle.eye(0, 0, dtype="float64"), - inputs, - ) + return paddle.eye(0, 3, dtype="int64"), paddle.eye(0, 0, dtype="float64"), inputs class Eye4(nn.Layer): @paddle.jit.to_static def forward(self, inputs): - return ( - paddle.eye(4, None, dtype="int64"), - paddle.eye(4, None, dtype="float64"), - inputs, - ) + return paddle.eye(4, None, dtype="int64"), paddle.eye(4, None, dtype="float64"), inputs x = paddle.to_tensor([1], dtype="float32") verify_model(Eye1(), input_data=[x]) From 667efca738fcb34908eccd4f9796c7144b24f349 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Sun, 28 May 2023 17:09:02 +0800 Subject: [PATCH 11/22] Update test_forward.py check lint --- .../frontend/paddlepaddle/test_forward.py | 41 ++++++++++--------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 30fa70967867..458e3152e627 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -511,12 +511,12 @@ def forward(self, inputs): class Conv2D2(nn.Layer): def __init__( - self, - stride=1, - padding=0, - dilation=1, - groups=1, - padding_mode="zeros", + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", data_layout="NCHW", ): super(Conv2D2, self).__init__() @@ -536,7 +536,7 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + input_shapes = [[1, 3, 10, 10], [1, 3, 12, 12]] for input_shape in input_shapes: @@ -550,7 +550,7 @@ def forward(self, inputs): ) verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), input_data=input_data, ) @@ -606,15 +606,15 @@ def __init__(self, stride=1, padding=0, dilation=1, groups=1, padding_mode="zero @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + class Conv3D2(nn.Layer): def __init__( - self, - stride=1, - padding=0, - dilation=1, - groups=1, - padding_mode="zeros", + self, + stride=1, + padding=0, + dilation=1, + groups=1, + padding_mode="zeros", data_layout="NCHW", ): super(Conv3D2, self).__init__() @@ -634,7 +634,7 @@ def __init__( @paddle.jit.to_static def forward(self, inputs): return self.softmax(self.conv(inputs)) - + input_shapes = [[1, 3, 10, 10, 10], [1, 3, 12, 12, 12]] for input_shape in input_shapes: @@ -656,7 +656,9 @@ def forward(self, inputs): ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW"), + Conv3D2( + stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW" + ), input_data=input_data, ) @@ -902,7 +904,7 @@ def forward(self, inputs): verify_model(GroupNorm(num_channels, 1), input_data, rtol=1e-4, atol=1e-4) verify_model(GroupNorm(num_channels, 2), input_data, rtol=1e-4, atol=1e-4) - + @tvm.testing.uses_gpu def test_forward_gaussian_random(): @paddle.jit.to_static @@ -915,11 +917,10 @@ def gaussian_random2(shape): shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] for shape in zip(shapes): - verify_model(gaussian_random1, shape=shape) verify_model(gaussian_random2, shape=shape) - + @tvm.testing.uses_gpu def test_forward_grid_sampler(): class GridSampler(nn.Layer): From 4879f33db4687c236d437d2212ae3eac07f8248f Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Mon, 29 May 2023 15:07:52 +0800 Subject: [PATCH 12/22] Update test_forward.py lint --- tests/python/frontend/paddlepaddle/test_forward.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 458e3152e627..e93babcba0d3 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -656,9 +656,7 @@ def forward(self, inputs): ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv3D2( - stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW" - ), + Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW"), input_data=input_data, ) From e56b750c4a10d3002f3bcfcbf34178dab16258f6 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Tue, 30 May 2023 15:12:16 +0800 Subject: [PATCH 13/22] trigger check again --- tests/python/frontend/paddlepaddle/test_forward.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index e93babcba0d3..04430b38eb77 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -1814,7 +1814,7 @@ def Softplus2(input): def Softplus3(input): return nn.functional.Softplus(input, beta=1.0, threshold=10.0) - x = paddle.to_tensor([-9.0, -12.0, 1.0, 18.0, 25.0]) + x = paddle.to_tensor([-8.0, -12.0, 1.0, 18.0, 25.0]) verify_model(Softplus1, x) verify_model(Softplus2, x) verify_model(Softplus3, x) From 11ad694c02ca2d0eba9249ab6915f4662f213d70 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Wed, 31 May 2023 11:39:22 +0800 Subject: [PATCH 14/22] fix gpu CI error 1.module 'paddle.nn.functional' has no attribute 'Softplus',change 'Softplus' to 'softplus' 2.test_forward_conv3d and test_forward_conv2d __init__() got an unexpected keyword argument 'data_layout',change 'data_layout' to 'data_format' 3.test_forward_gaussian_random verify_model() got an unexpected keyword argument 'shape',change 'shape' to 'input_data' --- .../frontend/paddlepaddle/test_forward.py | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 04430b38eb77..f437b103594c 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -517,7 +517,7 @@ def __init__( dilation=1, groups=1, padding_mode="zeros", - data_layout="NCHW", + data_format="NCHW", ): super(Conv2D2, self).__init__() self.conv = nn.Conv2D( @@ -529,7 +529,7 @@ def __init__( dilation=dilation, groups=groups, padding_mode=padding_mode, - data_layout=data_layout, + data_layout=data_format, ) self.softmax = nn.Softmax() @@ -550,7 +550,7 @@ def forward(self, inputs): ) verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NHWC"), + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_format="NHWC"), input_data=input_data, ) @@ -615,7 +615,7 @@ def __init__( dilation=1, groups=1, padding_mode="zeros", - data_layout="NCHW", + data_format="NCDHW", ): super(Conv3D2, self).__init__() self.conv = nn.Conv3D( @@ -627,7 +627,7 @@ def __init__( dilation=dilation, groups=groups, padding_mode=padding_mode, - data_layout=data_layout, + data_layout=data_format, ) self.softmax = nn.Softmax() @@ -656,7 +656,7 @@ def forward(self, inputs): ) verify_model(Conv3D(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_layout="NCDHW"), + Conv3D2(stride=2, padding="SAME", dilation=2, groups=3, data_format="NCDHW"), input_data=input_data, ) @@ -906,17 +906,17 @@ def forward(self, inputs): @tvm.testing.uses_gpu def test_forward_gaussian_random(): @paddle.jit.to_static - def gaussian_random1(shape): - return paddle.fluid.layers.gaussian_random(shape) + def gaussian_random1(inputs): + return paddle.fluid.layers.gaussian_random(inputs) @paddle.jit.to_static - def gaussian_random2(shape): - return paddle.fluid.layers.gaussian_random(shape, dtype="float32") + def gaussian_random2(inputs): + return paddle.fluid.layers.gaussian_random(inputs, dtype="float32") shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] for shape in zip(shapes): - verify_model(gaussian_random1, shape=shape) - verify_model(gaussian_random2, shape=shape) + verify_model(gaussian_random1, input_data=shape) + verify_model(gaussian_random2, input_data=shape) @tvm.testing.uses_gpu @@ -1804,15 +1804,15 @@ def test_forward_sin(): def test_forward_softplus(): @paddle.jit.to_static def Softplus1(input): - return nn.functional.Softplus(input, beta=1.0, threshold=20.0) + return paddle.nn.functional.softplus(input, beta=1.0, threshold=20.0) @paddle.jit.to_static def Softplus2(input): - return nn.functional.Softplus(input, beta=6.0, threshold=20.0) + return paddle.nn.functional.softplus(input, beta=6.0, threshold=20.0) @paddle.jit.to_static def Softplus3(input): - return nn.functional.Softplus(input, beta=1.0, threshold=10.0) + return paddle.nn.functional.softplus(input, beta=1.0, threshold=10.0) x = paddle.to_tensor([-8.0, -12.0, 1.0, 18.0, 25.0]) verify_model(Softplus1, x) From 33fdaa41e268e6c95b2bf242bd14a6e7928e99f1 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Wed, 31 May 2023 18:50:16 +0800 Subject: [PATCH 15/22] fix gpu CI error --- tests/python/frontend/paddlepaddle/test_forward.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index f437b103594c..17637aef9f3c 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -529,7 +529,7 @@ def __init__( dilation=dilation, groups=groups, padding_mode=padding_mode, - data_layout=data_format, + data_format=data_format, ) self.softmax = nn.Softmax() @@ -627,7 +627,7 @@ def __init__( dilation=dilation, groups=groups, padding_mode=padding_mode, - data_layout=data_format, + data_format=data_format, ) self.softmax = nn.Softmax() @@ -915,8 +915,8 @@ def gaussian_random2(inputs): shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] for shape in zip(shapes): - verify_model(gaussian_random1, input_data=shape) - verify_model(gaussian_random2, input_data=shape) + verify_model(gaussian_random1, input_data=paddle.to_tensor(shape)) + verify_model(gaussian_random2, input_data=paddle.to_tensor(shape)) @tvm.testing.uses_gpu From b4e272eccc20fb05962c5ed3de29d62fd86107ff Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Wed, 31 May 2023 19:31:07 +0800 Subject: [PATCH 16/22] fix softplus AssertionError --- python/tvm/relay/frontend/paddlepaddle.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/python/tvm/relay/frontend/paddlepaddle.py b/python/tvm/relay/frontend/paddlepaddle.py index 6043abe214f2..207fe67e8ea9 100755 --- a/python/tvm/relay/frontend/paddlepaddle.py +++ b/python/tvm/relay/frontend/paddlepaddle.py @@ -2173,10 +2173,11 @@ def convert_softplus(g, op, block): if threshold is None: threshold = _expr.const(20.0, dtype=dtype) threshold = _expr.const(threshold, dtype=dtype) - if x * beta <= threshold: - out = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta - else: - out = x + boundary = x * beta + condition = tvm.relay.greater(boundary, tvm.relay.const(threshold, dtype)) + softplus_0 = x + softplus_1 = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta + out = _op.where(condition, softplus_0, softplus_1) g.add_node(op.output("Out")[0], out) From 22f397e36eb2e3b0c4be71d3fcd83bf5af95c4f3 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Thu, 1 Jun 2023 09:58:10 +0800 Subject: [PATCH 17/22] fix gpu CI error --- tests/python/frontend/paddlepaddle/test_forward.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 17637aef9f3c..263dbfb00912 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -550,7 +550,7 @@ def forward(self, inputs): ) verify_model(Conv2D1(stride=2, padding="SAME", dilation=2, groups=3), input_data=input_data) verify_model( - Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_format="NHWC"), + Conv2D2(stride=2, padding="SAME", dilation=2, groups=3, data_format="NCHW"), input_data=input_data, ) @@ -913,10 +913,10 @@ def gaussian_random1(inputs): def gaussian_random2(inputs): return paddle.fluid.layers.gaussian_random(inputs, dtype="float32") - shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] + shapes = [20, 8, 8] for shape in zip(shapes): - verify_model(gaussian_random1, input_data=paddle.to_tensor(shape)) - verify_model(gaussian_random2, input_data=paddle.to_tensor(shape)) + verify_model(gaussian_random1, input_data=shape) + verify_model(gaussian_random2, input_data=shape) @tvm.testing.uses_gpu From 30888e7a3fdc9819d75c571e8d47258c4eca07e5 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Thu, 1 Jun 2023 10:04:03 +0800 Subject: [PATCH 18/22] fix gpu CI error --- python/tvm/relay/frontend/paddlepaddle.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/python/tvm/relay/frontend/paddlepaddle.py b/python/tvm/relay/frontend/paddlepaddle.py index 207fe67e8ea9..59f4b8fa521f 100755 --- a/python/tvm/relay/frontend/paddlepaddle.py +++ b/python/tvm/relay/frontend/paddlepaddle.py @@ -2173,11 +2173,8 @@ def convert_softplus(g, op, block): if threshold is None: threshold = _expr.const(20.0, dtype=dtype) threshold = _expr.const(threshold, dtype=dtype) - boundary = x * beta - condition = tvm.relay.greater(boundary, tvm.relay.const(threshold, dtype)) - softplus_0 = x - softplus_1 = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta - out = _op.where(condition, softplus_0, softplus_1) + out_softplus = _op.log(_op.exp(x * beta) + _expr.const(1.0, dtype=dtype)) / beta + out = _op.where(_op.greater(x * beta, threshold), x, out_softplus) g.add_node(op.output("Out")[0], out) From 109edb9108d4ba86d5e3b827edc1d45ed1277e61 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Thu, 1 Jun 2023 10:20:12 +0800 Subject: [PATCH 19/22] fix the "dtype" error of gaussian_random --- python/tvm/relay/frontend/paddlepaddle.py | 1 + 1 file changed, 1 insertion(+) diff --git a/python/tvm/relay/frontend/paddlepaddle.py b/python/tvm/relay/frontend/paddlepaddle.py index 59f4b8fa521f..827ad0e2bdd3 100755 --- a/python/tvm/relay/frontend/paddlepaddle.py +++ b/python/tvm/relay/frontend/paddlepaddle.py @@ -826,6 +826,7 @@ def convert_gaussian_random(g, op, block): shape = op.attr("shape") seed = op.attr("seed") dtype = op.attr("dtype") + dtype = _convert_dtype_value(dtype) out = _op.random.normal(key=seed, shape=shape, dtype=dtype, mean=mean, scale=std) g.add_node(op.output("Out")[0], out) From 3b78def86d8fc46618f1852dd1d2578f7e0400ea Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Thu, 1 Jun 2023 17:16:30 +0800 Subject: [PATCH 20/22] fix gpu CI error of input_data of test_forward_gaussian_random --- tests/python/frontend/paddlepaddle/test_forward.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 263dbfb00912..c4f9c9ac053a 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -915,8 +915,8 @@ def gaussian_random2(inputs): shapes = [20, 8, 8] for shape in zip(shapes): - verify_model(gaussian_random1, input_data=shape) - verify_model(gaussian_random2, input_data=shape) + verify_model(gaussian_random1, input_data=paddle.to_tensor(shape)) + verify_model(gaussian_random2, input_data=paddle.to_tensor(shape)) @tvm.testing.uses_gpu From ce44bfb397a068afe9e0c50cf22a369434aa2da0 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 2 Jun 2023 04:59:46 +0800 Subject: [PATCH 21/22] Update test_forward.py for gaussian_random CI --- tests/python/frontend/paddlepaddle/test_forward.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index c4f9c9ac053a..93a70e551394 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -907,16 +907,17 @@ def forward(self, inputs): def test_forward_gaussian_random(): @paddle.jit.to_static def gaussian_random1(inputs): - return paddle.fluid.layers.gaussian_random(inputs) + return paddle.fluid.layers.gaussian_random(paddle.shape(inputs)) @paddle.jit.to_static def gaussian_random2(inputs): - return paddle.fluid.layers.gaussian_random(inputs, dtype="float32") + return paddle.fluid.layers.gaussian_random(paddle.shape(inputs), dtype="float32") - shapes = [20, 8, 8] - for shape in zip(shapes): - verify_model(gaussian_random1, input_data=paddle.to_tensor(shape)) - verify_model(gaussian_random2, input_data=paddle.to_tensor(shape)) + shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] + for shape in shapes: + input_data = paddle.randn(shape=shape, dtype="float32") + verify_model(gaussian_random1, input_data=input_data) + verify_model(gaussian_random2, input_data=input_data) @tvm.testing.uses_gpu From ec8a550d7351d512dbe930be7b33d3f735914d85 Mon Sep 17 00:00:00 2001 From: ZMW <47976569+TheFormerWalker@users.noreply.github.com> Date: Fri, 2 Jun 2023 11:46:54 +0800 Subject: [PATCH 22/22] Update test_forward.py delete test_forward_gaussian_random --- .../frontend/paddlepaddle/test_forward.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/tests/python/frontend/paddlepaddle/test_forward.py b/tests/python/frontend/paddlepaddle/test_forward.py index 93a70e551394..bbe3daeb916c 100755 --- a/tests/python/frontend/paddlepaddle/test_forward.py +++ b/tests/python/frontend/paddlepaddle/test_forward.py @@ -903,23 +903,6 @@ def forward(self, inputs): verify_model(GroupNorm(num_channels, 2), input_data, rtol=1e-4, atol=1e-4) -@tvm.testing.uses_gpu -def test_forward_gaussian_random(): - @paddle.jit.to_static - def gaussian_random1(inputs): - return paddle.fluid.layers.gaussian_random(paddle.shape(inputs)) - - @paddle.jit.to_static - def gaussian_random2(inputs): - return paddle.fluid.layers.gaussian_random(paddle.shape(inputs), dtype="float32") - - shapes = [[20], [8, 8], [4, 5, 6], [3, 4, 3, 5]] - for shape in shapes: - input_data = paddle.randn(shape=shape, dtype="float32") - verify_model(gaussian_random1, input_data=input_data) - verify_model(gaussian_random2, input_data=input_data) - - @tvm.testing.uses_gpu def test_forward_grid_sampler(): class GridSampler(nn.Layer):