批处理是什么?把任务攒成一批集中处理
批处理(Batch Processing)是一种把大量的数据或任务收集起来,按批次集中地、自动地进行处理的方式,处理过程中不需要人工逐个地干预。与之相对的是实时处理或流处理:每来一条数据就立即处理一条。
它的由来
批处理的历史可以追溯到计算机的早期。在 20 世纪 50 到 60 年代,计算机非常昂贵,操作人员会把许多用户的程序和数据,通常记录在穿孔卡片上,收集成一批,依次输入计算机自动运行,以充分利用宝贵的计算机时间。用户提交任务之后,往往要等上几个小时甚至一天才能拿到结果。今天,批处理依然是数据处理中最基本、最常用的方式之一。
典型的应用
银行和金融:银行在每天营业结束后,集中处理当天的所有交易,进行账务结算、计算利息、生成对账单。数据仓库和数据分析:企业每天夜间把各个业务系统的数据抽取出来,进行清洗、转换,加载到数据仓库中,这个过程叫 ETL,然后生成各种业务报表,第二天一早管理人员就能看到前一天的经营数据。工资发放:每月集中计算所有员工的工资。日志分析:定期汇总分析网站的访问日志。大数据处理:Hadoop 的 MapReduce、Spark 等框架被广泛用于对海量数据进行批量处理。
优缺点
批处理的优点是效率高:集中处理可以充分地利用计算资源,减少频繁启动任务的开销;可以安排在夜间等系统空闲的时段运行,不影响白天的业务;适合处理海量的数据;处理流程稳定,便于管理和出错后重新运行。它的缺点是有延迟:数据要等到批次处理完成后才能得到结果,不适合需要即时响应的场景,比如信用卡的实时反欺诈、实时推荐。对于这类需求,需要使用 Flink、Kafka Streams 等流处理技术。如今,很多系统同时使用批处理和流处理,各取所长。
在机器学习和 AI 中
在机器学习中,“批处理”还有一层特定的含义:把多个样本组成一个批次(batch),一起送进模型进行计算。在训练时,每次用一个批次的数据计算梯度、更新参数;批次的大小是一个重要的超参数。GPU 擅长大规模的并行计算,一次处理一批数据比一个一个地处理效率高得多。在大模型推理服务中,把多个用户的请求组合成批次一起处理,能显著提高 GPU 的利用率,降低每个请求的成本,“连续批处理”等技术可以在请求不断到来和完成的过程中动态地组合批次。
此外,很多大模型服务商还提供“批处理接口”:用户把大量不需要立即得到结果的请求一次性提交,服务商在接下来的一段时间内,比如 24 小时内,完成处理,价格通常比实时调用便宜很多,适合大规模的数据标注、内容生成和评测等任务。