我在 cpu 上试用 pytorch。
我想用混合精度在 cpus 上训练一个模型。由于 pytorch 默认混合精度适用于 GPU,为了在 CPU 上使用混合精度,我尝试使用 ipex(https://github.com/intel/intel-extension-for-pytorch#automatically-mix-precision)最初我正在尝试使用 torch-ipex 1.0.1 和 pytorch 1.5.0 (py3.7_cpu_0)。
对于下面的片段
import intel_pytorch_extension as ipex
# Automatically mix precision
ipex.enable_auto_mixed_precision(mixed_dtype = torch.int8)
我收到了错误
AttributeError:模块“ipex”没有属性“enable_auto_mixed_precision”
然后我可以发现在 torch-ipex 1.0.1 中不存在 enable_auto_mixed_precision 属性,所以我使用以下命令将 torch-ipex 升级到 1.9.0
python -m pip install torch_ipex==1.9.0 -f https://software.intel.com/ipex-whl-stable
现在我在尝试导入 ipex( import intel_pytorch_extension as ipex
)时遇到以下错误
导入错误:/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/torch_ipex/lib/libtorch_ipex.so:未定义符号:_ZNK3c104Type14isSubtypeOfExtERKSt10shared_ptrIS0_EPSo
ImportError Traceback (most recent call last)
<ipython-input-4-8b6ff8b43ca9> in <module>
2 import torch.nn as nn
3
----> 4 import intel_pytorch_extension as ipex
5 # Automatically mix precision
6 ipex.enable_auto_mixed_precision(mixed_dtype = torch.int8)
/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/intel_pytorch_extension/__init__.py in <module>
5 from .version import __version__
6 from .tensor import *
----> 7 from .optim import *
8 from .ops import *
9
/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/intel_pytorch_extension/optim/__init__.py in <module>
----> 1 from .split_sgd import is_available
2 from .split_sgd import SplitSGD
/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/intel_pytorch_extension/optim/split_sgd.py in <module>
1 import torch
2 from torch.optim.optimizer import Optimizer, required
----> 3 import torch_ipex
4
5 _available = False
/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/torch_ipex/__init__.py in <module>
6 from .tensor import *
7 from .optim import *
----> 8 from .ops import *
9
10 base_dir = os.path.basename(os.path.dirname(os.path.abspath(__file__)))
/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/torch_ipex/ops/__init__.py in <module>
----> 1 from .interaction import interaction
2 from .embeddingbag import ipex_embedding_bag
3 from .linear import *
4 from .pooling import *
5 from .mlp import *
/opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/torch_ipex/ops/interaction.py in <module>
2 from torch import nn
3 from torch.autograd import Function
----> 4 import torch_ipex._C as core
5
6 def interaction(*args):
ImportError: /opt/intel/oneapi/pytorch/1.5.0/lib/python3.7/site-packages/torch_ipex/lib/libtorch_ipex.so: undefined symbol: _ZNK3c104Type14isSubtypeOfExtERKSt10shared_ptrIS0_EPSo