在 AWS Sagemaker 中训练 keras 模型

时间:2021-06-09 07:26:08

标签: amazon-web-services keras amazon-ec2 amazon-sagemaker

我的机器上有 keras 训练脚本。我正在尝试在 AWS sagemaker 容器上运行我的脚本。为此,我使用了以下代码。

from sagemaker.tensorflow import TensorFlow
est = TensorFlow(
    entry_point="caller.py",
    source_dir="./",
    role='role_arn',
    framework_version="2.3.1",
    py_version="py37",
    instance_type='ml.m5.large',
    instance_count=1,
    hyperparameters={'batch': 8, 'epochs': 10},
)

est.fit()

这里的 caller.py 是我的切入点。执行上述代码后,我得到 keras is not installed。这是堆栈跟踪。

Traceback (most recent call last):
  File "executor.py", line 14, in <module>
    est.fit()
  File "/home/thasin/Documents/python/venv/lib/python3.8/site-packages/sagemaker/estimator.py", line 682, in fit
    self.latest_training_job.wait(logs=logs)
  File "/home/thasin/Documents/python/venv/lib/python3.8/site-packages/sagemaker/estimator.py", line 1625, in wait
    self.sagemaker_session.logs_for_job(self.job_name, wait=True, log_type=logs)
  File "/home/thasin/Documents/python/venv/lib/python3.8/site-packages/sagemaker/session.py", line 3681, in logs_for_job
    self._check_job_status(job_name, description, "TrainingJobStatus")
  File "/home/thasin/Documents/python/venv/lib/python3.8/site-packages/sagemaker/session.py", line 3240, in _check_job_status
    raise exceptions.UnexpectedStatusException(
sagemaker.exceptions.UnexpectedStatusException: Error for Training job tensorflow-training-2021-06-09-07-14-01-778: Failed. Reason: AlgorithmError: ExecuteUserScriptError:
Command "/usr/local/bin/python3.7 caller.py --batch 4 --epochs 10

ModuleNotFoundError: No module named 'keras'

  1. 哪个实例预装了 keras?
  2. 有什么方法可以将 python 包安装到 AWS 容器中?或任何解决此问题的方法?

注意:我尝试将自己的容器上传到 ECR 并成功运行我的代码。我正在寻找 AWS 现有的容器功能。

1 个答案:

答案 0 :(得分:0)

Keras 现在是 tensorflow 的一部分,因此您只需重新格式化代码即可使用 tf.keras 而不是 keras。从 tensorflow 2.3.0 版本开始,它们是同步的,所以应该不难。 您的容器是 this,从包列表中可以看出,没有 Keras。 如果你想扩展一个预先构建的容器,你可以看看 here 但我不推荐在这个特定的用例中,因为为了将来的代码可维护性,你应该去 tf.keras< /p>