mirror of
https://github.com/Azure/MachineLearningNotebooks.git
synced 2025-12-21 10:05:09 -05:00
250 lines
7.2 KiB
Plaintext
250 lines
7.2 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"Azure ML & Azure Databricks notebooks by Parashar Shah.\n",
|
|
"\n",
|
|
"Copyright (c) Microsoft Corporation. All rights reserved.\n",
|
|
"\n",
|
|
"Licensed under the MIT License."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
""
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"This notebook uses image from ACI notebook for deploying to AKS."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import azureml.core\n",
|
|
"\n",
|
|
"# Check core SDK version number\n",
|
|
"print(\"SDK version:\", azureml.core.VERSION)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Set auth to be used by workspace related APIs.\n",
|
|
"# For automation or CI/CD ServicePrincipalAuthentication can be used.\n",
|
|
"# https://docs.microsoft.com/en-us/python/api/azureml-core/azureml.core.authentication.serviceprincipalauthentication?view=azure-ml-py\n",
|
|
"auth = None"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from azureml.core import Workspace\n",
|
|
"\n",
|
|
"ws = Workspace.from_config(auth = auth)\n",
|
|
"print('Workspace name: ' + ws.name, \n",
|
|
" 'Azure region: ' + ws.location, \n",
|
|
" 'Subscription id: ' + ws.subscription_id, \n",
|
|
" 'Resource group: ' + ws.resource_group, sep = '\\n')"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# List images by ws\n",
|
|
"\n",
|
|
"from azureml.core.image import ContainerImage\n",
|
|
"for i in ContainerImage.list(workspace = ws):\n",
|
|
" print('{}(v.{} [{}]) stored at {} with build log {}'.format(i.name, i.version, i.creation_state, i.image_location, i.image_build_log_uri))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from azureml.core.image import Image\n",
|
|
"myimage = Image(workspace=ws, name=\"aciws\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#create AKS compute\n",
|
|
"#it may take 20-25 minutes to create a new cluster\n",
|
|
"\n",
|
|
"from azureml.core.compute import AksCompute, ComputeTarget\n",
|
|
"\n",
|
|
"# Use the default configuration (can also provide parameters to customize)\n",
|
|
"prov_config = AksCompute.provisioning_configuration()\n",
|
|
"\n",
|
|
"aks_name = 'ps-aks-demo2' \n",
|
|
"\n",
|
|
"# Create the cluster\n",
|
|
"aks_target = ComputeTarget.create(workspace = ws, \n",
|
|
" name = aks_name, \n",
|
|
" provisioning_configuration = prov_config)\n",
|
|
"\n",
|
|
"aks_target.wait_for_completion(show_output = True)\n",
|
|
"\n",
|
|
"print(aks_target.provisioning_state)\n",
|
|
"print(aks_target.provisioning_errors)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from azureml.core.webservice import Webservice\n",
|
|
"help( Webservice.deploy_from_image)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from azureml.core.webservice import Webservice, AksWebservice\n",
|
|
"from azureml.core.image import ContainerImage\n",
|
|
"\n",
|
|
"#Set the web service configuration (using default here with app insights)\n",
|
|
"aks_config = AksWebservice.deploy_configuration(enable_app_insights=True)\n",
|
|
"\n",
|
|
"#unique service name\n",
|
|
"service_name ='ps-aks-service'\n",
|
|
"\n",
|
|
"# Webservice creation using single command, there is a variant to use image directly as well.\n",
|
|
"aks_service = Webservice.deploy_from_image(\n",
|
|
" workspace=ws, \n",
|
|
" name=service_name,\n",
|
|
" deployment_config = aks_config,\n",
|
|
" image = myimage,\n",
|
|
" deployment_target = aks_target\n",
|
|
" )\n",
|
|
"\n",
|
|
"aks_service.wait_for_deployment(show_output=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"aks_service.deployment_status"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#for using the Web HTTP API \n",
|
|
"print(aks_service.scoring_uri)\n",
|
|
"print(aks_service.get_keys())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import json\n",
|
|
"\n",
|
|
"#get the some sample data\n",
|
|
"test_data_path = \"AdultCensusIncomeTest\"\n",
|
|
"test = spark.read.parquet(test_data_path).limit(5)\n",
|
|
"\n",
|
|
"test_json = json.dumps(test.toJSON().collect())\n",
|
|
"\n",
|
|
"print(test_json)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#using data defined above predict if income is >50K (1) or <=50K (0)\n",
|
|
"aks_service.run(input_data=test_json)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"#comment to not delete the web service\n",
|
|
"aks_service.delete()\n",
|
|
"#image.delete()\n",
|
|
"#model.delete()\n",
|
|
"aks_target.delete() "
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
""
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"authors": [
|
|
{
|
|
"name": "pasha"
|
|
}
|
|
],
|
|
"kernelspec": {
|
|
"display_name": "Python 3.6",
|
|
"language": "python",
|
|
"name": "python36"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.6.6"
|
|
},
|
|
"name": "deploy-to-aks-existingimage-05",
|
|
"notebookId": 1030695628045968
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
} |