{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# A Cloud Price Comparison\n", "How do cloud providers stack up?\n", " \n", "Making apples to apples comparisons between different cloud providers is very difficult, because each one offers instances with varying vCPUs, RAM, SSD space and HDD space. To further obfuscate matters, slightly different billing systems, promises of arcane discounting, only providing pricing in USD, and inconsistent naming conventions are sprinkled throughout.\n", "\n", "As an attempt to provide a clearer price comparison, I'll be using [multiple linear regression](https://en.wikipedia.org/wiki/Linear_regression) to \"[normalise](http://bit.ly/2xIUM5C)\" the pricing of general purpose compute instances across different cloud providers.\n", "\n", "In essence, **If every cloud provider offered the same size compute instances, how expensive would they be?**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ " ## Importing libraries" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "scrolled": false }, "outputs": [], "source": [ "import pandas as pd\n", "import os\n", "from sklearn.linear_model import LinearRegression\n", "import matplotlib.pyplot as plt\n", "import requests\n", "import json\n", "import re\n", "from bs4 import BeautifulSoup\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The dataset\n", "\n", "I'll be taking the price tables of:\n", "* Google Cloud - [Predefined machine types](https://cloud.google.com/compute/pricing#predefined_machine_types)\n", "* AWS - [On demand instances](https://aws.amazon.com/ec2/pricing/on-demand/)\n", "* Azure - [Linux virtual machines](https://azure.microsoft.com/en-us/pricing/details/virtual-machines/linux/)\n", "\n", "and converting them into the instance sizes offered by [Catalyst Cloud](https://catalystcloud.nz/services/iaas/compute/#prices). You can find the datasets and their sources [here](https://github.com/catalyst-cloud/catalystcloud-price-comparison)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Initialisation\n", "Assuring dataset directories exist for later data storage." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "def create_dir_if_not_exists(rel_dir_path):\n", " if not os.path.exists(rel_dir_path):\n", " os.makedirs(rel_dir_path)\n", " \n", "create_dir_if_not_exists('dataset')\n", "create_dir_if_not_exists('predicted-dataset')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exchange rate\n", "Getting the USD to NZD exchange rate" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Current exchange rate from USD to NZD is 1.6772901111\n" ] } ], "source": [ "usd_to_nzd_exchange_rate_url = 'https://api.exchangeratesapi.io/latest?base=USD&symbols=NZD'\n", "\n", "usd_to_nzd_exchange_rate_json = requests.get(usd_to_nzd_exchange_rate_url).json()\n", "usd_to_nzd_exchange_rate = float(usd_to_nzd_exchange_rate_json['rates']['NZD'])\n", "print(f\"Current exchange rate from USD to NZD is {usd_to_nzd_exchange_rate}\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Catalyst Cloud prices\n", "Scraping the Catalyst Cloud compute page for prices. As Catalyst Cloud currently only offers general purpose compute instances, we'll be scraping all of them." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "# Variables\n", "\n", "catalyst_url = 'https://catalystcloud.nz/services/iaas/compute'\n", "catalyst_data_location = 'dataset/catalyst_price_data.csv'\n", "catalyst_gst_exclusive = True" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloaded Catalyst prices, with 45 items.\n" ] } ], "source": [ "catalyst_price_page_html = requests.get(catalyst_url).text \n", "catalyst_price_page = BeautifulSoup(catalyst_price_page_html, 'html.parser')\n", "\n", "catalyst_price_table = catalyst_price_page.find(attrs={'class': 'service-price-table'}).tbody\n", "catalyst_price_rows = catalyst_price_table.find_all('tr')\n", "\n", "catalyst_prices_list = []\n", "\n", "for row in catalyst_price_rows:\n", " catalyst_price_cells = list(row.stripped_strings)\n", " \n", " catalyst_prices_list.append({\n", " 'Name': catalyst_price_cells[0],\n", " 'vCPU': float(catalyst_price_cells[1]),\n", " 'RAM, GB': float(catalyst_price_cells[2]),\n", " 'Price per hour, NZD (ex GST)': float(catalyst_price_cells[3].strip('$')),\n", " 'SSD storage, GB': .0,\n", " 'HDD storage, GB': .0\n", " })\n", "\n", "# Convert to csv\n", "catalyst_dataframe = pd.DataFrame(catalyst_prices_list)\n", "catalyst_dataframe.to_csv(catalyst_data_location)\n", "\n", "print('Downloaded Catalyst prices, with {} items.'.format(catalyst_dataframe.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### AWS prices\n", "\n", "Pulling price list from AWS JSON API." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Variables\n", "\n", "aws_url = 'https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonEC2/current/ap-southeast-2/index.json'\n", "aws_raw_location = 'dataset/raw_aws_bulk.json'\n", "aws_acceptable_instance_families = [\n", " 'General purpose',\n", " 'Micro instances'\n", "]\n", "aws_data_location = 'dataset/aws_price_data.csv'\n", "aws_gst_exclusive = True" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "scrolled": false }, "outputs": [], "source": [ "aws_bulk_json_request = requests.get(aws_url)\n", "aws_bulk_json = aws_bulk_json_request.json()\n", "with open(aws_raw_location, 'w') as aws_raw_file:\n", " json.dump(aws_bulk_json, aws_raw_file)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Extracting the specific relevant prices from the raw AWS file, and putting them in a consistant, usable format. In this case, we'll only be using the General purpose and micro size instances." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Getting the instance products\n", "\n", "with open(aws_raw_location, 'r') as aws_raw_file:\n", " aws_raw_json = json.load(aws_raw_file)\n", " \n", " aws_instances_list = []\n", " \n", " for product in aws_raw_json['products']:\n", " \n", " productFamily = aws_raw_json['products'][product]['productFamily']\n", " \n", " # Check product is compute instance\n", " if productFamily == 'Compute Instance':\n", " \n", " # Check if instance is appropriate\n", " instanceFamily = aws_raw_json['products'][product]['attributes']['instanceFamily']\n", " is_current_gen = aws_raw_json['products'][product]['attributes']['currentGeneration'] == 'Yes'\n", " is_linux = aws_raw_json['products'][product]['attributes']['operatingSystem'] == 'Linux'\n", " no_preInstalledSw = aws_raw_json['products'][product]['attributes']['preInstalledSw'] == 'NA'\n", " is_shared_instance = aws_raw_json['products'][product]['attributes']['tenancy'] == 'Shared'\n", "\n", " if instanceFamily in aws_acceptable_instance_families and is_current_gen \\\n", " and is_linux and no_preInstalledSw and is_shared_instance:\n", " \n", " # Append if appropriate\n", " aws_instances_list.append(product)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloaded AWS prices, with 192 items.\n" ] } ], "source": [ "with open(aws_raw_location, 'r') as aws_raw_file:\n", " \n", " aws_prices_list = []\n", " \n", " for instance_key in aws_instances_list:\n", "\n", " attributes = aws_raw_json['products'][instance_key]['attributes']\n", " \n", " # Get vCPU and RAM\n", " vCPU = float(attributes['vcpu'].replace(',',''))\n", " RAM = float(attributes['memory'].split(' ')[0].replace(',',''))\n", "\n", " # Break storage spec into array\n", " storage_strings = attributes['storage'].split(' ')\n", "\n", " # Find where the numbers end (200 x 1), and the description of the storage type (SSD) starts.\n", " final_num_index = None\n", " for word in storage_strings[::-1]:\n", " try:\n", " float(word.replace(',', ''))\n", " final_num_index = storage_strings.index(word)\n", " break\n", " except:\n", " foo = None\n", "\n", " # If there are no numbers in the storage spec, there is no storage included\n", " if final_num_index == None:\n", "\n", " total_ssd = .0\n", " total_hdd = .0\n", "\n", " # Else...\n", " else:\n", "\n", " # Perform the math to figure out how many GB of storage is included\n", " storage_calcs = storage_strings[0:final_num_index+1]\n", " storage_volume = eval(' '.join(['*' if x=='x' else x.replace(',', '') for x in storage_calcs]))\n", "\n", " # discern the type of storage\n", " if 'HDD' in storage_strings: \n", " total_ssd = .0\n", " total_hdd = float(storage_volume)\n", "\n", " elif 'SSD' in storage_strings: \n", " total_ssd = float(storage_volume)\n", " total_hdd = .0\n", " else: \n", " total_ssd = float(storage_volume)\n", " total_hdd = .0\n", "\n", "\n", " # Get the price per USD\n", " terms = aws_raw_json['terms']['OnDemand'][instance_key]\n", " usd_price = None\n", " for specific_term in terms:\n", " for dimension_key in terms[specific_term]['priceDimensions']:\n", " dimension = terms[specific_term]['priceDimensions'][dimension_key]\n", " if dimension['unit'] != 'Hrs': raise ValueError(\"This price isn't in hours\")\n", " usd_price = float(dimension['pricePerUnit']['USD'])\n", " \n", " if not usd_price:\n", " continue\n", "\n", " # Convert to NZD\n", " nzd_price = usd_price * usd_to_nzd_exchange_rate\n", " \n", " # Append to list of prices\n", " aws_prices_list.append({\n", " 'Name': attributes['instanceType'],\n", " 'vCPU': vCPU,\n", " 'RAM, GB': RAM,\n", " 'Price per hour, NZD (ex GST)': nzd_price,\n", " 'Price per hour, USD (ex GST)': usd_price,\n", " 'SSD storage, GB': total_ssd,\n", " 'HDD storage, GB': total_hdd,\n", " })\n", "\n", "# Convert to CSV\n", "aws_dataframe = pd.DataFrame(aws_prices_list)\n", "aws_dataframe.to_csv(aws_data_location)\n", "\n", "print('Downloaded AWS prices, with {} items.'.format(aws_dataframe.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Google Cloud prices\n", "\n", "Scraping Google Cloud's documentation for prices of instance sizes." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Variables\n", "\n", "google_prices_url = 'https://cloud-dot-devsite-v2-prod.appspot.com/compute/all-pricing_f139b6960aafba0f57015e855bf5748ad892aa7e94f9dee00434116c29ca229a.frame'\n", "google_instances_url = 'https://cloud-dot-devsite-v2-prod.appspot.com/compute/all-pricing_70247bb78d85862a2b290545ac82cd3c0f4e0e7aa5ea1092e8dcba180b24ab80.frame'\n", "google_price_type = 'syd-hourly'\n", "google_acceptable_instance_families = [\n", " 'standard_machine_types'\n", "]\n", "google_data_location = 'dataset/google_price_data.csv'\n", "google_gst_exclusive = True" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "google_price_page_html = requests.get(google_prices_url).text\n", "google_price_page = BeautifulSoup(google_price_page_html, 'html.parser')\n", "google_instance_page_html = requests.get(google_instances_url).text\n", "google_instance_page = BeautifulSoup(google_instance_page_html, 'html.parser')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Scraping the custom compute sizes, for easier pricing later." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "# Extract the USD price per vCPU and per GB RAM\n", "google_custom_compute_price_table = google_price_page.find('table')\n", "google_custom_compute_rows = google_custom_compute_price_table.find_all('tr')[1:]\n", "\n", "google_per_vcpu_usd = float(google_custom_compute_rows[0].find_all('td')[1][google_price_type].split()[0].strip('$'))\n", "google_per_ram_usd = float(google_custom_compute_rows[1].find_all('td')[1][google_price_type].split()[0].strip('$'))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def most_freq_num(text):\n", " number_list = re.findall('\\d*\\.?\\d+', text)\n", " most_frequent_num = max(set(number_list), key=number_list.count)\n", " return float(most_frequent_num)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Scraping the predefined instance size price table. In this case, we'll only be scraping the standard machine types." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloaded Google prices, with 7 items.\n" ] } ], "source": [ "google_prices_list = []\n", "\n", "for instance_type in google_acceptable_instance_families:\n", " \n", " google_price_table = google_instance_page.find('table')\n", " google_rows = google_price_table.find_all('tr')[1:-1]\n", " \n", " for row in google_rows:\n", " \n", " # Extract number of vCPUs and GB of RAM\n", " try:\n", " cells = row.find_all('td')\n", " name = cells[0].get_text().strip()\n", " # Ignore if has lake in name (to remove skylake instances)\n", " if 'lake' in name:\n", " continue\n", " cpu_val = most_freq_num(str(cells[1]))\n", " ram_val = most_freq_num(str(cells[2]))\n", " except:\n", " foo='bar'\n", " \n", " # Calcluate NZD price\n", " usd_price = (google_per_ram_usd * ram_val) + (google_per_vcpu_usd * cpu_val)\n", " nzd_price = usd_price * usd_to_nzd_exchange_rate\n", " \n", " try:\n", " google_prices_list.append({\n", " 'Name': name,\n", " 'vCPU': cpu_val,\n", " 'RAM, GB': ram_val,\n", " 'Price per hour, NZD (ex GST)': nzd_price,\n", " 'Price per hour, USD (ex GST)': usd_price,\n", " 'SSD storage, GB': .0,\n", " 'HDD storage, GB': .0,\n", " })\n", " except:\n", " continue\n", "\n", "google_dataframe = pd.DataFrame(google_prices_list)\n", "google_dataframe.to_csv(google_data_location)\n", "\n", "print('Downloaded Google prices, with {} items.'.format(google_dataframe.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Azure cloud prices\n", "\n", "Scraping the Azure on demand price pages. In this case, we'll only be scraping those listed as general purpose." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "# Variables\n", "azure_url = 'https://azure.microsoft.com/en-us/pricing/details/virtual-machines/linux/'\n", "azure_data_location = 'dataset/azure_price_data.csv'\n", "azure_acceptable_categories = [\n", " 'general-purpose-filter'\n", "]\n", "azure_acceptable_regions = [\n", " 'australia-central',\n", " 'australia-central-2',\n", " 'australia-east',\n", " 'australia-southeast'\n", "]\n", "azure_ssd_temp_disk_vms = [\n", " r'A\\d.v2', # Regex for Av2-series\n", " r'D\\d{1,2}.v2', # Regex for Dv2 series\n", " r'D\\d{1,2}.v3' # Regex for Dv3 series\n", "] \n", "azure_gst_exclusive = True" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "azure_price_page_html = requests.get(azure_url).text\n", "azure_price_page = BeautifulSoup(azure_price_page_html, 'html.parser')" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "scrolled": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloaded Azure prices, with 41 items.\n" ] } ], "source": [ "# Find all appropriate price tables\n", "appropriate_price_tables = []\n", "for category in azure_acceptable_categories:\n", " category_section = azure_price_page.find_all(attrs={'data-filter': category})[0]\n", " appropriate_price_tables += category_section.find_all('table')\n", "\n", "# Extract data from tables\n", "azure_instance_list = []\n", "for price_table in appropriate_price_tables:\n", " table_rows = price_table.tbody.find_all('tr')\n", " \n", " # Work through each row\n", " for row in table_rows:\n", " \n", " cells = row.find_all('td')\n", " \n", " # Find a price by checking if each of the acceptable regions have a price\n", " usd_price = None\n", " price_json = json.loads(cells[5].span['data-amount'])['regional']\n", " for region in azure_acceptable_regions:\n", " if region in price_json:\n", " usd_price = price_json[region]\n", " break\n", " \n", " # If none of the regions have it, skip this row\n", " if usd_price is None:\n", " continue\n", " \n", " # Get NZD price\n", " nzd_price = usd_price * usd_to_nzd_exchange_rate\n", " \n", " # Get name\n", " name = cells[1].string\n", " \n", " # Get CPU value\n", " cpu_val = float(cells[2].string)\n", " \n", " # Get Ram value\n", " ram_string = cells[3].string\n", " ram_string = ram_string.strip(' GiB')\n", " ram_val = float(ram_string)\n", " \n", " # Get storage value\n", " storage_string = cells[4].string\n", " storage_string = storage_string.strip(' GiB')\n", " storage_string = storage_string.replace(',', '')\n", " storage_val = float(storage_string)\n", " \n", " # Get storage type\n", " for regex_string in azure_ssd_temp_disk_vms:\n", " pattern = re.compile(regex_string)\n", " if pattern.match(name):\n", " storage_type = 'SSD'\n", " else:\n", " storage_type = 'HDD'\n", " \n", " \n", " if storage_type is 'HDD':\n", " azure_instance_list.append({\n", " 'Name': name,\n", " 'vCPU': cpu_val,\n", " 'RAM, GB': ram_val,\n", " 'Price per hour, NZD (ex GST)': nzd_price,\n", " 'Price per hour, USD (ex GST)': usd_price,\n", " 'SSD storage, GB': .0,\n", " 'HDD storage, GB': storage_val\n", " })\n", " elif storage_type is 'SSD':\n", " azure_instance_list.append({\n", " 'Name': name,\n", " 'vCPU': cpu_val,\n", " 'RAM, GB': ram_val,\n", " 'Price per hour, NZD (ex GST)': nzd_price,\n", " 'Price per hour, USD (ex GST)': usd_price,\n", " 'SSD storage, GB': storage_val,\n", " 'HDD storage, GB': .0\n", " })\n", " else:\n", " raise ValueError('Unknown storage type.')\n", "\n", "pd.DataFrame(azure_instance_list).to_csv(azure_data_location)\n", "\n", "azure_dataframe = pd.DataFrame(azure_instance_list)\n", "azure_dataframe.to_csv(azure_data_location)\n", "\n", "print('Downloaded Azure prices, with {} items.'.format(azure_dataframe.shape[0]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Ingesting the datasets\n", "\n", "Importing the datasets from their saved locations." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "catalyst_dataset = pd.read_csv(catalyst_data_location, index_col=0)\n", "google_dataset = pd.read_csv(google_data_location, index_col=0)\n", "aws_dataset = pd.read_csv(aws_data_location, index_col=0)\n", "azure_dataset = pd.read_csv(azure_data_location, index_col=0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Previewing the datasets." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
NamevCPURAM, GBPrice per hour, NZD (ex GST)SSD storage, GBHDD storage, GB
0c1.c1r051.00.50.0170.00.0
1c1.c1r11.01.00.0390.00.0
2c1.c1r21.02.00.0620.00.0
3c1.c1r41.04.00.0980.00.0
4c1.c2r12.01.00.0700.00.0
5c1.c2r22.02.00.0880.00.0
\n", "
" ], "text/plain": [ " Name vCPU RAM, GB Price per hour, NZD (ex GST) SSD storage, GB \\\n", "0 c1.c1r05 1.0 0.5 0.017 0.0 \n", "1 c1.c1r1 1.0 1.0 0.039 0.0 \n", "2 c1.c1r2 1.0 2.0 0.062 0.0 \n", "3 c1.c1r4 1.0 4.0 0.098 0.0 \n", "4 c1.c2r1 2.0 1.0 0.070 0.0 \n", "5 c1.c2r2 2.0 2.0 0.088 0.0 \n", "\n", " HDD storage, GB \n", "0 0.0 \n", "1 0.0 \n", "2 0.0 \n", "3 0.0 \n", "4 0.0 \n", "5 0.0 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "catalyst_dataset.head(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll filter out excessively large instance sizes. Namely, those with either more RAM than 360GB, or more that 64 vCPUs. \n", "\n", "This is to prevent the graph including very large instances for comparison, and leaving the smaller instances compared on a scale too small to visually distinguish between.\n", "\n", "Remember, we're only dealing with general purpose compute here, and for that application, small instances are often an important tool. Consequently, it is worthwhile to be specific." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "def filter_dataset (dataset):\n", " without_high_ram = dataset[(dataset['RAM, GB'] <= 360) & (dataset['vCPU'] <= 64)]\n", " \n", " return without_high_ram" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "catalyst_dataset = filter_dataset(catalyst_dataset)\n", "google_dataset = filter_dataset(google_dataset)\n", "aws_dataset = filter_dataset(aws_dataset)\n", "azure_dataset = filter_dataset(azure_dataset)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we'll split the data into NumPy arrays of input features (X) and labels (Y)." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "def split_dataset (dataset):\n", " x = dataset[[\"vCPU\", \"RAM, GB\", \"HDD storage, GB\", \"SSD storage, GB\"]].values\n", " y = dataset[\"Price per hour, NZD (ex GST)\"].values\n", " \n", " return (x, y)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "catalyst_x, catalyst_y = split_dataset(catalyst_dataset)\n", "google_x, google_y = split_dataset(google_dataset)\n", "aws_x, aws_y = split_dataset(aws_dataset)\n", "azure_x, azure_y = split_dataset(azure_dataset)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The math\n", "To analyse this dataset, we'll be using [multiple linear regression](https://en.wikipedia.org/wiki/Linear_regression) to predict the prices of compute instance flavors if they were being offered by cloud providers that do not typically offer that sized flavor.\n", "\n", "The multiple linear regression models will draw a hyperplane across our data space (in this case, 5 dimensional space) that comes as close as possible to intersecting every data point in our dataset. You can see an example of this (in 2 dimensional space) by Khan academy below." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/adriant/venvs/jupyter/lib/python3.7/site-packages/IPython/core/display.py:701: UserWarning: Consider using IPython.display.IFrame instead\n", " warnings.warn(\"Consider using IPython.display.IFrame instead\")\n" ] }, { "data": { "text/html": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from IPython.core.display import display, HTML\n", "display(HTML(''))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "By then finding a point on the hyperplane that intersects with our vCPUs, RAM, HDD, and SSD axes, we can find the predicted price. This will give us a way to estimate the price of a flavour if it were offered by various cloud providers, even if they do not offer it.\n", "\n", "I've used linear regression as the predictive algorithm because I'm assuming that cloud providers scale their pricing in a linear patern.\n", "\n", "First we'll initialise the regression models, and train them on the cloud providers' prices." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Initialise regressors\n", "catalyst_linear = LinearRegression()\n", "google_linear = LinearRegression()\n", "aws_linear = LinearRegression()\n", "azure_linear = LinearRegression()\n", "\n", "# Train regressors\n", "catalyst_linear.fit(catalyst_x, catalyst_y)\n", "google_linear.fit(google_x, google_y)\n", "aws_linear.fit(aws_x, aws_y)\n", "azure_linear.fit(azure_x, azure_y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have the models predict the other providers' instance prices. By having all providers predict the prices of all other providers, we can see if the pattern is maintained across different models." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "# Predict Catalyst X\n", "google_cata_price = google_linear.predict(catalyst_x)\n", "aws_cata_price = aws_linear.predict(catalyst_x)\n", "azure_cata_price = azure_linear.predict(catalyst_x)\n", "\n", "# Predict Google X\n", "aws_goog_price = aws_linear.predict(google_x)\n", "azure_goog_price = azure_linear.predict(google_x)\n", "catalyst_goog_price = catalyst_linear.predict(google_x)\n", "\n", "# Predict AWS X\n", "google_aws_price = google_linear.predict(aws_x)\n", "azure_aws_price = azure_linear.predict(aws_x)\n", "catalyst_aws_price = catalyst_linear.predict(aws_x)\n", "\n", "# Predict Azure X\n", "google_azure_price = google_linear.predict(azure_x)\n", "aws_azure_price = aws_linear.predict(azure_x)\n", "catalyst_azure_price = catalyst_linear.predict(azure_x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The results\n", "\n", "Now we have the results together, where we can compare the prices against each other on an even scale.\n", "\n", "A good scientist would, at this point, verify their results by comparing an intersection between the predicted output and the actual output. I would love to do this. However I could find no such intersection.\n", "\n", "Please note that the X axis is a range from zero to the number of flavors offered by each provider. Each number on the X axis represents a single flavor by the provider we are predicting. I've done it this way, because the plotting method does not support non-numerical axis ticks." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "def graph_pred (names, predictions):\n", " flavors_num = predictions[0].shape[0]\n", " for index, name in enumerate(names):\n", " plt.plot(range(flavors_num), predictions[index], label=names[index])\n", " plt.legend(loc=2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predicting Catalyst Cloud" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "graph_pred([\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_y, google_cata_price, aws_cata_price, azure_cata_price\n", " ])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predicting Google Cloud" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "graph_pred([\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_goog_price,\n", " google_y,\n", " aws_goog_price,\n", " azure_goog_price,\n", " \n", " ])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predicting AWS" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "graph_pred([\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_aws_price,\n", " google_aws_price,\n", " aws_y,\n", " azure_aws_price,\n", " ])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predicting Azure" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "graph_pred([\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_azure_price,\n", " google_azure_price,\n", " aws_azure_price,\n", " azure_y\n", " ])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Interpreting the results\n", "\n", "As you can see, the multiple linear regression model consistently predicts that Catalyst Cloud would offer either the cheapest, or competitively priced compute instances.\n", "\n", "While this is by no means a perfect indicator of who is the cheapest and should not be taken as such, it does serve to dispel the idea that Catalyst Cloud is overpriced, or cannot compete with international companies on price." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Saving the results\n", "For further analysis later, we'll save the predicted prices as CSVs." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "def pred_save (origin_flavors, provider_names, predictions):\n", " \n", " flavor_data = origin_flavors[[\"Name\", \"vCPU\", \"RAM, GB\", \"HDD storage, GB\", \"SSD storage, GB\"]]\n", " \n", " print(type(origin_flavors))\n", " \n", " for index, provider in enumerate(predictions):\n", " unit_string = ' price per hour, NZD (ex GST)'\n", " company_name = provider_names[index]\n", " flavor_data[company_name + unit_string] = predictions[index]\n", " \n", " return flavor_data" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "final_cat_data = pred_save(\n", " catalyst_dataset,\n", " [\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_y, google_cata_price, aws_cata_price, azure_cata_price\n", " ])" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "final_google_data = pred_save(\n", " google_dataset,\n", " [\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_goog_price,\n", " google_y,\n", " aws_goog_price,\n", " azure_goog_price,\n", " \n", " ])" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "final_aws_data = pred_save(\n", " aws_dataset,\n", " [\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_aws_price,\n", " google_aws_price,\n", " aws_y,\n", " azure_aws_price,\n", " ])" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "final_azure_data = pred_save(\n", " azure_dataset,\n", " [\n", " \"Catalyst\", \"Google\", \"AWS\", \"Azure\"\n", " ], [\n", " catalyst_azure_price,\n", " google_azure_price,\n", " aws_azure_price,\n", " azure_y\n", " ])" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [], "source": [ "final_cat_data.to_csv('predicted-dataset/predicted_catalyst_prices.csv')\n", "final_google_data.to_csv('predicted-dataset/predicted_google_prices.csv')\n", "final_aws_data.to_csv('predicted-dataset/predicted_aws_prices.csv')\n", "final_azure_data.to_csv('predicted-dataset/predicted_azure_prices.csv')" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Saving resulting datasets.\n" ] } ], "source": [ "print('Saving resulting datasets.')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }