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'

问题:

  1. 在这种情况下如何使用 sklearn 函数?
  2. 您可以在不使用自定义 docker 路径的情况下添加额外的 pip 安装吗?

是的,您可以安装依赖项而无需使用自定义 dockerfile 路径(也是 BYO 容器)

在您的代码中使用它(其中 mypackage 代表您选择的 pip 包)

import subprocess as sb 
import sys 

sb.call([sys.executable, "-m", "pip", "install", mypackage])