提问者:小点点

顶点AI504批处理作业中的错误-如何修复/故障排除


我们有一个顶点AI模型,需要相对较长的时间来返回预测。

当使用一个实例访问模型endpoint时,工作正常。但是大小的批处理作业说1000个实例最终会出现大约150 504个错误(上游请求超时)。(我们实际上需要发送批量65K但我正在对1000进行故障排除)。

我尝试增加副本的数量,假设交给模型的实例数为(1000/#副本),但情况似乎并非如此。

然后我读到默认批处理大小为64,因此尝试从创建批处理作业的python代码中将批处理大小减小到4:

model_parameters=batch_size=4

def run_batch_prediction_job(vertex_config):

    aiplatform.init(
        project=vertex_config.vertex_project, location=vertex_config.location
    )

    model = aiplatform.Model(vertex_config.model_resource_name)

    model_params = dict(batch_size=4)
    batch_params = dict(
        job_display_name=vertex_config.job_display_name,
        gcs_source=vertex_config.gcs_source,
        gcs_destination_prefix=vertex_config.gcs_destination,
        machine_type=vertex_config.machine_type,
        accelerator_count=vertex_config.accelerator_count,
        accelerator_type=vertex_config.accelerator_type,
        starting_replica_count=replica_count,
        max_replica_count=replica_count,
        sync=vertex_config.sync,
        model_parameters=model_params
    )

    batch_prediction_job = model.batch_predict(**batch_params)

    batch_prediction_job.wait()

    return batch_prediction_job

我还尝试将机器类型增加到n1-高-cpu-16,这有所帮助,但我不确定我是否了解如何将批次发送到副本?

有没有其他方法可以减少发送到模型的实例数?或者有没有办法增加超时时间?有没有日志输出我可以用来帮助解决这个问题?谢谢


共1个答案

匿名用户

回答您上面的后续问题。

>

  • 是单个实例请求的超时时间还是批处理请求的超时时间。另外,是以秒为单位吗?

    这是批量作业创建请求的超时时间。

    timeout以秒为单位,根据create_batch_prediction_job()timeout是指rpc timeout。如果我们跟踪代码,我们将最终到达这里,并最终到达gapic,其中timeout被正确描述。

    timeout (float): The amount of time in seconds to wait for the RPC
                 to complete. Note that if ``retry`` is used, this timeout
                 applies to each individual attempt and the overall time it
                 takes for this method to complete may be longer. If
                 unspecified, the the default timeout in the client
                 configuration is used. If ``None``, then the RPC method will
                 not time out.
    

    我的建议是坚持使用任何对你的预测模型有用的东西。如果添加timeout会改善你的模型,不妨在它的基础上与你使用更高规格机器的初始解决方案一起构建。你也可以尝试使用内存更高的机器,比如n1-hymem-*系列。