ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

货拉拉营销广告大模型实战:从文案生成到投放优化

货拉拉营销广告大模型实战:从文案生成到投放优化 货拉拉做营销广告绕不开一个核心问题每天要产出成千上万条面向司机师傅、货主、搬家用户、企业客户的文案、图片素材和投放策略纯靠人工去写、去定、去调效率跟不上投放节奏成本也兜不住。我们内部落地了一套以大模型为主干的营销广告内容生产与投放决策系统覆盖拉新、促活、转化、留存全链路从文案自动生成、素材批量产出到人群智能圈选和投放策略优化基本都过了一遍大模型。这篇文章就把这套方案的场景拆解、选型逻辑、实现细节和踩过的坑一次讲清楚正在做营销智能化、或者准备把大模型往业务里落地的同学应该能少走不少弯路。1. 货拉拉营销广告场景的业务拆解与需求分析1.1 四个核心场景文案、素材、人群、策略先梳理货拉拉营销广告的实际业务盘子。货拉拉的营销分成几个大的模块司机端、货主端、搬家C端、企业版。司机端要拉新司机入驻、促活老司机跑单、配合完单奖励做通知货主端要看用户发单频次用优惠券和满减活动刺激下单搬家C端是典型的高客单价低频次场景用户做一次决策周期长需要信任感和价格锚点企业版则是多角色决策、合同制客户营销链路更重。这些场景落到大模型能掺和进来的环节我归纳为四类。第一类是高转化文案生成包括投放平台的广告标题、push通知文案、弹窗文案、短信文案、活动页banner文案。第二类是图片素材和视频脚本生成尤其是活动页KV、投放素材图、15秒短视频脚本过去一张主视觉要设计做三天大模型能把初稿时间压缩到分钟级。第三类是人群圈选借助语义模型理解用户画像和行为序列把原本需要数据分析师写SQL圈选的人群包改成用自然语言描述模型自动映射到标签体系。第四类是投放策略优化基于大模型对历史投产数据的理解自动生成预算分配建议、渠道组合方案、出价调整策略。这四类不是相互独立的。文案生成完要配素材素材要根据人群偏好变化人群圈选结果又决定投放策略的方向。我们最后做成的是一个串联链路而不是四个孤立的API。这个设计决策在后面展开。1.2 传统模板和规则引擎为什么顶不住在没上大模型之前货拉拉的营销内容生产依赖两类工具一类是运营同学手写文案另一类是内部搭的模板系统。模板系统的逻辑是“前缀活动信息后缀”比如“【$城市$】$福利$新老用户均可领取快来参与”。这种方案的问题很明显文案千篇一律用户对模板话术的免疫越来越强点击率逐年下滑。更麻烦的是模板的组合数量看着多实际上同一时间每个活动只有少数几个可用组合运营同学改起来仍然依赖人工。规则引擎在人群圈选上也有天花板。标签体系经过多年建设后维度达到数百个规则之间经常相互冲突比如一个用户同时命中“高活跃货主”和“价格敏感型用户”两个人群包到底该进哪个规则表里没有答案。数据分析师写SQL圈选一个人群包要半天做完以后对策略的反馈又是滞后的整个迭代周期按周算。大模型的价值不在于大幅超越人类文案大师的创意水平而在于把“日产百条”的内容生产量稳定在“日产万条”的规模同时把人群圈选的迭代周期从周压缩到小时。想清楚这一点后面所有技术选型都有了解释。2. 技术选型与整体方案设计2.1 模型选型开源底座微调还是API直调选型是团队吵得最凶的环节。公版API大模型能力确实强尤其是长文本理解和跨领域创意生成直接调用省去很多训练成本。但货拉拉的营销场景有几道坎儿一是数据隐私用户画像、交易数据不能出内网二是业务术语货运行业的“抢单”“拼车”“多联单”“候鸟车队”这些词通用模型理解得很浅三是定制化要求文案要和品牌调性对齐不能一股“通用味”。综合判断我们最终选择的是“开源底座私有化部署领域微调”的主路线API模型只用来做并行候选集的补充。底座模型当时考虑过几条线最终选择了中文能力扎实、社区生态丰富的开源系模型核心原因是可控和可改。营销文案场景不需要模型具备非常深的推理能力参数量在7B到14B之间就够用这个规模在推理成本和生成质量之间比较平衡。后续基于这套底座做了LoRA微调把货运行业的知识和营销话术注入进去。选型过程里有一个容易被忽略的点除了看模型跑分还要看模型的商用协议、社区活跃度、周边的推理部署工具链是否成熟以及团队是否熟悉其训练框架。跑分最高的模型如果团队没人用过出了问题排查成本极高这不叫选型叫赌博。2.2 生成链路与系统架构设计系统整体是一套内容与策略中台底层的服务划分为四层。最底下是基础设施层包含GPU推理集群和向量数据库。推理集群用vLLM作为推理引擎支撑多模型并发向量数据库存的是历史高转化文案、品牌语料和活动规则的embedding用来做检索增强。中间是模型服务层负责文案生成、素材生成、人群语义圈选和策略推荐几个核心服务。上层是业务编排层做审核、去重、渠道适配、级联兜底。最顶层是面向运营同学的作业台提供批量生成、预览修改、一键发布的能力。为什么单独搞一个业务编排层而不是所有逻辑都在模型服务层处理因为在真实业务里大模型的输出永远不能直接发出去要过三道关合规审核关、品牌一致性关、渠道适配关。后面会具体讲这三道关卡的内容。说到底大模型在这个系统里是“发动机”但整个车辆还需要变速箱和刹车编排层干的就是这个活。链路设计上做了一条主流程运营发起需求描述活动目标、目标人群、优惠力度和投放渠道系统先通过RAG拉取相关的高转化历史文案作为参照再构造prompt交给大模型生成候选集随后经过规则审核、模型打分和人工抽检后输出最终可用内容同时把本次生成好的内容回流进向量库。整套链路跑下来单次内容生产的端到端耗时控制在30秒左右。2.3 提示词工程与上下文工程的配合很多人把提示词工程理解为写几个漂亮的prompt模板实际完全不是这样。我们在实践里把提示词工程拆成两部分一部分是面向大模型的指令设计另一部分是基于检索的上下文管理这两者合起来才是完整的上下文工程。在指令设计上最开始踩了个坑prompt越详细模型反而越容易在一些次要约束上“过度发挥”。比如强调“要有创意”它就给你来一堆押韵和网络热词强调“贴合司机师傅的口味”它就满屏“兄弟”“老铁”。后来我们把prompt的结构固定下来分成角色定义、任务描述、业务约束、示例参考、输出格式五段每一段只做一件事业务约束用编号列举示例参考只给2到3个正例。测试下来结构化的prompt比长篇大论的描述在业务指标上高出大概两成。上下文工程解决的是检索增强的问题。我们把历史高转化文案、活动规则、品牌禁忌词库、当季投放策略文档都做了向量化在生成时根据当前活动的语义检索出最相关的内容拼进上下文。这里的关键点是控制上下文总长度7B模型的上下文窗口虽然有32K营销场景根本用不完上下文太长反而会稀释模型对核心指令的注意力。我们实践下来单个生成任务的上下文控制在1.5K到2K token这个区间指令、示例、检索内容的比例大概在1比1比1效果最稳。3. 核心环节实现从文案到素材再到定向3.1 高转化文案的生成链路实现细节文案生成是整个系统最先落地、也是价值最直观的模块。实现的流程是接收活动参数以后先做一次渠道适配判断。同一个活动在App弹窗、短信、push和抖音投放上的文案风格约束完全不一样推送渠道字数严格受限投放渠道要特别注意标题党风险短信渠道还要考虑运营商拦截策略。这个判断规则不是让模型来做而是编排层先用代码判断好再传不同的约束参数给模型。prompt构造上面已经说过举一个实际例子。拉新活动“新司机注册完成首单奖50元现金”的prompt里任务描述要求输出一句20字以内的push文案和一句15字以内的短标题业务约束是必须包含“首单”“现金”两个关键词不得出现“大师”“稳赚”等诱导性词汇不得使用“最高”“第一”等绝对化用语示例参考给一条往期点击率较高的司机端文案格式严格对齐输出要求。模型生成后的候选集会经过一次去重和相似度过滤避免十条候选都是同一个句式。落地过程中特别注意了一个问题文案的情感倾向调节。司机师傅群体和货主群体的内容偏好差异很大前者更吃“多劳多得”“稳定接单”这类表达后者更在意“便宜”“快”“省心”。我们没有在单个模型里硬调这两个方向而是通过上下文工程在生成时注入不同的人群偏好语料让同一个底座模型在不同prompt上下文下产出不同风格的文案比训练两个独立模型更容易维护。3.2 图片素材与视频脚本的生成文案上线以后运营同学反馈最多的是“文案有了图呢”于是第二期我们做了素材生成。图片素材分两个方向一类是模板化素材比如优惠券弹窗背景图、banner底图这些图不需要复杂的创意主要是把文案和品牌元素拼起来另一类是主视觉KV传统做法是设计师出草稿讨论几轮以后定稿我们试着把大模型生成的创意描述直接接到AI绘图流程上。实践中发现纯靠AI绘图工具直接出图很难可控经常出现品牌元素变形、文字乱码、风格不统一的问题。后来改成“大模型出画面描述AI绘图出草图设计师精修”的半自动流程大模型根据活动主题生成构图描述包括主体、场景、色调、光影、画面文字AI绘图工具根据描述生成3到5版草稿设计师在草稿基础上选择一版精修。实测单张主视觉的制作时间从原来的8小时压缩到3小时以内设计师从零开始画变成了改图产能释放非常明显。视频脚本生成同样走了这套思路。15秒短视频拆成逐帧分镜描述大模型生成旁白、画面建议、字幕内容和拍摄提示然后由视频制作同学按照分镜脚本进行实拍或剪辑。这里要提醒一句大模型生成旁白没问题但让它直接生成的完整短视频目前在可控性和素材合规性上还不适合量产分镜脚本这个中间产物是目前最实用的折中方案。3.3 智能人群圈选与投放策略人群圈选是技术含量最高、推进难度也最大的模块。我们建设了一套基于语义标签的人群圈选服务运营同学在界面上用自然语言输入比如“最近30天发单超过5次但没有使用过搬家服务的同城货运货主”系统先把自然语言解析成标签组合再自动映射到底层用户画像系统生成人群包整个过程从过去的半天缩短到十分钟以内。实现上依赖两点一是标签体系本身要完整语义映射才有对象我们接入了内部原有的数百个用户标签二是需要一个语义理解能力较强的解析层这个地方我们用大模型完成自然语言到标签表达式的转换。具体做法是把标签目录、标签释义、标签之间的关系作为上下文注入prompt让模型输出结构化的标签表达式再用规则引擎做一次合法性校验防止模型生成了不存在的标签。投放策略优化这个模块上线比较晚做的是预算分配建议。模型输入是各渠道的历史消耗、转化成本、ROI数据和当前活动目标输出是渠道预算占比建议。这个模块我们没有完全交给大模型决定采取的是“大模型出建议、人工确认后生效”的半自动模式因为预算分配涉及真金白银模型的因素分析逻辑再完善也需要业务负责人兜底。用一个生活化的比喻大模型是军师可以出谋划策但最终拍板的还是主帅。4. 模型微调实战数据、参数与评估4.1 微调数据从哪来三个来源与构造方法微调是整个项目里最耗时、也最决定成败的环节。很多团队上来就问训练参数怎么设其实如果数据质量不过关参数调得再花哨也没用。我们的微调数据来源有三个。第一是历史高转化文案的改写。把过去两年里点击率、转化率表现靠前的营销文案找出来每个文案配上对应的活动信息结构整理成“输入-期望输出”的样本对。这个过程要特别小心高转化文案里有一部分是因为当时的投放预算高不完全是文案本身好人工筛选时要剔除这类干扰样本。第二是人工撰写的高质量样例。我们组织了有十年经验的运营专家和资深文案每人基于真实的业务场景手写一批标准答案这批数据数量最少但质量最高相当于给模型注入“行业标杆”。第三是大模型辅助生成加人工校验。先用公版API大模型生成一批候选然后由人工修改、打分达标后进入训练集这个方式能在有限人力下把数据规模扩充起来。数据量方面我们最终微调用到的有效样本数是两万多条覆盖文案、素材描述、人群圈选表达式三类任务。一开始有人建议用十万条数据实测下来堆数量的边际效益很低当样本覆盖了核心场景后多出来的只是重复模式。每条训练数据都做了标签体系校验坏数据宁可扔掉也不让它进训练集。4.2 微调训练的关键细节与参数设置训练部分我们用的是LoRA方案没有做全参数微调。原因很务实全参数微调需要几十张卡LoRA只需要几张卡就能跑起来且底座模型的能力不容易被破坏。LoRA的秩我们设置为32通过alpha设为64学习率设置在2e-4左右训练轮数控制在2到3轮。这里有个容易踩的坑训练轮数过多模型在训练集上表现很好但生成内容的多样性断崖式下降同一个活动中所有文案长一个样。我们专门做过一轮测试把训练轮数从1加到53轮以后BLEU确实还在涨但人工评估的创意分开始下跌。后来固定用早停策略以验证集上的人工评估分为准而不是以loss为准。另外一个很关键的细节是混合训练。开始我们按任务分开训练一个文案模型、一个人群圈选模型发现两个模型在小样本任务上都不太稳定。后来改成混合训练把三类任务的数据合在一起做多任务微调。效果出乎意料地好人群圈选模型的准确率上升了文案模型的风格稳定性也变好了模型对任务的边界理解更清楚。个人经验是相关任务合并训练产生的正向迁移比单一任务训练的专注优势更明显。训练过程中的显存优化也要说一句。虽然LoRA已经比全参微调省显存但7B模型在batch size调大的时候还是容易OOM。我们用到了梯度累积、序列长度动态padding和混合精度训练实测下来训练显存可以压到单卡48G以内时间成本也能接受。4.3 效果评估体系不能只看ROUGE和BLEU评估体系建设是这段实践里最有体感的部分。纯看ROUGE、BLEU这种文本相似度指标在营销文案场景下基本没用。一个文案可能和参考文案完全不重合但用户就是喜欢点击率就是高另一个文案字字接近参考发出去就是没人点。文本相似度指标只能用来筛“病句级”的错误筛不出“用户是否愿意点”。我们的离线评估体系分三层。第一层是规则合规评估检查是否包含禁用词、是否包含必要活动信息、字数是否在渠道限制内、是否存在诱导性表述这一层在pipeline里用代码执行。第二层是模型偏好打分用一个小规模打分模型对生成文案从卖点突出度、行动引导强度、人群匹配度三个维度打分这个打分不追求绝对精确主要是做候选集排序把模型生成的10条候选筛掉明显的差选项。第三层是人工评估每周抽取一定比例的生成内容由运营团队的资深同事按统一评分卡打分。在线上评估环节我们做的不是整体流量A/B测试而是把每个活动的文案系统生成版本和人工版本做对照。刚开始上线时系统版点击率比人工版低10%左右经过两轮微调迭代后基本打平在部分促销场景下还能高出两到三个百分点。这个结论很重要大模型文案的目标不是碾压人工文案而是以更低成本达到和人工相近的效果这就已经具备上线价值了。5. 部署上线与成本调优5.1 推理部署方案与延迟优化部署层面我们选择的推理引擎是vLLM原因是它对并发和显存的管理比较成熟支持连续批处理和PagedAttention机制能在同样的GPU资源下服务更多并发请求。模型服务拆成预填充和解码两个阶段分别优化营销文案任务普遍是短输入长输出预填充阶段算力消耗相对小解码阶段是主要瓶颈这部分通过增大并发批次来提升吞吐。延迟方面运营同学在作业台上点一次“生成”如果等太久体验会很差。我们的优化目标是P95延迟小于5秒。实测下来7B模型在单张A10上开8并发单次生成10条短文案的时间在3秒左右符合预期。人群圈选表达式生成的输入稍长一些延迟在5到6秒也在可接受范围。对于素材生成这类非实时任务我们走的是异步队列不需要追求低延迟更看重吞吐和稳定性。另外部署时做了模型的热切换机制。新版本模型训练完成后先在小流量上灰度观察生成质量和稳定性确认没问题后再切到全量。灰度期间新旧模型并行部署流量按比例分配这套机制保证了两轮微调迭代过程中线上服务没有出现一次断档。很多团队忽略了这个工程细节模型训练得再好发布流程不顺畅也会拖累整体进度。5.2 成本控制蒸馏、缓存和兜底策略大模型落地的账必须算清楚。我们先算了一笔账假如每天白天的生成请求量在五万次左右单次生成平均消耗3000 token一天的token消耗在1.5亿左右如果纯靠GPU推理支撑按当时的资源价格一个月推理成本是笔不小的数目。控制成本有几个办法。第一是模型蒸馏。我们用大模型产出高质量样本去训练一个参数量更小的蒸馏模型专门负责离线批量生成和低延迟场景。实测下来小模型的文案质量能达到大模型的八成以上但推理成本不到原来的三分之一。第二是结果缓存。营销文案的请求有很强的复用性同一个活动的文案在多个渠道、多个时间点会重复生成类似的内容我们把历史生成的高质量结果按“活动类型人群偏好渠道”维度做缓存命中率能到两成以上这相当于直接省掉了对应的推理开销。第三是兜底降级策略。在线的低成本优先模式当小模型生成结果经过质量分过滤达标率过低时才升级到大模型重新生成大模型再生成的结果如果还不达标就交给人工处理。这一套组合拳打下来整体推理成本比全量跑大模型节省了七成左右。我的体会是不要在模型层面省成本要在一套完整的成本控制机制里面省成本单一手段能给到的空间始终有限。6. 踩坑合集与常见问题速查6.1 踩过的坑幻觉、风格失控和数据污染排第一的坑是模型幻觉。营销文案里的活动信息一旦出错就是事故级别的。比如把“首单奖50元”写成“首单奖100元”文案写得再漂亮都白搭。我们的对策是在prompt里把活动信息结构化传入再在生成后用代码解析出文案中的关键实体和活动参数做逐一比对不一致就重新生成。宁可损失一点生成速度也要把信息准确性兜住。第二个坑是风格失控。网上的开源语料里充斥着“震惊体”“标题党”和浮夸的网络热词模型微调后在不用prompt约束的情况下很容易跑偏。解决方式除了前面说的结构化prompt以外我们在微调数据里刻意加入了大量正常语气的文案样本用数据量压住模型的“网感”。这实际上是在和语料分布对抗只靠训练后干预是掰不回来的。第三个坑是数据污染。有一次我们发现有网络上的营销文案被当成正样本混进了高转化样本模型生成的东西开始出现过度夸张的表述。后来建立了样本来源打标机制人工撰写的、历史高转化库的、大模型生成人工校验的三类来源分开管理评估时按来源分层看效果出现质量问题时能快速定位是哪一类数据的问题。6.2 常用问题排查与方法参考最后整理一张问题速查表这几类问题是后续接手这套系统的同学大概率都会遇到的。问题现象可能原因排查与解决思路生成文案信息错误prompt约束不够、关键实体未结构化检查活动参数是否结构传入增加实体比对校验错误则触发重生成文案风格千篇一律训练轮数过多或prompt示例过少降低训练轮数增加示例多样性调高采样temperature内容审核不通过率高微调语料带入了网络不良表达检查样本来源清洗污染数据增加合规负样本人群圈选表达式语法错误标签映射语义不清晰或上下文不足完善标签释义在prompt中加入标签间关系描述增加校验规则推理延迟忽高忽低并发波动导致显存排队启用连续批处理设置动态并发上限离线任务与实时任务分池线上点击率低于人工版多轮迭代仍未对齐人群偏好做分人群效果分析针对高价值人群人工补充微调样本这套系统现在还在持续迭代大模型的版本更新很快我们的经验是不要追着模型版本跑要把精力放在场景数据沉淀和评测体系完善上。模型底座是引擎业务数据和评测标准才是方向盘。方向上把握好营销广告这个大模型应用场景能挖的潜力还很大尤其是后续结合用户实时行为数据做个性化文案生成以及在多模态素材方向上的进一步自动化都是值得继续投入的方向。
返回列表