PyTorch与MindSpore API映射表
由社区提供的PyTorch APIs和MindSpore APIs之间的映射,可能在参数、输入、输出、逻辑功能和特定场景等方面存在差异,可详见各API描述或已提供的差异对比。
也欢迎更多的MindSpore开发者参与完善映射内容。
API映射一致标准及例外场景
API映射一致标准:API功能一致,参数个数或顺序一致,参数数据类型一致,参数默认值一致,参数名一致。同时满足所有一致条件被认为是API映射一致。
以下例外场景也被认为是API映射一致,
例外场景1:相较于API映射一致标准,仅API参数的输入数据类型支持范围不一样,包含以下2种子场景:
(1)MindSpore的API支持传入int、float、bool等类型的参数,但不支持传入int8或float64等小位宽数据类型的参数。
(2)MindSpore的API不支持传入复数类型的参数。
例外场景2:相较于MindSpore的API,PyTorch的API多出的参数是通用差异参数。通用差异参数存在的原因是PyTorch有部分参数是为性能优化等非功能性而增加的参数,MindSpore的性能优化机制与PyTorch不同。
例外场景3:如果能保证MindSpore的API在使用默认配置(或用户不配置)的情况下,能够实现与PyTorch对应API完全一致的功能,则MindSpore的API多于PyTorch的API的参数,功能不被认为是差异。
例外场景4:MindSpore将API中与PyTorch重载机制相关参数的默认值设置为None,PyTorch对应API的相应参数无默认值。
下面是例外场景4的举例, 在PyTorch 2.1中,torch.argmax具有两种API重载形式,分别是torch.argmax(input)和torch.argmax(input, dim, keepdim=False),其中torch.argmax(input)返回输入Tensor中的最大值元素的索引,torch.argmax(input, dim, keepdim=False)返回输入Tensor在指定轴上最大值的索引。
mindspore.mint.argmax只有一种API形式,即mindspore.mint.argmax(input, dim=None, keepdim=False),但mindspore.mint.argmax(input)与torch.argmax(input)功能相同,mindspore.mint.argmax(input, dim, keepdim)与torch.argmax(input, dim, keepdim)功能相同。相较于torch.argmax,mindspore.mint.argmax参数dim的默认值被设置为None,仅是为了适配torch.argmax的两种API重载形式,因此例外场景4也被认为是API映射一致。
通用差异参数表
因为框架机制原因,MindSpore不提供PyTorch的以下参数:
| 参数名 | 功能 | 说明 | 
|---|---|---|
| out | 表示输出的Tensor | 把运算结果赋值给out参数,MindSpore目前无此机制 | 
| layout | 表示内存分布策略 | PyTorch支持torch.strided和torch.sparse_coo两种模式, MindSpore目前无此机制 | 
| device | 表示Tensor存放位置 | 包含设备类型及可选设备号。MindSpore的支持方案如下: | 
| requires_grad | 表示是否更新梯度 | MindSpore中可以通过 | 
| pin_memory | 表示是否使用锁页内存 | MindSpore目前无此机制 | 
| memory_format | 表示Tensor的内存格式 | MindSpore目前无此机制 | 
| stable | 表示是否稳定排序 | 一般用在排序算法的API中,MindSpore目前无此功能 | 
| sparse_grad | 表示是否对梯度稀疏化 | MindSpore目前无此机制 | 
| size_average | PyTorch废弃参数 | MindSpore中可以使用 | 
| reduce | PyTorch废弃参数 | MindSpore中可以使用 | 
torch
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| 功能一致,参数dim默认值不同 | ||
| 功能一致,参数dim默认值不同 | ||
| 功能一致,参数end默认值不同 | ||
| 功能一致,参数名不一致 | ||
| 功能一致,MindSpore多dim和keepdim两个参数 | ||
| 功能一致,参数indexing默认值不同 | ||
| 功能一致,参数列表不一致 | ||
| 接口重载的参数不同 | ||
| 功能一致,参数low默认值不同 | ||
| 功能一致,PyTorch涉及重载 | ||
| 功能一致,参数side默认值不同 | ||
| 功能一致,参数dim默认值不同 | ||
torch.linalg
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
torch.distributed
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| - | MindSpore独有 | |
| 功能一致,参数名不一致 | ||
| MindSpore多参数group_desc=None | ||
| 功能一致,参数scatter_list默认值不同 | ||
torch.nn
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| 功能一致,MindSpore默认为推理模式 | ||
| 功能一致,MindSpore默认为推理模式 | ||
| 功能一致,MindSpore默认为推理模式 | ||
| 功能一致,MindSpore默认为推理模式 | ||
| 功能一致,MindSpore默认为推理模式 | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore多weight_init=None和bias_init=None两个参数 | ||
| 功能一致,MindSpore默认为推理模式 | ||
torch.nn.functional
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| mindspore.mint.nn.functional.binary_cross_entropy_with_logits | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数sparse | ||
| 功能一致,参数align_corners默认值不同 | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数antialias | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数inplace | ||
| 功能一致,MindSpore不含参数inplace | ||
torch.special
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
torch.Tensor
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
torch.optim
| PyTorch 2.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| 功能一致,PyTorch多一些优化参数 | ||
| 功能一致,PyTorch多一些优化参数 | 
torch.utils
| PyTorch 1.8.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
torchaudio
当前API映射表对应的PyTorch版本是1.8.1,Python版本不高于Python 3.9。
| TorchAudio 0.8.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| 一致 | ||
| 功能一致,参数名不同 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | 
torchtext
当前API映射表对应的PyTorch版本是1.8.1,Python版本不高于Python 3.9。
| TorchText 0.9.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
torchvision
当前API映射表对应的PyTorch版本是1.8.1,Python版本不高于Python 3.9。
| TorchVision 0.9.1 APIs | MindSpore APIs | 说明 | 
|---|---|---|
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 一致 | ||
| 功能一致,参数名不同 | ||
| 功能一致,参数名不同 | ||
| 一致 | ||
| 功能一致,参数名不同 | ||
| 功能一致,参数名不同 | ||
| 功能一致,参数名不同 | ||
| 一致 | ||
| 功能一致,参数名不同 | ||
| 一致 | ||
| 功能一致,参数名不同 | ||