Setup
!pip install --use-feature=2020-resolver --progress-bar off --quiet poetry
!pip install --use-feature=2020-resolver --progress-bar off --quiet git+https://github.com/oughtinc/ergo.git
Model of IDE use
import ergo
import seaborn
Model:
def model():
avg_chars_per_request = ergo.tag(8192 - abs(ergo.normal_from_interval(0, 2000)), "avg chars per request")
avg_requests_per_minute = ergo.lognormal_from_interval(1, 15, name="requests per minute")
avg_chars_per_hour = ergo.tag(avg_requests_per_minute * 60 * avg_chars_per_request, "avg chars per hour")
# How many hours of use does the 100MM budget provide?
usage_hours = 100_000_000 / avg_chars_per_hour
ergo.tag(usage_hours, "hours of use")
samples = ergo.run(model, num_samples=5000)
Show samples:
samples
Chars per hour:
print(samples["avg chars per hour"].quantile([0.1, 0.5, 0.9]))
Chars per request:
print(samples["avg chars per request"].quantile([0.1, 0.5, 0.9]))
Requests per minute (for current actions; could be higher for actions that do more steps of reasoning at once):
print(samples["requests per minute"].quantile([0.1, 0.5, 0.9]))
Hours of use given 100MM chars:
print(samples["hours of use"].quantile([0.1, 0.5, 0.9]))
def model():
num_users = ergo.uniform(1, 15, name="num users")
num_hours_per_user = ergo.uniform(1, 10, name="num hours per user")
avg_chars_per_request = ergo.tag(8192 - abs(ergo.normal_from_interval(0, 2000)), "avg chars per request")
avg_requests_per_minute = ergo.lognormal_from_interval(1, 15, name="requests per minute")
avg_chars_per_hour = ergo.tag(avg_requests_per_minute * 60 * avg_chars_per_request, "avg chars per hour")
total_chars = num_users * num_hours_per_user * avg_chars_per_hour
total_chars_100mm = total_chars / 100_000_000
total_cost = 2000 + max((total_chars_100mm - 1) * 3000, 0)
ergo.tag(total_cost, "total cost")
samples = ergo.run(model, num_samples=5000)
samples
print(samples["total cost"].quantile([0.1, 0.5, 0.9]) * 12)
print(samples["num users"].quantile([0.1, 0.5, 0.9]))
print(samples["num hours per user"].quantile([0.1, 0.5, 0.9]))