Python 3.x 注册和下载fastText.bin模型在Azure机器学习服务中失败

Python 3.x 注册和下载fastText.bin模型在Azure机器学习服务中失败,python-3.x,fasttext,azure-machine-learning-service,Python 3.x,Fasttext,Azure Machine Learning Service,我有一个简单的RegisterModel.py脚本,它使用Azure ML服务SDK注册fastText.bin模型。这将成功完成,并且我可以在Azure门户UI中看到模型(我看不到其中包含哪些模型文件)。然后我想下载模型(DownloadModel.py)并使用它(用于测试目的),但是它在model.download方法(tarfile.ReadError:file无法成功打开)上抛出一个错误,并生成一个0字节的rjtestmodel8.tar.gz文件 然后我使用Azure门户并添加模型,选

我有一个简单的RegisterModel.py脚本,它使用Azure ML服务SDK注册fastText.bin模型。这将成功完成,并且我可以在Azure门户UI中看到模型(我看不到其中包含哪些模型文件)。然后我想下载模型(DownloadModel.py)并使用它(用于测试目的),但是它在model.download方法(tarfile.ReadError:file无法成功打开)上抛出一个错误,并生成一个0字节的rjtestmodel8.tar.gz文件

然后我使用Azure门户并添加模型,选择相同的bin模型文件,它可以正常上传。使用下面的download.py脚本下载它可以正常工作,所以我假设Register脚本有问题

以下是2个脚本和stacktrace-如果您发现任何错误,请告诉我:

RegisterModel.py

import azureml.core
from azureml.core import Workspace, Model
ws = Workspace.from_config()
model = Model.register(workspace=ws,
                       model_name='rjSDKmodel10',
                       model_path='riskModel.bin')
# Works when downloading the UI Uploaded .bin file, but not the SDK registered .bin file
import os
import azureml.core
from azureml.core import Workspace, Model

ws = Workspace.from_config()
model = Model(workspace=ws, name='rjSDKmodel10')
model.download(target_dir=os.getcwd(), exist_ok=True)
下载model.py

import azureml.core
from azureml.core import Workspace, Model
ws = Workspace.from_config()
model = Model.register(workspace=ws,
                       model_name='rjSDKmodel10',
                       model_path='riskModel.bin')
# Works when downloading the UI Uploaded .bin file, but not the SDK registered .bin file
import os
import azureml.core
from azureml.core import Workspace, Model

ws = Workspace.from_config()
model = Model(workspace=ws, name='rjSDKmodel10')
model.download(target_dir=os.getcwd(), exist_ok=True)
Stacktrace

Traceback (most recent call last):
  File "...\.vscode\extensions\ms-python.python-2019.9.34474\pythonFiles\ptvsd_launcher.py", line 43, in <module>
    main(ptvsdArgs)
  File "...\.vscode\extensions\ms-python.python-2019.9.34474\pythonFiles\lib\python\ptvsd\__main__.py", line 432, in main
    run()
  File "...\.vscode\extensions\ms-python.python-2019.9.34474\pythonFiles\lib\python\ptvsd\__main__.py", line 316, in run_file
    runpy.run_path(target, run_name='__main__')
  File "...\.conda\envs\DoC\lib\runpy.py", line 263, in run_path
    pkg_name=pkg_name, script_name=fname)
  File "...\.conda\envs\DoC\lib\runpy.py", line 96, in _run_module_code
    mod_name, mod_spec, pkg_name, script_name)
  File "...\.conda\envs\DoC\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "...\\DownloadModel.py", line 21, in <module>
    model.download(target_dir=os.getcwd(), exist_ok=True)
  File "...\.conda\envs\DoC\lib\site-packages\azureml\core\model.py", line 712, in download
    file_paths = self._download_model_files(sas_to_relative_download_path, target_dir, exist_ok)
  File "...\.conda\envs\DoC\lib\site-packages\azureml\core\model.py", line 658, in _download_model_files
    file_paths = self._handle_packed_model_file(tar_path, target_dir, exist_ok)
  File "...\.conda\envs\DoC\lib\site-packages\azureml\core\model.py", line 670, in _handle_packed_model_file
    with tarfile.open(tar_path) as tar:
  File "...\.conda\envs\DoC\lib\tarfile.py", line 1578, in open
    raise ReadError("file could not be opened successfully")
tarfile.ReadError: file could not be opened successfully
回溯(最近一次呼叫最后一次):
文件“…\.vscode\extensions\ms python.python-2019.9.34474\pythonFiles\ptvsd_launcher.py”,第43行,在
干管(ptvsdArgs)
文件“…\.vscode\extensions\ms python.python-2019.9.34474\pythonFiles\lib\python\ptvsd\\ u_main\u_.py”,第432行,在main中
运行()
文件“…\.vscode\extensions\ms python.python-2019.9.34474\pythonFiles\lib\python\ptvsd\\ u_main__.py”,第316行,在run_文件中
runpy.run\u路径(目标,run\u名称=“”\uu主\uuuuuuuuuuuu')
文件“…\.conda\envs\DoC\lib\runpy.py”,第263行,在运行路径中
pkg_name=pkg_name,script_name=fname)
文件“…\.conda\envs\DoC\lib\runpy.py”,第96行,在运行模块代码中
模块名称、模块规格、组件名称、脚本名称)
文件“…\.conda\envs\DoC\lib\runpy.py”,第85行,在运行代码中
exec(代码、运行\全局)
文件“…\\DownloadModel.py”,第21行,在
下载(target_dir=os.getcwd(),exist_ok=True)
文件“…\.conda\envs\DoC\lib\site packages\azureml\core\model.py”,第712行,下载
文件路径=自。\下载\模型\文件(sas \至\相对\下载\路径、目标\目录、存在\确定)
文件“..\.conda\envs\DoC\lib\site packages\azureml\core\model.py”,第658行,在下载模型文件中
文件路径=self.\u句柄\u压缩\u模型\u文件(tar\u路径、目标\u目录、存在\u确定)
文件“…\.conda\envs\DoC\lib\site packages\azureml\core\model.py”,第670行,在打包的模型文件中
以tarfile.open(tar_路径)作为tar:
文件“…\.conda\envs\DoC\lib\tarfile.py”,第1578行,打开
raise ReadError(“文件无法成功打开”)
tarfile.ReadError:无法成功打开文件
环境

  • riskModel.bin为6兆欧
  • 反洗钱1.0.60
  • Python 3.7
  • 在本地使用可视代码

Azure机器学习服务SDK与Azure存储的交互方式存在缺陷,如果必须重试上载,会导致其上载损坏的文件

两个变通方法:

  • 该缺陷是在1.0.60版本中引入的。如果您降级到AzureML SDK 1.0.55,则当出现上载问题时,代码应该会失败,而不是默默地破坏数据
  • 重试可能是由AzureML SDK默认的低超时值触发的。您可以在
    site packages/azureml/\u restclient/artifacts\u client.py

  • 此错误应在下一版本的AzureML SDK中修复。

    Azure机器学习服务SDK存在一个与Azure存储交互的错误,如果必须重试上载,则会导致其上载损坏的文件

    两个变通方法:

  • 该缺陷是在1.0.60版本中引入的。如果您降级到AzureML SDK 1.0.55,则当出现上载问题时,代码应该会失败,而不是默默地破坏数据
  • 重试可能是由AzureML SDK默认的低超时值触发的。您可以在
    site packages/azureml/\u restclient/artifacts\u client.py

  • 此错误应在下一版本的AzureML SDK中修复。

    看起来注册和下载步骤中的型号名称不同。这可能是问题吗?啊,不,对不起-那只是多次尝试-将修复post为SameLook,就像注册和下载步骤中的型号名称不同一样。这可能是问题吗?啊,不,对不起-那只是多次尝试-将修复后的sameYes。。。就这样。版本1.0.55按预期工作。谢谢你的确认-我正在撕头发-下次发帖前会尝试不同的版本。你知道这是否在1.0.62中得到了修复吗?这个错误应该在1.0.62中修复
    修复了由于重试失败而可能上载损坏或空模型的错误。
    很好-修复了失败的问题。我不完全确定上传是否成功。是的。。。就这样。版本1.0.55按预期工作。谢谢你的确认-我正在撕头发-下次发帖前会尝试不同的版本。你知道这是否在1.0.62中得到了修复吗?这个错误应该在1.0.62中修复
    修复了由于重试失败而可能上载损坏或空模型的错误。
    很好-修复了失败的问题。我不完全确定上传是否成功。