7月AI技术决策复盘——从大模型选型到推理服务架构的十次关键取舍一、决策复盘的价值——AI架构师的核心能力是技术取舍AI系统架构设计不同于传统软件架构它的不确定性更高、技术迭代更快、成本约束更严格。一个AI技术决策不仅影响系统性能还直接关联推理成本、模型效果和工程复杂度。7月份在多个AI项目中做了十余次技术决策我筛选出10个最具代表性的按决策类型分为模型层、服务层和工程层三类逐一复盘决策逻辑、实施效果和后续优化方向。模型层决策的特点是效果与成本的平衡点难以一次性找准需要在线上的真实流量中持续验证。服务层决策的特点是吞吐量和延迟的约束往往相互矛盾需要在架构设计中预留调整空间。工程层决策的特点是数据质量和模型治理容易被低估但长期影响模型迭代效率。这三类决策构成AI系统建设的完整决策链。二、模型层决策复盘——效果、成本、延迟的三角约束决策一大模型选型Qwen2.5还是DeepSeek-V37月初一个新项目需要选择基础大模型在Qwen2.5-72B和DeepSeek-V3之间评估。Qwen2.5的中文理解、工具调用和结构化输出更稳定DeepSeek-V3的推理成本和英文能力更优。项目场景是中文本地业务需要频繁调用工具函数最终选择Qwen2.5-72B-Instruct。反思这个决策符合场景需求但实际运行后发现72B模型的推理延迟在高峰期成为瓶颈8月计划引入Qwen2.5-32B做流量分层。决策二推理框架选vLLM还是TGI7月中旬部署推理服务时在vLLM和Text Generation Inference之间选择。vLLM的PagedAttention内存管理更优连续批处理效率高社区活跃度也更高。TGI对HuggingFace模型的兼容性更好配置更简单。最终选择vLLM原因是团队需要更精细的GPU内存控制和更高的并发吞吐。反思vLLM的部署复杂度高于预期CUDA版本兼容性问题导致环境搭建花费了额外时间需要在内部沉淀标准化部署脚本。决策三向量模型用BGE-large还是GTE-Qwen27月下旬做RAG系统优化时评估向量模型的召回效果。BGE-large-zh-v1.5的中文语义理解成熟稳定GTE-Qwen2-Instruct的指令跟随能力更强可以针对query做定向优化。最终选择GTE-Qwen2因为RAG场景的召回质量直接决定生成效果模型能力优于部署成本。反思GTE-Qwen2的向量维度是1536比BGE-large的1024更高存储成本上升约50%需要在8月评估向量压缩方案。/** * 大模型推理服务的基础封装 * 统一处理超时、重试和降级逻辑 */ public class LLMInferenceService { private final String endpoint; private final int maxRetries; private final long timeoutMs; public LLMInferenceService(String endpoint, int maxRetries, long timeoutMs) { this.endpoint endpoint; this.maxRetries maxRetries; this.timeoutMs timeoutMs; } /** * 执行推理请求含重试和熔断保护 */ public CompletionResponse complete(CompletionRequest request) { int attempt 0; Exception lastException null; while (attempt maxRetries) { try { return doComplete(request, timeoutMs); } catch (TimeoutException e) { // 超时直接抛出异常不重试 throw new LLMServiceException(推理超时请稍后重试, e); } catch (Exception e) { lastException e; attempt; if (attempt maxRetries) { backoff(attempt); } } } // 重试耗尽触发降级策略 return fallbackComplete(request); } private void backoff(int attempt) { try { Thread.sleep(100L * (1L Math.min(attempt, 6))); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } } }三、服务层决策复盘——吞吐、延迟、成本的动态平衡决策四推理服务架构单实例多模型还是单模型独立部署7月做推理服务规划时讨论GPU资源的分配策略。单实例多模型可以提升GPU利用率但模型之间会竞争显存导致批处理效率下降。单模型独立部署资源隔离更好但GPU利用率可能不足。最终选择单模型独立部署原因是不同模型的流量峰值时段不同独立部署便于做弹性伸缩。反思这个决策在成本可控的前提下保证了服务稳定性但小流量模型的GPU利用率确实偏低9月计划引入MPS做显存分时复用。决策五KV Cache的存储策略内存还是Redis7月中旬优化推理延迟时评估KV Cache的存储方案。vLLM支持将KV Cache存储在GPU内存中命中时可以避免重复计算。但长对话场景下KV Cache占用显存较大影响并发能力。最终设计为短对话2K tokens的KV Cache驻留GPU内存长对话的KV Cache写入Redis通过异步加载减少影响。反思Redis存储KV Cache的序列化开销比预期高需要评估使用Arrow格式做二进制序列化。决策六批处理策略动态批还是固定批7月下旬调整推理服务的批处理参数在动态批处理continuous batching和固定批处理之间做精细调优。vLLM的continuous batching可以在token级别动态调度请求理论吞吐更高。但实际测试发现当批次内请求的输出长度差异较大时padding浪费和内存碎片问题依然存在。最终选择continuous batching但增加了max_num_seqs和max_num_batched_tokens的约束避免极端场景下的内存溢出。反思批处理参数的调优需要结合真实流量分布建议每月基于线上数据做一次参数重评估。四、工程层决策复盘——数据质量和模型治理决定迭代上限决策七训练数据的质量控制标准。7月初做一个垂直领域模型微调时在数据质量上做了严格定义去重率5%标注一致性92%覆盖度评估基于业务query的分布采样。这个标准在执行中遇到了阻力——高质量数据获取成本高、周期长。最终的折中方案是先用中等质量数据做baseline再针对性补充高质量数据。反思这个策略是正确的但数据质量评估的自动化程度不够8月需要建设数据质量自动评估pipeline。决策八模型评估体系的设计。7月搭建模型评估体系时在自动评估和人工评估之间做了分层设计自动评估覆盖准确率、召回率、BLEU、ROUGE等量化指标人工评估覆盖语义相关性、事实准确性、表达自然度等主观维度。评估集按场景拆分每个场景至少200条标注数据。反思自动评估指标和人工评估的相关度需要持续验证计划8月引入LLM-as-Judge做辅助评估减少人工标注成本。决策九模型版本的发布策略。7月下旬一个模型版本上线时设计了灰度发布流程先对1%流量做A/B测试观察3天核心指标无回退再扩大到10%、50%、100%。这个流程在第一次执行时发现了基准版本在新场景下的效果退化问题及时中断了发布。反思灰度发布的观察周期需要结合业务节奏动态调整低频场景需要更长的观察窗口才能发现效果差异。决策十推理成本的监控和告警。7月搭建成本监控体系核心指标是每千次推理的GPU耗时和平均每token的显存占用。这两个指标可以按模型、按服务、按时间段拆分帮助定位成本异常。告警策略设置为单模型单实例的GPU利用率连续30分钟30%触发低利用率告警单次推理耗时超过P99阈值2倍触发延迟告警。反思成本监控的细化程度还可以提升计划增加每万次请求的成本指标按业务线拆分成本归因。五、复盘的总结合——AI架构决策的核心矛盾是确定性和不确定性的博弈10个AI技术决策复盘下来三点核心认知第一模型层决策不能只看benchmark分数要在自己的业务数据集上做端到端评估公开榜单的成绩不等于实际场景的效果。第二服务层决策的本质是在吞吐、延迟、成本三角约束中找动态平衡点没有一成不变的最优配置只有最适合当前流量特征的配置。第三工程层决策的长期价值被严重低估数据质量、评估体系、版本管理这些基础设施直接决定模型迭代的速度上限。AI技术决策的不确定性来自于模型能力的快速演进和业务需求的持续变化。应对不确定性的方法不是追求一步到位而是建立决策复盘机制让每一次决策都成为下一次决策的先验知识。记录决策背景、可选方案、选择理由和验证结果比决策本身更重要。/** * AI决策记录的最小元数据定义 * 每次技术决策都应产出一条记录 */ public class AIDecisionRecord { private String decisionId; // 决策唯一标识 private String context; // 决策背景 private ListString options; // 可选方案 private String chosenOption; // 最终选择 private String rationale; // 选择理由 private String validateMetric; // 验证指标 private LocalDate reviewDate; // 复盘日期 /** * 构建决策记录确保关键信息不缺失 */ public static AIDecisionRecord create(String context, ListString options, String chosenOption, String rationale) { if (options null || options.size() 2) { throw new IllegalArgumentException(决策方案不得少于2个); } if (!options.contains(chosenOption)) { throw new IllegalArgumentException(最终选择必须在可选方案中); } AIDecisionRecord record new AIDecisionRecord(); record.decisionId DEC- System.currentTimeMillis(); record.context context; record.options new ArrayList(options); record.chosenOption chosenOption; record.rationale rationale; record.reviewDate LocalDate.now().plusMonths(1); return record; } }资料说明本文中的协议、版本、性能、成本和行业趋势应以可核验的一手资料为准。未标注统计口径的比例、时间表和预测仅作工程讨论不应视为行业事实。可参考 0731 资料来源索引并在发布前将具体来源贴到对应断言之后。