1

我正在尝试将我的 Faster R-CNN 模型放入 ACI 上的容器实例中。为此,我需要我的 docker 映像拥有 python 版本 3.5.*。我在我的 conda yaml 文件中指定了这一点,但是每次我启动一个实例并docker run -it *** /bin/bash进入它时,我都会看到它只有 Python 3.6.7。

https://user-images.githubusercontent.com/21140767/50680590-82b20b80-1008-11e9-9bfe-4a0e71084ce0.png

如何让我的 Docker 映像具有 Python 版本 3.5.*?我已经尝试过 conda 安装 Python 3.5.2 版本,但这并没有奏效,因为最终它没有 3.5.2,而只有 3.6.7。(dfimage 可让您查看创建图像的 dockerfile,https: //hub.docker.com/r/chenzj/dfimage/ )。

https://user-images.githubusercontent.com/21140767/50680673-d6245980-1008-11e9-9d48-71a7c150d925.png

我的yaml:

name: project_environment
dependencies:
- python=3.5.2

- pip:
  - matplotlib
  - opencv-python==3.4.3.18
  - azureml-core==1.0.6
  - numpy
  - cntk
  - cython
channels:
- anaconda

笔记本单元格:从 azureml.core.conda_dependencies 导入 CondaDependencies

svmandss = CondaDependencies.create(python_version="3.5.2", pip_packages=[
    "matplotlib",
    "opencv-python==3.4.3.18",
    "azureml-core",
    "numpy",
    "cntk",
    "cython"], )
svmandss.add_channel('anaconda')

with open("fasterrcnn.yml","w") as f:
    f.write(svmandss.serialize_to_string())

另一个具有 ContainerImage 规范的笔记本单元。

image_config = ContainerImage.image_configuration(execution_script="score_fasterrcnn.py",runtime="python",conda_file="./fasterrcnn.yml",dependencies=listdir("utils"),docker_file="./Dockerfile")

service = Webservice.deploy_from_model(workspace=ws,
                                       name='faster-rcnn',
                                       deployment_config=aciconfig,
                                       models=[Model(workspace=ws, name='Faster-RCNN')],
                                       image_config=image_config)

service.wait_for_deployment(show_output=True)

笔记

为了提高可读性,请参阅我的 GitHub 问题:( https://github.com/Azure/MachineLearningNotebooks/issues/163 )。

4

4 回答 4

0

目前,在部署 Web 服务时,Python 的版本已固定为 Azure ML 的基础映像中的内容。我们正在研究将来消除此限制。

于 2019-01-08T16:06:10.513 回答
0

编辑:

这对我来说不再是问题。我找到了另一种让我的代码与 python 版本 3.6.7 一起工作的方法。

但是,如果您问我,这仍然是一个问题。如果将来我确实需要 python 3.5 版,那么目前不会有解决方案。

如果您愿意,您仍然可以发布答案。

于 2019-01-08T14:07:56.053 回答
0

我能够通过在 Azure ML Workspace 中注册环境来更改 Python 版本:

from azureml.core.environment import Environment, Workspace
environment = Environment.from_conda_specification(name='myenv', file_path='environment.yml')
environment.python.user_managed_dependencies = False
workspace = Workspace.from_config()
environment = environment.register(workspace=workspace)
env_build = environment.build(workspace=workspace)

然后,配置用于发布的端点,如下所示:

from azureml.core.model import InferenceConfig
environment = Environment.get(workspace=workspace, name='myenv')
inference_config = InferenceConfig(
    entry_script='inference.py',
    source_directory='.',
    environment=environment
)

这是使用 Azure ML SDK 1.29.0。也许这已经被修复并且原始方法也可以工作,但我没有测试过。

于 2021-06-14T20:10:21.670 回答
0

由于这是搜索“azureml python 版本”时谷歌的最佳答案之一,因此我在此处发布答案。当涉及到这一点时,文档不是很清楚,但以下内容将起作用:

from azureml.core import Workspace


from azureml.core.runconfig import RunConfiguration
from azureml.core.conda_dependencies import CondaDependencies

ws = Workspace.from_config()

# This is the important part
conda_dep = CondaDependencies(conda_dependencies_file_path="pipeline/environment.yml")
aml_run_config = RunConfiguration(conda_dependencies=conda_dep)

# Define compute target - must be preconfigured in th workspace
compute_target = ws.compute_targets['my-azureml-target']
aml_run_config.target = compute_target


from azureml.pipeline.steps import PythonScriptStep
script_source_dir = "./pipeline"
step_1_script = "test.py"

step_1 = PythonScriptStep(
    script_name=step_1_script,
    source_directory=script_source_dir,
    compute_target=compute_target,
    runconfig=aml_run_config,
    allow_reuse=True
)

from azureml.pipeline.core import Pipeline

# Build the pipeline
pipeline1 = Pipeline(workspace=ws, steps=[step_1])

from azureml.core import Experiment

# Submit the pipeline to be run
pipeline_run1 = Experiment(ws, 'Test-pipeline').submit(pipeline1)
pipeline_run1.wait_for_completion(show_output=True)

这假定以下目录结构:

  • 根/
    • create_pipeline.py
    • 管道/
      • 测试.py
      • 环境.yml

其中 create_pipeline.py 是上面的文件, test.py 是您要运行的脚本, environment.yml 是 conda 环境文件 - 包括 python 版本。

于 2020-09-30T08:22:43.477 回答