Skip to content

Commit

Permalink
update docs/guides/model_convert/convert_from_pytorch/api_difference/…
Browse files Browse the repository at this point in the history
…cuda
  • Loading branch information
ZS-YANG committed Aug 15, 2023
1 parent eb1a7d7 commit d82026a
Show file tree
Hide file tree
Showing 27 changed files with 111 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ torch.cuda.DoubleTensor(data)
### [paddle.to_tensor](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/to_tensor_cn.html#to-tensor)

```python
paddle.to_tensor(data, dtype='float64', place='gpu')
paddle.to_tensor(data, dtype='float64', place='gpu', stop_gradient=True)
```

Paddle 比 PyTorch 支持更多参数,具体如下:
Expand All @@ -20,3 +20,4 @@ Paddle 比 PyTorch 支持更多参数,具体如下:
| ------- | ------------ | ----------------------------------------------------------- |
| - | dtype | Tensor 的数据类型,Pytorch 无此参数,Paddle 需设置为 'float64'。 |
| - | place | Tensor 的设备,Pytorch 无此参数,Paddle 需设置为 'gpu' 。 |
| - | stop_gradient | Tensor 的设备,Pytorch 无此参数,Paddle 保持默认即可。 |
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@
torch.cuda.Event(enable_timing=False, blocking=False, interprocess=False)
```

### [paddle.device.cuda.Event](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/Event_cn.html#event)
### [paddle.device.cuda.Event](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/Event_cn.html)

```python
paddle.device.cuda.Event(enable_timing=False, blocking=False, interprocess=False)
```

功能一致,参数完全一致,具体如下:
### 参数映射
| PyTorch | PaddlePaddle | 备注 |
| ------------- | ------------ | ------------------------------------------------------ |
| enable_timing | enable_timing | 表示是否需要统计时间。默认值为 False。 |
| blocking| blocking | 表示 wait()函数是否被阻塞。默认值为 False。 |
| interprocess| interprocess | 表示是否能在进程间共享。默认值为 False。 |
| PyTorch | PaddlePaddle | 备注 |
|---------------|-------------------| ------------------------------------------------------ |
| enable_timing | enable_timing | 表示是否需要统计时间。默认值为 False。 |
| blocking | blocking | 表示 wait()函数是否被阻塞。默认值为 False。 |
| interprocess | interprocess | 表示是否能在进程间共享。默认值为 False。 |
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,16 @@ torch.cuda.HalfTensor(data)
### [paddle.to_tensor](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/to_tensor_cn.html#to-tensor)

```python
paddle.to_tensor(data, dtype='float16', place='gpu')
paddle.to_tensor(data, dtype='float16', place='gpu', stop_gradient=True)
```

Paddle 比 PyTorch 支持更多参数,具体如下:

### 参数映射

| PyTorch | PaddlePaddle | 备注 |
| ------- | ------------ | ----------------------------------------------------------- |
| - | dtype | Tensor 的数据类型,Pytorch 无此参数,Paddle 需设置为 'float16'。 |
| - | place | Tensor 的设备,Pytorch 无此参数,Paddle 需设置为 'gpu' 。 |
| PyTorch | PaddlePaddle | 备注 |
|---------| ------------ |--------------------------------------------------|
| data | data | Tensor。 |
| - | dtype | Tensor 的数据类型,Pytorch 无此参数,Paddle 需设置为 'float16'。 |
| - | place | Tensor 的设备,Pytorch 无此参数,Paddle 需设置为 'gpu' 。 |
| - | stop_gradient | Tensor 的设备,Pytorch 无此参数,Paddle 保持默认即可。 |
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ torch.cuda.ShortTensor(data)
### [paddle.to_tensor](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/to_tensor_cn.html#to-tensor)

```python
paddle.to_tensor(data, dtype='int16', place='gpu')
paddle.to_tensor(data, dtype='int16', place='gpu', stop_gradient=True)
```

Paddle 比 PyTorch 支持更多参数,具体如下:
Expand All @@ -20,3 +20,4 @@ Paddle 比 PyTorch 支持更多参数,具体如下:
| ------- | ------------ | ----------------------------------------------------------- |
| - | dtype | Tensor 的数据类型,Pytorch 无此参数,Paddle 需设置为 'int16'。 |
| - | place | Tensor 的设备,Pytorch 无此参数,Paddle 需设置为 'gpu' 。 |
| - | stop_gradient | Tensor 的设备,Pytorch 无此参数,Paddle 保持默认即可。 |
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
torch.cuda.Stream(device=None, priority=0, **kwargs)
```

### [paddle.device.cuda.Stream](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/Stream_cn.html)
### [paddle.device.cuda.Stream](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/Stream_cn.html)

```python
paddle.device.cuda.Stream(device=None, priority=None)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,46 +1,27 @@
## [paddle 参数更多]torch.cuda.amp.GradScaler
## [仅参数默认值不一致]torch.cuda.amp.GradScaler

### [torch.cuda.amp.GradScaler](https://pytorch.org/docs/stable/amp.html#torch.cuda.amp.GradScaler)

```python
torch.cuda.amp.GradScaler(init_scale=65536.0, growth_factor=2.0, backoff_factor=0.5, growth_interval=2000, enabled=True)
```

### [paddle.amp.GradScaler](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/amp/GradScaler_cn.html)
### [paddle.amp.GradScaler](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/amp/GradScaler_cn.html)

```python
paddle.amp.GradScaler(enable=True, init_loss_scaling=32768.0, incr_ratio=2.0, decr_ratio=0.5, incr_every_n_steps=1000, decr_every_n_nan_or_inf=2, use_dynamic_loss_scaling=True)
```

其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
其中 Paddle 相比 PyTorch 支持更多其他参数且参数默认值不一致,具体如下:

### 参数映射

| PyTorch | PaddlePaddle | 备注 |
| --------------- | ------------------------ | ------------------------------------------------------------ |
| init_scale | init_loss_scaling | 初始 loss scaling 因子。与 Pytorch 默认值不同,需要转写。 |
| growth_factor | incr_ratio | 增大 loss scaling 时使用的乘数。 |
| backoff_factor | decr_ratio | 减小 loss scaling 时使用的小于 1 的乘数。 |
| growth_interval | incr_every_n_steps | 连续 n 个 steps 的梯度都是有限值时,增加 loss scaling。与 Pytorch 默认值不同,需要转写。 |
| enabled | enable | 是否使用 loss scaling。 |
| PyTorch | PaddlePaddle | 备注 |
| --------------- | ------------------------ |-----------------------------------------------------------------------------|
| init_scale | init_loss_scaling | 初始 loss scaling 因子。与 Pytorch 默认值不同, Paddle 需设为 32768.0。 |
| growth_factor | incr_ratio | 增大 loss scaling 时使用的乘数。 |
| backoff_factor | decr_ratio | 减小 loss scaling 时使用的小于 1 的乘数。 |
| growth_interval | incr_every_n_steps | 连续 n 个 steps 的梯度都是有限值时,增加 loss scaling。与 Pytorch 默认值不同, Paddle 需设为 1000。 |
| enabled | enable | 是否使用 loss scaling。 |
| - | decr_every_n_nan_or_inf | 累计出现 n 个 steps 的梯度为 nan 或者 inf 时,减小 loss scaling,PyTorch 无此参数,Paddle 保持默认即可。 |
| - | use_dynamic_loss_scaling | 是否使用动态的 loss scaling,PyTorch 无此参数,Paddle 保持默认即可。 |


### 转写示例
#### init_scale:表示初始化 loss scaling 因子
```python
# Pytorch 写法
scale = torch.cuda.amp.GradScaler(init_scale=65536.0)

# Paddle 写法
scale = torch.cuda.amp.GradScaler(init_loss_scaling=65536.0)
```
#### growth_interval:连续 n 个 steps 的梯度都是有限值时
```python
# Pytorch 写法
scale = torch.cuda.amp.GradScaler(growth_interval=2000)

# Paddle 写法
scale = torch.cuda.amp.GradScaler(incr_every_n_steps=2000)
```
| - | use_dynamic_loss_scaling | 是否使用动态的 loss scaling,PyTorch 无此参数,Paddle 保持默认即可。 |
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
## [paddle 参数更多]torch.cuda.amp.autocast
## [torch 参数更多]torch.cuda.amp.autocast

### [torch.cuda.amp.autocast](https://pytorch.org/docs/stable/amp.html#torch.cuda.amp.autocast)

```python
torch.cuda.amp.autocast(enabled=True, dtype=torch.float16, cache_enabled=True)
```

### [paddle.amp.auto_cast](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/amp/auto_cast_cn.html)
### [paddle.amp.auto_cast](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/amp/auto_cast_cn.html)

```python
paddle.amp.auto_cast(enable=True, custom_white_list=None, custom_black_list=None, level='O1', dtype='float16')
paddle.amp.auto_cast(enable=True, custom_white_list=None, custom_black_list=None, level='O1', dtype='float16', use_promote=True)
```

其中 Paddle 相比 PyTorch 支持更多其他参数,具体如下:
Expand All @@ -24,3 +24,4 @@ paddle.amp.auto_cast(enable=True, custom_white_list=None, custom_black_list=None
| - | custom_white_list | 自定义算子白名单,PyTorch 无此参数,Paddle 保持默认即可。 |
| - | custom_black_list | 自定义算子黑名单,PyTorch 无此参数,Paddle 保持默认即可。 |
| - | level | 混合精度训练模式,PyTorch 无此参数,Paddle 保持默认即可。 |
| - | use_promote | 当一个算子存在 float32 类型的输入时,按照 Promote to the Widest 原则,选择 float32 数据类型进行计算。仅在 AMP-O2 训练时可配置。默认为 True。,PyTorch 无此参数,Paddle 保持默认即可。 |
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@
torch.cuda.comm.broadcast(tensor, devices=None, *, out=None)
```

### [paddle.distributed.broadcast](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/distributed/broadcast_cn.html)
### [paddle.distributed.broadcast](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/distributed/broadcast_cn.html)

```python
paddle.distributed.broadcast(tensor, src, group=0)
paddle.distributed.broadcast(tensor, src, group=None, sync_op=True)
```

Pytorch 相比 Paddle 支持更多其他参数,具体如下:
Expand All @@ -18,10 +18,11 @@ Pytorch 相比 Paddle 支持更多其他参数,具体如下:

| PyTorch | PaddlePaddle | 备注 |
| ------- | ------------ | ------------------------------------------------------------ |
| tensor | tensor | 如果当前进程编号是源,那么这个 Tensor 变量将被发送给其他进程|
| tensor | tensor | 在目标进程上为待广播的 tensor,在其他进程上为用于接收广播结果的 tensor|
| devices | src | 发送源的进程编号。 |
| out | - | 表示输出的 Tensor ,Paddle 无此参数,需要转写。 |
| - | group | 工作的进程组编号,PyTorch 无此参数,Paddle 保持默认即可。 |
| - | sync_op | 该操作是否为同步操作。默认为 True,即同步操作。PyTorch 无此参数,Paddle 保持默认即可。 |

### 转写示例

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
torch.cuda.current_stream(device=None)
```

### [paddle.device.cuda.current_stream](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/current_stream_cn.html)
### [paddle.device.cuda.current_stream](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/current_stream_cn.html)

```python
paddle.device.cuda.current_stream(device=None)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
torch.cuda.device_count()
```

### [paddle.device.cuda.device_count](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/device_count_cn.html)
### [paddle.device.cuda.device_count](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/device_count_cn.html)

```python
paddle.device.cuda.device_count()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
torch.cuda.empty_cache()
```

### [paddle.device.cuda.empty_cache](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/empty_cache_cn.html)
### [paddle.device.cuda.empty_cache](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/empty_cache_cn.html)

```python
paddle.device.cuda.empty_cache()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
torch.cuda.get_device_capability(device=None)
```

### [paddle.device.cuda.get_device_capability](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/get_device_capability_cn.html)
### [paddle.device.cuda.get_device_capability](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/get_device_capability_cn.html)

```python
paddle.device.cuda.get_device_capability(device=None)
```

功能一致,参数完全一致,具体如下:
### 参数映射
| PyTorch | PaddlePaddle | 备注 |
| ------------- | ------------ | ------------------------------------------------------ |
| device | device | 表示希望获取计算能力的设备或者设备 ID。如果 device 为 None(默认),则为当前的设备。 |
| PyTorch | PaddlePaddle | 备注 |
| ------------- |---------------------| ------------------------------------------------------ |
| device | device | 表示希望获取计算能力的设备或者设备 ID。如果 device 为 None(默认),则为当前的设备。 |
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,25 @@
torch.cuda.get_device_name(device=None)
```

### [paddle.device.cuda.get_device_properties](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/get_device_properties_cn.html#get-device-properties)
### [paddle.device.cuda.get_device_properties](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/get_device_properties_cn.html)

```python
paddle.device.cuda.get_device_properties(device)
```

两者的返回参数不一致,具体如下:

### 参数映射
| PyTorch | PaddlePaddle | 备注 |
| ------------- | ------------ | ------------------------------------------------------ |
| device | device | torch 的 device 参数类型为 torch.device 或 int 或 str。paddle 的 device 为 paddle.CUDAPlace 或 int 或 str。 |
| 返回值 | 返回值 | 两者返回类型不一致。torch 返回字符串,paddle 返回包含设备多个属性的数据结构,对其取 name 属性即可。需要转写。|

| PyTorch | PaddlePaddle | 备注 |
|---------|--------------|-----------------------------------------------------------------------------------------------|
| device | device | torch 的 device 参数类型为 torch.device 或 int 或 str。paddle 的 device 为 paddle.CUDAPlace 或 int 或 str。 |
| 返回值 | 返回值 | 两者返回类型不一致。torch 返回字符串,paddle 返回包含设备多个属性的数据结构,对其取 name 属性即可。需要转写。 |

### 转写示例

#### 返回值

```python
# pytorch
y = torch.cuda.get_device_name()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
torch.cuda.get_device_properties(device)
```

### [paddle.device.cuda.get_device_properties](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/get_device_properties_cn.html)
### [paddle.device.cuda.get_device_properties](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/get_device_properties_cn.html)

```python
paddle.device.cuda.get_device_properties(device)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## [仅 paddle 参数更多]torch.cuda.get_rng_state_all
## [参数不一致]torch.cuda.get_rng_state_all

### [torch.cuda.get_rng_state_all](https://pytorch.org/docs/stable/generated/torch.cuda.get_rng_state_all.html#torch.cuda.get_rng_state_all)

Expand All @@ -9,7 +9,7 @@ torch.cuda.get_rng_state_all()
### [paddle.get_rng_state]()

```python
paddle.get_rng_state(device=None)
paddle.get_rng_state(device='gpu')
```

paddle 参数更多,并且 torch 与 paddle 的返回参数类型不一致,具体如下:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
torch.cuda.is_available()
```

### [paddle.device.cuda.device_count](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/device/cuda/device_count_cn.html#device-count)
### [paddle.device.cuda.device_count](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/device/cuda/device_count_cn.html)

```python
paddle.device.cuda.device_count()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,19 +1,32 @@
## [参数完全一致]torch.cuda.manual_seed
## [参数不一致]torch.cuda.manual_seed

### [torch.cuda.manual_seed](https://pytorch.org/docs/stable/generated/torch.cuda.manual_seed.html#torch.cuda.manual_seed)

```python
torch.cuda.manual_seed(seed)
```

### [paddle.seed](https://www.paddlepaddle.org.cn/documentation/docs/zh/api/paddle/seed_cn.html)
### [paddle.seed](https://www.paddlepaddle.org.cn/documentation/docs/zh/develop/api/paddle/seed_cn.html)

```python
paddle.seed(seed)
```

功能一致,参数完全一致,具体如下:
功能一致,返回类型不一致,具体如下:

### 参数映射
| PyTorch | PaddlePaddle | 备注 |
| ------------- | ------------ | ------------------------------------------------------ |
| seed | seed | 表示设置的的随机种子。|

| PyTorch | PaddlePaddle | 备注 |
|---------|--------------|----------------------------------------------------|
| seed | seed | 表示设置的的随机种子(int)。 |
| - | 返回值 | Pytorch 无返回值,Paddle 返回 Generator(全局默认 generator 对象)。 |

### 转写示例
#### 返回值
```python
# torch 写法
torch.cuda.manual_seed(100)

# paddle 写法
gen = paddle.seed(100)
```
Loading

0 comments on commit d82026a

Please sign in to comment.