示例#1
0
def main():
    print('Cargando configuracion workspace...')
    ws = Workspace.from_config()

    print('Obteniendo modelo...')
    model = Model(ws, 'yolov3-tf')

    print("Configurando Objects...")
    aciconfig = AciWebservice.deploy_configuration(
        cpu_cores=2,
        memory_gb=2,
        tags={"data": "solo yolov3 tensorflow"},
        description='yolov3 y tensorflow',
        dns_name_label='ceibatest')

    inference_config = InferenceConfig(entry_script="score.py",
                                       source_directory="../azure",
                                       conda_file='conda-cpu.yml',
                                       runtime='python')

    print("Desplegando...")
    service = Model.deploy(workspace=ws,
                           name='yolov3-tf-deploy',
                           models=[model],
                           inference_config=inference_config,
                           deployment_config=aciconfig,
                           overwrite=True)

    service.wait_for_deployment(show_output=True)
    url = service.scoring_uri
    print(url)
示例#2
0
    def __deploy_model(self):
        service_name = self.__args.service_name

        model = Model(self.__ws, self.__args.model_name)
        explainer_model = Model(self.__ws, self.__args.explainer_model_name)
        myenv = Environment.from_conda_specification(
            name=self.__config.get('DEPLOY', 'ENV_NAME'),
            file_path=self.__config.get('DEPLOY', 'ENV_FILE_PATH'))
        inference_config = InferenceConfig(
            entry_script=self.__config.get('DEPLOY', 'SCORE_PATH'),
            environment=myenv,
            source_directory=self.__config.get('DEPLOY',
                                               'DEPENDENCIES_DIRECTORY'))

        if not self.__args.update_deployment:
            deployment_config = AciWebservice.deploy_configuration(
                cpu_cores=self.__config.getint('DEPLOY', 'ACI_CPU'),
                memory_gb=self.__config.getint('DEPLOY', 'ACI_MEM'),
                collect_model_data=True,
                enable_app_insights=True)
            service = Model.deploy(self.__ws, service_name,
                                   [model, explainer_model], inference_config,
                                   deployment_config)
        else:
            service = AciWebservice(self.__ws, service_name)
            service.update(models=[model, explainer_model],
                           inference_config=inference_config)

        service.wait_for_deployment(show_output=True)
        print(service.state)
        print(service.get_logs())
示例#3
0
def deploy_webservice_from_image(amls_config, workspace, image):
    """
    Deploy an AMLS docker image in AMLS' ACI

    :param amls_config:
    :param workspace:
    :param image:
    :return:
    """
    aciconfig = AciWebservice.deploy_configuration(
        cpu_cores=1,
        memory_gb=1,
        tags=amls_config['tags'],
        description=amls_config['description'])

    try:
        Webservice(workspace=workspace, name=amls_config['name']) \
            .delete()
        logger.info(f"Deleted existing webservice {amls_config['name']}")
    except WebserviceException:
        # No need to delete
        pass

    logger.info(f"Creating webservice {amls_config['name']}")
    service = Webservice.deploy_from_image(deployment_config=aciconfig,
                                           image=image,
                                           name=amls_config['name'],
                                           workspace=workspace)
    service.wait_for_deployment(show_output=True)
    return service
def main():
    # get workspace
    ws = load_workspace()
    model = Model.register(ws,
                           model_name='pytorch_mnist',
                           model_path='model.pth')

    # create dep file
    myenv = CondaDependencies()
    myenv.add_pip_package('numpy')
    myenv.add_pip_package('torch')
    with open('pytorchmnist.yml', 'w') as f:
        print('Writing out {}'.format('pytorchmnist.yml'))
        f.write(myenv.serialize_to_string())
        print('Done!')

    # create image
    image_config = ContainerImage.image_configuration(
        execution_script="score.py",
        runtime="python",
        conda_file="pytorchmnist.yml",
        dependencies=['./models.py'])

    image = Image.create(ws, 'pytorchmnist', [model], image_config)
    image.wait_for_creation(show_output=True)

    # create service
    aciconfig = AciWebservice.deploy_configuration(
        cpu_cores=1, memory_gb=1, description='simple MNIST digit detection')
    service = Webservice.deploy_from_image(workspace=ws,
                                           image=image,
                                           name='pytorchmnist-svc',
                                           deployment_config=aciconfig)
    service.wait_for_deployment(show_output=True)
示例#5
0
def main():
    """
    Deploy model to your service
    """
    work_space = Workspace.from_config()
    environment = Environment("keras-service-environment")
    environment.python.conda_dependencies = CondaDependencies.create(
        python_version="3.7.7",
        pip_packages=["azureml-defaults", "numpy", "tensorflow==2.3.1"],
    )
    model = Model(work_space, "keras_mnist")
    model_list = model.list(work_space)
    validation_accuracy = []
    version = []
    for i in model_list:
        validation_accuracy.append(float(i.properties["val_accuracy"]))
        version.append(i.version)
    model = Model(work_space,
                  "keras_mnist",
                  version=version[np.argmax(validation_accuracy)])
    service_name = "keras-mnist-service"
    inference_config = InferenceConfig(entry_script="score_keras.py",
                                       environment=environment)
    aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1)
    service = Model.deploy(
        workspace=work_space,
        name=service_name,
        models=[model],
        inference_config=inference_config,
        deployment_config=aci_config,
        overwrite=True,
    )
    service.wait_for_deployment(show_output=True)
    print(service.get_logs())
示例#6
0
def deploy_aci(workspace, model_azure, endpoint_name, inference_config):
  deployment_config = AciWebservice.deploy_configuration(cpu_cores = 1, memory_gb = 1, auth_enabled=True)
  service = Model.deploy(workspace, endpoint_name, [model_azure], inference_config, deployment_config, overwrite=True)
  service.wait_for_deployment(show_output = True)

  print(f"Endpoint : {endpoint_name} was successfully deployed to ACI")
  print(f"Endpoint : {service.scoring_uri} created")
  return service
def deploy_service(aml_interface):
    inference_config = get_inference_config(aml_interface)
    deployment_config = AciWebservice.deploy_configuration(cpu_cores=1,
                                                           memory_gb=1)
    model = aml_interface.workspace.models.get(MODEL_NAME)
    service = Model.deploy(aml_interface.workspace, DEPLOYMENT_SERVICE_NAME,
                           [model], inference_config, deployment_config)
    service.wait_for_deployment(show_output=True)
    print(service.scoring_uri)
示例#8
0
    def deploy(self, model_id, locally):
        if locally:
            self.ctx.log('Local deployment step is not required for Azure..')
            return {'model_id': model_id}

        ws = AzureProject(self.ctx)._get_ws()
        experiment_name = self.ctx.config.get('experiment/name', None)
        if experiment_name is None:
            raise AzureException('Please specify Experiment name...')

        iteration, run_id = self._get_iteration(model_id)

        experiment = Experiment(ws, experiment_name)
        experiment_run = AutoMLRun(experiment=experiment, run_id=run_id)
        model_run = AutoMLRun(experiment=experiment, run_id=model_id)
        model_name = model_run.properties['model_name']
        self.ctx.log('Regestiring model: %s' % model_name)

        description = '%s-%s' % (model_name, iteration)
        model = experiment_run.register_model(model_name=model_name,
                                              iteration=iteration,
                                              description=description,
                                              tags=None)

        script_file_name = '.azureml/score_script.py'
        model_run.download_file('outputs/scoring_file_v_1_0_0.py',
                                script_file_name)

        # Deploying ACI Service
        aci_service_name = self._aci_service_name(model_name)
        self.ctx.log('Deploying AciWebservice %s ...' % aci_service_name)

        inference_config = InferenceConfig(
            environment=model_run.get_environment(),
            entry_script=script_file_name)

        aciconfig = AciWebservice.deploy_configuration(
            cpu_cores=1,
            memory_gb=2,
            tags={'type': "inference-%s" % aci_service_name},
            description="inference-%s" % aci_service_name)

        # Remove any existing service under the same name.
        try:
            Webservice(ws, aci_service_name).delete()
            self.ctx.log('Remove any existing service under the same name...')
        except WebserviceException:
            pass

        aci_service = Model.deploy(ws, aci_service_name, [model],
                                   inference_config, aciconfig)
        aci_service.wait_for_deployment(True)
        self.ctx.log('%s state %s' %
                     (aci_service_name, str(aci_service.state)))

        return {'model_id': model_id, 'aci_service_name': aci_service_name}
示例#9
0
def deployModelAsWebService(
        ws,
        model_folder_path="models",
        model_name="component_compliance",
        scoring_script_filename="scoring_service.py",
        conda_packages=['numpy', 'pandas'],
        pip_packages=['azureml-sdk', 'onnxruntime'],
        conda_file="dependencies.yml",
        runtime="python",
        cpu_cores=1,
        memory_gb=1,
        tags={'name': 'scoring'},
        description='Compliance classification web service.',
        service_name="complianceservice"):
    # notice for the model_path, we supply the name of the outputs folder without a trailing slash
    # this will ensure both the model and the customestimators get uploaded.
    print("Registering and uploading model...")
    registered_model = Model.register(model_path=model_folder_path,
                                      model_name=model_name,
                                      workspace=ws)

    # create a Conda dependencies environment file
    print("Creating conda dependencies file locally...")
    from azureml.core.conda_dependencies import CondaDependencies
    mycondaenv = CondaDependencies.create(conda_packages=conda_packages,
                                          pip_packages=pip_packages)
    with open(conda_file, "w") as f:
        f.write(mycondaenv.serialize_to_string())

    # create container image configuration
    print("Creating container image configuration...")
    from azureml.core.image import ContainerImage
    image_config = ContainerImage.image_configuration(
        execution_script=scoring_script_filename,
        runtime=runtime,
        conda_file=conda_file)

    # create ACI configuration
    print("Creating ACI configuration...")
    from azureml.core.webservice import AciWebservice, Webservice
    aci_config = AciWebservice.deploy_configuration(cpu_cores=cpu_cores,
                                                    memory_gb=memory_gb,
                                                    tags=tags,
                                                    description=description)

    # deploy the webservice to ACI
    print("Deploying webservice to ACI...")
    webservice = Webservice.deploy_from_model(workspace=ws,
                                              name=service_name,
                                              deployment_config=aci_config,
                                              models=[registered_model],
                                              image_config=image_config)
    webservice.wait_for_deployment(show_output=True)

    return webservice
def deploy_to_aci(inference_env_name,cpu_cores:int,memory_gb:int,model_name,model_version,deployment_name):
    try:
        inference_config=_create_inference_config(inference_env_name)
    except Exception as e:
        raise e
    try:
        deployment_config=AciWebservice.deploy_configuration(cpu_cores=cpu_cores,memory_gb=memory_gb)
        _start_deploy_model(inference_config,deployment_config,model_name,model_version,deployment_name)
    except Exception as e:
        print("failed to deploy")
        raise e
示例#11
0
def run(model_path, model_name):
    auth_args = {
        'tenant_id': os.environ['TENANT_ID'],
        'service_principal_id': os.environ['SERVICE_PRINCIPAL_ID'],
        'service_principal_password': os.environ['SERVICE_PRINCIPAL_PASSWORD']
    }

    ws_args = {
        'auth': ServicePrincipalAuthentication(**auth_args),
        'subscription_id': os.environ['SUBSCRIPTION_ID'],
        'resource_group': os.environ['RESOURCE_GROUP']
    }

    ws = Workspace.get(os.environ['WORKSPACE_NAME'], **ws_args)

    print(ws.get_details())

    print('\nSaving model {} to {}'.format(model_path, model_name))
    model = Model.register(ws, model_name=model_name, model_path=model_path)
    print('Done!')

    print('Checking for existing service {}'.format(model_name))
    service_name = 'simplemnist-svc'
    if model_name in ws.webservices:
        print('Found it!\nRemoving Existing service...')
        ws.webservices[model_name].delete()
        print('Done!')
    else:
        print('Not found, creating new one!')

    # image configuration
    image_config = ContainerImage.image_configuration(
        execution_script="score.py",
        runtime="python",
        conda_file="environment.yml")

    # deployement configuration
    aciconfig = AciWebservice.deploy_configuration(cpu_cores=1,
                                                   memory_gb=1,
                                                   description=model_name)

    # deploy
    service = Webservice.deploy_from_model(workspace=ws,
                                           name=model_name,
                                           models=[model],
                                           image_config=image_config,
                                           deployment_config=aciconfig)

    service.wait_for_deployment(show_output=True)

    #print logs
    print(service.get_logs())

    print('Done!')
示例#12
0
def create_config():

    aciconfig = AciWebservice.deploy_configuration(
        cpu_cores=1,
        memory_gb=1,
        tags={
            "data": "MNIST",
            "method": "pytorch"
        },
        description='Predict MNIST with pytorch')
    return aciconfig
示例#13
0
def deploy_to_ACI(workspace, service_name, models, inference_config, cpu_cores=1, memory_gb=1, overwrite=True):
    services = workspace.webservices
    if service_name in services and overwrite:
        print('found existing service named {}, delete it right now...'.format(service_name))
        services[service_name].delete()
    deployment_config = AciWebservice.deploy_configuration(cpu_cores=cpu_cores, memory_gb=memory_gb)
    service = Model.deploy(workspace, service_name, models=models, inference_config=inference_config,
                           deployment_config=deployment_config)
    service.wait_for_deployment(show_output=True)
    print(service.state)
    return service
示例#14
0
文件: model.py 项目: chrinide/a2ml
    def _deploy_remotly(self, model_id, model_run, ws, experiment):
        from azureml.core.model import Model
        from azureml.core.model import InferenceConfig
        from azureml.core.webservice import Webservice
        from azureml.core.webservice import AciWebservice
        from azureml.exceptions import WebserviceException
        from azureml.train.automl.run import AutoMLRun

        # ws, experiment = self._get_experiment()
        iteration, run_id = self._get_iteration(model_id)

        experiment_run = AutoMLRun(experiment = experiment, run_id = run_id)
        model_name = model_run.properties['model_name']
        self.ctx.log('Registering model: %s' % model_id)

        description = '%s-%s' % (model_name, iteration)
        model = experiment_run.register_model(
            model_name = model_name, iteration=iteration,
            description = description, tags = None)

        script_file_name = '.azureml/score_script.py'
        model_run.download_file(
            'outputs/scoring_file_v_1_0_0.py', script_file_name)

        self._edit_score_script(script_file_name)

        # Deploying ACI Service
        aci_service_name = self._aci_service_name(model_name)
        self.ctx.log('Deploying AciWebservice %s ...' % aci_service_name)

        inference_config = InferenceConfig(
            environment = model_run.get_environment(),
            entry_script = script_file_name)

        aciconfig = AciWebservice.deploy_configuration(
            cpu_cores = 1,
            memory_gb = 2,
            tags = {'type': "inference-%s" % aci_service_name},
            description = "inference-%s" % aci_service_name)

        # Remove any existing service under the same name.
        try:
            Webservice(ws, aci_service_name).delete()
            self.ctx.log('Remove any existing service under the same name...')
        except WebserviceException:
            pass

        aci_service = Model.deploy(
            ws, aci_service_name, [model], inference_config, aciconfig)
        aci_service.wait_for_deployment(True)
        self.ctx.log('%s state %s' % (aci_service_name, str(aci_service.state)))

        return {'model_id': model_id, 'aci_service_name': aci_service_name}
示例#15
0
def deploy(aml_interface, inference_config, service_name):
    inference_config = inference_config
    aci_config = AciWebservice.deploy_configuration(cpu_cores=1, memory_gb=1)
    model = aml_interface.workspace.models.get(MODEL_NAME)

    service = Model.deploy(aml_interface.workspace,
                           name=service_name,
                           models=[model],
                           inference_config=inference_config,
                           deployment_config=aci_config)
    service.wait_for_deployment(show_output=True)
    print(service.scoring_uri)
示例#16
0
def create_deployment_config_file(cpu_cores=1,
                                  memory_gb=1,
                                  tags={"data": "data"},
                                  description=''):

    return AciWebservice.deploy_configuration(
        cpu_cores=1,
        memory_gb=1,
        tags={
            "data": "Iris",
            "method": "sklearn_SVM"
        },
        description='Predict Iris with sklearn')
示例#17
0
def deploy_image():
    ws = get_workspace()
    azure_image = get_image()
    aci_config = AciWebservice.deploy_configuration(cpu_cores=1,
                                                    memory_gb=1,
                                                    tags={'method': 'sklearn'},
                                                    description='Worst model',
                                                    location=LOCATION)
    webservice = Webservice.deploy_from_image(image=azure_image,
                                              workspace=ws,
                                              name=MODEL_NAME,
                                              deployment_config=aci_config)
    webservice.wait_for_deployment(show_output=True)
def deploy(local, aks, aci, num_cores, mem_gb, compute_name):
    # Get the workspace
    ws = Workspace.from_config()
    # Create inference configuration based on the environment definition and the entry script
    # yolo = Environment.from_conda_specification(name="env", file_path="yolo.yml")
    yolo = Environment.from_pip_requirements(
        name="yolo", file_path="./deployed_requirements.txt")
    # yolo.save_to_directory('')
    yolo.register(workspace=ws)
    inference_config = InferenceConfig(entry_script="azure.py",
                                       environment=yolo,
                                       source_directory="yolov5")
    # Retrieve registered model
    model = Model(ws, id="lpr:1")
    deploy_target = None
    if local:
        # Create a local deployment, using port 8890 for the web service endpoint
        deployment_config = LocalWebservice.deploy_configuration(port=8890)
    elif aks:
        # Create a AKS deployment
        deployment_config = AksWebservice.deploy_configuration(
            cpu_cores=num_cores,
            memory_gb=mem_gb,
            compute_target_name=compute_name)
        deploy_target = ComputeTarget(workspace=ws, name=compute_name)
        # if deploy_target.get_status() != "Succeeded":
        #     print(f"Deploy Target: {deploy_target.get_status()}")
        #     deploy_target.wait_for_completion(show_output=True)
    elif aks:
        # Create a AKS deployment
        deployment_config = AciWebservice.deploy_configuration(
            cpu_cores=num_cores,
            memory_gb=mem_gb,
            compute_target_name=compute_name)
    else:
        raise NotImplementedError("Choose deploy target please")
    # Deploy the service
    print("Deploying:")
    service = Model.deploy(workspace=ws,
                           name="lpr",
                           models=[model],
                           inference_config=inference_config,
                           deployment_config=deployment_config,
                           overwrite=True,
                           deployment_target=deploy_target)
    # Wait for the deployment to complete
    print("Deploying:")
    service.wait_for_deployment(True)
    # Display the port that the web service is available on
    if local:
        print(service.port)
示例#19
0
def deploy_to_aci(model_image, workspace, dev_webservice_name):
    from azureml.core.webservice import AciWebservice, Webservice
    # Deploy a model image to ACI
    print("Deploying to ACI...")
    # make sure this dev_webservice_name is unique and doesnt already exist, else need to replace
    dev_webservice_deployment_config = AciWebservice.deploy_configuration()
    dev_webservice = Webservice.deploy_from_image(
        name=dev_webservice_name,
        image=model_image,
        deployment_config=dev_webservice_deployment_config,
        workspace=workspace)
    dev_webservice.wait_for_deployment()
    print("Deployment to ACI successfully complete")
    return dev_webservice
示例#20
0
def main():
    # get access to workspace
    try:
        ws = Workspace.from_config()
        print(ws.name, ws.location, ws.resource_group, ws.location, sep='\t')
        print('Library configuration succeeded')
    except:
        print('Workspace not found')
        return

    # get model
    model = Model(ws, 'absa')

    # deploy model

    pip = [
        "azureml-defaults", "azureml-monitoring",
        "git+https://github.com/NervanaSystems/nlp-architect.git@absa",
        "spacy==2.1.4"
    ]

    myenv = CondaDependencies.create(pip_packages=pip)

    with open("absaenv.yml", "w") as f:
        f.write(myenv.serialize_to_string())

    deploy_env = Environment.from_conda_specification('absa_env',
                                                      "absaenv.yml")
    deploy_env.environment_variables = {'NLP_ARCHITECT_BE': 'CPU'}

    inference_config = InferenceConfig(environment=deploy_env,
                                       entry_script="score.py")

    deploy_config = AciWebservice.deploy_configuration(
        cpu_cores=1,
        memory_gb=1,
        description='Aspect-Based Sentiment Analysis - Intel')
    print('Initiating deployment')
    deployment = Model.deploy(ws,
                              'absa-svc',
                              models=[model],
                              inference_config=inference_config,
                              deployment_config=deploy_config,
                              overwrite=True)

    deployment.wait_for_deployment(show_output=True)
    print('Getting Logs')
    deployment.get_logs()
    print('Done!')
示例#21
0
    def deploy(self):
        myenv = CondaDependencies()
        myenv.add_pip_package("azureml-sdk")
        myenv.add_pip_package("joblib")
        myenv.add_pip_package("tensorflow")
        myenv.add_pip_package("Pillow")
        myenv.add_pip_package("azureml-dataprep[pandas,fuse]>=1.1.14")

        with open("diagnoz_env.yml", "w") as f:
            f.write(myenv.serialize_to_string())

        huml_env = Environment.from_conda_specification(
            name="diagnoz_env", file_path="diagnoz_env.yml")

        inference_config = InferenceConfig(entry_script="score.py",
                                           source_directory='.',
                                           environment=huml_env)
        print("file deployement : ")
        for root, dir_, files in os.walk(os.getcwd()):
            print("dir_", dir_)
            for filename in files:
                print("filename :", filename)

        aciconfig = AciWebservice.deploy_configuration(
            cpu_cores=1,
            memory_gb=1,
            tags={
                "data": "cancer-data",
                "method": "tensorflow"
            },
            description='Predicting cancer with tensorflow')

        try:
            AciWebservice(self.ws, self.config.DEPLOY_SERVICE_NAME).delete()
            print("webservice deleted")
        except WebserviceException:
            pass

        model = self.ws.models[self.config.MODEL_NAME]

        service = Model.deploy(workspace=self.ws,
                               name=self.config.DEPLOY_SERVICE_NAME,
                               models=[model],
                               inference_config=inference_config,
                               deployment_config=aciconfig)

        service.wait_for_deployment(show_output=True)
        print("success deployement")
示例#22
0
def deploy_container_instance(workspace, endpoint_name, inference_config,
                              model_azure):
    # Remove any existing service under the same name.
    try:
        Webservice(workspace, endpoint_name).delete()
    except WebserviceException:
        pass

    deployment_config = AciWebservice.deploy_configuration(cpu_cores=1,
                                                           memory_gb=1)
    service = Model.deploy(workspace, endpoint_name, [model_azure],
                           inference_config, deployment_config)
    service.wait_for_deployment(show_output=True)
    print('A API {} foi gerada no estado {}'.format(service.scoring_uri,
                                                    service.state))
    return service.scoring_uri
def main():
    load_dotenv()
    workspace_name = os.environ.get("WS_NAME")
    resource_group = os.environ.get("RG_NAME")
    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")
    model_name = os.environ.get("MODEL_NAME")
    inference_config_file = os.environ.get("INFERENCE_CONFIG")
    deployment_aci_config = os.environ.get("DEPLOYMENT_ACI_CONFIG")
    conda_dep_yml = os.environ.get("CONDA_DEPENDENCIES")
    score_path = os.environ.get("SCORE_PATH")
    score_source_dir = os.environ.get("SCORE_SOURCE_DIR")
    aci_service_name = os.environ.get("SERVICE_NAME")

    # Get Azure machine learning workspace
    aml_workspace = get_workspace(workspace_name, resource_group,
                                  subscription_id, tenant_id, app_id,
                                  app_secret)

    inference_config = InferenceConfig(source_directory=score_source_dir,
                                       runtime="python",
                                       entry_script=score_path,
                                       conda_file=conda_dep_yml)

    aciconfig = AciWebservice.deploy_configuration(
        cpu_cores=2,
        memory_gb=4,
        tags={
            "model": "BERT",
            "method": "tensorflow"
        },
        description='Predict StackoverFlow tags with BERT')

    model = aml_workspace.models[model_name]

    aci_service = Model.deploy(aml_workspace,
                               aci_service_name, [model],
                               inference_config,
                               aciconfig,
                               overwrite=True)

    aci_service.wait_for_deployment(True)

    print(aci_service.state)
示例#24
0
    def deploy(self):

        try:
            AciWebservice(self.ws, self.DEPLOY_SERVICE_NAME).delete()
            print("webservice deleted")
        except WebserviceException:
            pass

        conda_dep = CondaDependencies()                                        
        conda_dep.add_pip_package("joblib")
        conda_dep.add_pip_package("torch")
        conda_dep.add_pip_package("torchvision")
        conda_dep.add_pip_package("azureml-sdk")
        conda_dep.add_pip_package("azure-storage-blob")
        conda_dep.add_pip_package("PyYAML")
        conda_dep.add_pip_package("scikit-learn")
        conda_dep.add_pip_package("matplotlib")
        conda_dep.add_pip_package("opencensus-ext-azure")
        
        
        shoes_designer_env_file = "shoes_designer_env.yml"
        with open(shoes_designer_env_file,"w") as f:
            f.write(conda_dep.serialize_to_string())

        shoes_designer_env = Environment.from_conda_specification(name="shoes_designer_env", file_path=shoes_designer_env_file)

        inference_config = InferenceConfig(entry_script="score.py", environment=shoes_designer_env)

        aciconfig = AciWebservice.deploy_configuration(cpu_cores=1, 
                                                    memory_gb=2, 
                                                    tags={"method" : "torch"}, 
                                                    description='Generate shoes with torch')

        model = self.ws.models[self.MODEL_NAME]

        service = Model.deploy(workspace=self.ws, 
                            name=self.DEPLOY_SERVICE_NAME, 
                            models=[model], 
                            inference_config=inference_config, 
                            deployment_config=aciconfig,
                            overwrite=True)
        service.wait_for_deployment(show_output=True)

        print("success deployement")        

        return service
示例#25
0
def deployWebservice(ws, args, folders):
    # this section requries that the processing is done in the directory where the execution script and the conda_file resides
    os.chdir(folders.script_folder)
    model = Model(ws, args.modelName)
    aciconfig = AciWebservice.deploy_configuration(cpu_cores=args.cpuCores,
                                                   memory_gb=args.memoryGB)
    # configure the image
    image_config = ContainerImage.image_configuration(
        execution_script=args.scoringScript,
        runtime="python",
        conda_file=args.environmentFileName)
    service = Webservice.deploy_from_model(workspace=ws,
                                           name=args.webserviceName,
                                           deployment_config=aciconfig,
                                           models=[model],
                                           image_config=image_config)
    service.wait_for_deployment(show_output=True)
    return service.scoring_uri
示例#26
0
def deploy(workspace,
           name,
           model,
           script,
           source_directory,
           environment=None,
           target='local',
           cpu_cores=1,
           memory_gb=1,
           compute_target_name=None):
    inference_config = InferenceConfig(entry_script=script,
                                       source_directory=source_directory,
                                       environment=environment)

    if target == 'local':
        deployment_config = LocalWebservice.deploy_configuration(port=8890)
    elif target == 'aci':
        deployment_config = AciWebservice.deploy_configuration(
            cpu_cores=cpu_cores, memory_gb=memory_gb)
    elif target == 'aks':
        if compute_target_name is None:
            print("compute_target_name required when target='aks'")
            return None
        deployment_config = AksWebservice.deploy_configuration(
            cpu_cores=cpu_cores,
            memory_gb=memory_gb,
            compute_target_name=compute_target_name,
            auth_enabled=False)

    try:
        service = Webservice(workspace, name)
    except WebserviceException:
        service = None

    if service is None:
        service = Model.deploy(workspace, name, [model], inference_config,
                               deployment_config)
    else:
        print(
            "Existing service with that name found, updating InferenceConfig\n"
            "If you meant to redeploy or change the deployment option, first "
            "delete the existing service.")
        service.update(models=[model], inference_config=inference_config)
    return service
def main():

    # Define workspace object
    try:
        ws = Workspace.from_config(path='deploy/.azureml/config.json')
    # Need to create the workspace
    except Exception as err:
        print('No workspace.  Check for deploy/.azureml/config.json file.')
        assert False

    inference_config = InferenceConfig(runtime="python",
                                       entry_script="score.py",
                                       conda_file="keras_env.yml",
                                       source_directory="./deploy")

    aciconfig = AciWebservice.deploy_configuration(
        cpu_cores=1,
        auth_enabled=True,  # this flag generates API keys to secure access
        memory_gb=6,
        location="westus",
        tags={
            'name': 'yolov3_full',
            'framework': 'Keras'
        },
        description='Keras YOLOv3 full size for object detection')

    model = Model(ws, name='mixdata_trained_weights.h5')

    # This deploys AND registers model (if not registered)
    service = Model.deploy(workspace=ws,
                           name='keras-yolov3-service',
                           models=[model],
                           inference_config=inference_config,
                           deployment_config=aciconfig)

    # This just deploys and does not register
    # service = Webservice.deploy_from_model(ws,
    #                             name='keras-yolov3-service',
    #                             models=[model],
    #                             deployment_config=aciconfig)

    service.wait_for_deployment(True)
    print(service.state)
示例#28
0
def main(name, model):
    workspace = Workspace.from_config()
    model = Model(workspace, name=model)

    root_folder = Path(__file__).parent.parent

    deployment_config = AciWebservice.deploy_configuration(cpu_cores=1,
                                                           memory_gb=1)

    inference_config = InferenceConfig(entry_script='customer_churn/score.py',
                                       source_directory=root_folder)

    webservice = Model.deploy(workspace=workspace,
                              name=name,
                              models=[model],
                              deployment_config=deployment_config,
                              inference_config=inference_config)

    webservice.wait_for_deployment(show_output=True)
示例#29
0
def main(model_name="deploy", model_version=None, deployment_name="deploy"):
    """
    Return a AciWebservice deploy config
    """
    environment = get_environment(
        name=deployment_name,
        file_path="nd00333/model/deploy/environment.yml",
    )
    logger.info(msg="main", extra={"environment": environment})

    inference_config = InferenceConfig(
        source_directory="nd00333",
        entry_script="model/deploy/score.py",
        environment=environment,
    )
    logger.info(msg="main", extra={"inference_config": inference_config})

    workspace = package_utils.get_workspace()

    deployment_config = AciWebservice.deploy_configuration(
        cpu_cores=1.0,
        memory_gb=8.0,
        auth_enabled=True,
        enable_app_insights=True,
        collect_model_data=False,
    )
    logger.info(msg="main", extra={"deployment_config": deployment_config})

    model = Model(workspace, name=model_name, version=model_version)
    logger.info(msg="main", extra={"model": model})

    service = Model.deploy(
        workspace,
        deployment_name,
        [model],
        inference_config,
        deployment_config,
        overwrite=True,
    )
    logger.info(msg="main", extra={"service": service})

    return service
示例#30
0
def main(args, ws):
    dir = os.path.dirname(os.path.abspath(__file__))
    ic = InferenceConfig(runtime='python',
                         source_directory=dir,
                         entry_script='score.py',
                         conda_file='environment.yml')

    dc = AciWebservice.deploy_configuration(cpu_cores=args.cores,
                                            memory_gb=args.memory)
    m = ws.models[args.model_name]

    # Remove any existing service under the same name.
    try:
        Webservice(ws, args.service_name).delete()
        print(f'Deleted webservice with name {args.service_name}.')
    except WebserviceException:
        pass

    service = Model.deploy(ws, args.service_name, [m], ic, dc)
    service.wait_for_deployment(True)
    print(service.state)
    print(service.get_logs())