Giter Club home page Giter Club logo

mlopspython's Introduction

page_type languages products description
sample
python
azure
azure-machine-learning-service
azure-devops
Code which demonstrates how to set up and operationalize an MLOps flow leveraging Azure Machine Learning and Azure DevOps.

MLOps with Azure ML

CI: Build Status

CD: Build Status

MLOps will help you to understand how to build a Continuous Integration and Continuous Delivery pipeline for an ML/AI project. We will be using the Azure DevOps Project for build and release/deployment pipelines along with Azure ML services for model retraining pipeline, model management and operationalization.

ML lifecycle

This template contains code and pipeline definitions for a machine learning project that demonstrates how to automate an end to end ML/AI workflow.

Architecture and Features

Architecture Reference: Machine learning operationalization (MLOps) for Python models using Azure Machine Learning

This reference architecture shows how to implement continuous integration (CI), continuous delivery (CD), and retraining pipeline for an AI application using Azure DevOps and Azure Machine Learning. The solution is built on the scikit-learn diabetes dataset but can be easily adapted for any AI scenario and other popular build systems such as Jenkins and Travis.

The build pipelines include DevOps tasks for data sanity tests, unit tests, model training on different compute targets, model version management, model evaluation/model selection, model deployment as realtime web service, staged deployment to QA/prod and integration testing.

Prerequisite

  • Active Azure subscription
  • At least contributor access to Azure subscription

Getting Started

To deploy this solution in your subscription, follow the manual instructions in the getting started doc. Then optionally follow the guide for integrating your own code with this repository template.

Repo Details

You can find the details of the code and scripts in the repository here

References

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

mlopspython's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mlopspython's Issues

Error in unit test of ci-build section

Hi I've followed the guide and I've gone over it twice now and I don't know where I messed up. I can run the "Create a Build IaC Pipeline" just fine and I get no errors. But when I run the "azdo-ci-build-train.yml" script it fails on the unit test and subsequent "Publish linting and unit test".
What do I need to do? I really want to complete this tutorial.

I'm on the Free Trial Sub for the next 33 days, but I'm not sure if I have to sign up for the full services for this to work.
In the guide it states the following below (Note). Does that mean I need to sign up for the Azure AD P1/P2 service?

When I go to Sign-ins in the Azure portal I see:
Access denied
You do not have access
To see sign-in data, upgrade your organization's subscription to include Azure AD P1 or P2. Your current license status: Azure AD Free
Start a free Premium Trial

Note: You must have sufficient permissions to register an application with your Azure AD tenant, and assign the application to a role in your Azure subscription. Contact your subscription administrator if you don't have the permissions. Normally a subscription admin can create a Service principal and can provide you the details.

`##[section]Starting: Run unit tests

Task : Command line
Description : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version : 2.151.2
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line

Generating script.
Script contents:
pytest --junitxml=/__w/1/b/unit-testresults.xml /__w/1/s/tests/unit
========================== Starting Command Output ===========================
[command]/bin/bash --noprofile --norc /__w/_temp/50f20f82-d423-44ee-9ba0-8d5181b2cc57.sh
============================= test session starts ==============================
platform linux -- Python 3.7.4, pytest-4.3.0, py-1.8.0, pluggy-0.13.0
rootdir: /__w/1/s, inifile:
collected 5 items

tests/unit/code_test.py F [ 20%]
tests/unit/data_test.py .... [100%]

=================================== FAILURES ===================================
______________________________ test_get_workspace ______________________________

self = <msrestazure.azure_active_directory.AdalAuthentication object at 0x7f4d536acb50>
session = <requests.sessions.Session object at 0x7f4d536acb10>

def signed_session(self, session=None):
    """Create requests session with any required auth headers applied.

    If a session object is provided, configure it directly. Otherwise,
    create a new session and return it.

    :param session: The session to configure for authentication
    :type session: requests.Session
    :rtype: requests.Session
    """
    session = super(AdalAuthentication, self).signed_session(session)

    try:
      raw_token = self._adal_method(*self._args, **self._kwargs)

/usr/local/lib/python3.7/site-packages/msrestazure/azure_active_directory.py:448:


self = <adal.authentication_context.AuthenticationContext object at 0x7f4d536ac950>
resource = 'https://management.core.windows.net/', client_id = ''
client_secret = ''

def acquire_token_with_client_credentials(self, resource, client_id, client_secret):
    '''Gets a token for a given resource via client credentials.

    :param str resource: A URI that identifies the resource for which the
        token is valid.
    :param str client_id: The OAuth client id of the calling application.
    :param str client_secret: The OAuth client secret of the calling application.
    :returns: dict with several keys, include "accessToken".
    '''
    def token_func(self):
        token_request = TokenRequest(self._call_context, self, client_id, resource)
        return token_request.get_token_with_client_credentials(client_secret)
  return self._acquire_token(token_func)

/usr/local/lib/python3.7/site-packages/adal/authentication_context.py:179:


self = <adal.authentication_context.AuthenticationContext object at 0x7f4d536ac950>
token_func = <function AuthenticationContext.acquire_token_with_client_credentials..token_func at 0x7f4d536a9680>
correlation_id = None

def _acquire_token(self, token_func, correlation_id=None):
    self._call_context['log_context'] = log.create_log_context(
        correlation_id or self.correlation_id, self._call_context.get('enable_pii', False))
    self.authority.validate(self._call_context)
  return token_func(self)

/usr/local/lib/python3.7/site-packages/adal/authentication_context.py:128:


self = <adal.authentication_context.AuthenticationContext object at 0x7f4d536ac950>

def token_func(self):
    token_request = TokenRequest(self._call_context, self, client_id, resource)
  return token_request.get_token_with_client_credentials(client_secret)

/usr/local/lib/python3.7/site-packages/adal/authentication_context.py:177:


self = <adal.token_request.TokenRequest object at 0x7f4d536aed90>
client_secret = ''

def get_token_with_client_credentials(self, client_secret):
    self._log.debug("Getting token with client credentials.")
    try:
        token = self._find_token_from_cache()
        if token:
            return token
    except AdalError:
        self._log.exception('Attempt to look for token in cache resulted in Error')

    oauth_parameters = self._create_oauth_parameters(OAUTH2_GRANT_TYPE.CLIENT_CREDENTIALS)
    oauth_parameters[OAUTH2_PARAMETERS.CLIENT_SECRET] = client_secret
  token = self._oauth_get_token(oauth_parameters)

/usr/local/lib/python3.7/site-packages/adal/token_request.py:310:


self = <adal.token_request.TokenRequest object at 0x7f4d536aed90>
oauth_parameters = {'client_secret': '', 'grant_type': 'client_credentials', 'resource': 'https://management.core.windows.net/'}

def _oauth_get_token(self, oauth_parameters):
    client = self._create_oauth2_client()
  return client.get_token(oauth_parameters)

/usr/local/lib/python3.7/site-packages/adal/token_request.py:112:


self = <adal.oauth2_client.OAuth2Client object at 0x7f4d536aedd0>
oauth_parameters = {'client_secret': '', 'grant_type': 'client_credentials', 'resource': 'https://management.core.windows.net/'}

def get_token(self, oauth_parameters):
    token_url = self._create_token_url()
    url_encoded_token_request = urlencode(oauth_parameters)
    post_options = util.create_request_options(self, _REQ_OPTION)

    operation = "Get Token"

    try:
        resp = requests.post(token_url.geturl(),
                             data=url_encoded_token_request,
                             headers=post_options['headers'],
                             verify=self._call_context.get('verify_ssl', None),
                             proxies=self._call_context.get('proxies', None),
                             timeout=self._call_context.get('timeout', None))

        util.log_return_correlation_id(self._log, operation, resp)
    except Exception:
        self._log.exception("%(operation)s request failed", {"operation": operation})
        raise

    if util.is_http_success(resp.status_code):
        return self._handle_get_token_response(resp.text)
    else:
        if resp.status_code == 429:
            resp.raise_for_status()  # Will raise requests.exceptions.HTTPError
        return_error_string = _ERROR_TEMPLATE.format(operation, resp.status_code)
        error_response = ""
        if resp.text:
            return_error_string = u"{} and server response: {}".format(return_error_string,
                                                                       resp.text)
            try:
                error_response = resp.json()
            except ValueError:
                pass
      raise AdalError(return_error_string, error_response)

E adal.adal_error.AdalError: Get Token request returned http error: 404

/usr/local/lib/python3.7/site-packages/adal/oauth2_client.py:289: AdalError

During handling of the above exception, another exception occurred:

name = 'RHML-AML-WS', resource_group = 'RHML-AML-RG', subscription_id = ''
tenant_id = '', app_id = '', app_secret = ''

def get_workspace(
        name: str,
        resource_group: str,
        subscription_id: str,
        tenant_id: str,
        app_id: str,
        app_secret: str):
    service_principal = ServicePrincipalAuthentication(
        tenant_id=tenant_id,
        service_principal_id=app_id,
        service_principal_password=app_secret)

    try:
        aml_workspace = Workspace.get(
            name=name,
            subscription_id=subscription_id,
            resource_group=resource_group,
          auth=service_principal)

ml_service/util/workspace.py:23:


name = 'RHML-AML-WS'
auth = <azureml.core.authentication.ServicePrincipalAuthentication object at 0x7f4d536ace50>
subscription_id = '', resource_group = 'RHML-AML-RG'

@staticmethod
def get(name, auth=None, subscription_id=None, resource_group=None):
    """Return a workspace object for an existing Azure Machine Learning Workspace.

    Throws an exception if the workspace does not exist or the required fields
    do not uniquely identify a workspace.

    :param name: The name of the workspace to get.
    :type name: str
    :param auth: The authentication object. For more details refer to https://aka.ms/aml-notebook-auth.
        If None, the default Azure CLI credentials will be used or the API will prompt for credentials.
    :type auth: azureml.core.authentication.ServicePrincipalAuthentication or
        azureml.core.authentication.InteractiveLoginAuthentication
    :param subscription_id: The subscription ID to use.
        The parameter is required if the user has access to more than one subscription.
    :type subscription_id: str
    :param resource_group: The resource group to use.
        If None, the method will search all resource groups in the subscription.
    :type resource_group: str
    :return: The workspace object.
    :rtype: azureml.core.Workspace
    """
    if not auth:
        auth = InteractiveLoginAuthentication()

    # If everything is specified then we use the get operation, which is faster than the list
    # operation.
    if subscription_id and resource_group:
        return Workspace(subscription_id, resource_group, name, auth=auth)

    if not subscription_id:
      subscription_id = Workspace._fetch_subscription(auth)

/usr/local/lib/python3.7/site-packages/azureml/core/workspace.py:372:


auth = <azureml.core.authentication.ServicePrincipalAuthentication object at 0x7f4d536ace50>

@staticmethod
def _fetch_subscription(auth):
    """Get all subscriptions a user has access to.

    If a user has access to only one subscription than that is  returned, otherwise an exception is thrown.

    :param auth: The authentication object. For more details refer to https://aka.ms/aml-notebook-auth.
    :type auth: azureml.core.authentication.AbstractAuthentication
    :return: A subscription id
    :rtype: str
    """
  all_subscriptions = auth._get_all_subscription_ids()

/usr/local/lib/python3.7/site-packages/azureml/core/workspace.py:760:


self = <azureml.core.authentication.ServicePrincipalAuthentication object at 0x7f4d536ace50>

def _get_all_subscription_ids(self):
    """Return a list of subscriptions that are accessible through this authentication.

    :return: Returns a list of SubscriptionInfo named tuples.
    :rtype: list, str
    """
  arm_token = self._get_arm_token()

/usr/local/lib/python3.7/site-packages/azureml/core/authentication.py:842:


self = <azureml.core.authentication.ServicePrincipalAuthentication object at 0x7f4d536ace50>
args = (), kwargs = {}, field_name = '_cached_arm_token'

def wrapper(self, *args, **kwargs):
    """Wrapper.

    :param args:
    :type args: list
    :param kwargs:
    :type kwargs: dict
    :return: Returns the test function.
    :rtype: object
    """
    field_name = ServicePrincipalAuthentication._token_type_to_field_dict[token_type]
    if self._enable_caching:
        cached_token = getattr(self, field_name)
        if not cached_token or self._is_token_expired(cached_token):
            with ServicePrincipalAuthentication._sp_auth_lock:
                # Getting it again after acquiring the lock in case some other thread might have updated it.
                cached_token = getattr(self, field_name)
                if not cached_token or self._is_token_expired(cached_token):
                    s = time.time()
                    module_logger.debug("Calling {} in ServicePrincipalAuthentication "
                                        "to get token.".format(actual_function))
                    new_token = actual_function(self, *args, **kwargs)
                    module_logger.debug("{} call completed in {} s".format(
                        actual_function, (time.time()-s)))
                    setattr(self, field_name, new_token)
                    return new_token
                else:
                    return cached_token
        else:
            return cached_token
    else:
      return actual_function(self, *args, **kwargs)

/usr/local/lib/python3.7/site-packages/azureml/core/authentication.py:755:


self = <azureml.core.authentication.ServicePrincipalAuthentication object at 0x7f4d536ace50>

@_sp_auth_caching_decorator("ARM_TOKEN")
def _get_arm_token(self):
    """Return arm access token.

    :return: Returns arm token from sp credential object
    :rtype: str
    """
  header = self._get_sp_credential_object().signed_session().headers['Authorization']

/usr/local/lib/python3.7/site-packages/azureml/core/authentication.py:797:


self = <msrestazure.azure_active_directory.AdalAuthentication object at 0x7f4d536acb50>
session = <requests.sessions.Session object at 0x7f4d536acb10>

def signed_session(self, session=None):
    """Create requests session with any required auth headers applied.

    If a session object is provided, configure it directly. Otherwise,
    create a new session and return it.

    :param session: The session to configure for authentication
    :type session: requests.Session
    :rtype: requests.Session
    """
    session = super(AdalAuthentication, self).signed_session(session)

    try:
        raw_token = self._adal_method(*self._args, **self._kwargs)
    except adal.AdalError as err:
        # pylint: disable=no-member
        if 'AADSTS70008:' in ((getattr(err, 'error_response', None) or {}).get('error_description') or ''):
            raise Expired("Credentials have expired due to inactivity.")
        else:
          raise AuthenticationError(err)

E msrest.exceptions.AuthenticationError: Get Token request returned http error: 404

/usr/local/lib/python3.7/site-packages/msrestazure/azure_active_directory.py:454: AuthenticationError

During handling of the above exception, another exception occurred:

def test_get_workspace():
    workspace_name = os.environ.get("BASE_NAME")+"-AML-WS"
    resource_group = os.environ.get("BASE_NAME")+"-AML-RG"
    subscription_id = os.environ.get("SUBSCRIPTION_ID")
    tenant_id = os.environ.get("TENANT_ID")
    app_id = os.environ.get("SP_APP_ID")
    app_secret = os.environ.get("SP_APP_SECRET")

    aml_workspace = get_workspace(
        workspace_name,
        resource_group,
        subscription_id,
        tenant_id,
        app_id,
      app_secret)

tests/unit/code_test.py:23:


name = 'RHML-AML-WS', resource_group = 'RHML-AML-RG', subscription_id = ''
tenant_id = '', app_id = '', app_secret = ''

def get_workspace(
        name: str,
        resource_group: str,
        subscription_id: str,
        tenant_id: str,
        app_id: str,
        app_secret: str):
    service_principal = ServicePrincipalAuthentication(
        tenant_id=tenant_id,
        service_principal_id=app_id,
        service_principal_password=app_secret)

    try:
        aml_workspace = Workspace.get(
            name=name,
            subscription_id=subscription_id,
            resource_group=resource_group,
            auth=service_principal)

        return aml_workspace
    except Exception as caught_exception:
        print("Error while retrieving Workspace...")
        print(str(caught_exception))
      sys.exit(1)

E SystemExit: 1

ml_service/util/workspace.py:29: SystemExit
----------------------------- Captured stdout call -----------------------------
Error while retrieving Workspace...
Get Token request returned http error: 404
=============================== warnings summary ===============================
/usr/local/lib/python3.7/site-packages/socks.py:58
/usr/local/lib/python3.7/site-packages/socks.py:58: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
from collections import Callable

/usr/local/lib/python3.7/site-packages/azureml/data/dataset_type_definitions.py:69
/usr/local/lib/python3.7/site-packages/azureml/data/dataset_type_definitions.py:69: DeprecationWarning: FileType Enum is Deprecated in > 1.0.39. Use strings instead.
category=DeprecationWarning)

/usr/local/lib/python3.7/site-packages/azureml/_base_sdk_common/utils.py:11
/usr/local/lib/python3.7/site-packages/azureml/_base_sdk_common/utils.py:11: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
from collections import Iterable

-- Docs: https://docs.pytest.org/en/latest/warnings.html
-------------- generated xml file: /__w/1/b/unit-testresults.xml ---------------
================ 1 failed, 4 passed, 3 warnings in 1.68 seconds ================
##[error]Bash exited with code '1'.
##[section]Finishing: Run unit tests
`

`##[section]Starting: Publish linting and unit test results

Task : Publish Test Results
Description : Publish test results to Azure Pipelines
Version : 2.158.0
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/test/publish-test-results

Timestamp is not available for one or more testsuites. Total run duration is being calculated as the sum of time durations of detected testsuites
Timestamp is not available for one or more testsuites. Total run duration is being calculated as the sum of time durations of detected testsuites
##[section]Async Command Start: Publish test results
Publishing test results to test run '22'
Test results remaining: 17. Test run id: 22
Published Test Run : https://tfsprodcus4.visualstudio.com/Aabd9a587-291d-437a-9967-95c61ab46f08/RH-Project/_TestManagement/Runs?runId=22&_a=runCharts
Publishing test results to test run '24'
Test results remaining: 5. Test run id: 24
Published Test Run : https://tfsprodcus4.visualstudio.com/Aabd9a587-291d-437a-9967-95c61ab46f08/RH-Project/_TestManagement/Runs?runId=24&_a=runCharts
##[error]There are one or more test failures detected in result files. Detailed summary of published test results can be viewed in the Tests tab.
##[section]Async Command End: Publish test results
##[section]Finishing: Publish linting and unit test results
`

Fresh pip install throws error

Running on a fresh environment

pip install -r environment_setup/requirements.txt

throws

ERROR: Could not find a version that satisfies the requirement azureml-dataprep-native<14.0.0,>=13.1.0 (from azureml-dataprep[fuse]<1.2.0a,>=1.1.29a->azureml-sdk>=1.0->-r .\environment_setup\requirements.txt (line 4)) (from versions: none)
ERROR: No matching distribution found for azureml-dataprep-native<14.0.0,>=13.1.0 (from azureml-dataprep[fuse]<1.2.0a,>=1.1.29a->azureml-sdk>=1.0->-r .\environment_setup\requirements.txt (line 4))

OS: Windows
Python: 3.8

Failed to run pipeline azdo-ci-build-train.yml

I get the below error while publishing the AML service pipeline. Any help to debug this is much appreciated. I had pulled from the latest of this repository yesterday.

##[section]Starting: Publish Azure Machine Learning Pipeline. Python on ML

Task : Bash
Description : Run a Bash script on macOS, Linux, or Windows
Version : 3.159.3
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/bash

Generating script.
========================== Starting Command Output ===========================
[command]/bin/bash --noprofile --norc /__w/_temp/365092a7-00dc-4375-b49a-02184648ad9b.sh
Workspace.create(name='mlopcent-AML-WS', subscription_id='601f4351-33bb-4d76-96ca-886940409b3d', resource_group='mlopcent-AML-RG')
Found existing compute target cpucluster so using it.
AmlCompute(workspace=Workspace.create(name='mlopcent-AML-WS', subscription_id='601f4351-33bb-4d76-96ca-886940409b3d', resource_group='mlopcent-AML-RG'), name=cpucluster, id=/subscriptions/601f4351-33bb-4d76-96ca-886940409b3d/resourceGroups/mlopcent-AML-RG/providers/Microsoft.MachineLearningServices/workspaces/mlopcent-AML-WS/computes/cpucluster, type=AmlCompute, provisioning_state=Succeeded, location=centralus, tags=None)
Step Train created
Step Evaluate created
Traceback (most recent call last):
File "/__w/1/s/ml_service/pipelines/build_train_pipeline.py", line 129, in
main()
File "/__w/1/s/ml_service/pipelines/build_train_pipeline.py", line 117, in main
train_pipeline = Pipeline(workspace=aml_workspace, steps=steps)
File "/usr/local/lib/python3.7/site-packages/azureml/core/_experiment_method.py", line 93, in wrapper
return init_func(self, *args, **kwargs)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/pipeline.py", line 179, in init
self._graph = self._graph_builder.build(self._name, steps, finalize=False)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 1331, in build
graph = self.construct(name, steps)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 1353, in construct
self.process_collection(steps)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 1389, in process_collection
builder.process_collection(collection)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 1601, in process_collection
self._base_builder.process_collection(item)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 1383, in process_collection
return self.process_step(collection)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 1427, in process_step
node = step.create_node(self._graph, self._default_datastore, self._context)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/steps/python_script_step.py", line 202, in create_node
graph=graph, default_datastore=default_datastore, context=context)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/_python_script_step_base.py", line 89, in create_node
context, self._source_directory, self._script_name, self._hash_paths)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/builder.py", line 922, in get_source_directory_and_hash_paths
return Module.process_source_directory_and_hash_paths(self.name, source_directory, script_name, hash_paths)
File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/module.py", line 231, in process_source_directory_and_hash_paths
% (name, abs_path))
ValueError: Step [Evaluate Model ]: script not found at: /__w/1/s/ code/evaluate/evaluate_model.py. Make sure to specify an appropriate source_directory on the Step or default_source_directory on the Pipeline.

##[error]Bash exited with code '1'.
##[section]Finishing: Publish Azure Machine Learning Pipeline. Python on ML

Use of __main__ in scripts

It isn't an absolute requirement but usually it is best to split your scripts into functions and use the main entry for the script

Error on prepare step when running ML training pipeline

Just today I forked the current version of this repo and followed the getting started guide to set up the pipelines using Azure DevOps. All is set up and the ML pipeline is created in AML. However, when invoking the retrain pipeline, I get these errors in AML.

Any ideas what went wrong here?

Thanks!

From 20_image_build_log.txt:

2019/10/15 11:08:47 Downloading source code...
2019/10/15 11:08:50 Finished downloading source code
2019/10/15 11:08:51 Creating Docker network: acb_default_network, driver: 'bridge'
2019/10/15 11:08:51 Successfully set up Docker network: acb_default_network
2019/10/15 11:08:51 Setting up Docker configuration...
2019/10/15 11:08:52 Successfully set up Docker configuration
2019/10/15 11:08:52 Logging in to registry: sebmlopsamlcr.azurecr.io
2019/10/15 11:08:53 Successfully logged into sebmlopsamlcr.azurecr.io
2019/10/15 11:08:53 Executing step ID: acb_step_0. Timeout(sec): 5400, Working directory: '', Network: 'acb_default_network'
2019/10/15 11:08:53 Scanning for dependencies...
2019/10/15 11:08:55 Successfully scanned dependencies
2019/10/15 11:08:55 Launching container with name: acb_step_0
Sending build context to Docker daemon  59.39kB


Step 1/15 : FROM mcr.microsoft.com/azureml/base:intelmpi2018.3-ubuntu16.04@sha256:9bda9c367ad75bf4530c4cd034b4b82884ef52a13bb52e5ba5feb8e332cbaec8
sha256:9bda9c367ad75bf4530c4cd034b4b82884ef52a13bb52e5ba5feb8e332cbaec8: Pulling from azureml/base
16c48d79e9cc: Already exists
3c654ad3ed7d: Already exists
6276f4f9c29d: Already exists
a4bd43ad48ce: Already exists
f190bad819d1: Pulling fs layer
07f7c6b6ffe6: Pulling fs layer
9bd8013aa86d: Pulling fs layer
28efa186d852: Pulling fs layer
8adfa74289f9: Pulling fs layer
6865d2339eef: Pulling fs layer
2a7bad8c8573: Pulling fs layer
28efa186d852: Waiting
8adfa74289f9: Waiting
6865d2339eef: Waiting
2a7bad8c8573: Waiting
9bd8013aa86d: Verifying Checksum
9bd8013aa86d: Download complete
07f7c6b6ffe6: Verifying Checksum
07f7c6b6ffe6: Download complete
f190bad819d1: Verifying Checksum
f190bad819d1: Download complete
6865d2339eef: Verifying Checksum
6865d2339eef: Download complete
8adfa74289f9: Verifying Checksum
8adfa74289f9: Download complete
28efa186d852: Verifying Checksum
28efa186d852: Download complete
2a7bad8c8573: Verifying Checksum
2a7bad8c8573: Download complete
f190bad819d1: Pull complete
07f7c6b6ffe6: Pull complete
9bd8013aa86d: Pull complete
28efa186d852: Pull complete
8adfa74289f9: Pull complete
6865d2339eef: Pull complete
2a7bad8c8573: Pull complete
Digest: sha256:9bda9c367ad75bf4530c4cd034b4b82884ef52a13bb52e5ba5feb8e332cbaec8
Status: Downloaded newer image for mcr.microsoft.com/azureml/base:intelmpi2018.3-ubuntu16.04@sha256:9bda9c367ad75bf4530c4cd034b4b82884ef52a13bb52e5ba5feb8e332cbaec8
 ---> 2b48389fb638
Step 2/15 : USER root
 ---> Running in a5f73aa440a1
Removing intermediate container a5f73aa440a1
 ---> afe48629ce42
Step 3/15 : RUN mkdir -p $HOME/.cache
 ---> Running in 15080cd562b8
Removing intermediate container 15080cd562b8
 ---> a58908cbbf59
Step 4/15 : WORKDIR /
 ---> Running in ff746600d881
Removing intermediate container ff746600d881
 ---> a742af9830bf
Step 5/15 : COPY azureml-environment-setup/99brokenproxy /etc/apt/apt.conf.d/
 ---> ac6f9605ca2b
Step 6/15 : RUN if dpkg --compare-versions `conda --version | grep -oE '[^ ]+$'` lt 4.4.11; then conda install conda==4.4.11; fi
 ---> Running in 2e4f759dcdfc
Removing intermediate container 2e4f759dcdfc
 ---> 501340b3d002
Step 7/15 : COPY azureml-environment-setup/mutated_conda_dependencies.yml azureml-environment-setup/mutated_conda_dependencies.yml
 ---> 126dc504ffe7
Step 8/15 : RUN ldconfig /usr/local/cuda/lib64/stubs && conda env create -p /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a -f azureml-environment-setup/mutated_conda_dependencies.yml && rm -rf "$HOME/.cache/pip" && conda clean -aqy && CONDA_ROOT_DIR=$(conda info --root) && rm -rf "$CONDA_ROOT_DIR/pkgs" && find "$CONDA_ROOT_DIR" -type d -name __pycache__ -exec rm -rf {} + && ldconfig
 ---> Running in f8b50f7397ff
Solving environment: ...working... done
�[91m

==> WARNING: A newer version of conda exists. <==
  current version: 4.5.11
  latest version: 4.7.12

Please update conda by running

    $ conda update -n base -c defaults conda



pytz-2019.3          | 237 KB    |            |   0% �[0m�[91m
pytz-2019.3          | 237 KB    | #########4 |  94% �[0m�[91m
pytz-2019.3          | 237 KB    | ########## | 100% �[0m�[91m

absl-py-0.8.1        | 157 KB    |            |   0% �[0m�[91m
absl-py-0.8.1        | 157 KB    | ########## | 100% �[0m�[91m

_libgcc_mutex-0.1    | 3 KB      |            |   0% �[0m�[91m
_libgcc_mutex-0.1    | 3 KB      | ########## | 100% �[0m�[91m

hdf5-1.10.5          | 3.1 MB    |            |   0% �[0m�[91m
hdf5-1.10.5          | 3.1 MB    | #######7   |  77% �[0m�[91m
hdf5-1.10.5          | 3.1 MB    | #########6 |  96% �[0m�[91m
hdf5-1.10.5          | 3.1 MB    | ########## | 100% �[0m�[91m

certifi-2019.9.11    | 147 KB    |            |   0% �[0m�[91m
certifi-2019.9.11    | 147 KB    | ########## | 100% �[0m�[91m

astor-0.7.1          | 22 KB     |            |   0% �[0m�[91m
astor-0.7.1          | 22 KB     | ########## | 100% �[0m�[91m

markdown-3.1.1       | 60 KB     |            |   0% �[0m�[91m
markdown-3.1.1       | 60 KB     | ########## | 100% �[0m�[91m

tk-8.5.19            | 1.9 MB    |            |   0% �[0m�[91m
tk-8.5.19            | 1.9 MB    | #######7   |  78% �[0m�[91m
tk-8.5.19            | 1.9 MB    | ########## | 100% �[0m�[91m

libblas-3.8.0        | 10 KB     |            |   0% �[0m�[91m
libblas-3.8.0        | 10 KB     | ########## | 100% �[0m�[91m

numpy-1.17.2         | 5.2 MB    |            |   0% �[0m�[91m
numpy-1.17.2         | 5.2 MB    | #######6   |  76% �[0m�[91m
numpy-1.17.2         | 5.2 MB    | #########8 |  99% �[0m�[91m
numpy-1.17.2         | 5.2 MB    | ########## | 100% �[0m�[91m

sqlite-3.13.0        | 4.9 MB    |            |   0% �[0m�[91m
sqlite-3.13.0        | 4.9 MB    | #####2     |  53% �[0m�[91m
sqlite-3.13.0        | 4.9 MB    | #######8   |  78% �[0m�[91m
sqlite-3.13.0        | 4.9 MB    | #########7 |  97% �[0m�[91m
sqlite-3.13.0        | 4.9 MB    | ########## | 100% �[0m�[91m

werkzeug-0.16.0      | 259 KB    |            |   0% �[0m�[91m
werkzeug-0.16.0      | 259 KB    | ########## | 100% �[0m�[91m

c-ares-1.15.0        | 100 KB    |            |   0% �[0m�[91m
c-ares-1.15.0        | 100 KB    | ########## | 100% �[0m�[91m

gxx_impl_linux-64-7. | 19.1 MB   |            |   0% �[0m�[91m
gxx_impl_linux-64-7. | 19.1 MB   | #3         |  13% �[0m�[91m
gxx_impl_linux-64-7. | 19.1 MB   | #####5     |  56% �[0m�[91m
gxx_impl_linux-64-7. | 19.1 MB   | #######5   |  76% �[0m�[91m
gxx_impl_linux-64-7. | 19.1 MB   | #########2 |  92% �[0m�[91m
gxx_impl_linux-64-7. | 19.1 MB   | ########## | 100% �[0m�[91m

yaml-0.1.7           | 78 KB     |            |   0% �[0m�[91m
yaml-0.1.7           | 78 KB     | ########## | 100% �[0m�[91m

libprotobuf-3.10.0   | 4.8 MB    |            |   0% �[0m�[91m
libprotobuf-3.10.0   | 4.8 MB    | #######6   |  76% �[0m�[91m
libprotobuf-3.10.0   | 4.8 MB    | #########4 |  94% �[0m�[91m
libprotobuf-3.10.0   | 4.8 MB    | ########## | 100% �[0m�[91m

pyyaml-5.1.2         | 184 KB    |            |   0% �[0m�[91m
pyyaml-5.1.2         | 184 KB    | ########## | 100% �[0m�[91m

pip-19.2.3           | 1.9 MB    |            |   0% �[0m�[91m
pip-19.2.3           | 1.9 MB    | #######7   |  77% �[0m�[91m
pip-19.2.3           | 1.9 MB    | #########2 |  93% �[0m�[91m
pip-19.2.3           | 1.9 MB    | ########## | 100% �[0m�[91m

tensorboard-1.13.1   | 3.3 MB    |            |   0% �[0m�[91m
tensorboard-1.13.1   | 3.3 MB    | #######6   |  76% �[0m�[91m
tensorboard-1.13.1   | 3.3 MB    | #########1 |  91% �[0m�[91m
tensorboard-1.13.1   | 3.3 MB    | ########## | 100% �[0m�[91m

grpcio-1.16.0        | 1.0 MB    |            |   0% �[0m�[91m
grpcio-1.16.0        | 1.0 MB    | ########3  |  83% �[0m�[91m
grpcio-1.16.0        | 1.0 MB    | ########## | 100% �[0m�[91m

wheel-0.33.6         | 35 KB     |            |   0% �[0m�[91m
wheel-0.33.6         | 35 KB     | ########## | 100% �[0m�[91m

libopenblas-0.3.7    | 7.6 MB    |            |   0% �[0m�[91m
libopenblas-0.3.7    | 7.6 MB    | #######5   |  75% �[0m�[91m
libopenblas-0.3.7    | 7.6 MB    | #########7 |  98% �[0m�[91m
libopenblas-0.3.7    | 7.6 MB    | ########## | 100% �[0m�[91m

ca-certificates-2019 | 144 KB    |            |   0% �[0m�[91m
ca-certificates-2019 | 144 KB    | ########## | 100% �[0m�[91m

protobuf-3.10.0      | 693 KB    |            |   0% �[0m�[91m
protobuf-3.10.0      | 693 KB    | ########1  |  82% �[0m�[91m
protobuf-3.10.0      | 693 KB    | ########## | 100% �[0m�[91m

mako-1.1.0           | 57 KB     |            |   0% �[0m�[91m
mako-1.1.0           | 57 KB     | ########## | 100% �[0m�[91m

tensorflow-1.13.1    | 75.5 MB   |            |   0% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | 6          |   6% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #6         |  17% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | ##6        |  27% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | ###6       |  37% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | ####7      |  47% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #####8     |  59% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | ######9    |  69% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #######9   |  79% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | ########6  |  86% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #########1 |  91% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #########4 |  95% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #########7 |  97% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | #########8 |  99% �[0m�[91m
tensorflow-1.13.1    | 75.5 MB   | ########## | 100% �[0m�[91m

ncurses-5.9          | 1.1 MB    |            |   0% �[0m�[91m
ncurses-5.9          | 1.1 MB    | #######8   |  79% �[0m�[91m
ncurses-5.9          | 1.1 MB    | ########7  |  88% �[0m�[91m
ncurses-5.9          | 1.1 MB    | #########7 |  97% �[0m�[91m
ncurses-5.9          | 1.1 MB    | ########## | 100% �[0m�[91m

gxx_linux-64-7.3.0   | 11 KB     |            |   0% �[0m�[91m
gxx_linux-64-7.3.0   | 11 KB     | ########## | 100% �[0m�[91m

scipy-1.3.1          | 18.1 MB   |            |   0% �[0m�[91m
scipy-1.3.1          | 18.1 MB   | ###2       |  32% �[0m�[91m
scipy-1.3.1          | 18.1 MB   | #######5   |  75% �[0m�[91m
scipy-1.3.1          | 18.1 MB   | #########4 |  95% �[0m�[91m
scipy-1.3.1          | 18.1 MB   | ########## | 100% �[0m�[91m

openssl-1.0.2r       | 3.1 MB    |            |   0% �[0m�[91m
openssl-1.0.2r       | 3.1 MB    | #######7   |  78% �[0m�[91m
openssl-1.0.2r       | 3.1 MB    | #########8 |  98% �[0m�[91m
openssl-1.0.2r       | 3.1 MB    | ########## | 100% �[0m�[91m

pygpu-0.7.6          | 657 KB    |            |   0% �[0m�[91m
pygpu-0.7.6          | 657 KB    | ########9  |  89% �[0m�[91m
pygpu-0.7.6          | 657 KB    | ########## | 100% �[0m�[91m

readline-6.2         | 713 KB    |            |   0% �[0m�[91m
readline-6.2         | 713 KB    | ########5  |  85% �[0m�[91m
readline-6.2         | 713 KB    | ########## | 100% �[0m�[91m

libcblas-3.8.0       | 10 KB     |            |   0% �[0m�[91m
libcblas-3.8.0       | 10 KB     | ########## | 100% �[0m�[91m

keras-preprocessing- | 33 KB     |            |   0% �[0m�[91m
keras-preprocessing- | 33 KB     | ########## | 100% �[0m�[91m

python-3.6.2         | 19.0 MB   |            |   0% �[0m�[91m
python-3.6.2         | 19.0 MB   |            |   0% �[0m�[91m
python-3.6.2         | 19.0 MB   | 9          |  10% �[0m�[91m
python-3.6.2         | 19.0 MB   | ###        |  31% �[0m�[91m
python-3.6.2         | 19.0 MB   | ######9    |  70% �[0m�[91m
python-3.6.2         | 19.0 MB   | ########3  |  84% �[0m�[91m
python-3.6.2         | 19.0 MB   | #########4 |  94% �[0m�[91m
python-3.6.2         | 19.0 MB   | ########## | 100% �[0m�[91m

h5py-2.10.0          | 1.2 MB    |            |   0% �[0m�[91m
h5py-2.10.0          | 1.2 MB    | #######9   |  79% �[0m�[91m
h5py-2.10.0          | 1.2 MB    | ########## | 100% �[0m�[91m

xz-5.2.4             | 366 KB    |            |   0% �[0m�[91m
xz-5.2.4             | 366 KB    | #########4 |  95% �[0m�[91m
xz-5.2.4             | 366 KB    | ########## | 100% �[0m�[91m

zlib-1.2.11          | 105 KB    |            |   0% �[0m�[91m
zlib-1.2.11          | 105 KB    | ########## | 100% �[0m�[91m

pandas-0.25.1        | 11.4 MB   |            |   0% �[0m�[91m
pandas-0.25.1        | 11.4 MB   | ###3       |  33% �[0m�[91m
pandas-0.25.1        | 11.4 MB   | #######5   |  75% �[0m�[91m
pandas-0.25.1        | 11.4 MB   | #########1 |  92% �[0m�[91m
pandas-0.25.1        | 11.4 MB   | ########## | 100% �[0m�[91m

liblapack-3.8.0      | 10 KB     |            |   0% �[0m�[91m
liblapack-3.8.0      | 10 KB     | ########## | 100% �[0m�[91m

libgfortran-ng-7.3.0 | 1.7 MB    |            |   0% �[0m�[91m
libgfortran-ng-7.3.0 | 1.7 MB    | #######8   |  78% �[0m�[91m
libgfortran-ng-7.3.0 | 1.7 MB    | ########## | 100% �[0m�[91m

gcc_linux-64-7.3.0   | 11 KB     |            |   0% �[0m�[91m
gcc_linux-64-7.3.0   | 11 KB     | ########## | 100% �[0m�[91m

keras-applications-1 | 30 KB     |            |   0% �[0m�[91m
keras-applications-1 | 30 KB     | ########## | 100% �[0m�[91m

tensorflow-estimator | 205 KB    |            |   0% �[0m�[91m
tensorflow-estimator | 205 KB    | ########## | 100% �[0m�[91m

libstdcxx-ng-9.1.0   | 4.0 MB    |            |   0% �[0m�[91m
libstdcxx-ng-9.1.0   | 4.0 MB    | #######6   |  77% �[0m�[91m
libstdcxx-ng-9.1.0   | 4.0 MB    | #########7 |  98% �[0m�[91m
libstdcxx-ng-9.1.0   | 4.0 MB    | ########## | 100% �[0m�[91m

setuptools-41.4.0    | 624 KB    |            |   0% �[0m�[91m
setuptools-41.4.0    | 624 KB    | ########5  |  85% �[0m�[91m
setuptools-41.4.0    | 624 KB    | ########## | 100% �[0m�[91m

scikit-learn-0.21.3  | 6.7 MB    |            |   0% �[0m�[91m
scikit-learn-0.21.3  | 6.7 MB    | #######5   |  75% �[0m�[91m
scikit-learn-0.21.3  | 6.7 MB    | #########7 |  98% �[0m�[91m
scikit-learn-0.21.3  | 6.7 MB    | ########## | 100% �[0m�[91m

markupsafe-1.1.1     | 26 KB     |            |   0% �[0m�[91m
markupsafe-1.1.1     | 26 KB     | ########## | 100% �[0m�[91m

gcc_impl_linux-64-7. | 70.5 MB   |            |   0% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | 5          |   5% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #6         |  17% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ##7        |  28% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ###4       |  34% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ####4      |  45% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #####6     |  56% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ######7    |  68% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #######7   |  77% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ########3  |  84% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ########8  |  89% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #########2 |  92% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #########4 |  95% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #########6 |  96% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #########7 |  98% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #########8 |  99% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | #########9 |  99% �[0m�[91m
gcc_impl_linux-64-7. | 70.5 MB   | ########## | 100% �[0m�[91m

joblib-0.14.0        | 197 KB    |            |   0% �[0m�[91m
joblib-0.14.0        | 197 KB    | ########## | 100% �[0m�[91m

keras-2.3.1          | 591 KB    |            |   0% �[0m�[91m
keras-2.3.1          | 591 KB    | ########4  |  85% �[0m�[91m
keras-2.3.1          | 591 KB    | ########## | 100% �[0m�[91m

binutils_impl_linux- | 16.4 MB   |            |   0% �[0m�[91m
binutils_impl_linux- | 16.4 MB   | ###1       |  31% �[0m�[91m
binutils_impl_linux- | 16.4 MB   | #######5   |  75% �[0m�[91m
binutils_impl_linux- | 16.4 MB   | #########2 |  92% �[0m�[91m
binutils_impl_linux- | 16.4 MB   | ########## | 100% �[0m�[91m

python-dateutil-2.8. | 219 KB    |            |   0% �[0m�[91m
python-dateutil-2.8. | 219 KB    | ########## | 100% �[0m�[91m

libgpuarray-0.7.6    | 263 KB    |            |   0% �[0m�[91m
libgpuarray-0.7.6    | 263 KB    | ########## | 100% �[0m�[91m

binutils_linux-64-2. | 10 KB     |            |   0% �[0m�[91m
binutils_linux-64-2. | 10 KB     | ########## | 100% �[0m�[91m

gast-0.3.2           | 11 KB     |            |   0% �[0m�[91m
gast-0.3.2           | 11 KB     | ########## | 100% �[0m�[91m

termcolor-1.1.0      | 6 KB      |            |   0% �[0m�[91m
termcolor-1.1.0      | 6 KB      | ########## | 100% �[0m�[91m

theano-1.0.4         | 3.6 MB    |            |   0% �[0m�[91m
theano-1.0.4         | 3.6 MB    | #######6   |  77% �[0m�[91m
theano-1.0.4         | 3.6 MB    | #########  |  91% �[0m�[91m
theano-1.0.4         | 3.6 MB    | ########## | 100% �[0m�[91m

mock-3.0.5           | 44 KB     |            |   0% �[0m�[91m
mock-3.0.5           | 44 KB     | ########## | 100% �[0m�[91m

six-1.12.0           | 22 KB     |            |   0% �[0m�[91m
six-1.12.0           | 22 KB     | ########## | 100% �[0m�[91m

libgcc-ng-9.1.0      | 8.1 MB    |            |   0% �[0m�[91m
libgcc-ng-9.1.0      | 8.1 MB    | ######9    |  69% �[0m�[91m
libgcc-ng-9.1.0      | 8.1 MB    | #########  |  90% �[0m�[91m
libgcc-ng-9.1.0      | 8.1 MB    | ########## | 100% �[0m
Downloading and Extracting Packages
Preparing transaction: ...working... done
Verifying transaction: ...working... done
Executing transaction: ...working... done
Collecting azure (from -r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5a/5e/f94bd8091ab0ccc68ee902e188d4e8cd3b38dc77155a1c187cbf4767d0e4/azure-4.0.0-py2.py3-none-any.whl
Collecting azureml-core==1.0.65.* (from -r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/a0/13/65465d5b95a0d9bf1b11f436d462e332c4157db0667d761648a8a49b3bda/azureml_core-1.0.65.1-py2.py3-none-any.whl (1.1MB)
Collecting azure-storage (from -r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 3))
  Downloading https://files.pythonhosted.org/packages/76/26/482c033f8f3a48d16cf75aad91c3e1256856719f4117fabb4696d33aa5da/azure_storage-0.36.0-py2.py3-none-any.whl (190kB)
Collecting azure-storage-blob (from -r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 4))
  Downloading https://files.pythonhosted.org/packages/3e/84/610f379b46d7d3c2d48eadeed6a12b6d46a43100fea70534f5992d0ac996/azure_storage_blob-2.1.0-py2.py3-none-any.whl (88kB)
Collecting azure-datalake-store~=0.0.18 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/2d/8e/7f990443bd3d3b6a9112ff8d15d93216e67378a037ec9090d7dd248eec2d/azure_datalake_store-0.0.47-py2.py3-none-any.whl (53kB)
Collecting azure-servicebus~=0.21.1 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/b8/de/47c0df32b57512ac9640ba239c7eeca22cb908bd8b645235729ec4f37196/azure_servicebus-0.21.1-py2.py3-none-any.whl
Collecting azure-keyvault~=1.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/80/37/e80f577570b32648c4b88c8c48a46501a4868ae4c8d905774fd02c2b01fc/azure_keyvault-1.1.0-py2.py3-none-any.whl (352kB)
Collecting azure-storage-queue~=1.3 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/72/94/4db044f1c155b40c5ebc037bfd9d1c24562845692c06798fbe869fe160e6/azure_storage_queue-1.4.0-py2.py3-none-any.whl
Collecting azure-eventgrid~=1.1 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/01/e4/2a3319f04c69f0113a05884664769d462dcec55031c6d154a2c4176cfb79/azure_eventgrid-1.3.0-py2.py3-none-any.whl (167kB)
Collecting azure-servicefabric~=6.3.0.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/2c/d9/3e33ad19eb57988dff3aac06bab241736f86dc692a38c5ff6bb6fb959243/azure_servicefabric-6.3.0.0-py2.py3-none-any.whl (1.1MB)
Collecting azure-graphrbac~=0.40.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/89/0a/29f7e2914033e2536026b8f0d7f8deb1edda68c9a93ce4757b2b1e39568b/azure_graphrbac-0.40.0-py2.py3-none-any.whl (63kB)
Collecting azure-servicemanagement-legacy~=0.20.6 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/a3/2b/0813d459df7ec04bb8c6a250882ee88b672a5f8d16a237978c89436a053e/azure_servicemanagement_legacy-0.20.6-py2.py3-none-any.whl (78kB)
Collecting azure-mgmt~=4.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/19/8e/6fa401c437579127e726487582a9861fef09022c4ab50901bb499a8e4fc1/azure_mgmt-4.0.0-py2.py3-none-any.whl
Collecting azure-loganalytics~=0.1.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/54/e2/1d30270441a50efce1d52eb426710fc98269eb8bdac44ee966bbd07846da/azure_loganalytics-0.1.0-py2.py3-none-any.whl
Collecting azure-storage-file~=1.3 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/c9/33/6c611563412ffc409b2413ac50e3a063133ea235b86c137759774c77f3ad/azure_storage_file-1.4.0-py2.py3-none-any.whl
Collecting azure-cosmosdb-table~=1.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/55/81/f57fea1cdab4490bc185e48a4db2451795fde37eb8fed1808e7e8fd2c99e/azure_cosmosdb_table-1.0.5-py2.py3-none-any.whl (80kB)
Collecting azure-batch~=4.1 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/b1/fa/1053b5dcd88e5de8e8cd70a4d7189ffad037542963ea86b518deb612c498/azure_batch-4.1.3-py2.py3-none-any.whl (314kB)
Collecting azure-applicationinsights~=0.1.0 (from azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/3b/f7/3af9ce8a9a597998629436889cf5d69d1a0c96713e795fd372e4af785635/azure_applicationinsights-0.1.0-py2.py3-none-any.whl (104kB)
Collecting PyJWT (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/87/8b/6a9f14b5f781697e51259d81657e6048fd31a113229cf346880bb7545565/PyJWT-1.7.1-py2.py3-none-any.whl
Collecting backports.tempfile (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/b4/5c/077f910632476281428fe254807952eb47ca78e720d059a46178c541e669/backports.tempfile-1.0-py2.py3-none-any.whl
Collecting jsonpickle (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/07/07/c157520a3ebd166c8c24c6ae0ecae7c3968eb4653ff0e5af369bb82f004d/jsonpickle-1.2-py2.py3-none-any.whl
Collecting contextlib2 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/85/60/370352f7ef6aa96c52fb001831622f50f923c1d575427d021b8ab3311236/contextlib2-0.6.0.post1-py2.py3-none-any.whl
Collecting jmespath (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/83/94/7179c3832a6d45b266ddb2aac329e101367fbdb11f425f13771d27f225bb/jmespath-0.9.4-py2.py3-none-any.whl
Collecting adal>=1.2.0 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/4f/b5/3ea9ae3d1096b9ff31e8f1846c47d49f3129a12464ac0a73b602de458298/adal-1.2.2-py2.py3-none-any.whl (53kB)
Collecting azure-common>=1.1.12 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/00/55/a703923c12cd3172d5c007beda0c1a34342a17a6a72779f8a7c269af0cd6/azure_common-1.1.23-py2.py3-none-any.whl
Requirement already satisfied: pytz in /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/lib/python3.6/site-packages (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2)) (2019.3)
Collecting urllib3>=1.23 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/e0/da/55f51ea951e1b7c63a579c09dd7db825bb730ec1fe9c0180fc77bfb31448/urllib3-1.25.6-py2.py3-none-any.whl (125kB)
Collecting azure-mgmt-authorization>=0.40.0 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/5e/17/4724694ddb3311955ddc367eddcd0928f8ee2c7b12d5a6f0b12bca0b03db/azure_mgmt_authorization-0.60.0-py2.py3-none-any.whl (82kB)
Collecting pathspec (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/7a/68/5902e8cd7f7b17c5879982a3a3ee2ad0c3b92b80c79989a2d3e1ca8d29e1/pathspec-0.6.0.tar.gz
Collecting ruamel.yaml<=0.15.89,>=0.15.35 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/36/e1/cc2fa400fa5ffde3efa834ceb15c464075586de05ca3c553753dcd6f1d3b/ruamel.yaml-0.15.89-cp36-cp36m-manylinux1_x86_64.whl (651kB)
Collecting msrestazure>=0.4.33 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/68/75/5cb56ca8cbc6c5fe476e4878c73f57a331edcf55e5d3fcb4a7377d7d659d/msrestazure-0.6.2-py2.py3-none-any.whl (40kB)
Collecting azure-mgmt-containerregistry>=2.0.0 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/97/70/8c2d0509db466678eba16fa2b0a539499f3b351b1f2993126ad843d5be13/azure_mgmt_containerregistry-2.8.0-py2.py3-none-any.whl (718kB)
Requirement already satisfied: python-dateutil>=2.7.3 in /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/lib/python3.6/site-packages (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2)) (2.8.0)
Collecting SecretStorage (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/82/59/cb226752e20d83598d7fdcabd7819570b0329a61db07cfbdd21b2ef546e3/SecretStorage-3.1.1-py3-none-any.whl
Requirement already satisfied: six>=1.11.0 in /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/lib/python3.6/site-packages (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2)) (1.12.0)
Collecting cryptography!=1.9,!=2.0.*,!=2.1.*,!=2.2.* (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/97/18/c6557f63a6abde34707196fb2cad1c6dc0dbff25a200d5044922496668a4/cryptography-2.7-cp34-abi3-manylinux1_x86_64.whl (2.3MB)
Collecting ndg-httpsclient (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/fb/67/c2f508c00ed2a6911541494504b7cac16fe0b0473912568df65fd1801132/ndg_httpsclient-0.5.1-py3-none-any.whl
Collecting azure-mgmt-resource>=1.2.1 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/7c/0d/80815326fa04f2a73ea94b0f57c29669c89df5aa5f5e285952f6445a91c4/azure_mgmt_resource-5.1.0-py2.py3-none-any.whl (681kB)
Collecting azure-mgmt-storage>=1.5.0 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/a1/71/c1f73fa452b7f2e1b5567621a1386907cb4591ef8335c012ab4b358fb090/azure_mgmt_storage-4.2.0-py2.py3-none-any.whl (435kB)
Collecting msrest>=0.5.1 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/27/b0/c34b3ea9b2ed74b800520fbefb312cdb7f05c20b8bd42e5e7662a5614f98/msrest-0.6.10-py2.py3-none-any.whl (82kB)
Collecting docker (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/cc/ca/699d4754a932787ef353a157ada74efd1ceb6d1fc0bfb7989ae1e7b33111/docker-4.1.0-py2.py3-none-any.whl (139kB)
Collecting pyopenssl (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/01/c8/ceb170d81bd3941cbeb9940fc6cc2ef2ca4288d0ca8929ea4db5905d904d/pyOpenSSL-19.0.0-py2.py3-none-any.whl (53kB)
Collecting requests>=2.19.1 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
Collecting azure-mgmt-keyvault>=0.40.0 (from azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/b3/d1/9fed0a3a3b43d0b1ad59599b5c836ccc4cf117e26458075385bafe79575b/azure_mgmt_keyvault-2.0.0-py2.py3-none-any.whl (80kB)
Collecting azure-nspkg>=2.0.0 (from azure-storage->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 3))
  Downloading https://files.pythonhosted.org/packages/c4/0c/c562be95a9a2ed52454f598571cf300b1114d0db2aa27f5b8ed3bb9cd0c0/azure_nspkg-3.0.2-py3-none-any.whl
Collecting azure-storage-common~=2.1 (from azure-storage-blob->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 4))
  Downloading https://files.pythonhosted.org/packages/6b/a0/6794b318ce0118d1a4053bdf0149a60807407db9b710354f2b203c2f5975/azure_storage_common-2.1.0-py2.py3-none-any.whl (47kB)
Collecting cffi (from azure-datalake-store~=0.0.18->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/d6/cf/ba7e2df852a2fc807d48b3f7bea46f741830be4f047a0712e6de3e95fb6a/cffi-1.13.0.tar.gz (459kB)
Collecting azure-mgmt-recoveryservicesbackup~=0.3.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/c5/af/13b10d76bc0ff9188c9e5cd9f2726a5745029b76125938491f9abac5399d/azure_mgmt_recoveryservicesbackup-0.3.0-py2.py3-none-any.whl (568kB)
Collecting azure-mgmt-eventgrid~=1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/54/5b/e91e616021ae9be0019c9c19cffb92b97d787246ca51cfcc0b0a0c6da77a/azure_mgmt_eventgrid-1.0.0-py2.py3-none-any.whl (51kB)
Collecting azure-mgmt-marketplaceordering~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/a8/cb/13502fdbaf520d08fb280eb31ecfe5d926b9cf92259c22280bbde96b307d/azure_mgmt_marketplaceordering-0.1.0-py2.py3-none-any.whl
Collecting azure-mgmt-eventhub~=2.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5a/cb/3822bcfa815f894c86a27845ae4160c0169722598399234cd6f77bb82347/azure_mgmt_eventhub-2.6.0-py2.py3-none-any.whl (189kB)
Collecting azure-mgmt-subscription~=0.2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/27/72/f63f72d9c27659f96aae287f7ba67c9ba2877213c2c10d8b797e0dee5059/azure_mgmt_subscription-0.2.0-py2.py3-none-any.whl (40kB)
Collecting azure-mgmt-cdn~=3.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/97/bf/c41e8985b4ffaaad2baaded1fb7b113433ae2d30d65c1a8c226e72284b72/azure_mgmt_cdn-3.1.0-py2.py3-none-any.whl (119kB)
Collecting azure-mgmt-machinelearningcompute~=0.4.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/b4/9c/f8eb81b307df4465809b182f2fe44c288eeb41c0ab54f91b61ac554998a9/azure_mgmt_machinelearningcompute-0.4.1-py2.py3-none-any.whl
Collecting azure-mgmt-containerservice~=4.2 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5b/2f/0eba2dbd5d3f66c076a66b0020ccfe9c7e78534ac132afaa104c138680c1/azure_mgmt_containerservice-4.4.0-py2.py3-none-any.whl (206kB)
Collecting azure-mgmt-datamigration~=1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/8b/4f/7b149487e77d94e701288e1d0b066a7d522bdfe8595e992b5d39dfb00f80/azure_mgmt_datamigration-1.0.0-py2.py3-none-any.whl (185kB)
Collecting azure-mgmt-compute~=4.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/0e/4d/7ac30585c567a8b9fe8294e0e956c6ef48665522ddf8f8c44bf38b700798/azure_mgmt_compute-4.6.2-py2.py3-none-any.whl (3.0MB)
Collecting azure-mgmt-applicationinsights~=0.1.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/30/61/1d95a5ef3a9119a0d375d8670129375515de20e20409612e9671c99bd19f/azure_mgmt_applicationinsights-0.1.1-py2.py3-none-any.whl (42kB)
Collecting azure-mgmt-powerbiembedded~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/64/2b/5a69d118626a83055ce577fb6ba35c114e72f0273d0c4d943b909ee8d51e/azure_mgmt_powerbiembedded-2.0.0-py2.py3-none-any.whl
Collecting azure-mgmt-cosmosdb~=0.4.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/17/ed/d97a04c8c26e2432f2cf000b711daeb053e1cfbdb046bd5d070c941b4fcb/azure_mgmt_cosmosdb-0.4.1-py2.py3-none-any.whl (100kB)
Collecting azure-mgmt-consumption~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/11/f4/2db9557494dfb17ff3edeae5726981143a7baace17df3712b189e343bd8c/azure_mgmt_consumption-2.0.0-py2.py3-none-any.whl (46kB)
Collecting azure-mgmt-relay~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/00/f7/f5c72bd19829cfaf9f070ec294c901ad7f98835ba9560fdad652afb1071f/azure_mgmt_relay-0.1.0-py2.py3-none-any.whl
Collecting azure-mgmt-reservations~=0.2.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/a9/2b/e0edb8dbe85e447005cde508b869e564f58270f631219f036d8ab71184f9/azure_mgmt_reservations-0.2.1-py2.py3-none-any.whl (50kB)
Collecting azure-mgmt-hanaonazure~=0.1.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/f3/1b/50d300ae02158ab092f923132050b56c148f1b784c7b594d3275d4449769/azure_mgmt_hanaonazure-0.1.1-py2.py3-none-any.whl
Collecting azure-mgmt-batch~=5.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/97/81/a9eb3fd2ab070159105b4cfe9640c24410ac8195286729d62bfdf871de94/azure_mgmt_batch-5.0.1-py2.py3-none-any.whl (87kB)
Collecting azure-mgmt-devspaces~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/f4/d3/ff9c39578f24fb4bd158a882788c7795b177cf3f23ce7cf1d8b52066a64e/azure_mgmt_devspaces-0.1.0-py2.py3-none-any.whl
Collecting azure-mgmt-maps~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/e4/04/c64326729e842f3eab1fd527f7582e269e4b0e5b9324a4562edaf0371953/azure_mgmt_maps-0.1.0-py2.py3-none-any.whl
Collecting azure-mgmt-logic~=3.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/88/98/693c515e97043520f5cebf1ecae7bf198df100f5f9870b53d4be3bcaa5ce/azure_mgmt_logic-3.0.0-py2.py3-none-any.whl (303kB)
Collecting azure-mgmt-datalake-analytics~=0.6.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/73/e7/5d909ef5812fc31f2871f3510ef43af93157ba51be03b6f798afba7a29d8/azure_mgmt_datalake_analytics-0.6.0-py2.py3-none-any.whl (288kB)
Collecting azure-mgmt-cognitiveservices~=3.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/8d/c8/222ea2f533c6b8f8656f3091101b4c3aa32c162d2a609d07d1ae00172515/azure_mgmt_cognitiveservices-3.0.0-py2.py3-none-any.whl (58kB)
Collecting azure-mgmt-containerinstance~=1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/fd/d1/d770050f20ad81b80f7eb41f89e1a5d841cf74bf41c7e1ff137c46f28a1e/azure_mgmt_containerinstance-1.5.0-py2.py3-none-any.whl (96kB)
Collecting azure-mgmt-datafactory~=0.6.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/cf/01/32a6ad5ad348d965f7c106d819a1f6dc613f6aa98a720ffc529ef468016b/azure_mgmt_datafactory-0.6.0-py2.py3-none-any.whl (418kB)
Collecting azure-mgmt-commerce~=1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/7e/13/f421e77dd1fe3c9657a890f9c085f433fe422f54003ee03e631a8be5c4e7/azure_mgmt_commerce-1.0.1-py2.py3-none-any.whl
Collecting azure-mgmt-policyinsights~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/19/84/7021951ae69572a19af0ff9cca1d2abf3542d35af38796656ded1be08358/azure_mgmt_policyinsights-0.1.0-py2.py3-none-any.whl (44kB)
Collecting azure-mgmt-scheduler~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/e8/55/f3490698ff622244438e667e0321808e84389e69c5fb77a1d6db869d9bb7/azure_mgmt_scheduler-2.0.0-py2.py3-none-any.whl (67kB)
Collecting azure-mgmt-managementgroups~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/f2/50/591adac2a6cd8d77cccd38bdf5d177ad6a2e95b9217daa9a60b5d86de5cd/azure_mgmt_managementgroups-0.1.0-py2.py3-none-any.whl (59kB)
Collecting azure-mgmt-search~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/c9/18/fa4e0d541332c0ba6ef16beaa9b55f831436949e7d0981d5677dff2ddfb5/azure_mgmt_search-2.1.0-py2.py3-none-any.whl (41kB)
Collecting azure-mgmt-devtestlabs~=2.2 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/2f/93/a64abaede2fc6a52476af8ceab9cedb368c49e948d9385cbe7cd4ce5ffff/azure_mgmt_devtestlabs-2.2.0-py2.py3-none-any.whl (194kB)
Collecting azure-mgmt-signalr~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/10/32/379137548a4c6e4dfd15da6b1c476f2b1af52e8d7fe243fdac9ea2064427/azure_mgmt_signalr-0.1.1-py2.py3-none-any.whl (49kB)
Collecting azure-mgmt-iotcentral~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/58/4e/e2e5f2d545a46ada3705c85c45c12882a443d40f60e1a908c78058e15cf2/azure_mgmt_iotcentral-0.1.0-py2.py3-none-any.whl
Collecting azure-mgmt-web~=0.35.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/21/04/3f2622720664c972d927fd9e58c0066e998739b7891649207765be674126/azure_mgmt_web-0.35.0-py2.py3-none-any.whl (358kB)
Collecting azure-mgmt-datalake-store~=0.5.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/ff/ac/5685cd06dc8b245bb6b894815764a14bd62245ba4579b45148682f510fdd/azure_mgmt_datalake_store-0.5.0-py2.py3-none-any.whl (88kB)
Collecting azure-mgmt-batchai~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/d9/a5/ab796c2a490155c14f9ac4240724ca5c56723315d4dc753030712e6f2e80/azure_mgmt_batchai-2.0.0-py2.py3-none-any.whl (174kB)
Collecting azure-mgmt-loganalytics~=0.2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/70/40/c9b77bf82916e963aa701fb396673f7ddc4cdab95524b6d2edf927b05630/azure_mgmt_loganalytics-0.2.0-py2.py3-none-any.whl (89kB)
Collecting azure-mgmt-managementpartner~=0.1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/9a/91/2bccd2bdca4158a7b6169538b25e22e0b4f8ff835754888aab45ffbd0448/azure_mgmt_managementpartner-0.1.1-py2.py3-none-any.whl
Collecting azure-mgmt-msi~=0.2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/ae/95/b451721e38ca0feddce03ee3ce86158e208d0150253bd371207a8df4e9c5/azure_mgmt_msi-0.2.0-py2.py3-none-any.whl
Collecting azure-mgmt-notificationhubs~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/55/c0/62a0495583dfc44830f711be52cb4a4e116c2f72c89a19b90d654bdafc4a/azure_mgmt_notificationhubs-2.1.0-py2.py3-none-any.whl (76kB)
Collecting azure-mgmt-rdbms~=1.2 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/d2/94/c850c8257d19b08eb6b03154d6fe21938801562b4082d27985f54ebe9de4/azure_mgmt_rdbms-1.9.0-py2.py3-none-any.whl (259kB)
Collecting azure-mgmt-recoveryservices~=0.3.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/fd/7f/80327a27e03473101afb136e872279ad1386adf1bac14a58a9f839cd8352/azure_mgmt_recoveryservices-0.3.0-py2.py3-none-any.whl (70kB)
Collecting azure-mgmt-servicebus~=0.5.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/28/ad/9e90f8bab40a9682410e57ed08a799be113c5e470bec247b099038c6389e/azure_mgmt_servicebus-0.5.3-py2.py3-none-any.whl (112kB)
Collecting azure-mgmt-trafficmanager~=0.50.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/ed/4f/c322d72dc92dde543471bc23f9ac0eb6b9d0dc2441bb5ce938250040e307/azure_mgmt_trafficmanager-0.50.0-py2.py3-none-any.whl (52kB)
Collecting azure-mgmt-servicefabric~=0.2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/6e/06/fafe8b5d881cfa68927e61557c8419dcfacb93e07f4ab17cc60959707a53/azure_mgmt_servicefabric-0.2.0-py2.py3-none-any.whl (142kB)
Collecting azure-mgmt-dns~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/c7/d7/0f986a64b06db93cf29b76f9a188f5778eb959624a00ed6aedc335ee58d2/azure_mgmt_dns-2.1.0-py2.py3-none-any.whl (134kB)
Collecting azure-mgmt-iothubprovisioningservices~=0.2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/84/ce/3500c731a5c5b31028e662aa41bc45f75301834a0c03adeacfe7ef7bd86e/azure_mgmt_iothubprovisioningservices-0.2.0-py2.py3-none-any.whl (60kB)
Collecting azure-mgmt-sql~=0.9.1 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/c5/bb/219c76af961e9e6d1f5055d70c3cc06889b91375727a04367149c3aad640/azure_mgmt_sql-0.9.1-py2.py3-none-any.whl (485kB)
Collecting azure-mgmt-media~=1.0.0rc2 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/65/2e/6d9649bd5645ac32a179adfea5707f640fc51a57e493c27f0ab575789e85/azure_mgmt_media-1.0.0-py2.py3-none-any.whl (335kB)
Collecting azure-mgmt-redis~=5.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/90/a7/42342a984b2916972c5c5e24df94e3cd5e4377a8dc465a83415706d9be6f/azure_mgmt_redis-5.0.0-py2.py3-none-any.whl (43kB)
Collecting azure-mgmt-iothub~=0.5.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/19/d6/b422df467b3d7f4e2975b590fbf6e12aaae0a497c7d080b4955a6a6d794a/azure_mgmt_iothub-0.5.0-py2.py3-none-any.whl (102kB)
Collecting azure-mgmt-monitor~=0.5.2 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/6a/3b/a8b95ee25f1c209ad82ad06de39f4efbfb9dc8a8dc5da5a7a48d7897bf3e/azure_mgmt_monitor-0.5.2-py2.py3-none-any.whl (247kB)
Collecting azure-mgmt-billing~=0.2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/0f/24/5106287ea0f6562d965afb055e3c6c0da058f7844a70464e67bab56c6c4b/azure_mgmt_billing-0.2.0-py2.py3-none-any.whl
Collecting azure-mgmt-network~=2.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/61/95/d63833e95406626256893a2f3ef4e5029a168330e3a27817a9f5597c0e6f/azure_mgmt_network-2.7.0-py2.py3-none-any.whl (11.4MB)
Collecting azure-mgmt-advisor~=1.0 (from azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/cb/f3/a86ba3e0784d12c8fe5cbf1f24e1b9255575a2f0892e08c46cddd0795dfd/azure_mgmt_advisor-1.0.1-py2.py3-none-any.whl
Collecting azure-cosmosdb-nspkg>=2.0.0 (from azure-cosmosdb-table~=1.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/58/0d/1329b47e5386b0acf4e42ada2284851eff60ef3337a87e5b2dfedabbfcb1/azure_cosmosdb_nspkg-2.0.2-py2.py3-none-any.whl
Collecting backports.weakref (from backports.tempfile->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/88/ec/f598b633c3d5ffe267aaada57d961c94fdfa183c5c3ebda2b6d151943db6/backports.weakref-1.0.post1-py2.py3-none-any.whl
Collecting jeepney (from SecretStorage->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/0a/4c/ef880713a6c6d628869596703167eab2edf8e0ec2d870d1089dcb0901b81/jeepney-0.4.1-py3-none-any.whl (60kB)
Collecting asn1crypto>=0.21.0 (from cryptography!=1.9,!=2.0.*,!=2.1.*,!=2.2.*->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/6e/1e/fb0e487b5229e5fb7b15c6d00b4e8082a3414fe62b1da4c9a905b106e672/asn1crypto-1.1.0-py2.py3-none-any.whl (103kB)
Collecting pyasn1>=0.1.1 (from ndg-httpsclient->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/a1/71/8f0d444e3a74e5640a3d5d967c1c6b015da9c655f35b2d308a55d907a517/pyasn1-0.4.7-py2.py3-none-any.whl (76kB)
Collecting isodate>=0.6.0 (from msrest>=0.5.1->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/9b/9f/b36f7774ff5ea8e428fdcfc4bb332c39ee5b9362ddd3d40d9516a55221b2/isodate-0.6.0-py2.py3-none-any.whl (45kB)
Requirement already satisfied: certifi>=2017.4.17 in /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/lib/python3.6/site-packages (from msrest>=0.5.1->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2)) (2019.9.11)
Collecting requests-oauthlib>=0.5.0 (from msrest>=0.5.1->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/c2/e2/9fd03d55ffb70fe51f587f20bcf407a6927eb121de86928b34d162f0b1ac/requests_oauthlib-1.2.0-py2.py3-none-any.whl
Collecting websocket-client>=0.32.0 (from docker->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/29/19/44753eab1fdb50770ac69605527e8859468f3c0fd7dc5a76dd9c4dbd7906/websocket_client-0.56.0-py2.py3-none-any.whl (200kB)
Collecting idna<2.9,>=2.5 (from requests>=2.19.1->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.19.1->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
Collecting pycparser (from cffi->azure-datalake-store~=0.0.18->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/68/9e/49196946aee219aead1290e00d1e7fdeab8567783e83e1b9ab5585e6206a/pycparser-2.19.tar.gz (158kB)
Collecting azure-mgmt-nspkg>=2.0.0 (from azure-mgmt-recoveryservicesbackup~=0.3.0->azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/b3/c2/af4b47845f27dc7d206ed4908b9e580f8bc94a4b2f3956a0d87c40719d90/azure_mgmt_nspkg-3.0.2-py3-none-any.whl
Collecting azure-mgmt-datalake-nspkg>=2.0.0 (from azure-mgmt-datalake-analytics~=0.6.0->azure-mgmt~=4.0->azure->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/48/3d/c65a520d93448923a96784582a0deafaae096cb37b444ae5d63b57f0562d/azure_mgmt_datalake_nspkg-3.0.1-py3-none-any.whl
Collecting oauthlib>=3.0.0 (from requests-oauthlib>=0.5.0->msrest>=0.5.1->azureml-core==1.0.65.*->-r /azureml-environment-setup/condaenv.6xa3pkcy.requirements.txt (line 2))
  Downloading https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl (147kB)
Building wheels for collected packages: pathspec, cffi, pycparser
  Building wheel for pathspec (setup.py): started
  Building wheel for pathspec (setup.py): finished with status 'done'
  Created wheel for pathspec: filename=pathspec-0.6.0-cp36-none-any.whl size=26671 sha256=b118643057d69727bff5c345c1cdc0761a3285eb3e606a0f701e7254a5088639
  Stored in directory: /root/.cache/pip/wheels/62/b8/e1/e2719465b5947c40cd85d613d6cb33449b86a1ca5a6c574269
  Building wheel for cffi (setup.py): started
  Building wheel for cffi (setup.py): finished with status 'error'
�[91m  ERROR: Command errored out with exit status 1:
   command: /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ttlxabm5/cffi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ttlxabm5/cffi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' bdist_wheel -d /tmp/pip-wheel-a0of9r0t --python-tag cp36
       cwd: /tmp/pip-install-ttlxabm5/cffi/
  Complete output (34 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.6
  creating build/lib.linux-x86_64-3.6/cffi
  copying cffi/recompiler.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/error.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/verifier.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/__init__.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/lock.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/cparser.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/commontypes.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/model.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/api.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/_embedding.h -> build/lib.linux-x86_64-3.6/cffi
  copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.6/cffi
  running build_ext
  building '_cffi_backend' extension
  creating build/temp.linux-x86_64-3.6
  creating build/temp.linux-x86_64-3.6/c
  gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/include/python3.6m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.6/c/_cffi_backend.o
  c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
  compilation terminated.
  error: command 'gcc' failed with exit status 1
  ----------------------------------------
�[0m�[91m  ERROR: Failed building wheel for cffi
�[0m  Running setup.py clean for cffi
  Building wheel for pycparser (setup.py): started
  Building wheel for pycparser (setup.py): finished with status 'done'
  Created wheel for pycparser: filename=pycparser-2.19-py2.py3-none-any.whl size=111029 sha256=0cd5a70063a0b69408b96f18e0ec667cbcea422ebb35678d24c76c5ecaa58b2d
  Stored in directory: /root/.cache/pip/wheels/f2/9a/90/de94f8556265ddc9d9c8b271b0f63e57b26fb1d67a45564511
Successfully built pathspec pycparser
Failed to build cffi
�[91mERROR: azure-storage-queue 1.4.0 has requirement azure-storage-common~=1.4, but you'll have azure-storage-common 2.1.0 which is incompatible.
ERROR: azure-mgmt 4.0.0 has requirement azure-mgmt-authorization~=0.50.0, but you'll have azure-mgmt-authorization 0.60.0 which is incompatible.
�[0m�[91mERROR: azure-mgmt 4.0.0 has requirement azure-mgmt-keyvault~=1.0, but you'll have azure-mgmt-keyvault 2.0.0 which is incompatible.
ERROR: azure-mgmt 4.0.0 has requirement azure-mgmt-resource~=2.0, but you'll have azure-mgmt-resource 5.1.0 which is incompatible.
�[0m�[91mERROR: azure-mgmt 4.0.0 has requirement azure-mgmt-storage~=2.0, but you'll have azure-mgmt-storage 4.2.0 which is incompatible.
ERROR: azure-storage-file 1.4.0 has requirement azure-storage-common~=1.4, but you'll have azure-storage-common 2.1.0 which is incompatible.
�[0m�[91mERROR: azure-cosmosdb-table 1.0.5 has requirement azure-storage-common~=1.1, but you'll have azure-storage-common 2.1.0 which is incompatible.
ERROR: azure 4.0.0 has requirement azure-storage-blob~=1.3, but you'll have azure-storage-blob 2.1.0 which is incompatible.
�[0mInstalling collected packages: pycparser, cffi, asn1crypto, cryptography, idna, urllib3, chardet, requests, PyJWT, adal, azure-datalake-store, azure-common, azure-nspkg, azure-servicebus, isodate, oauthlib, requests-oauthlib, msrest, msrestazure, azure-keyvault, azure-storage-common, azure-storage-queue, azure-eventgrid, azure-servicefabric, azure-graphrbac, azure-servicemanagement-legacy, azure-mgmt-nspkg, azure-mgmt-recoveryservicesbackup, azure-mgmt-eventgrid, azure-mgmt-marketplaceordering, azure-mgmt-keyvault, azure-mgmt-eventhub, azure-mgmt-subscription, azure-mgmt-cdn, azure-mgmt-machinelearningcompute, azure-mgmt-containerservice, azure-mgmt-datamigration, azure-mgmt-compute, azure-mgmt-applicationinsights, azure-mgmt-powerbiembedded, azure-mgmt-cosmosdb, azure-mgmt-consumption, azure-mgmt-relay, azure-mgmt-reservations, azure-mgmt-hanaonazure, azure-mgmt-batch, azure-mgmt-devspaces, azure-mgmt-maps, azure-mgmt-logic, azure-mgmt-datalake-nspkg, azure-mgmt-datalake-analytics, azure-mgmt-cognitiveservices, azure-mgmt-containerinstance, azure-mgmt-datafactory, azure-mgmt-resource, azure-mgmt-commerce, azure-mgmt-policyinsights, azure-mgmt-storage, azure-mgmt-containerregistry, azure-mgmt-scheduler, azure-mgmt-authorization, azure-mgmt-managementgroups, azure-mgmt-search, azure-mgmt-devtestlabs, azure-mgmt-signalr, azure-mgmt-iotcentral, azure-mgmt-web, azure-mgmt-datalake-store, azure-mgmt-batchai, azure-mgmt-loganalytics, azure-mgmt-managementpartner, azure-mgmt-msi, azure-mgmt-notificationhubs, azure-mgmt-rdbms, azure-mgmt-recoveryservices, azure-mgmt-servicebus, azure-mgmt-trafficmanager, azure-mgmt-servicefabric, azure-mgmt-dns, azure-mgmt-iothubprovisioningservices, azure-mgmt-sql, azure-mgmt-media, azure-mgmt-redis, azure-mgmt-iothub, azure-mgmt-monitor, azure-mgmt-billing, azure-mgmt-network, azure-mgmt-advisor, azure-mgmt, azure-loganalytics, azure-storage-blob, azure-storage-file, azure-cosmosdb-nspkg, azure-cosmosdb-table, azure-batch, azure-applicationinsights, azure, backports.weakref, backports.tempfile, jsonpickle, contextlib2, jmespath, pathspec, ruamel.yaml, jeepney, SecretStorage, pyasn1, pyopenssl, ndg-httpsclient, websocket-client, docker, azureml-core, azure-storage
  Running setup.py install for cffi: started
    Running setup.py install for cffi: finished with status 'error'
�[91m    ERROR: Command errored out with exit status 1:
     command: /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ttlxabm5/cffi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ttlxabm5/cffi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-7w0mugkx/install-record.txt --single-version-externally-managed --compile
         cwd: /tmp/pip-install-ttlxabm5/cffi/
    Complete output (34 lines):
    running install
    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-3.6
    creating build/lib.linux-x86_64-3.6/cffi
    copying cffi/recompiler.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/error.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/verifier.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/setuptools_ext.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/backend_ctypes.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/ffiplatform.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/vengine_gen.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/__init__.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/lock.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/cparser.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/vengine_cpy.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/commontypes.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/model.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/api.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/cffi_opcode.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/pkgconfig.py -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/_cffi_include.h -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/parse_c_type.h -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/_embedding.h -> build/lib.linux-x86_64-3.6/cffi
    copying cffi/_cffi_errors.h -> build/lib.linux-x86_64-3.6/cffi
    running build_ext
    building '_cffi_backend' extension
    creating build/temp.linux-x86_64-3.6
    creating build/temp.linux-x86_64-3.6/c
    gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DUSE__THREAD -DHAVE_SYNC_SYNCHRONIZE -I/usr/include/ffi -I/usr/include/libffi -I/azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/include/python3.6m -c c/_cffi_backend.c -o build/temp.linux-x86_64-3.6/c/_cffi_backend.o
    c/_cffi_backend.c:15:17: fatal error: ffi.h: No such file or directory
    compilation terminated.
    error: command 'gcc' failed with exit status 1
    ----------------------------------------
�[0m�[91mERROR: Command errored out with exit status 1: /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a/bin/python -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-ttlxabm5/cffi/setup.py'"'"'; __file__='"'"'/tmp/pip-install-ttlxabm5/cffi/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-7w0mugkx/install-record.txt --single-version-externally-managed --compile Check the logs for full command output.
�[0m�[91m

CondaValueError: pip returned an error

�[0mThe command '/bin/sh -c ldconfig /usr/local/cuda/lib64/stubs && conda env create -p /azureml-envs/azureml_91cf96598daaf9857ba43d7ab7c3907a -f azureml-environment-setup/mutated_conda_dependencies.yml && rm -rf "$HOME/.cache/pip" && conda clean -aqy && CONDA_ROOT_DIR=$(conda info --root) && rm -rf "$CONDA_ROOT_DIR/pkgs" && find "$CONDA_ROOT_DIR" -type d -name __pycache__ -exec rm -rf {} + && ldconfig' returned a non-zero code: 1
2019/10/15 11:12:19 Container failed during run: acb_step_0. No retries remaining.
failed to run step ID: acb_step_0: exit status 1

Run ID: cj2 failed after 3m33s. Error: failed during run, err: exit status 1

pytest --junitxm causes a fail in triggering the pipeline?

This command is causing a code error 127. And the pipelines fail to build.
I'm using windows 10.
I install the latest version of Pytest.

pytest --junitxml=$(Build.BinariesDirectory)/unit-testresults.xml $(Build.SourcesDirectory)/tests/unit

Hyperparameter a pipeline parameter, not random value

MLOpsPython/code/training/train.py picks a hyperparameter value randomly. This is an antipattern in 2 ways: (1) DevOps processes should yield reproducible outputs, (2) hyperparameters should be an AML pipeline parameter.

# Randomly pic alpha
alphas = np.arange(0.0, 1.0, 0.05)
alpha = alphas[np.random.choice(alphas.shape[0], 1, replace=False)][0]

Docs for getting started is missing a step

Following https://github.com/MachineIearning/MLOpsPython/blob/master/docs/getting_started.md

For #5 Setup a build pipeline
It has missing steps on DevOps

I get the following error when I run the job

There was a resource authorization issue: "The pipeline is not valid. Job Job: Step AzureCLI1 input connectedServiceNameARM references service connection build-demo which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz.,Job Job: Step AzureCLI2 input connectedServiceNameARM references service connection build-demo which could not be found. The service connection does not exist or has not been authorized for use. For authorization details, refer to https://aka.ms/yamlauthz."

Model build fails for Azure Web App for containers

Following the instructions to "Deploy the trained model to Azure Web App for containers", the build runs on a standard agent, so the SDK required by the build script is missing:

2019-11-28T07:59:58.9581465Z     from azureml.core import Workspace
2019-11-28T07:59:58.9581884Z ImportError: No module named azureml.core

Error with ci-build step - Script_name is missing and failure to load azureml_run_type_providers

##[section]Starting: Train model using AML with Remote Compute
==============================================================================
Task         : Bash
Description  : Run a Bash script on macOS, Linux, or Windows
Version      : 3.151.3
Author       : Microsoft Corporation
Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/bash
==============================================================================
Generating script.
========================== Starting Command Output ===========================
[command]/bin/bash --noprofile --norc /__w/_temp/229282a5-afb7-470f-942d-4b7f0bcf9134.sh
Failure while loading azureml_run_type_providers. Failed to load entrypoint azureml.PipelineRun = azureml.pipeline.core:PipelineRun._from_dto with exception module 'azureml.pipeline.core' has no attribute 'PipelineRun'.
Failure while loading azureml_run_type_providers. Failed to load entrypoint azureml.ReusedStepRun = azureml.pipeline.core:StepRun._from_reused_dto with exception module 'azureml.pipeline.core' has no attribute 'StepRun'.
Failure while loading azureml_run_type_providers. Failed to load entrypoint azureml.StepRun = azureml.pipeline.core:StepRun._from_dto with exception module 'azureml.pipeline.core' has no attribute 'StepRun'.
Workspace.create(name='mlops8757-AML-WS', subscription_id='aea906c4-b174-444c-9568-9b6bb773121a', resource_group='mlops8757-AML-RG')
Found existing compute target train-cluster so using it.
AmlCompute(workspace=Workspace.create(name='mlops8757-AML-WS', subscription_id='aea906c4-b174-444c-9568-9b6bb773121a', resource_group='mlops8757-AML-RG'), name=train-cluster, id=/subscriptions/aea906c4-b174-444c-9568-9b6bb773121a/resourceGroups/mlops8757-AML-RG/providers/Microsoft.MachineLearningServices/workspaces/mlops8757-AML-WS/computes/train-cluster, type=AmlCompute, provisioning_state=Succeeded, location=eastus, tags=None)
Traceback (most recent call last):
  File "/__w/1/s/ml_service/pipelines/build_train_pipeline.py", line 134, in <module>
    main()
  File "/__w/1/s/ml_service/pipelines/build_train_pipeline.py", line 78, in main
    allow_reuse=False,
  File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/steps/python_script_step.py", line 118, in __init__
    hash_paths=hash_paths)
  File "/usr/local/lib/python3.7/site-packages/azureml/pipeline/core/_python_script_step_base.py", line 33, in __init__
    raise ValueError("script_name is required")
ValueError: script_name is required
##[error]Bash exited with code '1'.
##[section]Finishing: Train model using AML with Remote Compute

Script_name` is missing

Cannot Create Resources using pipeline

I followed the getting started instructions to create the required resources.

When I run the pipeline "https://github.com/microsoft/MLOpsPython/blob/master/environment_setup/iac-create-environment.yml", I get this error:

There were errors in your deployment. Error code: DeploymentFailed.
##[error]At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/arm-debug for usage details.
##[error]Details:
##[error]Conflict: {
  "error": {
    "code": "VaultAlreadyExists",
    "message": "The name 'mlops-AML-KV' is already in use."
  }

Include connection to training/scoring data sources

The template should include realistic guidance on how to connect to data sources:

  • For training, how to connect to data sources (whether of a type supported by Azure ML Datasource classes, or other ODBC data source type)
  • Whether we should have a separate pipeline stage for pulling the data (separation of concerns + reuse of run steps) or just query the data in the training step
  • How to manage credentials, one way is to use Key Vault in the run script itself (https://github.com/Azure/MachineLearningNotebooks/blob/master/how-to-use-azureml/manage-azureml-service/authentication-in-azureml/authentication-in-azureml.ipynb) but it's hard to find, should be part of the solution template (+any other method to manage credentials if appropriate)
  • For scoring, similarly how to manage connectivity to data sources. Enterprise DS models often enrich incoming requests with data from a data mart (e.g. user profiles)

Script error when running a release

Following the docs for the release pipeline. I get the following error

Not found workingDirectory: /home/vsts/work/r1/a/DevOpsForAI/devops-for-ai/environment_setup

Improve dependencies in code/scoring/conda_dependencies.yml

In code/scoring/conda_dependencies.yml:

  • azureml-sdk[notebooks] dependency is used, which greatly inflates the package although notebook functionality is not needed
  • azure-ml-api-sdk seems to an old library (2017) in alpha version.
  • extra line breaks make the file hard to read.

Error when enabling continuous deployment for AML model

Hi MLOps gurus,

I was following instructions on the getting started guide to setup the Release Deployment pipeline when I encountered the error AzureMLMMS An item with the same key has already been added.

image

After enabling the continuous deployment trigger for AML model and trying to save the pipeline:
image

Steps to reproduce:

  1. Follow the instructions on getting started guide to setup Release Deployment pipeline
  2. Enable the continuous deployment trigger for AML model
  3. Click "Save" to save the release pipeline
  4. Observe error ``AzureMLMMS An item with the same key has already been added.`

Include realistic test scenarios

The template should include realistic test scenarios, in order to illustrate a proper test strategy and help deal with technical aspects (e.g. folder organization for pytest).

  • Unit tests - the current code_test.py doesn't test the actual code in code/, including mocks
  • Integration tests if applicable (e.g. connectivity to data marts)
  • Smoke test of the deployed ACI container in staging before deploying to AKS

Deployment to QA failed

ENOENT: no such file or directory, stat 'd:\a\r1\a_ci-build\mlops-pipelines\code\scoring\deployment_config_aci.yml'

image

2019-11-26T09:47:40.6248243Z ##[section]Starting: Azure ML Model Deploy
2019-11-26T09:47:40.6361728Z ==============================================================================
2019-11-26T09:47:40.6361837Z Task : AzureML Model Deploy
2019-11-26T09:47:40.6361892Z Description : AzureML Deploy Model
2019-11-26T09:47:40.6361956Z Version : 0.8.19
2019-11-26T09:47:40.6362005Z Author : ms-air-aiagility
2019-11-26T09:47:40.6362072Z Help : https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.private-vss-services-azureml&ssr=false#overview
2019-11-26T09:47:40.6362160Z ==============================================================================
2019-11-26T09:47:41.1059150Z { Error: ENOENT: no such file or directory, stat 'd:\a\r1\a_ci-build\mlops-pipelines\code\scoring\deployment_config_aci.yml'
2019-11-26T09:47:41.1059416Z at Error (native)
2019-11-26T09:47:41.1060050Z at Object.fs.statSync (fs.js:1000:11)
2019-11-26T09:47:41.1060535Z at AMLDeployParams.validateFileAndExtension (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:214:17)
2019-11-26T09:47:41.1061289Z at AMLDeployParams.validateDeployConfig (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:162:14)
2019-11-26T09:47:41.1061697Z at AMLDeployParams. (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:86:30)
2019-11-26T09:47:41.1062079Z at step (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:33:23)
2019-11-26T09:47:41.1062436Z at Object.next (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:14:53)
2019-11-26T09:47:41.1062786Z at d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:8:71
2019-11-26T09:47:41.1063153Z at __awaiter (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:4:12)
2019-11-26T09:47:41.1063552Z at AMLDeployParams.getDeploymentParameters (d:\a_tasks\AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f\0.8.19\operations\AMLDeployParams.js:81:16)
2019-11-26T09:47:41.1063885Z errno: -4058,
2019-11-26T09:47:41.1064207Z code: 'ENOENT',
2019-11-26T09:47:41.1064525Z syscall: 'stat',
2019-11-26T09:47:41.1064873Z path: 'd:\a\r1\a\_ci-build\mlops-pipelines\code\scoring\deployment_config_aci.yml' }
2019-11-26T09:47:41.1117283Z ##[error]ENOENT: no such file or directory, stat 'd:\a\r1\a_ci-build\mlops-pipelines\code\scoring\deployment_config_aci.yml'
2019-11-26T09:47:41.1125820Z (node:4604) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Failed popd: popd: directory stack empty
2019-11-26T09:47:41.1150072Z
2019-11-26T09:47:41.1155490Z Reverting to original directory.....
2019-11-26T09:47:41.1161418Z popd: directory stack empty
2019-11-26T09:47:41.1177117Z
2019-11-26T09:47:41.1194028Z ##[section]Finishing: Azure ML Model Deploy

Deployment to QA failed

ENOENT: no such file or directory, stat '/home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml'


2019-11-26T12:52:16.5473405Z ##[section]Starting: Azure ML Model Deploy
2019-11-26T12:52:16.5478581Z ==============================================================================
2019-11-26T12:52:16.5478685Z Task : AzureML Model Deploy
2019-11-26T12:52:16.5478763Z Description : AzureML Deploy Model
2019-11-26T12:52:16.5478820Z Version : 0.8.19
2019-11-26T12:52:16.5478891Z Author : ms-air-aiagility
2019-11-26T12:52:16.5478965Z Help : https://marketplace.visualstudio.com/items?itemName=ms-air-aiagility.private-vss-services-azureml&ssr=false#overview
2019-11-26T12:52:16.5479065Z ==============================================================================
2019-11-26T12:52:16.8866440Z { Error: ENOENT: no such file or directory, stat '/home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml'
2019-11-26T12:52:16.8866750Z at Error (native)
2019-11-26T12:52:16.8866819Z at Object.fs.statSync (fs.js:1000:11)
2019-11-26T12:52:16.8869025Z at AMLDeployParams.validateFileAndExtension (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:214:17)
2019-11-26T12:52:16.8869853Z at AMLDeployParams.validateDeployConfig (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:162:14)
2019-11-26T12:52:16.8870255Z at AMLDeployParams. (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:86:30)
2019-11-26T12:52:16.8870668Z at step (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:33:23)
2019-11-26T12:52:16.8871044Z at Object.next (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:14:53)
2019-11-26T12:52:16.8871441Z at /home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:8:71
2019-11-26T12:52:16.8871823Z at __awaiter (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:4:12)
2019-11-26T12:52:16.8872275Z at AMLDeployParams.getDeploymentParameters (/home/vsts/work/_tasks/AMLModelDeploy_d9237456-3431-4c1d-b7bf-d6b937425f0f/0.8.19/operations/AMLDeployParams.js:81:16)
2019-11-26T12:52:16.8872510Z errno: -2,
2019-11-26T12:52:16.8872752Z code: 'ENOENT',
2019-11-26T12:52:16.8872959Z syscall: 'stat',
2019-11-26T12:52:16.8873249Z path: '/home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml' }
2019-11-26T12:52:16.8948140Z ##[error]ENOENT: no such file or directory, stat '/home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml'
2019-11-26T12:52:16.8961783Z Reverting to original directory.....
2019-11-26T12:52:16.8961920Z (node:3335) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Failed popd: popd: directory stack empty
2019-11-26T12:52:16.8961998Z
2019-11-26T12:52:16.8962110Z popd: directory stack empty
2019-11-26T12:52:16.8962149Z
2019-11-26T12:52:16.8964165Z ##[section]Finishing: Azure ML Model Deploy

Failed to Build the Pipeline?

##[section]Starting: Run code quality tests

Task : Command line
Description : Run a command line script using Bash on Linux and macOS and cmd.exe on Windows
Version : 2.151.2
Author : Microsoft Corporation
Help : https://docs.microsoft.com/azure/devops/pipelines/tasks/utility/command-line

Generating script.
Script contents:
flake8 --output-file=/__w/1/b/lint-testresults.xml --format junit-xml
========================== Starting Command Output ===========================
##[error]Bash exited with code '1'.
##[section]Finishing: Run code quality tests

Consider modifying value for BASE_NAME (Variable group)

The BASE_NAME parameter is used throughout the solution for naming Azure resources. When the solution is used in a shared subscription, there can be naming collisions with resources that require unique names like azure blob storage and registry DNS naming. When collisions happen, the ARM deployment operation fails.

Suggest adding a recommendation to tag the BASE_NAME with a value to make it unique:
Variable Name Suggested Value
BASE_NAME mlops-[additional characters to make the name unique]

Machine Learning Workspace drop down missing when creating new service connection

I am trying to complete "Set up a Release Deployment Pipeline to Deploy the Model" step

I've installed Azure Machine Learning extension

When I try to create new service connection, after I select New service connection->Azure Resource Manager, I am not seeing Machine Learning Workspace drop down - it's simply missing from dialog box.

I have even opened new Chrome browser in-private mode, thinking it could be some "stale" data issue, but I am having same problem.

Any idea how to resolve this problem?

Unable to execute QA (ACI) stage. Path name issue.

According to the get started document, there are 2 path variables that need to be configured for the Azure ML Model Deploy task in QA stage:

  • Inference config path: $(System.DefaultWorkingDirectory)/_ci-build/mlops-pipelines/code/scoring/inference_config.yml
  • Deployment config path: $(System.DefaultWorkingDirectory)/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml

After checking to make sure both training and QA pipeline are using ubuntu-16.04, execution fails with this message:
[error]ENOENT: no such file or directory, stat /home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml

In checking the logs for the training pipeline, this is where the files should have been downloaded to:

  • Downloaded mlops-pipelines/code/scoring/deployment_config_aci.yml to /home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/deployment_config_aci.yml
  • Downloaded mlops-pipelines/code/scoring/inference_config.yml to /home/vsts/work/r1/a/_ci-build/mlops-pipelines/code/scoring/inference_config.yml

So, i'm not sure why the execution is failing to find the files in the location. Any suggestions?

Thank you.

Inconsistent references to workspace name cause ci pipeline failures

During deployment (execution of environment_setup/iac-create-environment.yml), an ML service workspace name is created by concatenating baseName with ‘-AML-WS’. This is done in environment_setup/arm-templates/cloud-environment.json with this line of code: "amlWorkspaceName": "[concat(parameters('baseName'),'-AML-WS')]".

During the ci pipeline build (.pipelines/azdo-ci-build-train.yml), code_test.py is executed and it starts by setting up the workspace parameters. workspace_name is derived from the variable group parameter “AML_WORKSPACE_NAME”. When AML_WORKSPACE_NAME differs from amlWorkspaceName, the tests and ci pipeline fail.

Since AML workspace names do not need to be unique across the service, recommend that the deployment script be changed to use the parameter in the variable group AML_WORKSPACE_NAME rather than derive the name using the BASE_NAME parameter.

Missing "save" step in MLOpsPython/docs/getting_started.md

I am missing a save step in this parragraph, before creating a new release. At least for me, the create release button is in gray and is not clickable until I save the release definitions

"This release pipeline should now be automatically triggered (continuous deployment) whenever a new ML training pipeline is published by the ci-build builder pipeline. It can also be triggered manually or configured to run on a scheduled basis. Create a new release to trigger the pipeline manually by clicking on the "Create release" button on the top right of your screen, when selecting this new build pipeline:"

Explain concepts in getting_started.md

I really like the getting started markdown. The documentation is really good and it worked well.
Still it would be really helpful to explain the concepts of each step a bit more.

What I would suggest is a short introduction in each section explaining this:

  • Why should I do this
  • What does it help me with
  • What do data scientists normally do if they do not do this step
  • A link explaining the concept behind that a bit more

Also please divide it into multiple files with speaking names.

Allow standalone run of train.py

For developer productivity it's essential that the script containing the ML code (train.py) can be quickly run standalone ('inner-loop' development).

Traceback (most recent call last):
  File "code/training/train.py", line 61, in <module>
    exp = run.experiment
AttributeError: '_OfflineRun' object has no attribute 'experiment'

PipelineParameters format in call to Azure ML Extension

PipelineParameters: '"model_name": "sklearn_regression_model.pkl"'

The correct format to have this picked up by the pipeline (confirmed with the extension development team) is:

PipelineParameters: '"ParameterAssignments": {"model_name": "sklearn_regression_model.pkl"}'

which is results in the following call:

POST https://westeurope.aether.ms/api/v1.0/subscriptions/.../workspaces/aml-myws/PipelineRuns/PipelineSubmit/75a219db-0ec0-4f93-a6ac-4fc402da809f
Request body: {
  ...
  "ExperimentName": "mlopspython",
  "RunSource": "PipelineRun",
  "ParameterAssignments": {
    "model_name": "sklearn_regression_model.pkl"
  }
}
```

Improve artifact end-to-end traceability

Configuration management best practices demand there should be full traceability end-to-end from source code, build, release (model building & model deployment), as well as artifacts (model, container, pipeline runs etc.)

At this time there are gaps in achieving this, especially if concurrent builds are run, e.g.:

  • the model deployment pipeline picks up the latest build
  • the evaluate_model.py script assumes as described a comment: "Get most recently registered model, we assume that is the model in production"
  • When traceability is possible, things are quite buried and require a lot of scripting to surface

Unable to create service connection using a scope level of AzureMLWorkspace

In Azure DevOps, I cannot create a service connection using the scope level of 'AzureMLWorkspace'. The error generated suggests i don't have permission to add a role. As a workaround, i manually created an SP and had my subscription admin provide it 'contributor' role access. This approach also fails from the ADO side likely because the SP is not added as a user to the AML Workspace - and i don't have sufficient permissions as a 'contributor' to do so. This is a blocker for using Azure Model registration as an artifact for Azure DevOps and I have documented it on the ML Platform/AzureMLPython SDK teams channel.

Obscure use of `tmp.sh` to pass pipeline id

run_train_pipeline.py writes a file $(Build.SourcesDirectory)/tmp.sh that is then sourced by the pipeline.

This is not explained, and not easy to understand.

Comments would help, but it would be cleaner if run_train_pipeline.py accepted an argument which is a file name to which it writes the pipeline id, and the pipeline code was changed to something like:

tmpfile=$(mktemp)
python $(Build.SourcesDirectory)/ml_service/pipelines/run_train_pipeline.py --pipeline-id "$tmpfile"
echo "##vso[task.setvariable variable=AMLPIPELINEID;isOutput=true]$(cat $tmpfile)"
rm "$tmpfile"

Duplicate Deployment Environments

When I run the release pipeline for deployment I get a new ACI and/or AKS instance every time. For example, I ran the release pipeline 4 times in a row and ended up with 4 AKS clusters as a result.

I believe I pinpointed the issue being the absence of the aml_config/aks_webservice.json and aml_config/aci_webservice.json files that are referenced in the aml_service/50-deployOnAci.py and aml_service/50-deployOnAks.py scripts.

Evaluate Model should not fail the pipeline

According to README.md
If the new model performs better than the production model, the following steps are executed. If not, they will be skipped.

That is not the behavior implemented today, as register_model.py --validate sets an exit code if no model was registered for the run, the pipeline actually fails in that case.

Expected behavior:

If the new model does not performs better than the production model;

  • new model is registered (as is today);
  • the pipeline should succeed, skipping further steps.

attach_compute should set exit code after exception

I got a transient service error while retrieving compute. An error was logged but the pipeline continued. The script fails to set an exit code when catching the exception:

ComputeTargetException:
	Message: Error occurred retrieving targets:
Response Code: 500
Headers: {'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Content-Length': '294', 'Content-Type': 'application/json; charset=utf-8', 'Expires': '-1', 'x-ms-ratelimit-remaining-subscription-reads': '11999', 'x-ms-failure-cause': 'service', 'Request-Context': 'appId=cid-v1:6a27ce65-5555-41a3-85f7-b7a1ce31fd6b', 'x-ms-request-id': '|eaf2c3b2dc39574abbc4581269bde67b.8a46c099_1.1bf9b6d7_', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'x-ms-correlation-request-id': 'f3c9e09d-9986-43dc-a81e-9328fbb63de9', 'x-ms-routing-request-id': 'WESTEUROPE:20191126T054559Z:f3c9e09d-9986-43dc-a81e-9328fbb63de9', 'X-Content-Type-Options': 'nosniff', 'Date': 'Tue, 26 Nov 2019 05:45:59 GMT', 'Connection': 'close'}
Content: b'{"error":{"code":"InternalServerError","message":"An internal server error occurred. Please try again. If the problem persists, contact support","innererror":{"clientRequestId":"888141ac-de9b-418a-87e7-987fa829b2ae","serviceRequestId":"|eaf2c3b2dc39574abbc4581269bde67b.8a46c099_1.1bf9b6d7_"}}}'
	InnerException None
	ErrorResponse 
{
    "error": {
        "message": "Error occurred retrieving targets:\nResponse Code: 500\nHeaders: {'Cache-Control': 'no-cache', 'Pragma': 'no-cache', 'Content-Length': '294', 'Content-Type': 'application/json; charset=utf-8', 'Expires': '-1', 'x-ms-ratelimit-remaining-subscription-reads': '11999', 'x-ms-failure-cause': 'service', 'Request-Context': 'appId=cid-v1:6a27ce65-5555-41a3-85f7-b7a1ce31fd6b', 'x-ms-request-id': '|eaf2c3b2dc39574abbc4581269bde67b.8a46c099_1.1bf9b6d7_', 'Strict-Transport-Security': 'max-age=31536000; includeSubDomains', 'x-ms-correlation-request-id': 'f3c9e09d-9986-43dc-a81e-9328fbb63de9', 'x-ms-routing-request-id': 'WESTEUROPE:20191126T054559Z:f3c9e09d-9986-43dc-a81e-9328fbb63de9', 'X-Content-Type-Options': 'nosniff', 'Date': 'Tue, 26 Nov 2019 05:45:59 GMT', 'Connection': 'close'}\nContent: b'{\"error\":{\"code\":\"InternalServerError\",\"message\":\"An internal server error occurred. Please try again. If the problem persists, contact support\",\"innererror\":{\"clientRequestId\":\"888141ac-de9b-418a-87e7-987fa829b2ae\",\"serviceRequestId\":\"|eaf2c3b2dc39574abbc4581269bde67b.8a46c099_1.1bf9b6d7_\"}}}'"
    }
}
An error occurred trying to provision compute.

Fix scoring endpoint HTTP behavior

  1. Scoring endpoint should return json, not stringified json
curl -H "Authorization: Bearer $token" $scoringUri \
  -d '{"data":[[1,2,3,4,5,6,7,8,9,10],[10,9,8,7,6,5,4,3,2,1]]}' \
  -H Content-type:application/json

Returns:

"{\"result\": [5113.099642122809, 3713.6329271385334]}"

Expected:

{"result": [5113.099642122809, 3713.6329271385334]}

Probably we should avoid json.dumps() in:

return json.dumps({"result": result.tolist()})

  1. Scoring endpoint should not return 200 in case of error

Exceptions are swallowed at

except Exception as e:

The code should not only return the error message but also set an appropriate HTTP return code.

Issue retrieving workspace

I have recompleted this lab twice and had one of our senior CSAs check the config/setup for the workspace, service principal and library variable group. I am getting the following error when I execute the MLDevOps pipeline (please note replaced the TenentID in the error description with 'XXXXXXXXXXXXXXXX for security purposes):

ml_service/util/workspace.py:29: SystemExit
----------------------------- Captured stdout call -----------------------------
Error while retrieving Workspace...
Get Token request returned http error: 400 and server response: {"error":"invalid_request","error_description":"AADSTS90002: Tenant 'XXXXXXXXXXXXXXXX' not found. This may happen if there are no active subscriptions for the tenant. Check with your subscription administrator.\r\nTrace ID: 228b4b47-723d-41d1-a68c-77fffe8f2800\r\nCorrelation ID: 7121e3e3-ca7c-4f3d-b4f0-6280a935079a\r\nTimestamp: 2019-10-08 18:47:38Z","error_codes":[90002],"timestamp":"2019-10-08 18:47:38Z","trace_id":"228b4b47-723d-41d1-a68c-77fffe8f2800","correlation_id":"7121e3e3-ca7c-4f3d-b4f0-6280a935079a","error_uri":"https://login.microsoftonline.com/error?code=90002"}
=============================== warnings summary ===============================
/usr/local/lib/python3.7/site-packages/socks.py:58
/usr/local/lib/python3.7/site-packages/socks.py:58: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
from collections import Callable

/usr/local/lib/python3.7/site-packages/azureml/data/dataset_type_definitions.py:52
/usr/local/lib/python3.7/site-packages/azureml/data/dataset_type_definitions.py:52: DeprecationWarning: FileType Enum is Deprecated in > 1.0.39. Use strings instead.
category=DeprecationWarning)

/usr/local/lib/python3.7/site-packages/azureml/_base_sdk_common/utils.py:11
/usr/local/lib/python3.7/site-packages/azureml/_base_sdk_common/utils.py:11: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated, and in 3.8 it will stop working
from collections import Iterable

-- Docs: https://docs.pytest.org/en/latest/warnings.html
-------------- generated xml file: /__w/1/b/unit-testresults.xml ---------------
================ 1 failed, 4 passed, 3 warnings in 1.90 seconds ================
##[error]Bash exited with code '1'.
##[section]Finishing: Run unit tests

Release pipeline ended successfully but there is no image generated

The release pipe line is ended correctly but there is no image created.
I have some errors and 3 warnings:
Errors:
1)2019-11-28T11:30:06.7605145Z [command]/usr/bin/az ml -h
2019-11-28T11:30:13.1124946Z ERROR: az: 'ml' is not in the 'az' command group. See 'az --help'.
2019-11-28T11:30:13.1125915Z No AzureML CLI installed.
2019-11-28T11:30:13.1129469Z [command]/usr/bin/az extension add -n azure-cli-ml
2019-11-28T11:30:40.6240864Z [command]/usr/bin/az ml -h
Warnings:

  1. 2019-11-28T11:30:06.7593936Z ##[warning]Resource file haven't set, can't find loc string for key: AmlCliNotAvailable
  2. 2019-11-28T11:30:44.8307996Z ##[warning]Resource file haven't set, can't find loc string for key: LoginFailed
    3)2019-11-28T11:30:46.1742081Z ##[warning]Resource file haven't set, can't find loc string for key: ErrorInSettingUpSubscription

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.