scaleway: add free beta

This commit is contained in:
Jun Siang Cheah committed 2024-12-22 10:31:52 +00:00
1 parent 9ae5ca6670
commit ab86598868
4 files changed
+105 -4

No files matched your search

+1
View File
@@ -37,6 +37,7 @@ jobs:
GOOGLE_APPLICATION_CREDENTIALS: ${{ steps.auth.outputs.credentials_file_path }}
LAMBDA_API_KEY: ${{ secrets.LAMBDA_API_KEY }}
MISTRAL_API_KEY: ${{ secrets.MISTRAL_API_KEY }}
SCALEWAY_API_KEY: ${{ secrets.SCALEWAY_API_KEY }}
run: |
python -u src/pull_available_models.py
- name: Remove credentials
+9 -3
View File
@@ -41,7 +41,7 @@ This lists various services that provide free access or credits towards API-base
<tr><td>Mixtral 8x7B</td><td>14,400 requests/day<br>5,000 tokens/minute</td></tr>
<tr><td>Whisper Large v3</td><td>7,200 audio-seconds/minute<br>2,000 requests/day</td></tr>
<tr><td>Whisper Large v3 Turbo</td><td>7,200 audio-seconds/minute<br>2,000 requests/day</td></tr>
<tr><td rowspan="21"><a href="https://openrouter.ai" target="_blank">OpenRouter</a></td><td rowspan="21">20 requests/minute<br>200 requests/day</td><td>Gemini 2.0 Flash Experimental</td><td></td></tr>
<tr><td rowspan="20"><a href="https://openrouter.ai" target="_blank">OpenRouter</a></td><td rowspan="20">20 requests/minute<br>200 requests/day</td><td>Gemini 2.0 Flash Experimental</td><td></td></tr>
<tr><td>Gemini Experimental 1114</td><td></td></tr>
<tr><td>Gemini Experimental 1206</td><td></td></tr>
<tr><td>Gemma 2 9B Instruct</td><td></td></tr>
@@ -61,7 +61,6 @@ This lists various services that provide free access or credits towards API-base
<tr><td>Qwen 2 7B Instruct</td><td></td></tr>
<tr><td>Toppy M 7B</td><td></td></tr>
<tr><td>Zephyr 7B Beta</td><td></td></tr>
<tr><td>google/gemini-2.0-flash-thinking-exp:free</td><td></td></tr>
<tr>
<td rowspan="11"><a href="https://aistudio.google.com" target="_blank">Google AI Studio</a></td>
<td rowspan="11">Data is used for training (when used outside of the UK/CH/EEA/EU).</td>
@@ -178,6 +177,13 @@ This lists various services that provide free access or credits towards API-base
<tr><td>Mistral Nemo 2407</td><td>12 requests/minute</td></tr>
<tr><td>Mixtral 8x22B Instruct</td><td>12 requests/minute</td></tr>
<tr><td>Mixtral 8x7B Instruct</td><td>12 requests/minute</td></tr>
<tr><td rowspan="7"><a href="https://console.scaleway.com/generative-api/models" target="_blank">Scaleway Generative APIs (Free Beta)</a></td><td rowspan="7"></td><td>BGE-Multilingual-Gemma2</td><td>600 requests/minute<br>1,000,000 tokens/minute</td></tr>
<tr><td>Llama 3.1 70B Instruct</td><td>300 requests/minute<br>100,000 tokens/minute</td></tr>
<tr><td>Llama 3.1 8B Instruct</td><td>300 requests/minute<br>100,000 tokens/minute</td></tr>
<tr><td>Mistral Nemo 2407</td><td>300 requests/minute<br>100,000 tokens/minute</td></tr>
<tr><td>Pixtral 12B (2409)</td><td>300 requests/minute<br>100,000 tokens/minute</td></tr>
<tr><td>Qwen2.5 Coder 32B Instruct</td><td></td></tr>
<tr><td>sentence-t5-xxl</td><td>600 requests/minute<br>1,000,000 tokens/minute</td></tr>
<tr><td rowspan="41"><a href="https://developers.cloudflare.com/workers-ai" target="_blank">Cloudflare Workers AI</a></td><td rowspan="41"><a href="https://developers.cloudflare.com/workers-ai/platform/pricing/#free-allocation">10,000 tokens/day</a></td><td>Deepseek Coder 6.7B Base (AWQ)</td><td></td></tr>
<tr><td>Deepseek Coder 6.7B Instruct (AWQ)</td><td></td></tr>
<tr><td>Deepseek Math 7B Instruct</td><td></td></tr>
@@ -321,6 +327,7 @@ This lists various services that provide free access or credits towards API-base
<tr><td>Llama 3.1 405B Base</td></tr>
<tr><td>Llama 3.1 405B Base (FP8)</td></tr>
<tr><td>Llama 3.1 405B Instruct</td></tr>
<tr><td>Llama 3.1 405B Instruct Virtuals</td></tr>
<tr><td>Llama 3.1 70B Instruct</td></tr>
<tr><td>Llama 3.1 8B Instruct</td></tr>
<tr><td>Llama 3.2 3B Instruct</td></tr>
@@ -331,7 +338,6 @@ This lists various services that provide free access or credits towards API-base
<tr><td>Qwen2-VL 7B Instruct</td></tr>
<tr><td>Qwen2.5 72B Instruct</td></tr>
<tr><td>Qwen2.5 Coder 32B Instruct</td></tr>
<tr><td>meta-llama/meta-llama-3.1-405b-instruct-virtuals</td></tr>
<tr>
<td><a href="https://studio.ai21.com/">AI21</a></td>
<td>$10 for 3 months</td>
+94 -1
View File
@@ -3,6 +3,7 @@
from collections import defaultdict
import logging
import json
from bs4 import BeautifulSoup
import requests
import os
from dotenv import load_dotenv
@@ -159,6 +160,13 @@ MODEL_TO_NAME_MAPPING = {
"llama-3.3-70b-specdec": "Llama 3.3 70B (Speculative Decoding)",
"@cf/meta/llama-3.3-70b-instruct-fp8-fast": "Llama 3.3 70B Instruct (FP8)",
"google/gemini-2.0-flash-exp:free": "Gemini 2.0 Flash Experimental",
"qwen2.5-coder-32b-instruct": "Qwen2.5 Coder 32B Instruct",
"bge-multilingual-gemma2": "BGE-Multilingual-Gemma2",
"pixtral-12b-2409": "Pixtral 12B (2409)",
"google/gemini-2.0-flash-thinking-exp:free": "Gemini 2.0 Flash Thinking Experimental",
"sentence-t5-xxl": "sentence-t5-xxl",
"meta-llama/meta-llama-3.1-405b-instruct-virtuals": "Llama 3.1 405B Instruct Virtuals",
"llama-3.1-8b-instruct": "Llama 3.1 8B Instruct",
}
@@ -184,6 +192,7 @@ OPENROUTER_IGNORED_MODELS = {
"google/gemini-exp-1114:free"
"google/gemini-exp-1206:free"
"google/gemini-2.0-flash-exp:free",
"google/gemini-2.0-flash-thinking-exp:free"
} # Ignore gemini experimental free models because rate limits mean they are unusable.
@@ -293,7 +302,7 @@ def fetch_openrouter_models(logger):
continue
if ":free" not in model["id"]:
continue
if model["id"] in OPENROUTER_IGNORED_MODELS:
if model["id"].lower() in OPENROUTER_IGNORED_MODELS:
logger.debug(f"Ignoring model {model['id']}")
continue
ret_models.append(
@@ -637,6 +646,77 @@ ONLY OUTPUT JSON!""",
return ret_models
def fetch_scaleway_models(logger):
logger.info("Fetching Scaleway models...")
r = requests.get(
"https://api.scaleway.ai/v1/models",
headers={"Authorization": f"Bearer {os.environ['SCALEWAY_API_KEY']}"},
)
r.raise_for_status()
models = r.json()["data"]
logger.info(f"Fetched {len(models)} models from Scaleway")
ret_models = []
for model in models:
ret_models.append(
{
"id": model["id"],
"name": get_model_name(model["id"]),
}
)
ret_models = sorted(ret_models, key=lambda x: x["name"])
logger.info("Fetching Scaleway rate limits")
r = requests.get(
"https://www.scaleway.com/en/docs/ai-data/generative-apis/reference-content/rate-limits/"
)
r.raise_for_status()
# Extract <main> content
soup = BeautifulSoup(r.text, "html.parser")
body = str(soup.find("main"))
prompt = f"""
Here is the web page to extract data from:
```html
{body}
```
"""
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
logger.info("Extracting model rate limits from the provided web page...")
chat_response = client.chat.complete(
model="mistral-large-latest",
messages=[
{
"role": "system",
"content": """Extract the model rate limits as only integers from the provided web page into JSON of the following format:
```json
{
"model name here": {
"requests/minute": 10,
"tokens/minute": 100
}
}
```
ONLY OUTPUT JSON!""",
},
{
"role": "user",
"content": prompt,
},
],
response_format={
"type": "json_object",
},
temperature=0,
)
logger.info(chat_response.choices[0].message.content)
extracted_data = json.loads(chat_response.choices[0].message.content)
for model in extracted_data:
for m in ret_models:
if m["id"] == model:
m["limits"] = extracted_data[model]
break
return ret_models
def get_human_limits(model):
if "limits" not in model:
return ""
@@ -655,6 +735,7 @@ def main():
hyperbolic_logger = create_logger("Hyperbolic")
# lambda_logger = create_logger("Lambda Labs")
samba_logger = create_logger("SambaNova")
scaleway_logger = create_logger("Scaleway")
gemini_models = fetch_gemini_limits(google_ai_studio_logger)
openrouter_models = fetch_openrouter_models(openrouter_logger)
@@ -664,6 +745,7 @@ def main():
github_models = fetch_github_models(github_logger)
# lambda_models = fetch_lambda_models(lambda_logger)
samba_models = fetch_samba_models(samba_logger)
scaleway_models = fetch_scaleway_models(scaleway_logger)
groq_models = fetch_groq_models(groq_logger)
table = """<table>
@@ -824,6 +906,17 @@ def main():
table += f"<td>{get_human_limits(model)}</td>"
table += "</tr>\n"
for idx, model in enumerate(scaleway_models):
table += "<tr>"
if idx == 0:
table += '<td rowspan="' + str(len(scaleway_models)) + '">'
table += '<a href="https://console.scaleway.com/generative-api/models" target="_blank">Scaleway Generative APIs (Free Beta)</a>'
table += "</td>"
table += '<td rowspan="' + str(len(scaleway_models)) + '"></td>'
table += f"<td>{model['name']}</td>"
table += f"<td>{get_human_limits(model)}</td>"
table += "</tr>\n"
for idx, model in enumerate(cloudflare_models):
table += "<tr>"
if idx == 0:
+1
View File
@@ -2,3 +2,4 @@ requests
python-dotenv
google-cloud-quotas
mistralai
beautifulsoup4