酷澎
靠ML/AI等大数据应用做到全韩国99%订单于一天内送达的电商巨头,如何将生成式AI融入开发与营运流程?近期,酷澎揭露了自家开发LLM与多模态LLM的方法与挑战、如何将这些模型用来强化既有ML应用,以及投入新应用场景。
从传统ML/AI到生成式AI
酷澎自称无情的优化主义者(Ruthless Prioritization),数据人员遍布不同部门,使作业流程各个环节,都能利用数据分析技术来支持决策。在导入生成式AI之前,他们就已经应用AI/ML在搜寻、广告、目录整理与呈现、推荐、物流、定价、交通等领域。
其中,3种任务类别的ML模型占最大宗。首先是推荐系统模型,主要用于个人化和推荐介面,如电商、外送和娱乐应用程式中的首页、搜寻和广告。第二是内容理解模型,各产品团队会透过产品目录数据、用户生成内容、用户和商家数据等资料来源,让模型理解产品、客户和商家的特征,并用于后续改善购物体验。第三则是预测模型,也是酷澎打造超快速物流的关键推手。酷澎在韩国有超过100多座物流中心。预测建模在这些产品的定价、物流、配送方面扮演著关键角色。
甚至,为了管理大量ML专案,他们打造了一个ML平台,来标准化开发与作业流程、促成管理CI/CD,并控管运算资源支出。一年内,这个平台上执行了超过600个ML专案、10万个工作流程。
LLM问世后,酷澎更开始用LLM及多模态LLM的文字及图像理解能力,来强化既有AI/ML做法,上述类别的模型中。尤其,前两类模型原就是利用超大量图文资料进行推论,尤其适合用多模态LLM的图文理解能力来增强。
酷澎3大常见LLM应用
酷澎内部常用的三大类LLM应用,包括了图像与语言理解、大规模弱标签生成,以及分类与属性提取。
第一类图像与语言理解。酷澎从实验得知,利用多模态LLM同时根据图像和文字数据,来生成嵌入向量,准确度高於单独用用图片向量或是单独用文字向量的检索。他们会将多模态向量,汇入其他下游ML模型,用于广告资料检索、相似性搜寻、商品推荐等场景。
另外,他们也会直接用LLM将韩文产品标题翻成中文、提升购物流中的图像品质、摘要用户评论,以及为产品和卖家生成关键词。
第二类是大规模生成弱标注(Weak Labels)数据。准备ML模型训练数据时,人工标注数据是成本高昂且困难的任务。尤其,酷澎同时需要英文、韩文和繁体中文语料,更凸显了这个挑战。
于是,他们用LLM,生成大量文本内容的标注。酷澎经实验发现,这些标注用于弱监督式训练时,效果可媲美人工标注资料。打造新领域ML模型时,缺乏过往高品质标注资料时,这种做法尤其有帮助。
第三大类则是分类与属性提取。为产品分类和提取属性时,酷澎旧有做法是为每个商品类别部署一个单独的ML模型。这是因为,跨类别的分类模型,常常会对长尾商品产生准确度过低或杂讯过高的预测结果。随著酷澎商品品项与类别增加,团队也需要管理更多模型,造成了维运负担。
相对于传统ML模型,酷澎发现,LLM对产品标题、描述、评论、卖家信息等数据可以有更深入和准确的理解。他们不仅可以用单个LLM来支援分类系统,处理所有商品类别,甚至,还提升了不同分类的准确度。
酷澎LLM的开发周期与技术选择
酷澎将LLM对齐任务目标的方法,依照难度与时间成本排序,分为情境内学习(ICL,In Context Learning)、检索增强生成(RAG,Retrieval-augmented Generation)、监督式微调(SFT,Supervised Fine-tuning),以及持续预训练(CPT,Continuous Pre-training)。其中,ICL和SFT是最常用的做法。
需要SFT或CPT时,酷澎LLM从测试到应用分为三阶段。
第一阶段是小规模测试,决定模型种类、模型参数规模、提示词模板。准备数据时,酷澎利用Apache Zeppelin笔记本,来发派和管理Spark等大数据处理工具。测试模型及提示词模板作业,在GPU容器中的Jupyter笔记本进行。
第二阶段是实际训练,进行微调或预训练,并评估模型成效。酷澎最常使用DeepSpeed Zero作为训练框架,看重此框架快速完成训练设定的能力及对Hugging Face上大多数热门模型的支援度。
模型训练环境,酷澎选择Kubernetes分散式Training operator上的平行模型训练功能,PyTorchJob,并使用Polyaxon来管理更细致的ML训练生命周期。酷澎的LLM训练周期,与既有ML训练周期的步骤相同。
第三阶段则是投入应用,常见做法包括蒸馏与嵌入。前者是从训练好的LLM蒸馏出较小模型,用于即时推论。后者则是利用LLM生成嵌入向量,应用于其他ML模型中。
他们使用OpenAI推出来用GPU开发开发机器学习演算法的程式语言Triton,来从LLM提取出推论内容,用于蒸馏或嵌入。要打造同时利用CPU和GPU处理的推论管道(Inference Pipeline)时,使用Ray和vLLM。
酷澎主要选用中文、韩文及日文语言表现比较强的开源模型,包括Qwen、Llama 3、Orion、Polyglot、Orion、T5、BERT等,并根据不同应用场景,选择不同参数规模版本。翻译、标注生成、RAG用途的模型,选择100亿个参数以上版本;实体抽取(Entity extraction)及关键字生成,使用10亿到100亿个参数版本;生成嵌入向量等用途,则使用10亿以下版本。
如何因应硬体限制的挑战
导入生成式AI前,酷澎ML训练架构没有支援分散式训练,且部署架构完全使用CPU。这使他们大规模导入生成式AI后时,需要大量增添供应短缺且要价昂贵的GPU资源。
为了控管GPU支出及确保可用性,酷澎模型构建团队会定期进行基准测试,以评估不同GPU应用于不同模型的训练和推论时,各自的价格与性能比例。这样一来,就能更准确根据作业所需算力规模,来分配硬体资源。尤其,测试和应用参数规模较小的时LLM时,能放心使用性能较低的设备。
训练模型时,他们也采取跨区及混合云模式来调度硬体资源。这包括使用亚太及美国区域的云端GPU资源,以及地端A100/H100资源。不过,随之而来的挑战是确保基础架构(存储与网路)和开发者体验的一致性,目前他们仍未完全解决。
酷澎也持续尝试新技术,来提升生成式AI工程效率,并降低硬体需求。例如,他们尝试用vLLM推论框架,将许多推论作业的吞吐量提升了接近20倍。他们也尝试将模型参数卸载到CPU的技术,成功搭配低RAM数的GPU来微调LLM,有效纾缓高端GPU需求。