Vertex AI中Gemini-1.5-pro调用触发429配额耗尽,实际限额远低于文档标注的60RPM
Vertex AI中Gemini-1.5-pro调用触发429配额耗尽,实际限额远低于文档标注的60RPM
遇到这种明明文档标注配额是60RPM,但发5个请求就被限流的情况,确实挺闹心的,我帮你梳理几个大概率的原因和解决方向:
1. 混淆了「每分钟请求数」和「并发请求数」
文档里的60RPM是每分钟允许的总请求量,但Vertex AI的Gemini模型还有一个容易被忽略的并发请求上限——也就是同一时间能处理的请求数。新开通的付费账号(哪怕有剩余免费额度),初始并发配额通常很低,可能只有2-5个。你一次性异步发5个请求,刚好触碰到了并发的天花板,直接触发429,这和每分钟总配额没关系。
你可以去配额控制台里仔细找找,有没有类似「在线预测并发请求数」或者「Gemini模型并发请求限制」的配额项,别只盯着每分钟请求数看。
2. 确认配额的区域和模型匹配
你代码里用的是us-central1区域,要确保在控制台里查看的是同一个区域的配额。另外,Gemini-1.5-pro的配额可能单独分类,别不小心看了其他模型(比如Gemini-1.0)的配额数据。
3. 新账号的初始配额限制
即使是付费账号,Google为了防止滥用,对新开通的Vertex AI服务会设置初始低配额。这种情况下,你需要主动提交配额提升申请:在配额控制台找到对应的配额项,点击「编辑配额」,说明你的业务场景和需要的配额数值,一般1-3个工作日就能得到回复。
临时解决方案:给异步请求加限流
如果暂时等不及配额提升,可以先在代码里加个并发限制,避免一次性发太多请求。比如用asyncio.Semaphore来控制并发数:
import vertexai from vertexai.preview.generative_models import GenerativeModel import asyncio PROJECT_ID = "MY_PROJECT" vertexai.init(project=PROJECT_ID, location="us-central1") async def _query_async(model: GenerativeModel, i: int) -> str: print(f"Sending request {i}") response = await model.generate_content_async("message") return response.text async def run_pipeline_async() -> str: model = GenerativeModel("gemini-1.5-pro-002") # 限制同时最多2个请求在处理 semaphore = asyncio.Semaphore(2) async def limited_query(i): async with semaphore: return await _query_async(model, i) query_jobs = asyncio.gather(*[limited_query(i) for i in range(5)]) query_responses = await query_jobs return query_responses result = asyncio.run(run_pipeline_async()) print(result)
这样把并发数降到2,应该就能避开429错误了,同时也能验证是不是并发配额的问题。
备注:内容来源于stack exchange,提问作者Harry Stuart
相关产品推荐
相关产品推荐

