已合并
【docs】Remove sample code from native API #44792
lyx324521创建于 8月18日
【docs】Remove sample code from native API #44792
已合并
共 30 个文件变更+121-754
| @@ -513,12 +513,7 @@ | |||
| 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | | 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | |
| 514 | | <term>Ascend 950DT</term> | ✘ | | 514 | | <term>Ascend 950DT</term> | ✘ | |
| 515 | 515 | ||
| 516 | -**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu”,例如: | 516 | +**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu” |
| 517 | - | ||
| 518 | -```python | ||
| 519 | -with torch.autograd.profiler.profile(use_device="npu") as prof: | ||
| 520 | - ... | ||
| 521 | -``` | ||
| 522 | 517 | ||
| 523 | </div> | 518 | </div> |
| 524 | 519 | ||
| @@ -539,12 +539,7 @@ | |||
| 539 | **限制与说明**: | 539 | **限制与说明**: |
| 540 | 540 | ||
| 541 | - `input`仅支持fp32 | 541 | - `input`仅支持fp32 |
| 542 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致,例如: | 542 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致 |
| 543 | - | ||
| 544 | - ```python | ||
| 545 | - import torch_npu | ||
| 546 | - torch_npu.npu.use_compatible_impl(True) | ||
| 547 | - ``` | ||
| 548 | 543 | ||
| 549 | </div> | 544 | </div> |
| 550 | 545 | ||
| @@ -655,12 +650,7 @@ | |||
| 655 | **限制与说明**: | 650 | **限制与说明**: |
| 656 | 651 | ||
| 657 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool | 652 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool |
| 658 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致,例如: | 653 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致 |
| 659 | - | ||
| 660 | - ```python | ||
| 661 | - import torch_npu | ||
| 662 | - torch_npu.npu.use_compatible_impl(True) | ||
| 663 | - ``` | ||
| 664 | 654 | ||
| 665 | </div> | 655 | </div> |
| 666 | 656 | ||
| @@ -695,12 +685,7 @@ | |||
| 695 | **限制与说明**: | 685 | **限制与说明**: |
| 696 | 686 | ||
| 697 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool | 687 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool |
| 698 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致,例如: | 688 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致 |
| 699 | - | ||
| 700 | - ```python | ||
| 701 | - import torch_npu | ||
| 702 | - torch_npu.npu.use_compatible_impl(True) | ||
| 703 | - ``` | ||
| 704 | 689 | ||
| 705 | </div> | 690 | </div> |
| 706 | 691 | ||
| @@ -243,12 +243,7 @@ | |||
| 243 | **限制与说明**: | 243 | **限制与说明**: |
| 244 | 244 | ||
| 245 | - `input`仅支持bf16,fp16,fp32 | 245 | - `input`仅支持bf16,fp16,fp32 |
| 246 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 246 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 247 | - | ||
| 248 | - ```python | ||
| 249 | - import torch_npu | ||
| 250 | - torch_npu.npu.use_compatible_impl(True) | ||
| 251 | - ``` | ||
| 252 | 247 | ||
| 253 | </div> | 248 | </div> |
| 254 | 249 | ||
| @@ -507,12 +502,7 @@ | |||
| 507 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 | 502 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 |
| 508 | - 与原接口除了规格限制之外的差异点: | 503 | - 与原接口除了规格限制之外的差异点: |
| 509 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 | 504 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 |
| 510 | - - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持,例如: | 505 | + - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持 |
| 511 | - | ||
| 512 | - ```python | ||
| 513 | - import torch_npu | ||
| 514 | - torch_npu.npu.use_compatible_impl(True) | ||
| 515 | - ``` | ||
| 516 | 506 | ||
| 517 | </div> | 507 | </div> |
| 518 | 508 | ||
| @@ -1662,11 +1652,7 @@ | |||
| 1662 | **限制与说明**: | 1652 | **限制与说明**: |
| 1663 | 1653 | ||
| 1664 | - `input`仅支持fp16,fp32,fp64 | 1654 | - `input`仅支持fp16,fp32,fp64 |
| 1665 | -- 只支持`mode` = nearest,例如: | 1655 | +- 只支持`mode` = nearest |
| 1666 | - | ||
| 1667 | - ```python | ||
| 1668 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1669 | - ``` | ||
| 1670 | 1656 | ||
| 1671 | </div> | 1657 | </div> |
| 1672 | 1658 | ||
| @@ -1685,11 +1671,7 @@ | |||
| 1685 | **限制与说明**: | 1671 | **限制与说明**: |
| 1686 | 1672 | ||
| 1687 | - `input`仅支持fp16,fp32,fp64 | 1673 | - `input`仅支持fp16,fp32,fp64 |
| 1688 | -- 只支持3-5维,例如: | 1674 | +- 只支持3-5维 |
| 1689 | - | ||
| 1690 | - ```python | ||
| 1691 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1692 | - ``` | ||
| 1693 | 1675 | ||
| 1694 | </div> | 1676 | </div> |
| 1695 | 1677 | ||
| @@ -1450,12 +1450,7 @@ | |||
| 1450 | **限制与说明**: | 1450 | **限制与说明**: |
| 1451 | 1451 | ||
| 1452 | - `input`仅支持bf16,fp16,fp32 | 1452 | - `input`仅支持bf16,fp16,fp32 |
| 1453 | -- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译,例如: | 1453 | +- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译 |
| 1454 | - | ||
| 1455 | - ```python | ||
| 1456 | - import torch_npu | ||
| 1457 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1458 | - ``` | ||
| 1459 | 1454 | ||
| 1460 | </div> | 1455 | </div> |
| 1461 | 1456 | ||
| @@ -1506,12 +1501,7 @@ | |||
| 1506 | **限制与说明**: | 1501 | **限制与说明**: |
| 1507 | 1502 | ||
| 1508 | - `input`仅支持fp16,fp32 | 1503 | - `input`仅支持fp16,fp32 |
| 1509 | -- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入,例如: | 1504 | +- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入 |
| 1510 | - | ||
| 1511 | - ```python | ||
| 1512 | - import torch_npu | ||
| 1513 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1514 | - ``` | ||
| 1515 | 1505 | ||
| 1516 | </div> | 1506 | </div> |
| 1517 | 1507 | ||
| @@ -1754,12 +1744,7 @@ | |||
| 1754 | **限制与说明**: | 1744 | **限制与说明**: |
| 1755 | 1745 | ||
| 1756 | - `input`仅支持bf16,fp16,fp32 | 1746 | - `input`仅支持bf16,fp16,fp32 |
| 1757 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 1747 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 1758 | - | ||
| 1759 | - ```python | ||
| 1760 | - import torch_npu | ||
| 1761 | - torch_npu.npu.use_compatible_impl(True) | ||
| 1762 | - ``` | ||
| 1763 | 1748 | ||
| 1764 | </div> | 1749 | </div> |
| 1765 | 1750 | ||
| @@ -2970,12 +2955,7 @@ | |||
| 2970 | **限制与说明**: | 2955 | **限制与说明**: |
| 2971 | 2956 | ||
| 2972 | - `input`仅支持bf16,fp16,fp32 | 2957 | - `input`仅支持bf16,fp16,fp32 |
| 2973 | -- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐,例如: | 2958 | +- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐 |
| 2974 | - | ||
| 2975 | - ```python | ||
| 2976 | - import torch_npu | ||
| 2977 | - torch_npu.npu.use_compatible_impl(True) | ||
| 2978 | - ``` | ||
| 2979 | 2959 | ||
| 2980 | </div> | 2960 | </div> |
| 2981 | 2961 | ||
| @@ -117,12 +117,7 @@ | |||
| 117 | **限制与说明**: | 117 | **限制与说明**: |
| 118 | 118 | ||
| 119 | - `params`仅支持bf16,fp16,fp32 | 119 | - `params`仅支持bf16,fp16,fp32 |
| 120 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 120 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 121 | - | ||
| 122 | - ```python | ||
| 123 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 124 | - optimizer = torch.optim.Adadelta(model.parameters(), lr=1e-3, foreach=False) | ||
| 125 | - ``` | ||
| 126 | 121 | ||
| 127 | > <font size="3">add_param_group()</font> | 122 | > <font size="3">add_param_group()</font> |
| 128 | 123 | ||
| @@ -295,12 +290,7 @@ | |||
| 295 | **限制与说明**: | 290 | **限制与说明**: |
| 296 | 291 | ||
| 297 | - `params`仅支持bf16,fp16,fp32 | 292 | - `params`仅支持bf16,fp16,fp32 |
| 298 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 293 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 299 | - | ||
| 300 | - ```python | ||
| 301 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 302 | - optimizer = torch.optim.Adagrad(model.parameters(), lr=1e-3, foreach=False) | ||
| 303 | - ``` | ||
| 304 | 294 | ||
| 305 | > <font size="3">add_param_group()</font> | 295 | > <font size="3">add_param_group()</font> |
| 306 | 296 | ||
| @@ -474,12 +464,7 @@ | |||
| 474 | 464 | ||
| 475 | - `params`仅支持bf16,fp16,fp32 | 465 | - `params`仅支持bf16,fp16,fp32 |
| 476 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 466 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 477 | -- 在某些情况下可能回退至CPU执行,例如: | 467 | +- 在某些情况下可能回退至CPU执行 |
| 478 | - | ||
| 479 | - ```python | ||
| 480 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 481 | - optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, foreach=False) | ||
| 482 | - ``` | ||
| 483 | 468 | ||
| 484 | > <font size="3">add_param_group()</font> | 469 | > <font size="3">add_param_group()</font> |
| 485 | 470 | ||
| @@ -653,12 +638,7 @@ | |||
| 653 | 638 | ||
| 654 | - `params`仅支持bf16,fp16,fp32,complex64 | 639 | - `params`仅支持bf16,fp16,fp32,complex64 |
| 655 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 640 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 656 | -- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致,例如: | 641 | +- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致 |
| 657 | - | ||
| 658 | - ```python | ||
| 659 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 660 | - optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, foreach=False) | ||
| 661 | - ``` | ||
| 662 | 642 | ||
| 663 | > <font size="3">add_param_group()</font> | 643 | > <font size="3">add_param_group()</font> |
| 664 | 644 | ||
| @@ -981,12 +961,7 @@ | |||
| 981 | **限制与说明**: | 961 | **限制与说明**: |
| 982 | 962 | ||
| 983 | - `params`仅支持bf16,fp16,fp32 | 963 | - `params`仅支持bf16,fp16,fp32 |
| 984 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 964 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 985 | - | ||
| 986 | - ```python | ||
| 987 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 988 | - optimizer = torch.optim.Adamax(model.parameters(), lr=1e-3, foreach=False) | ||
| 989 | - ``` | ||
| 990 | 965 | ||
| 991 | > <font size="3">add_param_group()</font> | 966 | > <font size="3">add_param_group()</font> |
| 992 | 967 | ||
| @@ -1517,12 +1492,7 @@ | |||
| 1517 | **限制与说明**: | 1492 | **限制与说明**: |
| 1518 | 1493 | ||
| 1519 | - `params`仅支持bf16,fp16,fp32 | 1494 | - `params`仅支持bf16,fp16,fp32 |
| 1520 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1495 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1521 | - | ||
| 1522 | - ```python | ||
| 1523 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1524 | - optimizer = torch.optim.NAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1525 | - ``` | ||
| 1526 | 1496 | ||
| 1527 | > <font size="3">add_param_group()</font> | 1497 | > <font size="3">add_param_group()</font> |
| 1528 | 1498 | ||
| @@ -1705,12 +1675,7 @@ | |||
| 1705 | **限制与说明**: | 1675 | **限制与说明**: |
| 1706 | 1676 | ||
| 1707 | - `params`仅支持bf16,fp16,fp32 | 1677 | - `params`仅支持bf16,fp16,fp32 |
| 1708 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1678 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1709 | - | ||
| 1710 | - ```python | ||
| 1711 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1712 | - optimizer = torch.optim.RAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1713 | - ``` | ||
| 1714 | 1679 | ||
| 1715 | > <font size="3">add_param_group()</font> | 1680 | > <font size="3">add_param_group()</font> |
| 1716 | 1681 | ||
| @@ -1893,12 +1858,7 @@ | |||
| 1893 | **限制与说明**: | 1858 | **限制与说明**: |
| 1894 | 1859 | ||
| 1895 | - `params`仅支持bf16,fp16,fp32 | 1860 | - `params`仅支持bf16,fp16,fp32 |
| 1896 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1861 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1897 | - | ||
| 1898 | - ```python | ||
| 1899 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1900 | - optimizer = torch.optim.RMSprop(model.parameters(), lr=1e-3, foreach=False) | ||
| 1901 | - ``` | ||
| 1902 | 1862 | ||
| 1903 | > <font size="3">add_param_group()</font> | 1863 | > <font size="3">add_param_group()</font> |
| 1904 | 1864 | ||
| @@ -2249,12 +2209,7 @@ | |||
| 2249 | **限制与说明**: | 2209 | **限制与说明**: |
| 2250 | 2210 | ||
| 2251 | - `params`仅支持bf16,fp16,fp32 | 2211 | - `params`仅支持bf16,fp16,fp32 |
| 2252 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 2212 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 2253 | - | ||
| 2254 | - ```python | ||
| 2255 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 2256 | - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, foreach=False) | ||
| 2257 | - ``` | ||
| 2258 | 2213 | ||
| 2259 | > <font size="3">add_param_group()</font> | 2214 | > <font size="3">add_param_group()</font> |
| 2260 | 2215 | ||
| @@ -840,14 +840,7 @@ | |||
| 840 | 840 | ||
| 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool | 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool |
| 842 | - `index`的维度数需与`input`的维度数一致 | 842 | - `index`的维度数需与`input`的维度数一致 |
| 843 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 843 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 844 | - | ||
| 845 | - ```python | ||
| 846 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 847 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 848 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 849 | - out = torch.gather(x, 0, index) | ||
| 850 | - ``` | ||
| 851 | 844 | ||
| 852 | </div> | 845 | </div> |
| 853 | 846 | ||
| @@ -946,14 +939,7 @@ | |||
| 946 | **限制与说明**: | 939 | **限制与说明**: |
| 947 | 940 | ||
| 948 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool | 941 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool |
| 949 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 942 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 950 | - | ||
| 951 | - ```python | ||
| 952 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 953 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 954 | - index = torch.tensor([0, 0], device='npu') # 索引0重复出现 | ||
| 955 | - out = torch.index_select(x, 0, index) | ||
| 956 | - ``` | ||
| 957 | 943 | ||
| 958 | </div> | 944 | </div> |
| 959 | 945 | ||
| @@ -1120,15 +1106,7 @@ | |||
| 1120 | 1106 | ||
| 1121 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 | 1107 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 |
| 1122 | - 可能回退至CPU执行 | 1108 | - 可能回退至CPU执行 |
| 1123 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 1109 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 1124 | - | ||
| 1125 | - ```python | ||
| 1126 | - # index存在重复索引的示例:索引0被多次使用,同一位置被多次写入,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 1127 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 1128 | - src = torch.tensor([[10, 20], [30, 40]], device='npu') | ||
| 1129 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 1130 | - out = torch.scatter(x, 0, index, src) | ||
| 1131 | - ``` | ||
| 1132 | 1110 | ||
| 1133 | </div> | 1111 | </div> |
| 1134 | 1112 | ||
| @@ -513,12 +513,7 @@ | |||
| 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | | 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | |
| 514 | | <term>Ascend 950DT</term> | ✘ | | 514 | | <term>Ascend 950DT</term> | ✘ | |
| 515 | 515 | ||
| 516 | -**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu”,例如: | 516 | +**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu” |
| 517 | - | ||
| 518 | -```python | ||
| 519 | -with torch.autograd.profiler.profile(use_device="npu") as prof: | ||
| 520 | - ... | ||
| 521 | -``` | ||
| 522 | 517 | ||
| 523 | </div> | 518 | </div> |
| 524 | 519 | ||
| @@ -539,12 +539,7 @@ | |||
| 539 | **限制与说明**: | 539 | **限制与说明**: |
| 540 | 540 | ||
| 541 | - `input`仅支持fp32 | 541 | - `input`仅支持fp32 |
| 542 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致,例如: | 542 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致 |
| 543 | - | ||
| 544 | - ```python | ||
| 545 | - import torch_npu | ||
| 546 | - torch_npu.npu.use_compatible_impl(True) | ||
| 547 | - ``` | ||
| 548 | 543 | ||
| 549 | </div> | 544 | </div> |
| 550 | 545 | ||
| @@ -655,12 +650,7 @@ | |||
| 655 | **限制与说明**: | 650 | **限制与说明**: |
| 656 | 651 | ||
| 657 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool | 652 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool |
| 658 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致,例如: | 653 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致 |
| 659 | - | ||
| 660 | - ```python | ||
| 661 | - import torch_npu | ||
| 662 | - torch_npu.npu.use_compatible_impl(True) | ||
| 663 | - ``` | ||
| 664 | 654 | ||
| 665 | </div> | 655 | </div> |
| 666 | 656 | ||
| @@ -695,12 +685,7 @@ | |||
| 695 | **限制与说明**: | 685 | **限制与说明**: |
| 696 | 686 | ||
| 697 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool | 687 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool |
| 698 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致,例如: | 688 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致 |
| 699 | - | ||
| 700 | - ```python | ||
| 701 | - import torch_npu | ||
| 702 | - torch_npu.npu.use_compatible_impl(True) | ||
| 703 | - ``` | ||
| 704 | 689 | ||
| 705 | </div> | 690 | </div> |
| 706 | 691 | ||
| @@ -243,12 +243,7 @@ | |||
| 243 | **限制与说明**: | 243 | **限制与说明**: |
| 244 | 244 | ||
| 245 | - `input`仅支持bf16,fp16,fp32 | 245 | - `input`仅支持bf16,fp16,fp32 |
| 246 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 246 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 247 | - | ||
| 248 | - ```python | ||
| 249 | - import torch_npu | ||
| 250 | - torch_npu.npu.use_compatible_impl(True) | ||
| 251 | - ``` | ||
| 252 | 247 | ||
| 253 | </div> | 248 | </div> |
| 254 | 249 | ||
| @@ -507,12 +502,7 @@ | |||
| 507 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 | 502 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 |
| 508 | - 与原接口除了规格限制之外的差异点: | 503 | - 与原接口除了规格限制之外的差异点: |
| 509 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 | 504 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 |
| 510 | - - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持,例如: | 505 | + - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持 |
| 511 | - | ||
| 512 | - ```python | ||
| 513 | - import torch_npu | ||
| 514 | - torch_npu.npu.use_compatible_impl(True) | ||
| 515 | - ``` | ||
| 516 | 506 | ||
| 517 | </div> | 507 | </div> |
| 518 | 508 | ||
| @@ -1662,11 +1652,7 @@ | |||
| 1662 | **限制与说明**: | 1652 | **限制与说明**: |
| 1663 | 1653 | ||
| 1664 | - `input`仅支持fp16,fp32,fp64 | 1654 | - `input`仅支持fp16,fp32,fp64 |
| 1665 | -- 只支持`mode` = nearest,例如: | 1655 | +- 只支持`mode` = nearest |
| 1666 | - | ||
| 1667 | - ```python | ||
| 1668 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1669 | - ``` | ||
| 1670 | 1656 | ||
| 1671 | </div> | 1657 | </div> |
| 1672 | 1658 | ||
| @@ -1685,11 +1671,7 @@ | |||
| 1685 | **限制与说明**: | 1671 | **限制与说明**: |
| 1686 | 1672 | ||
| 1687 | - `input`仅支持fp16,fp32,fp64 | 1673 | - `input`仅支持fp16,fp32,fp64 |
| 1688 | -- 只支持3-5维,例如: | 1674 | +- 只支持3-5维 |
| 1689 | - | ||
| 1690 | - ```python | ||
| 1691 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1692 | - ``` | ||
| 1693 | 1675 | ||
| 1694 | </div> | 1676 | </div> |
| 1695 | 1677 | ||
| @@ -1450,12 +1450,7 @@ | |||
| 1450 | **限制与说明**: | 1450 | **限制与说明**: |
| 1451 | 1451 | ||
| 1452 | - `input`仅支持bf16,fp16,fp32 | 1452 | - `input`仅支持bf16,fp16,fp32 |
| 1453 | -- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译,例如: | 1453 | +- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译 |
| 1454 | - | ||
| 1455 | - ```python | ||
| 1456 | - import torch_npu | ||
| 1457 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1458 | - ``` | ||
| 1459 | 1454 | ||
| 1460 | </div> | 1455 | </div> |
| 1461 | 1456 | ||
| @@ -1506,12 +1501,7 @@ | |||
| 1506 | **限制与说明**: | 1501 | **限制与说明**: |
| 1507 | 1502 | ||
| 1508 | - `input`仅支持fp16,fp32 | 1503 | - `input`仅支持fp16,fp32 |
| 1509 | -- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入,例如: | 1504 | +- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入 |
| 1510 | - | ||
| 1511 | - ```python | ||
| 1512 | - import torch_npu | ||
| 1513 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1514 | - ``` | ||
| 1515 | 1505 | ||
| 1516 | </div> | 1506 | </div> |
| 1517 | 1507 | ||
| @@ -1754,12 +1744,7 @@ | |||
| 1754 | **限制与说明**: | 1744 | **限制与说明**: |
| 1755 | 1745 | ||
| 1756 | - `input`仅支持bf16,fp16,fp32 | 1746 | - `input`仅支持bf16,fp16,fp32 |
| 1757 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 1747 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 1758 | - | ||
| 1759 | - ```python | ||
| 1760 | - import torch_npu | ||
| 1761 | - torch_npu.npu.use_compatible_impl(True) | ||
| 1762 | - ``` | ||
| 1763 | 1748 | ||
| 1764 | </div> | 1749 | </div> |
| 1765 | 1750 | ||
| @@ -2970,12 +2955,7 @@ | |||
| 2970 | **限制与说明**: | 2955 | **限制与说明**: |
| 2971 | 2956 | ||
| 2972 | - `input`仅支持bf16,fp16,fp32 | 2957 | - `input`仅支持bf16,fp16,fp32 |
| 2973 | -- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐,例如: | 2958 | +- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐 |
| 2974 | - | ||
| 2975 | - ```python | ||
| 2976 | - import torch_npu | ||
| 2977 | - torch_npu.npu.use_compatible_impl(True) | ||
| 2978 | - ``` | ||
| 2979 | 2959 | ||
| 2980 | </div> | 2960 | </div> |
| 2981 | 2961 | ||
| @@ -117,12 +117,7 @@ | |||
| 117 | **限制与说明**: | 117 | **限制与说明**: |
| 118 | 118 | ||
| 119 | - `params`仅支持bf16,fp16,fp32 | 119 | - `params`仅支持bf16,fp16,fp32 |
| 120 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 120 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 121 | - | ||
| 122 | - ```python | ||
| 123 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 124 | - optimizer = torch.optim.Adadelta(model.parameters(), lr=1e-3, foreach=False) | ||
| 125 | - ``` | ||
| 126 | 121 | ||
| 127 | > <font size="3">add_param_group()</font> | 122 | > <font size="3">add_param_group()</font> |
| 128 | 123 | ||
| @@ -295,12 +290,7 @@ | |||
| 295 | **限制与说明**: | 290 | **限制与说明**: |
| 296 | 291 | ||
| 297 | - `params`仅支持bf16,fp16,fp32 | 292 | - `params`仅支持bf16,fp16,fp32 |
| 298 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 293 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 299 | - | ||
| 300 | - ```python | ||
| 301 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 302 | - optimizer = torch.optim.Adagrad(model.parameters(), lr=1e-3, foreach=False) | ||
| 303 | - ``` | ||
| 304 | 294 | ||
| 305 | > <font size="3">add_param_group()</font> | 295 | > <font size="3">add_param_group()</font> |
| 306 | 296 | ||
| @@ -474,12 +464,7 @@ | |||
| 474 | 464 | ||
| 475 | - `params`仅支持bf16,fp16,fp32 | 465 | - `params`仅支持bf16,fp16,fp32 |
| 476 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 466 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 477 | -- 在某些情况下可能回退至CPU执行,例如: | 467 | +- 在某些情况下可能回退至CPU执行 |
| 478 | - | ||
| 479 | - ```python | ||
| 480 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 481 | - optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, foreach=False) | ||
| 482 | - ``` | ||
| 483 | 468 | ||
| 484 | > <font size="3">add_param_group()</font> | 469 | > <font size="3">add_param_group()</font> |
| 485 | 470 | ||
| @@ -653,12 +638,7 @@ | |||
| 653 | 638 | ||
| 654 | - `params`仅支持bf16,fp16,fp32,complex64 | 639 | - `params`仅支持bf16,fp16,fp32,complex64 |
| 655 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 640 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 656 | -- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致,例如: | 641 | +- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致 |
| 657 | - | ||
| 658 | - ```python | ||
| 659 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 660 | - optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, foreach=False) | ||
| 661 | - ``` | ||
| 662 | 642 | ||
| 663 | > <font size="3">add_param_group()</font> | 643 | > <font size="3">add_param_group()</font> |
| 664 | 644 | ||
| @@ -981,12 +961,7 @@ | |||
| 981 | **限制与说明**: | 961 | **限制与说明**: |
| 982 | 962 | ||
| 983 | - `params`仅支持bf16,fp16,fp32 | 963 | - `params`仅支持bf16,fp16,fp32 |
| 984 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 964 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 985 | - | ||
| 986 | - ```python | ||
| 987 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 988 | - optimizer = torch.optim.Adamax(model.parameters(), lr=1e-3, foreach=False) | ||
| 989 | - ``` | ||
| 990 | 965 | ||
| 991 | > <font size="3">add_param_group()</font> | 966 | > <font size="3">add_param_group()</font> |
| 992 | 967 | ||
| @@ -1517,12 +1492,7 @@ | |||
| 1517 | **限制与说明**: | 1492 | **限制与说明**: |
| 1518 | 1493 | ||
| 1519 | - `params`仅支持bf16,fp16,fp32 | 1494 | - `params`仅支持bf16,fp16,fp32 |
| 1520 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1495 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1521 | - | ||
| 1522 | - ```python | ||
| 1523 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1524 | - optimizer = torch.optim.NAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1525 | - ``` | ||
| 1526 | 1496 | ||
| 1527 | > <font size="3">add_param_group()</font> | 1497 | > <font size="3">add_param_group()</font> |
| 1528 | 1498 | ||
| @@ -1705,12 +1675,7 @@ | |||
| 1705 | **限制与说明**: | 1675 | **限制与说明**: |
| 1706 | 1676 | ||
| 1707 | - `params`仅支持bf16,fp16,fp32 | 1677 | - `params`仅支持bf16,fp16,fp32 |
| 1708 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1678 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1709 | - | ||
| 1710 | - ```python | ||
| 1711 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1712 | - optimizer = torch.optim.RAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1713 | - ``` | ||
| 1714 | 1679 | ||
| 1715 | > <font size="3">add_param_group()</font> | 1680 | > <font size="3">add_param_group()</font> |
| 1716 | 1681 | ||
| @@ -1893,12 +1858,7 @@ | |||
| 1893 | **限制与说明**: | 1858 | **限制与说明**: |
| 1894 | 1859 | ||
| 1895 | - `params`仅支持bf16,fp16,fp32 | 1860 | - `params`仅支持bf16,fp16,fp32 |
| 1896 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1861 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1897 | - | ||
| 1898 | - ```python | ||
| 1899 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1900 | - optimizer = torch.optim.RMSprop(model.parameters(), lr=1e-3, foreach=False) | ||
| 1901 | - ``` | ||
| 1902 | 1862 | ||
| 1903 | > <font size="3">add_param_group()</font> | 1863 | > <font size="3">add_param_group()</font> |
| 1904 | 1864 | ||
| @@ -2249,12 +2209,7 @@ | |||
| 2249 | **限制与说明**: | 2209 | **限制与说明**: |
| 2250 | 2210 | ||
| 2251 | - `params`仅支持bf16,fp16,fp32 | 2211 | - `params`仅支持bf16,fp16,fp32 |
| 2252 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 2212 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`。 |
| 2253 | - | ||
| 2254 | - ```python | ||
| 2255 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 2256 | - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, foreach=False) | ||
| 2257 | - ``` | ||
| 2258 | 2213 | ||
| 2259 | > <font size="3">add_param_group()</font> | 2214 | > <font size="3">add_param_group()</font> |
| 2260 | 2215 | ||
| @@ -840,14 +840,7 @@ | |||
| 840 | 840 | ||
| 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool | 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool |
| 842 | - `index`的维度数需与`input`的维度数一致 | 842 | - `index`的维度数需与`input`的维度数一致 |
| 843 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 843 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 844 | - | ||
| 845 | - ```python | ||
| 846 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 847 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 848 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 849 | - out = torch.gather(x, 0, index) | ||
| 850 | - ``` | ||
| 851 | 844 | ||
| 852 | </div> | 845 | </div> |
| 853 | 846 | ||
| @@ -946,14 +939,7 @@ | |||
| 946 | **限制与说明**: | 939 | **限制与说明**: |
| 947 | 940 | ||
| 948 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool | 941 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool |
| 949 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 942 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 950 | - | ||
| 951 | - ```python | ||
| 952 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 953 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 954 | - index = torch.tensor([0, 0], device='npu') # 索引0重复出现 | ||
| 955 | - out = torch.index_select(x, 0, index) | ||
| 956 | - ``` | ||
| 957 | 943 | ||
| 958 | </div> | 944 | </div> |
| 959 | 945 | ||
| @@ -1120,15 +1106,7 @@ | |||
| 1120 | 1106 | ||
| 1121 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 | 1107 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 |
| 1122 | - 可能回退至CPU执行 | 1108 | - 可能回退至CPU执行 |
| 1123 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 1109 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 1124 | - | ||
| 1125 | - ```python | ||
| 1126 | - # index存在重复索引的示例:索引0被多次使用,同一位置被多次写入,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 1127 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 1128 | - src = torch.tensor([[10, 20], [30, 40]], device='npu') | ||
| 1129 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 1130 | - out = torch.scatter(x, 0, index, src) | ||
| 1131 | - ``` | ||
| 1132 | 1110 | ||
| 1133 | </div> | 1111 | </div> |
| 1134 | 1112 | ||
| @@ -513,12 +513,7 @@ | |||
| 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | | 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | |
| 514 | | <term>Ascend 950DT</term> | ✘ | | 514 | | <term>Ascend 950DT</term> | ✘ | |
| 515 | 515 | ||
| 516 | -**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu”,例如: | 516 | +**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu” |
| 517 | - | ||
| 518 | -```python | ||
| 519 | -with torch.autograd.profiler.profile(use_device="npu") as prof: | ||
| 520 | - ... | ||
| 521 | -``` | ||
| 522 | 517 | ||
| 523 | </div> | 518 | </div> |
| 524 | 519 | ||
| @@ -539,12 +539,7 @@ | |||
| 539 | **限制与说明**: | 539 | **限制与说明**: |
| 540 | 540 | ||
| 541 | - `input`仅支持fp32 | 541 | - `input`仅支持fp32 |
| 542 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致,例如: | 542 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致 |
| 543 | - | ||
| 544 | - ```python | ||
| 545 | - import torch_npu | ||
| 546 | - torch_npu.npu.use_compatible_impl(True) | ||
| 547 | - ``` | ||
| 548 | 543 | ||
| 549 | </div> | 544 | </div> |
| 550 | 545 | ||
| @@ -655,12 +650,7 @@ | |||
| 655 | **限制与说明**: | 650 | **限制与说明**: |
| 656 | 651 | ||
| 657 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool | 652 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool |
| 658 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致,例如: | 653 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致 |
| 659 | - | ||
| 660 | - ```python | ||
| 661 | - import torch_npu | ||
| 662 | - torch_npu.npu.use_compatible_impl(True) | ||
| 663 | - ``` | ||
| 664 | 654 | ||
| 665 | </div> | 655 | </div> |
| 666 | 656 | ||
| @@ -695,12 +685,7 @@ | |||
| 695 | **限制与说明**: | 685 | **限制与说明**: |
| 696 | 686 | ||
| 697 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool | 687 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool |
| 698 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致,例如: | 688 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致 |
| 699 | - | ||
| 700 | - ```python | ||
| 701 | - import torch_npu | ||
| 702 | - torch_npu.npu.use_compatible_impl(True) | ||
| 703 | - ``` | ||
| 704 | 689 | ||
| 705 | </div> | 690 | </div> |
| 706 | 691 | ||
| @@ -243,12 +243,7 @@ | |||
| 243 | **限制与说明**: | 243 | **限制与说明**: |
| 244 | 244 | ||
| 245 | - `input`仅支持bf16,fp16,fp32 | 245 | - `input`仅支持bf16,fp16,fp32 |
| 246 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 246 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 247 | - | ||
| 248 | - ```python | ||
| 249 | - import torch_npu | ||
| 250 | - torch_npu.npu.use_compatible_impl(True) | ||
| 251 | - ``` | ||
| 252 | 247 | ||
| 253 | </div> | 248 | </div> |
| 254 | 249 | ||
| @@ -507,12 +502,7 @@ | |||
| 507 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 | 502 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 |
| 508 | - 与原接口除了规格限制之外差异点: | 503 | - 与原接口除了规格限制之外差异点: |
| 509 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 | 504 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 |
| 510 | - - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持,例如: | 505 | + - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持 |
| 511 | - | ||
| 512 | - ```python | ||
| 513 | - import torch_npu | ||
| 514 | - torch_npu.npu.use_compatible_impl(True) | ||
| 515 | - ``` | ||
| 516 | 506 | ||
| 517 | </div> | 507 | </div> |
| 518 | 508 | ||
| @@ -1662,11 +1652,7 @@ | |||
| 1662 | **限制与说明**: | 1652 | **限制与说明**: |
| 1663 | 1653 | ||
| 1664 | - `input`仅支持fp16,fp32,fp64 | 1654 | - `input`仅支持fp16,fp32,fp64 |
| 1665 | -- 只支持`mode` = nearest,例如: | 1655 | +- 只支持`mode` = nearest |
| 1666 | - | ||
| 1667 | - ```python | ||
| 1668 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1669 | - ``` | ||
| 1670 | 1656 | ||
| 1671 | </div> | 1657 | </div> |
| 1672 | 1658 | ||
| @@ -1685,11 +1671,7 @@ | |||
| 1685 | **限制与说明**: | 1671 | **限制与说明**: |
| 1686 | 1672 | ||
| 1687 | - `input`仅支持fp16,fp32,fp64 | 1673 | - `input`仅支持fp16,fp32,fp64 |
| 1688 | -- 只支持3-5维,例如: | 1674 | +- 只支持3-5维 |
| 1689 | - | ||
| 1690 | - ```python | ||
| 1691 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1692 | - ``` | ||
| 1693 | 1675 | ||
| 1694 | </div> | 1676 | </div> |
| 1695 | 1677 | ||
| @@ -1456,12 +1456,7 @@ | |||
| 1456 | **限制与说明**: | 1456 | **限制与说明**: |
| 1457 | 1457 | ||
| 1458 | - `input`仅支持bf16,fp16,fp32 | 1458 | - `input`仅支持bf16,fp16,fp32 |
| 1459 | -- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译,例如: | 1459 | +- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译 |
| 1460 | - | ||
| 1461 | - ```python | ||
| 1462 | - import torch_npu | ||
| 1463 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1464 | - ``` | ||
| 1465 | 1460 | ||
| 1466 | </div> | 1461 | </div> |
| 1467 | 1462 | ||
| @@ -1512,12 +1507,7 @@ | |||
| 1512 | **限制与说明**: | 1507 | **限制与说明**: |
| 1513 | 1508 | ||
| 1514 | - `input`仅支持fp16,fp32 | 1509 | - `input`仅支持fp16,fp32 |
| 1515 | -- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入,例如: | 1510 | +- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入 |
| 1516 | - | ||
| 1517 | - ```python | ||
| 1518 | - import torch_npu | ||
| 1519 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1520 | - ``` | ||
| 1521 | 1511 | ||
| 1522 | </div> | 1512 | </div> |
| 1523 | 1513 | ||
| @@ -1760,12 +1750,7 @@ | |||
| 1760 | **限制与说明**: | 1750 | **限制与说明**: |
| 1761 | 1751 | ||
| 1762 | - `input`仅支持bf16,fp16,fp32 | 1752 | - `input`仅支持bf16,fp16,fp32 |
| 1763 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 1753 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 1764 | - | ||
| 1765 | - ```python | ||
| 1766 | - import torch_npu | ||
| 1767 | - torch_npu.npu.use_compatible_impl(True) | ||
| 1768 | - ``` | ||
| 1769 | 1754 | ||
| 1770 | </div> | 1755 | </div> |
| 1771 | 1756 | ||
| @@ -2976,12 +2961,7 @@ | |||
| 2976 | **限制与说明**: | 2961 | **限制与说明**: |
| 2977 | 2962 | ||
| 2978 | - `input`仅支持bf16,fp16,fp32 | 2963 | - `input`仅支持bf16,fp16,fp32 |
| 2979 | -- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐,例如: | 2964 | +- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐 |
| 2980 | - | ||
| 2981 | - ```python | ||
| 2982 | - import torch_npu | ||
| 2983 | - torch_npu.npu.use_compatible_impl(True) | ||
| 2984 | - ``` | ||
| 2985 | 2965 | ||
| 2986 | </div> | 2966 | </div> |
| 2987 | 2967 | ||
| @@ -117,12 +117,7 @@ | |||
| 117 | **限制与说明**: | 117 | **限制与说明**: |
| 118 | 118 | ||
| 119 | - `params`仅支持bf16,fp16,fp32 | 119 | - `params`仅支持bf16,fp16,fp32 |
| 120 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 120 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 121 | - | ||
| 122 | - ```python | ||
| 123 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 124 | - optimizer = torch.optim.Adadelta(model.parameters(), lr=1e-3, foreach=False) | ||
| 125 | - ``` | ||
| 126 | 121 | ||
| 127 | > <font size="3">add_param_group()</font> | 122 | > <font size="3">add_param_group()</font> |
| 128 | 123 | ||
| @@ -295,12 +290,7 @@ | |||
| 295 | **限制与说明**: | 290 | **限制与说明**: |
| 296 | 291 | ||
| 297 | - `params`仅支持bf16,fp16,fp32 | 292 | - `params`仅支持bf16,fp16,fp32 |
| 298 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 293 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 299 | - | ||
| 300 | - ```python | ||
| 301 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 302 | - optimizer = torch.optim.Adagrad(model.parameters(), lr=1e-3, foreach=False) | ||
| 303 | - ``` | ||
| 304 | 294 | ||
| 305 | > <font size="3">add_param_group()</font> | 295 | > <font size="3">add_param_group()</font> |
| 306 | 296 | ||
| @@ -474,12 +464,7 @@ | |||
| 474 | 464 | ||
| 475 | - `params`仅支持bf16,fp16,fp32 | 465 | - `params`仅支持bf16,fp16,fp32 |
| 476 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 466 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 477 | -- 在某些情况下可能回退至CPU执行,例如: | 467 | +- 在某些情况下可能回退至CPU执行 |
| 478 | - | ||
| 479 | - ```python | ||
| 480 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 481 | - optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, foreach=False) | ||
| 482 | - ``` | ||
| 483 | 468 | ||
| 484 | > <font size="3">add_param_group()</font> | 469 | > <font size="3">add_param_group()</font> |
| 485 | 470 | ||
| @@ -653,12 +638,7 @@ | |||
| 653 | 638 | ||
| 654 | - `params`仅支持bf16,fp16,fp32,complex64 | 639 | - `params`仅支持bf16,fp16,fp32,complex64 |
| 655 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 640 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 656 | -- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致,例如: | 641 | +- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致 |
| 657 | - | ||
| 658 | - ```python | ||
| 659 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 660 | - optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, foreach=False) | ||
| 661 | - ``` | ||
| 662 | 642 | ||
| 663 | > <font size="3">add_param_group()</font> | 643 | > <font size="3">add_param_group()</font> |
| 664 | 644 | ||
| @@ -981,12 +961,7 @@ | |||
| 981 | **限制与说明**: | 961 | **限制与说明**: |
| 982 | 962 | ||
| 983 | - `params`仅支持bf16,fp16,fp32 | 963 | - `params`仅支持bf16,fp16,fp32 |
| 984 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 964 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 985 | - | ||
| 986 | - ```python | ||
| 987 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 988 | - optimizer = torch.optim.Adamax(model.parameters(), lr=1e-3, foreach=False) | ||
| 989 | - ``` | ||
| 990 | 965 | ||
| 991 | > <font size="3">add_param_group()</font> | 966 | > <font size="3">add_param_group()</font> |
| 992 | 967 | ||
| @@ -1517,12 +1492,7 @@ | |||
| 1517 | **限制与说明**: | 1492 | **限制与说明**: |
| 1518 | 1493 | ||
| 1519 | - `params`仅支持bf16,fp16,fp32 | 1494 | - `params`仅支持bf16,fp16,fp32 |
| 1520 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1495 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1521 | - | ||
| 1522 | - ```python | ||
| 1523 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1524 | - optimizer = torch.optim.NAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1525 | - ``` | ||
| 1526 | 1496 | ||
| 1527 | > <font size="3">add_param_group()</font> | 1497 | > <font size="3">add_param_group()</font> |
| 1528 | 1498 | ||
| @@ -1705,12 +1675,7 @@ | |||
| 1705 | **限制与说明**: | 1675 | **限制与说明**: |
| 1706 | 1676 | ||
| 1707 | - `params`仅支持bf16,fp16,fp32 | 1677 | - `params`仅支持bf16,fp16,fp32 |
| 1708 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1678 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1709 | - | ||
| 1710 | - ```python | ||
| 1711 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1712 | - optimizer = torch.optim.RAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1713 | - ``` | ||
| 1714 | 1679 | ||
| 1715 | > <font size="3">add_param_group()</font> | 1680 | > <font size="3">add_param_group()</font> |
| 1716 | 1681 | ||
| @@ -1893,12 +1858,7 @@ | |||
| 1893 | **限制与说明**: | 1858 | **限制与说明**: |
| 1894 | 1859 | ||
| 1895 | - `params`仅支持bf16,fp16,fp32 | 1860 | - `params`仅支持bf16,fp16,fp32 |
| 1896 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1861 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1897 | - | ||
| 1898 | - ```python | ||
| 1899 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1900 | - optimizer = torch.optim.RMSprop(model.parameters(), lr=1e-3, foreach=False) | ||
| 1901 | - ``` | ||
| 1902 | 1862 | ||
| 1903 | > <font size="3">add_param_group()</font> | 1863 | > <font size="3">add_param_group()</font> |
| 1904 | 1864 | ||
| @@ -2249,12 +2209,7 @@ | |||
| 2249 | **限制与说明**: | 2209 | **限制与说明**: |
| 2250 | 2210 | ||
| 2251 | - `params`仅支持bf16,fp16,fp32 | 2211 | - `params`仅支持bf16,fp16,fp32 |
| 2252 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 2212 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 2253 | - | ||
| 2254 | - ```python | ||
| 2255 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 2256 | - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, foreach=False) | ||
| 2257 | - ``` | ||
| 2258 | 2213 | ||
| 2259 | > <font size="3">add_param_group()</font> | 2214 | > <font size="3">add_param_group()</font> |
| 2260 | 2215 | ||
| @@ -840,14 +840,7 @@ | |||
| 840 | 840 | ||
| 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool | 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool |
| 842 | - `index`的维度数需与`input`的维度数一致 | 842 | - `index`的维度数需与`input`的维度数一致 |
| 843 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 843 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 844 | - | ||
| 845 | - ```python | ||
| 846 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 847 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 848 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 849 | - out = torch.gather(x, 0, index) | ||
| 850 | - ``` | ||
| 851 | 844 | ||
| 852 | </div> | 845 | </div> |
| 853 | 846 | ||
| @@ -946,14 +939,7 @@ | |||
| 946 | **限制与说明**: | 939 | **限制与说明**: |
| 947 | 940 | ||
| 948 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool | 941 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool |
| 949 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 942 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 950 | - | ||
| 951 | - ```python | ||
| 952 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 953 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 954 | - index = torch.tensor([0, 0], device='npu') # 索引0重复出现 | ||
| 955 | - out = torch.index_select(x, 0, index) | ||
| 956 | - ``` | ||
| 957 | 943 | ||
| 958 | </div> | 944 | </div> |
| 959 | 945 | ||
| @@ -1120,15 +1106,7 @@ | |||
| 1120 | 1106 | ||
| 1121 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 | 1107 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 |
| 1122 | - 可能回退至CPU执行 | 1108 | - 可能回退至CPU执行 |
| 1123 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 1109 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 1124 | - | ||
| 1125 | - ```python | ||
| 1126 | - # index存在重复索引的示例:索引0被多次使用,同一位置被多次写入,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 1127 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 1128 | - src = torch.tensor([[10, 20], [30, 40]], device='npu') | ||
| 1129 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 1130 | - out = torch.scatter(x, 0, index, src) | ||
| 1131 | - ``` | ||
| 1132 | 1110 | ||
| 1133 | </div> | 1111 | </div> |
| 1134 | 1112 | ||
| @@ -513,12 +513,7 @@ | |||
| 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | | 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | |
| 514 | | <term>Ascend 950DT</term> | ✘ | | 514 | | <term>Ascend 950DT</term> | ✘ | |
| 515 | 515 | ||
| 516 | -**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu”,例如: | 516 | +**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu” |
| 517 | - | ||
| 518 | -```python | ||
| 519 | -with torch.autograd.profiler.profile(use_device="npu") as prof: | ||
| 520 | - ... | ||
| 521 | -``` | ||
| 522 | 517 | ||
| 523 | </div> | 518 | </div> |
| 524 | 519 | ||
| @@ -539,12 +539,7 @@ | |||
| 539 | **限制与说明**: | 539 | **限制与说明**: |
| 540 | 540 | ||
| 541 | - `input`仅支持fp32 | 541 | - `input`仅支持fp32 |
| 542 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致,例如: | 542 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致 |
| 543 | - | ||
| 544 | - ```python | ||
| 545 | - import torch_npu | ||
| 546 | - torch_npu.npu.use_compatible_impl(True) | ||
| 547 | - ``` | ||
| 548 | 543 | ||
| 549 | </div> | 544 | </div> |
| 550 | 545 | ||
| @@ -655,12 +650,7 @@ | |||
| 655 | **限制与说明**: | 650 | **限制与说明**: |
| 656 | 651 | ||
| 657 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool | 652 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool |
| 658 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致,例如: | 653 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致 |
| 659 | - | ||
| 660 | - ```python | ||
| 661 | - import torch_npu | ||
| 662 | - torch_npu.npu.use_compatible_impl(True) | ||
| 663 | - ``` | ||
| 664 | 654 | ||
| 665 | </div> | 655 | </div> |
| 666 | 656 | ||
| @@ -695,12 +685,7 @@ | |||
| 695 | **限制与说明**: | 685 | **限制与说明**: |
| 696 | 686 | ||
| 697 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool | 687 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool |
| 698 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致,例如: | 688 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致 |
| 699 | - | ||
| 700 | - ```python | ||
| 701 | - import torch_npu | ||
| 702 | - torch_npu.npu.use_compatible_impl(True) | ||
| 703 | - ``` | ||
| 704 | 689 | ||
| 705 | </div> | 690 | </div> |
| 706 | 691 | ||
| @@ -242,12 +242,7 @@ | |||
| 242 | **限制与说明**: | 242 | **限制与说明**: |
| 243 | 243 | ||
| 244 | - `input`仅支持bf16,fp16,fp32 | 244 | - `input`仅支持bf16,fp16,fp32 |
| 245 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 245 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 246 | - | ||
| 247 | - ```python | ||
| 248 | - import torch_npu | ||
| 249 | - torch_npu.npu.use_compatible_impl(True) | ||
| 250 | - ``` | ||
| 251 | 246 | ||
| 252 | </div> | 247 | </div> |
| 253 | 248 | ||
| @@ -506,12 +501,7 @@ | |||
| 506 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 | 501 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 |
| 507 | - 与原接口除了规格限制之外差异点: | 502 | - 与原接口除了规格限制之外差异点: |
| 508 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 | 503 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 |
| 509 | - - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持,例如: | 504 | + - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持 |
| 510 | - | ||
| 511 | - ```python | ||
| 512 | - import torch_npu | ||
| 513 | - torch_npu.npu.use_compatible_impl(True) | ||
| 514 | - ``` | ||
| 515 | 505 | ||
| 516 | </div> | 506 | </div> |
| 517 | 507 | ||
| @@ -1661,11 +1651,7 @@ | |||
| 1661 | **限制与说明**: | 1651 | **限制与说明**: |
| 1662 | 1652 | ||
| 1663 | - `input`仅支持fp16,fp32,fp64 | 1653 | - `input`仅支持fp16,fp32,fp64 |
| 1664 | -- 只支持`mode` = nearest,例如: | 1654 | +- 只支持`mode` = nearest |
| 1665 | - | ||
| 1666 | - ```python | ||
| 1667 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1668 | - ``` | ||
| 1669 | 1655 | ||
| 1670 | </div> | 1656 | </div> |
| 1671 | 1657 | ||
| @@ -1684,11 +1670,7 @@ | |||
| 1684 | **限制与说明**: | 1670 | **限制与说明**: |
| 1685 | 1671 | ||
| 1686 | - `input`仅支持fp16,fp32,fp64 | 1672 | - `input`仅支持fp16,fp32,fp64 |
| 1687 | -- 只支持3-5维,例如: | 1673 | +- 只支持3-5维 |
| 1688 | - | ||
| 1689 | - ```python | ||
| 1690 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1691 | - ``` | ||
| 1692 | 1674 | ||
| 1693 | </div> | 1675 | </div> |
| 1694 | 1676 | ||
| @@ -1456,12 +1456,7 @@ | |||
| 1456 | **限制与说明**: | 1456 | **限制与说明**: |
| 1457 | 1457 | ||
| 1458 | - `input`仅支持bf16,fp16,fp32 | 1458 | - `input`仅支持bf16,fp16,fp32 |
| 1459 | -- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译,例如: | 1459 | +- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译 |
| 1460 | - | ||
| 1461 | - ```python | ||
| 1462 | - import torch_npu | ||
| 1463 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1464 | - ``` | ||
| 1465 | 1460 | ||
| 1466 | </div> | 1461 | </div> |
| 1467 | 1462 | ||
| @@ -1512,12 +1507,7 @@ | |||
| 1512 | **限制与说明**: | 1507 | **限制与说明**: |
| 1513 | 1508 | ||
| 1514 | - `input`仅支持fp16,fp32 | 1509 | - `input`仅支持fp16,fp32 |
| 1515 | -- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入,例如: | 1510 | +- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入 |
| 1516 | - | ||
| 1517 | - ```python | ||
| 1518 | - import torch_npu | ||
| 1519 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1520 | - ``` | ||
| 1521 | 1511 | ||
| 1522 | </div> | 1512 | </div> |
| 1523 | 1513 | ||
| @@ -1760,12 +1750,7 @@ | |||
| 1760 | **限制与说明**: | 1750 | **限制与说明**: |
| 1761 | 1751 | ||
| 1762 | - `input`仅支持bf16,fp16,fp32 | 1752 | - `input`仅支持bf16,fp16,fp32 |
| 1763 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 1753 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 1764 | - | ||
| 1765 | - ```python | ||
| 1766 | - import torch_npu | ||
| 1767 | - torch_npu.npu.use_compatible_impl(True) | ||
| 1768 | - ``` | ||
| 1769 | 1754 | ||
| 1770 | </div> | 1755 | </div> |
| 1771 | 1756 | ||
| @@ -2976,12 +2961,7 @@ | |||
| 2976 | **限制与说明**: | 2961 | **限制与说明**: |
| 2977 | 2962 | ||
| 2978 | - `input`仅支持bf16,fp16,fp32 | 2963 | - `input`仅支持bf16,fp16,fp32 |
| 2979 | -- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐,例如: | 2964 | +- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐 |
| 2980 | - | ||
| 2981 | - ```python | ||
| 2982 | - import torch_npu | ||
| 2983 | - torch_npu.npu.use_compatible_impl(True) | ||
| 2984 | - ``` | ||
| 2985 | 2965 | ||
| 2986 | </div> | 2966 | </div> |
| 2987 | 2967 | ||
| @@ -117,12 +117,7 @@ | |||
| 117 | **限制与说明**: | 117 | **限制与说明**: |
| 118 | 118 | ||
| 119 | - `params`仅支持bf16,fp16,fp32 | 119 | - `params`仅支持bf16,fp16,fp32 |
| 120 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 120 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 121 | - | ||
| 122 | - ```python | ||
| 123 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 124 | - optimizer = torch.optim.Adadelta(model.parameters(), lr=1e-3, foreach=False) | ||
| 125 | - ``` | ||
| 126 | 121 | ||
| 127 | > <font size="3">add_param_group()</font> | 122 | > <font size="3">add_param_group()</font> |
| 128 | 123 | ||
| @@ -295,12 +290,7 @@ | |||
| 295 | **限制与说明**: | 290 | **限制与说明**: |
| 296 | 291 | ||
| 297 | - `params`仅支持bf16,fp16,fp32 | 292 | - `params`仅支持bf16,fp16,fp32 |
| 298 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 293 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 299 | - | ||
| 300 | - ```python | ||
| 301 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 302 | - optimizer = torch.optim.Adagrad(model.parameters(), lr=1e-3, foreach=False) | ||
| 303 | - ``` | ||
| 304 | 294 | ||
| 305 | > <font size="3">add_param_group()</font> | 295 | > <font size="3">add_param_group()</font> |
| 306 | 296 | ||
| @@ -474,12 +464,7 @@ | |||
| 474 | 464 | ||
| 475 | - `params`仅支持bf16,fp16,fp32 | 465 | - `params`仅支持bf16,fp16,fp32 |
| 476 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 466 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 477 | -- 在某些情况下可能回退至CPU执行,例如: | 467 | +- 在某些情况下可能回退至CPU执行 |
| 478 | - | ||
| 479 | - ```python | ||
| 480 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 481 | - optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, foreach=False) | ||
| 482 | - ``` | ||
| 483 | 468 | ||
| 484 | > <font size="3">add_param_group()</font> | 469 | > <font size="3">add_param_group()</font> |
| 485 | 470 | ||
| @@ -653,12 +638,7 @@ | |||
| 653 | 638 | ||
| 654 | - `params`仅支持bf16,fp16,fp32,complex64 | 639 | - `params`仅支持bf16,fp16,fp32,complex64 |
| 655 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 640 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 656 | -- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致,例如: | 641 | +- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致 |
| 657 | - | ||
| 658 | - ```python | ||
| 659 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 660 | - optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, foreach=False) | ||
| 661 | - ``` | ||
| 662 | 642 | ||
| 663 | > <font size="3">add_param_group()</font> | 643 | > <font size="3">add_param_group()</font> |
| 664 | 644 | ||
| @@ -981,12 +961,7 @@ | |||
| 981 | **限制与说明**: | 961 | **限制与说明**: |
| 982 | 962 | ||
| 983 | - `params`仅支持bf16,fp16,fp32 | 963 | - `params`仅支持bf16,fp16,fp32 |
| 984 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 964 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 985 | - | ||
| 986 | - ```python | ||
| 987 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 988 | - optimizer = torch.optim.Adamax(model.parameters(), lr=1e-3, foreach=False) | ||
| 989 | - ``` | ||
| 990 | 965 | ||
| 991 | > <font size="3">add_param_group()</font> | 966 | > <font size="3">add_param_group()</font> |
| 992 | 967 | ||
| @@ -1517,12 +1492,7 @@ | |||
| 1517 | **限制与说明**: | 1492 | **限制与说明**: |
| 1518 | 1493 | ||
| 1519 | - `params`仅支持bf16,fp16,fp32 | 1494 | - `params`仅支持bf16,fp16,fp32 |
| 1520 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1495 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1521 | - | ||
| 1522 | - ```python | ||
| 1523 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1524 | - optimizer = torch.optim.NAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1525 | - ``` | ||
| 1526 | 1496 | ||
| 1527 | > <font size="3">add_param_group()</font> | 1497 | > <font size="3">add_param_group()</font> |
| 1528 | 1498 | ||
| @@ -1705,12 +1675,7 @@ | |||
| 1705 | **限制与说明**: | 1675 | **限制与说明**: |
| 1706 | 1676 | ||
| 1707 | - `params`仅支持bf16,fp16,fp32 | 1677 | - `params`仅支持bf16,fp16,fp32 |
| 1708 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1678 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1709 | - | ||
| 1710 | - ```python | ||
| 1711 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1712 | - optimizer = torch.optim.RAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1713 | - ``` | ||
| 1714 | 1679 | ||
| 1715 | > <font size="3">add_param_group()</font> | 1680 | > <font size="3">add_param_group()</font> |
| 1716 | 1681 | ||
| @@ -1893,12 +1858,7 @@ | |||
| 1893 | **限制与说明**: | 1858 | **限制与说明**: |
| 1894 | 1859 | ||
| 1895 | - `params`仅支持bf16,fp16,fp32 | 1860 | - `params`仅支持bf16,fp16,fp32 |
| 1896 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1861 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1897 | - | ||
| 1898 | - ```python | ||
| 1899 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1900 | - optimizer = torch.optim.RMSprop(model.parameters(), lr=1e-3, foreach=False) | ||
| 1901 | - ``` | ||
| 1902 | 1862 | ||
| 1903 | > <font size="3">add_param_group()</font> | 1863 | > <font size="3">add_param_group()</font> |
| 1904 | 1864 | ||
| @@ -2249,12 +2209,7 @@ | |||
| 2249 | **限制与说明**: | 2209 | **限制与说明**: |
| 2250 | 2210 | ||
| 2251 | - `params`仅支持bf16,fp16,fp32 | 2211 | - `params`仅支持bf16,fp16,fp32 |
| 2252 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 2212 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 2253 | - | ||
| 2254 | - ```python | ||
| 2255 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 2256 | - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, foreach=False) | ||
| 2257 | - ``` | ||
| 2258 | 2213 | ||
| 2259 | > <font size="3">add_param_group()</font> | 2214 | > <font size="3">add_param_group()</font> |
| 2260 | 2215 | ||
| @@ -842,14 +842,7 @@ | |||
| 842 | 842 | ||
| 843 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool | 843 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool |
| 844 | - `index`的维度数需与`input`的维度数一致 | 844 | - `index`的维度数需与`input`的维度数一致 |
| 845 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 845 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 846 | - | ||
| 847 | - ```python | ||
| 848 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 849 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 850 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 851 | - out = torch.gather(x, 0, index) | ||
| 852 | - ``` | ||
| 853 | 846 | ||
| 854 | </div> | 847 | </div> |
| 855 | 848 | ||
| @@ -948,14 +941,7 @@ | |||
| 948 | **限制与说明**: | 941 | **限制与说明**: |
| 949 | 942 | ||
| 950 | - `input`仅支持bf16,fp16,fp32,uint8,int16,int32,int64,bool,complex64,complex128 | 943 | - `input`仅支持bf16,fp16,fp32,uint8,int16,int32,int64,bool,complex64,complex128 |
| 951 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 944 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 952 | - | ||
| 953 | - ```python | ||
| 954 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 955 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 956 | - index = torch.tensor([0, 0], device='npu') # 索引0重复出现 | ||
| 957 | - out = torch.index_select(x, 0, index) | ||
| 958 | - ``` | ||
| 959 | 945 | ||
| 960 | </div> | 946 | </div> |
| 961 | 947 | ||
| @@ -1119,15 +1105,7 @@ | |||
| 1119 | 1105 | ||
| 1120 | - `input`仅支持fp16,fp32,fp64,int8,int16,int32,int64,bool | 1106 | - `input`仅支持fp16,fp32,fp64,int8,int16,int32,int64,bool |
| 1121 | - 可能回退至CPU执行 | 1107 | - 可能回退至CPU执行 |
| 1122 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 1108 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 1123 | - | ||
| 1124 | - ```python | ||
| 1125 | - # index存在重复索引的示例:索引0被多次使用,同一位置被多次写入,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 1126 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 1127 | - src = torch.tensor([[10, 20], [30, 40]], device='npu') | ||
| 1128 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 1129 | - out = torch.scatter(x, 0, index, src) | ||
| 1130 | - ``` | ||
| 1131 | 1109 | ||
| 1132 | </div> | 1110 | </div> |
| 1133 | 1111 | ||
| @@ -1194,15 +1172,7 @@ | |||
| 1194 | **限制与说明**: | 1172 | **限制与说明**: |
| 1195 | 1173 | ||
| 1196 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 | 1174 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 |
| 1197 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 1175 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 1198 | - | ||
| 1199 | - ```python | ||
| 1200 | - # index存在重复索引的示例:索引0被多次使用,同一位置被多次写入,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 1201 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 1202 | - src = torch.tensor([[10, 20], [30, 40]], device='npu') | ||
| 1203 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 1204 | - out = torch.scatter_add(x, 0, index, src) | ||
| 1205 | - ``` | ||
| 1206 | 1176 | ||
| 1207 | </div> | 1177 | </div> |
| 1208 | 1178 | ||
| @@ -513,12 +513,7 @@ | |||
| 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | | 513 | | <term>Atlas A3 训练系列产品</term> | ✔ | |
| 514 | | <term>Ascend 950DT</term> | ✘ | | 514 | | <term>Ascend 950DT</term> | ✘ | |
| 515 | 515 | ||
| 516 | -**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu”,例如: | 516 | +**限制与说明**:采集NPU上的profiling数据时,“`use_device`”需设置为“npu” |
| 517 | - | ||
| 518 | -```python | ||
| 519 | -with torch.autograd.profiler.profile(use_device="npu") as prof: | ||
| 520 | - ... | ||
| 521 | -``` | ||
| 522 | 517 | ||
| 523 | </div> | 518 | </div> |
| 524 | 519 | ||
| @@ -539,12 +539,7 @@ | |||
| 539 | **限制与说明**: | 539 | **限制与说明**: |
| 540 | 540 | ||
| 541 | - `input`仅支持fp32 | 541 | - `input`仅支持fp32 |
| 542 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致,例如: | 542 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.all_to_all`切换为与原生实现保持一致 |
| 543 | - | ||
| 544 | - ```python | ||
| 545 | - import torch_npu | ||
| 546 | - torch_npu.npu.use_compatible_impl(True) | ||
| 547 | - ``` | ||
| 548 | 543 | ||
| 549 | </div> | 544 | </div> |
| 550 | 545 | ||
| @@ -655,12 +650,7 @@ | |||
| 655 | **限制与说明**: | 650 | **限制与说明**: |
| 656 | 651 | ||
| 657 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool | 652 | - `tensor`仅支持bf16,fp16,fp32,int8,int32,bool |
| 658 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致,例如: | 653 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.gather`切换为与原生实现保持一致 |
| 659 | - | ||
| 660 | - ```python | ||
| 661 | - import torch_npu | ||
| 662 | - torch_npu.npu.use_compatible_impl(True) | ||
| 663 | - ``` | ||
| 664 | 654 | ||
| 665 | </div> | 655 | </div> |
| 666 | 656 | ||
| @@ -695,12 +685,7 @@ | |||
| 695 | **限制与说明**: | 685 | **限制与说明**: |
| 696 | 686 | ||
| 697 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool | 687 | - `tensor`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool |
| 698 | -- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致,例如: | 688 | +- 通过设置`torch_npu.npu.use_compatible_impl(True)`,`torch.distributed.scatter`切换为与原生实现保持一致 |
| 699 | - | ||
| 700 | - ```python | ||
| 701 | - import torch_npu | ||
| 702 | - torch_npu.npu.use_compatible_impl(True) | ||
| 703 | - ``` | ||
| 704 | 689 | ||
| 705 | </div> | 690 | </div> |
| 706 | 691 | ||
| @@ -242,12 +242,7 @@ | |||
| 242 | **限制与说明**: | 242 | **限制与说明**: |
| 243 | 243 | ||
| 244 | - `input`仅支持bf16,fp16,fp32 | 244 | - `input`仅支持bf16,fp16,fp32 |
| 245 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 245 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 246 | - | ||
| 247 | - ```python | ||
| 248 | - import torch_npu | ||
| 249 | - torch_npu.npu.use_compatible_impl(True) | ||
| 250 | - ``` | ||
| 251 | 246 | ||
| 252 | </div> | 247 | </div> |
| 253 | 248 | ||
| @@ -506,12 +501,7 @@ | |||
| 506 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 | 501 | - 通过设置torch_npu.npu.use_compatible_impl(True),支持按SDPA后端选择上下文指定MATH后端 |
| 507 | - 与原接口除了规格限制的差异点: | 502 | - 与原接口除了规格限制的差异点: |
| 508 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 | 503 | - NPU的随机算法部分用DSA硬件实现,算法在DSA引擎固化与GPU算法实现存在差异,导致dropout功能和GPU结果不一致 |
| 509 | - - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持,例如: | 504 | + - 当前接口支持输入`query`的head num和`key`/`value`的head num不等长,而原生PyTorch接口不支持 |
| 510 | - | ||
| 511 | - ```python | ||
| 512 | - import torch_npu | ||
| 513 | - torch_npu.npu.use_compatible_impl(True) | ||
| 514 | - ``` | ||
| 515 | 505 | ||
| 516 | </div> | 506 | </div> |
| 517 | 507 | ||
| @@ -1661,11 +1651,7 @@ | |||
| 1661 | **限制与说明**: | 1651 | **限制与说明**: |
| 1662 | 1652 | ||
| 1663 | - `input`仅支持fp16,fp32,fp64 | 1653 | - `input`仅支持fp16,fp32,fp64 |
| 1664 | -- 只支持`mode` = nearest,例如: | 1654 | +- 只支持`mode` = nearest |
| 1665 | - | ||
| 1666 | - ```python | ||
| 1667 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1668 | - ``` | ||
| 1669 | 1655 | ||
| 1670 | </div> | 1656 | </div> |
| 1671 | 1657 | ||
| @@ -1684,11 +1670,7 @@ | |||
| 1684 | **限制与说明**: | 1670 | **限制与说明**: |
| 1685 | 1671 | ||
| 1686 | - `input`仅支持fp16,fp32,fp64 | 1672 | - `input`仅支持fp16,fp32,fp64 |
| 1687 | -- 只支持3-5维,例如: | 1673 | +- 只支持3-5维 |
| 1688 | - | ||
| 1689 | - ```python | ||
| 1690 | - out = torch.nn.functional.upsample(x, size=(256, 256), mode='nearest') | ||
| 1691 | - ``` | ||
| 1692 | 1674 | ||
| 1693 | </div> | 1675 | </div> |
| 1694 | 1676 | ||
| @@ -1450,12 +1450,7 @@ | |||
| 1450 | **限制与说明**: | 1450 | **限制与说明**: |
| 1451 | 1451 | ||
| 1452 | - `input`仅支持bf16,fp16,fp32 | 1452 | - `input`仅支持bf16,fp16,fp32 |
| 1453 | -- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译,例如: | 1453 | +- <term>Atlas A2 训练系列产品</term>,默认场景下,如果频繁触发编译,建议手动设置torch.npu.config.allow_internal_format为False,控制入参不开启内部格式,避免在线编译 |
| 1454 | - | ||
| 1455 | - ```python | ||
| 1456 | - import torch_npu | ||
| 1457 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1458 | - ``` | ||
| 1459 | 1454 | ||
| 1460 | </div> | 1455 | </div> |
| 1461 | 1456 | ||
| @@ -1506,12 +1501,7 @@ | |||
| 1506 | **限制与说明**: | 1501 | **限制与说明**: |
| 1507 | 1502 | ||
| 1508 | - `input`仅支持fp16,fp32 | 1503 | - `input`仅支持fp16,fp32 |
| 1509 | -- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入,例如: | 1504 | +- <term>Atlas 训练系列产品</term>/<term>Atlas A2 训练系列产品</term>,需手动设置torch.npu.config.allow_internal_format为False,才可支持3维输入 |
| 1510 | - | ||
| 1511 | - ```python | ||
| 1512 | - import torch_npu | ||
| 1513 | - torch_npu.npu.config.allow_internal_format = False | ||
| 1514 | - ``` | ||
| 1515 | 1505 | ||
| 1516 | </div> | 1506 | </div> |
| 1517 | 1507 | ||
| @@ -1754,12 +1744,7 @@ | |||
| 1754 | **限制与说明**: | 1744 | **限制与说明**: |
| 1755 | 1745 | ||
| 1756 | - `input`仅支持bf16,fp16,fp32 | 1746 | - `input`仅支持bf16,fp16,fp32 |
| 1757 | -- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐,例如: | 1747 | +- 通过设置torch_npu.npu.use_compatible_impl(True),保证与社区同名接口在内存一致性上对齐 |
| 1758 | - | ||
| 1759 | - ```python | ||
| 1760 | - import torch_npu | ||
| 1761 | - torch_npu.npu.use_compatible_impl(True) | ||
| 1762 | - ``` | ||
| 1763 | 1748 | ||
| 1764 | </div> | 1749 | </div> |
| 1765 | 1750 | ||
| @@ -2970,12 +2955,7 @@ | |||
| 2970 | **限制与说明**: | 2955 | **限制与说明**: |
| 2971 | 2956 | ||
| 2972 | - `input`仅支持bf16,fp16,fp32 | 2957 | - `input`仅支持bf16,fp16,fp32 |
| 2973 | -- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐,例如: | 2958 | +- 通过torch_npu.npu.use_compatible_impl(True),设置该接口从`aclnnLayerNorm`算子切换为`aclnnFastLayerNorm`算子,保证与社区同名接口在内存一致性上对齐 |
| 2974 | - | ||
| 2975 | - ```python | ||
| 2976 | - import torch_npu | ||
| 2977 | - torch_npu.npu.use_compatible_impl(True) | ||
| 2978 | - ``` | ||
| 2979 | 2959 | ||
| 2980 | </div> | 2960 | </div> |
| 2981 | 2961 | ||
| @@ -117,12 +117,7 @@ | |||
| 117 | **限制与说明**: | 117 | **限制与说明**: |
| 118 | 118 | ||
| 119 | - `params`仅支持bf16,fp16,fp32 | 119 | - `params`仅支持bf16,fp16,fp32 |
| 120 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 120 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 121 | - | ||
| 122 | - ```python | ||
| 123 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 124 | - optimizer = torch.optim.Adadelta(model.parameters(), lr=1e-3, foreach=False) | ||
| 125 | - ``` | ||
| 126 | 121 | ||
| 127 | > <font size="3">add_param_group()</font> | 122 | > <font size="3">add_param_group()</font> |
| 128 | 123 | ||
| @@ -295,12 +290,7 @@ | |||
| 295 | **限制与说明**: | 290 | **限制与说明**: |
| 296 | 291 | ||
| 297 | - `params`仅支持bf16,fp16,fp32 | 292 | - `params`仅支持bf16,fp16,fp32 |
| 298 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 293 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 299 | - | ||
| 300 | - ```python | ||
| 301 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 302 | - optimizer = torch.optim.Adagrad(model.parameters(), lr=1e-3, foreach=False) | ||
| 303 | - ``` | ||
| 304 | 294 | ||
| 305 | > <font size="3">add_param_group()</font> | 295 | > <font size="3">add_param_group()</font> |
| 306 | 296 | ||
| @@ -474,12 +464,7 @@ | |||
| 474 | 464 | ||
| 475 | - `params`仅支持bf16,fp16,fp32 | 465 | - `params`仅支持bf16,fp16,fp32 |
| 476 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 466 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 477 | -- 在某些情况下可能回退至CPU执行,例如: | 467 | +- 在某些情况下可能回退至CPU执行 |
| 478 | - | ||
| 479 | - ```python | ||
| 480 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 481 | - optimizer = torch.optim.Adam(model.parameters(), lr=1e-3, foreach=False) | ||
| 482 | - ``` | ||
| 483 | 468 | ||
| 484 | > <font size="3">add_param_group()</font> | 469 | > <font size="3">add_param_group()</font> |
| 485 | 470 | ||
| @@ -653,12 +638,7 @@ | |||
| 653 | 638 | ||
| 654 | - `params`仅支持bf16,fp16,fp32,complex64 | 639 | - `params`仅支持bf16,fp16,fp32,complex64 |
| 655 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` | 640 | - 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 656 | -- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致,例如: | 641 | +- 优化器在启动fused的情况下(fused=True),暂不支持grad_scale和found_inf参数。对标_single_tensor_adamw实现,fp32与cpu/cuda一致,fp16和bf16采用升精度实现,与cpu/cuda不一致 |
| 657 | - | ||
| 658 | - ```python | ||
| 659 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 660 | - optimizer = torch.optim.AdamW(model.parameters(), lr=1e-3, foreach=False) | ||
| 661 | - ``` | ||
| 662 | 642 | ||
| 663 | > <font size="3">add_param_group()</font> | 643 | > <font size="3">add_param_group()</font> |
| 664 | 644 | ||
| @@ -981,12 +961,7 @@ | |||
| 981 | **限制与说明**: | 961 | **限制与说明**: |
| 982 | 962 | ||
| 983 | - `params`仅支持bf16,fp16,fp32 | 963 | - `params`仅支持bf16,fp16,fp32 |
| 984 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 964 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 985 | - | ||
| 986 | - ```python | ||
| 987 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 988 | - optimizer = torch.optim.Adamax(model.parameters(), lr=1e-3, foreach=False) | ||
| 989 | - ``` | ||
| 990 | 965 | ||
| 991 | > <font size="3">add_param_group()</font> | 966 | > <font size="3">add_param_group()</font> |
| 992 | 967 | ||
| @@ -1517,12 +1492,7 @@ | |||
| 1517 | **限制与说明**: | 1492 | **限制与说明**: |
| 1518 | 1493 | ||
| 1519 | - `params`仅支持bf16,fp16,fp32 | 1494 | - `params`仅支持bf16,fp16,fp32 |
| 1520 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1495 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1521 | - | ||
| 1522 | - ```python | ||
| 1523 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1524 | - optimizer = torch.optim.NAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1525 | - ``` | ||
| 1526 | 1496 | ||
| 1527 | > <font size="3">add_param_group()</font> | 1497 | > <font size="3">add_param_group()</font> |
| 1528 | 1498 | ||
| @@ -1705,12 +1675,7 @@ | |||
| 1705 | **限制与说明**: | 1675 | **限制与说明**: |
| 1706 | 1676 | ||
| 1707 | - `params`仅支持bf16,fp16,fp32 | 1677 | - `params`仅支持bf16,fp16,fp32 |
| 1708 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1678 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1709 | - | ||
| 1710 | - ```python | ||
| 1711 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1712 | - optimizer = torch.optim.RAdam(model.parameters(), lr=1e-3, foreach=False) | ||
| 1713 | - ``` | ||
| 1714 | 1679 | ||
| 1715 | > <font size="3">add_param_group()</font> | 1680 | > <font size="3">add_param_group()</font> |
| 1716 | 1681 | ||
| @@ -1893,12 +1858,7 @@ | |||
| 1893 | **限制与说明**: | 1858 | **限制与说明**: |
| 1894 | 1859 | ||
| 1895 | - `params`仅支持bf16,fp16,fp32 | 1860 | - `params`仅支持bf16,fp16,fp32 |
| 1896 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 1861 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 1897 | - | ||
| 1898 | - ```python | ||
| 1899 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 1900 | - optimizer = torch.optim.RMSprop(model.parameters(), lr=1e-3, foreach=False) | ||
| 1901 | - ``` | ||
| 1902 | 1862 | ||
| 1903 | > <font size="3">add_param_group()</font> | 1863 | > <font size="3">add_param_group()</font> |
| 1904 | 1864 | ||
| @@ -2249,12 +2209,7 @@ | |||
| 2249 | **限制与说明**: | 2209 | **限制与说明**: |
| 2250 | 2210 | ||
| 2251 | - `params`仅支持bf16,fp16,fp32 | 2211 | - `params`仅支持bf16,fp16,fp32 |
| 2252 | -- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False`,例如: | 2212 | +- 优化器在启动`foreach`的情况下(`foreach=None`或`foreach=True`),当被优化的参数分组过多时由于`foreach`算子的特性会导致性能下降。这种情况建议设置为`foreach=False` |
| 2253 | - | ||
| 2254 | - ```python | ||
| 2255 | - # 参数分组较多时,建议关闭foreach避免性能下降 | ||
| 2256 | - optimizer = torch.optim.SGD(model.parameters(), lr=1e-3, foreach=False) | ||
| 2257 | - ``` | ||
| 2258 | 2213 | ||
| 2259 | > <font size="3">add_param_group()</font> | 2214 | > <font size="3">add_param_group()</font> |
| 2260 | 2215 | ||
| @@ -840,14 +840,7 @@ | |||
| 840 | 840 | ||
| 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool | 841 | - `input`仅支持fp16,fp32,int16,int32,int64,bool |
| 842 | - `index`的维度数需与`input`的维度数一致 | 842 | - `index`的维度数需与`input`的维度数一致 |
| 843 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 843 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 844 | - | ||
| 845 | - ```python | ||
| 846 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 847 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 848 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 849 | - out = torch.gather(x, 0, index) | ||
| 850 | - ``` | ||
| 851 | 844 | ||
| 852 | </div> | 845 | </div> |
| 853 | 846 | ||
| @@ -946,14 +939,7 @@ | |||
| 946 | **限制与说明**: | 939 | **限制与说明**: |
| 947 | 940 | ||
| 948 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool | 941 | - `input`仅支持bf16,fp16,fp32,int16,int32,int64,bool |
| 949 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 942 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 950 | - | ||
| 951 | - ```python | ||
| 952 | - # index存在重复索引的示例:索引0被多次使用,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 953 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 954 | - index = torch.tensor([0, 0], device='npu') # 索引0重复出现 | ||
| 955 | - out = torch.index_select(x, 0, index) | ||
| 956 | - ``` | ||
| 957 | 943 | ||
| 958 | </div> | 944 | </div> |
| 959 | 945 | ||
| @@ -1120,15 +1106,7 @@ | |||
| 1120 | 1106 | ||
| 1121 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 | 1107 | - `input`仅支持bf16,fp16,fp32,fp64,uint8,int8,int16,int32,int64,bool,complex64,complex128 |
| 1122 | - 可能回退至CPU执行 | 1108 | - 可能回退至CPU执行 |
| 1123 | -- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异,例如: | 1109 | +- 针对<term>Ascend 950DT</term>,由于硬件差异,在索引存在重复的情况下,精度可能和<term>Atlas A2 训练系列产品</term>/<term>Atlas A3 训练系列产品</term>存在差异 |
| 1124 | - | ||
| 1125 | - ```python | ||
| 1126 | - # index存在重复索引的示例:索引0被多次使用,同一位置被多次写入,Ascend 950DT上结果可能与A2/A3存在精度差异 | ||
| 1127 | - x = torch.tensor([[1, 2], [3, 4]], device='npu') | ||
| 1128 | - src = torch.tensor([[10, 20], [30, 40]], device='npu') | ||
| 1129 | - index = torch.tensor([[0], [0]], device='npu') # 索引0重复出现 | ||
| 1130 | - out = torch.scatter(x, 0, index, src) | ||
| 1131 | - ``` | ||
| 1132 | 1110 | ||
| 1133 | </div> | 1111 | </div> |
| 1134 | 1112 | ||