Sagemaker Pytorch:无法从训练脚本中导入 sklearn
Sagemaker Pytorch : Cant import sklearn from training script
我是运行 sagemaker中的pytorch模型
from sagemaker.pytorch import PyTorch
estimator = PyTorch(entry_point='train.py',
role=role,
framework_version='1.0.0',
train_instance_count=1,
train_instance_type='ml.m4.xlarge',
source_dir='source', #the directory where the supporting files are
#what is passed in
hyperparameters={
'max_epochs' : 6,
'layer_dim' : "2500,500,100,1",
'batch_size' : 64,
'seed' : 4524,
'cuda' : False
}
)
其中入口脚本 train.py 包含多个导入
import argparse
import math
import os
from shutil import copy
import time
import torch
import torch.nn as nn
from sklearn.preprocessing import StandardScaler
但是 sklearn 调用失败:
File "/opt/ml/code/train.py", line 9, in <module>
from sklearn.preprocessing import StandardScaler
ModuleNotFoundError: No module named 'sklearn'
问题:
- 在这种情况下如何使用 sklearn 函数?
- 您可以在不使用自定义 docker 路径的情况下添加额外的 pip 安装吗?
是的,您可以安装依赖项而无需使用自定义 dockerfile 路径(也是 BYO 容器)
在您的代码中使用它(其中 mypackage
代表您选择的 pip 包)
import subprocess as sb
import sys
sb.call([sys.executable, "-m", "pip", "install", mypackage])
我是运行 sagemaker中的pytorch模型
from sagemaker.pytorch import PyTorch
estimator = PyTorch(entry_point='train.py',
role=role,
framework_version='1.0.0',
train_instance_count=1,
train_instance_type='ml.m4.xlarge',
source_dir='source', #the directory where the supporting files are
#what is passed in
hyperparameters={
'max_epochs' : 6,
'layer_dim' : "2500,500,100,1",
'batch_size' : 64,
'seed' : 4524,
'cuda' : False
}
)
其中入口脚本 train.py 包含多个导入
import argparse
import math
import os
from shutil import copy
import time
import torch
import torch.nn as nn
from sklearn.preprocessing import StandardScaler
但是 sklearn 调用失败:
File "/opt/ml/code/train.py", line 9, in <module>
from sklearn.preprocessing import StandardScaler
ModuleNotFoundError: No module named 'sklearn'
问题:
- 在这种情况下如何使用 sklearn 函数?
- 您可以在不使用自定义 docker 路径的情况下添加额外的 pip 安装吗?
是的,您可以安装依赖项而无需使用自定义 dockerfile 路径(也是 BYO 容器)
在您的代码中使用它(其中 mypackage
代表您选择的 pip 包)
import subprocess as sb
import sys
sb.call([sys.executable, "-m", "pip", "install", mypackage])