ray/release/ray_release/scripts/get_aws_instance_information.py

46 lines
1.1 KiB
Python
Raw Normal View History

import csv
import sys
from typing import List, Tuple, Dict
import boto3
def get_aws_instance_information() -> List[Dict[str, Tuple[int, int]]]:
rows = []
client = boto3.client("ec2")
args = {}
while True:
result = client.describe_instance_types(**args)
for instance in result["InstanceTypes"]:
num_cpus = instance["VCpuInfo"]["DefaultVCpus"]
num_gpus = sum(
gpu["Count"] for gpu in instance.get("GpuInfo", {"Gpus": []})["Gpus"]
)
rows.append(
{
"instance": instance["InstanceType"],
"cpus": num_cpus,
"gpus": num_gpus,
}
)
if "NextToken" not in result:
break
args["NextToken"] = result["NextToken"]
return rows
if __name__ == "__main__":
rows = []
rows += get_aws_instance_information()
writer = csv.DictWriter(fieldnames=["instance", "cpus", "gpus"], f=sys.stdout)
writer.writeheader()
for row in sorted(rows, key=lambda item: item["instance"]):
writer.writerow(row)