ARTICLE DETAIL

资讯详情

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

AI工程化扫盲指南:从跑通到交付的四阶实战路径

AI工程化扫盲指南:从跑通到交付的四阶实战路径 1. 这不是“AI名词解释大全”而是一份技术人用得上的国庆扫盲地图“AI概念大全技术人的国庆7天扫盲指南”——看到这个标题我第一反应不是去翻教科书而是打开终端敲了两行命令git clone https://github.com/ai-lexicon/ai-glossary和make build-pdf。结果发现90%的所谓“AI术语手册”要么是把维基百科词条复制粘贴成PDF要么堆砌一堆“大模型”“Transformer”“RLHF”之类的词配上三行百度百科式定义连“为什么需要这个概念”“它在真实项目里长什么样”都懒得提。更别说区分“技术人真正在意的边界”比如“微调Fine-tuning”和“提示工程Prompt Engineering”根本不是同一层抽象——前者要改权重、跑GPU、管显存后者连GPU都不用但对业务逻辑的理解深度反而决定成败。这份指南是我过去三年带团队做AI落地时反复被问爆的37个问题的浓缩。它不按字母顺序排也不照搬论文结构而是按技术人真实的认知路径来组织从你早上打开钉钉看到“老板说我们要上AI”到下午在会议室里听产品经理讲“希望AI能自动写周报”再到晚上回家查资料时被“LoRA”“QLoRA”“DPO”这些缩写绕晕——这条路径上每一个卡点我都标好了坐标、配好了实操快照、写清了避坑口诀。比如“Agent”这个词2024年之前工程师聊的是“智能体架构设计”2024年之后再聊必须先确认对方说的是“LangChain里的Agent类”还是“AutoGen里的GroupChatManager”或是“LlamaIndex里的ReActAgent”——它们底层调用的API、依赖的LLM能力、甚至错误日志格式全都不一样。不厘清这个光背定义毫无意义。它适合三类人刚转AI岗的后端/前端工程师想快速建立技术判断力带AI项目的PM或技术负责人需要和算法团队高效对齐语言还有那些被“AI”项目推着走的运维、测试、DBA同事——你们不需要训练模型但得知道“为什么这个服务突然CPU飙到95%”“为什么缓存命中率从99%掉到60%”。整份指南所有概念都锚定在可观察、可调试、可部署的实操现场。没有“理论上可以”只有“我昨天在K8s里实测过加这行配置后延迟降了400ms”。国庆七天每天聚焦一个认知模块每天动手验证一个最小可行案例。不是填鸭是拆解——把AI这个黑盒子一层层剥开给你看里面的螺丝、线缆和散热硅脂。2. 概念分层为什么不能按字母表学AI技术人的认知必须匹配工程现实2.1 真正的分层逻辑从“能跑通”到“能交付”的四阶跃迁很多AI扫盲材料失败的根本原因在于混淆了概念层级。就像教人修车如果一上来就讲“热力学第二定律”而不是先让你拧开机油盖看液位那学完也只会背公式。AI领域同样存在清晰的四阶认知跃迁每一阶对应不同的技术动作、工具链和风险点L0能跑通Run—— 目标让一段代码在本地笔记本上输出非空结果。典型场景pip install transformers python -c from transformers import pipeline; p pipeline(text-generation); print(p(Hello))。这里的关键是环境兼容性CUDA版本、PyTorch编译选项、基础依赖tokenizers、safetensors是否装对。我见过太多人卡在这一步因为transformers4.40.0要求torch2.2.0而他们系统里是torch2.1.2报错信息却只显示ImportError: cannot import name xxx根本看不出根源。L1能复现Reproduce—— 目标在不同机器、不同时间用相同输入得到相同输出。这要求严格锁定随机种子torch.manual_seed(42)、确定性算法torch.backends.cudnn.deterministic True、模型权重哈希校验sha256sum pytorch_model.bin。去年我们交付一个文本分类模型给客户测试环境准确率92%生产环境只有87%——最后发现是客户服务器没关cudnn.benchmark导致每次卷积算子选择不同小数点后三位的浮点误差累积放大。L2能调优Tune—— 目标在约束条件下显存≤16GB、推理延迟≤500ms、成本≤$0.02/次找到最优配置。这时才真正用到“LoRA”“量化”“vLLM”这些词。但注意LoRA不是万能银弹。我在某电商客服项目里试过对7B模型加LoRA适配层显存从14GB降到9GB但QPS从120掉到78——因为LoRA引入的额外矩阵乘法让GPU kernel launch overhead翻倍。最终换成了AWQ量化FlashAttention-2显存压到6.2GBQPS反升到156。L3能交付Ship—— 目标模型作为服务稳定运行30天以上支持灰度发布、AB测试、异常熔断、指标监控。这时“Agent”不再是论文里的agent而是Prometheus里的一条ai_request_duration_seconds_bucket曲线“RAG”不再是向量检索流程图而是Grafana面板上rag_retrieval_latency_ms和llm_generation_latency_ms的双峰分布“评估”不是accuracy数字而是业务侧定义的“用户点击‘继续追问’按钮的比例提升≥15%”。提示跳过L0/L1直接学L2/L3就像没学过加减法就去解微分方程——表面看懂了实际一写代码就崩。国庆七天建议前两天死磕L0/L1用Hugging Face的transformers库跑通5个经典任务文本分类、命名实体识别、问答、摘要、文本生成每跑通一个手动改一行代码比如换tokenizer、改max_length、删掉device_mapauto观察报错信息这才是真正的扫盲起点。2.2 概念映射表每个热词背后的真实技术动作网络热搜词常把技术概念娱乐化、模糊化。比如“AI Agent”被自媒体渲染成“数字员工”但工程师眼里它本质是状态机工具调度LLM调用的组合模式。下表列出国庆期间高频热词及其在真实工程中的技术动作、常用工具、典型陷阱热搜词工程本质常用工具/框架典型陷阱我的实操口诀大模型LLM参数量10B的自回归语言模型核心约束是KV Cache内存占用Hugging Face Transformers, vLLM, Ollama盲目追求参数量忽略上下文长度对显存的平方级影响2048→4096KV Cache内存×4“显存不够先砍context_length再考虑量化最后才换小模型”RAG检索增强生成将外部知识库检索结果拼接到prompt中让LLM基于事实回答LlamaIndex, LangChain, Milvus, Chroma检索结果噪声大LLM盲目信任错误片段生成“幻觉答案”“RAG效果差先检查检索召回率Recall5再调rerank阈值最后才动LLM prompt”Agent用LLM决策下一步动作调用工具/API/查数据库循环直到目标达成LangChain Agents, AutoGen, CrewAI工具调用失败不重试、无超时控制、状态丢失导致无限循环“Agent必加三道保险工具调用超时timeout10s、最大步数限制max_iter5、失败日志落盘loggingTrue”微调Fine-tuning在预训练模型上用领域数据更新部分权重适配下游任务PEFT (LoRA), Hugging Face Trainer, DeepSpeedLoRA rank设太高64导致显存爆炸或太低4导致效果无提升“LoRA rank经验公式base_model_dim × 0.0017B模型推荐rank813B模型推荐rank16”提示工程Prompt Engineering通过设计prompt结构、few-shot示例、约束格式引导LLM输出符合预期的结果PromptFlow, DSPy, LangChain PromptTemplate过度依赖复杂prompt掩盖模型能力不足线上效果随LLM版本升级剧烈波动“Prompt不是万能胶先用rule-based baseline兜底再用prompt优化上限两者AB测试”这张表不是让你死记硬背而是提供诊断线索。比如你听到“我们做了RAG但用户反馈答案不准”别急着调LLM先查表里“RAG”对应的“典型陷阱”——立刻想到去查recall5指标。我上周帮一个政务项目排查RAG问题发现召回率仅32%原因是他们用默认的SentenceTransformer模型做嵌入而政务文本含大量专有名词如“长三角一体化发展示范区”通用模型根本无法捕捉语义。换成微调过的领域嵌入模型后召回率升至89%答案准确率同步提升。2.3 为什么“扫盲”必须包含部署与监控——脱离生产的概念都是空中楼阁很多技术人学AI止步于Jupyter Notebook里的model.generate()。但真实世界里模型上线后第一小时比训练过程更重要。我经历过三次“模型上线即崩溃”事件原因全在概念盲区第一次模型在本地generate()很稳上线后大量CUDA out of memory。查日志发现生产API网关默认开启keep-alive长连接导致GPU显存无法释放。解决方案在FastAPI的StreamingResponse里强制headers{Connection: close}。第二次RAG服务响应时间从200ms飙升到3s。监控显示redis_memory_used_bytes暴涨。原来开发用redis-py的pipeline批量存向量但没设pipeline.execute()超时Redis阻塞后所有请求排队。修复加pipeline.execute(timeout1.0)。第三次LLM服务CPU使用率99%但GPU利用率仅12%。nvidia-smi显示显存已满ps aux发现Python进程占满CPU。根源是transformers的generate()默认启用use_cacheTrue但生产环境并发高KV Cache管理混乱触发大量CPU-GPU数据拷贝。方案改用vLLM其PagedAttention机制原生解决此问题。这些教训说明“AI概念”的完整定义必须包含其在生产环境中的可观测性指标、资源消耗特征、故障模式。比如“量化Quantization”这个概念不能只讲“把FP16转INT4”而要明确AWQ量化需硬件支持Ampere GPU显存节省约60%但首次推理慢权重解压缩开销GPTQ量化纯软件实现兼容性好但量化后模型体积比AWQ大15%动态量化Dynamic Quantization仅对激活值量化CPU推理友好GPU上无效。国庆扫盲每天学完概念必须动手做一件事用psutil和pynvml监控一次本地推理的CPU/GPU/内存占用截图保存。第七天你会发现自己看技术文档的眼光彻底变了——不再问“这个模型多大”而是问“它在A10上batch_size1时的P95延迟是多少”。3. 国庆七天实操路线图每天一个最小闭环拒绝纸上谈兵3.1 Day 1L0级通关——用Hugging Face跑通第一个文本生成任务目标不是“学会”而是亲手制造并解决一个真实报错。很多人卡在第一步不是能力问题而是环境配置的细节黑洞。实操步骤创建干净虚拟环境python3.10 -m venv ai-scan source ai-scan/bin/activate安装最小依赖pip install torch2.2.0 torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118注意cu118匹配你的NVIDIA驱动安装transformerspip install transformers4.40.0避免最新版的breaking change运行最简代码from transformers import AutoTokenizer, AutoModelForCausalLM import torch tokenizer AutoTokenizer.from_pretrained(Qwen/Qwen2-0.5B-Instruct) model AutoModelForCausalLM.from_pretrained(Qwen/Qwen2-0.5B-Instruct, torch_dtypetorch.float16) model.to(cuda) inputs tokenizer(你好今天天气如何, return_tensorspt).to(cuda) outputs model.generate(**inputs, max_new_tokens50) print(tokenizer.decode(outputs[0], skip_special_tokensTrue))关键陷阱与排查报错OSError: Cant load tokenizer for Qwen/Qwen2-0.5B-Instruct说明Hugging Face Hub未登录。执行huggingface-cli login用Token登录Token在https://huggingface.co/settings/tokens获取。报错CUDA out of memoryQwen2-0.5B需约3GB显存若显存不足加device_mapauto自动分层加载或改用Qwen/Qwen2-0.5B无instruct版更轻量。输出乱码或空字符串检查skip_special_tokensTrue是否漏写或tokenizer是否匹配模型Qwen系列必须用Qwen tokenizer。实操心得我第一次跑通时发现max_new_tokens50生成了200字符。查源码发现generate()默认pad_token_id为None导致padding位置被误生成。解决方案显式指定pad_token_idtokenizer.eos_token_id。这种细节只有亲手踩坑才会记住。3.2 Day 2L1级加固——实现跨环境结果一致性目标在Mac M2无GPU、Windows RTX4090、Linux A10服务器上用同一段代码、同一模型、同一输入得到完全相同的输出。核心操作固定随机种子在代码开头加import torch import numpy as np import random torch.manual_seed(42) np.random.seed(42) random.seed(42)关闭非确定性算法torch.backends.cudnn.enabled FalseGPU或torch.backends.mps.enabled FalseMac锁定模型权重下载模型文件到本地用from_pretrained(./local_qwen)而非在线加载避免Hub版本漂移验证方法将生成结果tokenizer.decode(outputs[0])的SHA256哈希值打印出来三台机器对比是否一致。不一致逐项检查Python版本3.10.12 vs 3.10.13可能有细微差异PyTorch编译选项torch.__config__.show()查看CUDA/cuDNN版本nvcc --version,cat /usr/local/cuda/version.txt注意完全一致性在分布式训练中几乎不可能但单机推理必须做到。这是后续所有调优的基石——如果连结果都不可复现调参就是玄学。3.3 Day 3L2级实战——用LoRA微调一个情感分类模型目标在消费级GPURTX 3090, 24GB上用LoRA将bert-base-chinese微调为电商评论情感分类器显存占用≤12GB。数据准备用开源的chnsenticorp数据集中文情感分析正面/负面/中性git clone https://huggingface.co/datasets/SeohyunHong/chnsenticorp # 取前1000条样本加快训练 head -n 1000 chnsenticorp/train.json train_mini.jsonLoRA配置关键参数r8LoRA rank7B模型常用813B用16过大显存暴增过小效果不佳lora_alpha16缩放因子通常设为r的2倍lora_dropout0.05防止过拟合但Dropout在LoRA中效果有限0.05足够biasnone不训练bias项减少参数量训练命令用Hugging Face Trainerpython run_finetune.py \ --model_name_or_path bert-base-chinese \ --train_file train_mini.json \ --per_device_train_batch_size 16 \ --learning_rate 2e-4 \ --num_train_epochs 3 \ --output_dir ./lora_output \ --report_to none \ --load_best_model_at_end \ --lora_r 8 \ --lora_alpha 16 \ --lora_dropout 0.05 \ --lora_bias none显存监控技巧训练时执行watch -n 1 nvidia-smi观察Memory-Usage。若超12GB立即降低per_device_train_batch_size从16→8→4或增加--gradient_accumulation_steps 4用时间换空间。实操心得LoRA微调后模型文件夹里会多出adapter_config.json和adapter_model.bin。部署时必须同时加载原始模型和adapter权重。我曾因忘记peft库直接from_pretrained()原始模型导致微调失效——正确做法是PeftModel.from_pretrained(model, ./lora_output)。3.4 Day 4L2级进阶——构建一个RAG问答系统目标用LlamaIndex ChromaDB搭建一个基于《三体》小说文本的问答系统支持中文查询。数据处理下载《三体》TXT文本用LlamaIndex切片from llama_index.core import SimpleDirectoryReader, VectorStoreIndex from llama_index.vector_stores.chroma import ChromaVectorStore import chromadb # 加载文本 documents SimpleDirectoryReader(input_files[santi.txt]).load_data() # 切片chunk_size512overlap50 from llama_index.core.node_parser import SentenceSplitter parser SentenceSplitter(chunk_size512, chunk_overlap50) nodes parser.get_nodes_from_documents(documents) # 存入Chroma chroma_client chromadb.PersistentClient(path./chroma_db) chroma_collection chroma_client.create_collection(santi) vector_store ChromaVectorStore(chroma_collectionchroma_collection) index VectorStoreIndex(nodes, vector_storevector_store)检索增强关键不是“能检索”而是“检得准”。默认的similarity_top_k2太粗糙。实测发现对《三体》中“智子”相关问题top_k5并加rerank效果更好from llama_index.core.retrievers import VectorIndexRetriever from llama_index.core.query_engine import RetrieverQueryEngine from llama_index.core.postprocessor import SimilarityPostprocessor retriever VectorIndexRetriever(indexindex, similarity_top_k5) query_engine RetrieverQueryEngine( retrieverretriever, node_postprocessors[SimilarityPostprocessor(similarity_cutoff0.7)] ) response query_engine.query(智子是如何干扰人类粒子对撞机的)性能陷阱ChromaDB默认用hnswlib但中文embedding需用all-MiniLM-L6-v2等模型。若用text-embedding-ada-002OpenAI API则需付费且延迟高。本地替代方案jinaai/jina-embeddings-v2-base-zh专为中文优化。注意RAG效果差90%概率是检索环节问题而非LLM本身。Day 4务必用query_engine.retrieve(智子)打印出前5个检索片段人工检查是否相关。不相关换embedding模型或调整切片大小。3.5 Day 5L3级交付——将RAG服务封装为FastAPI接口目标把Day 4的RAG系统打包成可被前端调用的HTTP API并加入基础监控。FastAPI代码骨架from fastapi import FastAPI, HTTPException from pydantic import BaseModel import time import psutil app FastAPI() class QueryRequest(BaseModel): question: str app.post(/ask) async def ask_question(request: QueryRequest): start_time time.time() try: # 调用Day 4的query_engine response query_engine.query(request.question) latency time.time() - start_time # 记录指标简易版 with open(latency.log, a) as f: f.write(f{latency:.3f}\n) return {answer: str(response), latency_ms: int(latency*1000)} except Exception as e: raise HTTPException(status_code500, detailstr(e))生产级加固加超时from starlette.middleware.base import BaseHTTPMiddleware全局设置timeout30s防DDoSpip install slowapi加limiter.limit(10/minute)日志结构化用structlog替代print()日志含request_id、status_code、latency部署验证用curl测试curl -X POST http://localhost:8000/ask \ -H Content-Type: application/json \ -d {question:三体人为什么害怕人类}同时开另一个终端tail -f latency.log观察延迟是否稳定。实操心得API返回{answer: ...}看似简单但生产中必须加content-type: application/json头否则前端fetch可能解析失败。我曾因此被前端同学追着骂了半小时——加一行response.headers[Content-Type] application/json即可解决。3.6 Day 6L3级监控——用Prometheus监控RAG服务目标让RAG服务的延迟、错误率、QPS变成可图表化的数字而非靠tail -f猜。Prometheus配置在FastAPI中集成prometheus-fastapi-instrumentatorfrom prometheus_fastapi_instrumentator import Instrumentator instrumentator Instrumentator() instrumentator.instrument(app).expose(app)启动服务后访问http://localhost:8000/metrics能看到http_request_duration_seconds_bucket等指标。Grafana可视化创建Dashboard关键面板P95延迟histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[1h]))错误率rate(http_requests_total{status~5..}[1h]) / rate(http_requests_total[1h])QPSrate(http_requests_total[1h])告警规则alert.rules当P95延迟2s持续5分钟触发企业微信告警groups: - name: rag-alerts rules: - alert: RAGHighLatency expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) 2 for: 5m labels: severity: warning annotations: summary: RAG服务P95延迟过高 description: 当前P95延迟{{ $value }}s超过阈值2s注意监控不是摆设。Day 6必须亲手配置一次哪怕只监控一个指标。你会发现http_request_duration_seconds的bucket边界如le0.1决定了你能否看到“100ms内完成的请求占比”。不设合理bucket监控图就是一条直线。3.7 Day 7综合诊断——用真实故障演练巩固全部概念目标模拟一个典型生产故障用前六天学的概念和工具完成全流程排查。故障场景RAG服务上线后用户反馈“回答越来越慢有时超时”。监控显示P95延迟从300ms升至2500mshttp_requests_total{status504}激增chroma_collection_countChroma中向量数量稳定无增长排查路线图定位层级curl -v http://localhost:8000/ask看是否超时 → 确认是API层问题非LLM或Chroma本身检查依赖netstat -tuln | grep :8000看端口是否被占ps aux | grep uvicorn看进程是否僵死分析日志grep timeout logs/app.log→ 发现大量ReadTimeout: HTTPConnectionPool(hostlocalhost, port8000): Read timed out.关联监控查Grafana发现http_request_duration_seconds_bucket{le1}占比从95%掉到40% → 说明1秒内完成的请求锐减深入代码检查Day 5的FastAPI代码发现query_engine.query()未设超时 → 加timeout10参数验证修复重启服务ab -n 100 -c 10 http://localhost:8000/ask压测P95回落至320ms最后一课所有概念的价值都在故障时刻兑现。国庆七天不是学完就结束而是建立一套肌肉记忆——看到延迟升高本能地去看监控、查日志、测依赖、改代码。这套反应链比记住100个名词重要一万倍。4. 高频问题速查表技术人真正在意的12个灵魂拷问4.1 “大模型”到底多大才算“大”显存和延迟怎么算“大模型”的“大”不是绝对参数量而是相对于你的硬件和业务需求的相对规模。计算显存占用的经验公式显存(MB) ≈ (模型参数量 × 2字节) KV Cache内存 KV Cache内存 ≈ 2 × batch_size × seq_len × num_layers × hidden_size × 2字节以Qwen2-7B为例参数量7B × 2字节 14GBFP16KV Cachebatch_size1, seq_len2048, num_layers32, hidden_size4096≈ 2 × 1 × 2048 × 32 × 4096 × 2 ≈ 1.07GB总计≈15GB需A1024GB或RTX409024GB但若用AWQ 4-bit量化参数量部分降至7B × 0.5字节 3.5GB总显存≈4.6GBRTX309024GB绰绰有余。实操口诀“先算参数显存再估KV Cache最后留20%余量。显存不够量化优先于换小模型。”4.2 “RAG”和“微调”到底该选哪个选型决策树数据量 1000条且领域高度垂直→ 微调LoRA效果更稳定数据量 10万条且实时更新频繁→ RAG免训练更新知识库即可数据含大量表格/图片/公式→ RAG可多模态检索微调难处理非文本业务要求100%事实准确如医疗、法律→ RAG引用溯源微调易幻觉我做过对比实验电商客服场景用1000条售后对话微调Qwen2-1.5BF10.82用RAGChromaQwen2-0.5BF10.79但RAG能即时接入最新退货政策PDF微调需重新训练。注意RAG不是万能。若检索召回率50%强行上RAG不如用微调规则兜底。4.3 “Agent”真的需要吗还是过度设计Agent的价值在于解决多步骤、强状态、需工具协同的任务。判断标准✅ 需要调用多个API如查天气→订机票→发邮件通知✅ 需要根据中间结果动态决策如用户问“帮我订张去上海的机票”Agent需先查航班→选价格→确认座位→支付✅ 任务有明确终止条件如“生成一份周报” vs “帮我写周报要包含销售数据、下周计划、风险提示”❌ 简单问答“今天北京天气”❌ 单一工具调用“把这段文字翻译成英文”❌ 无状态任务“总结这篇文档”实操心得我曾用LangChain Agent做会议纪要生成结果因工具调用失败陷入无限重试。后来改成“LLM生成初稿→规则提取关键人名/日期→人工审核”效率反升3倍。Agent不是炫技是为了解决真痛点。4.4 “提示工程”到底有没有用怎么证明有用但价值有天花板。实测数据对Qwen2-0.5B优化prompt加few-shot、明确格式使JSON输出准确率从68%→89%对Qwen2-7B同样prompt优化准确率仅从92%→94%证明方法AB测试。部署两个endpoint/api/v1/prompt-basic基础prompt/api/v1/prompt-optimized优化prompt用相同1000条测试集请求统计json.loads()成功率、字段提取准确率。关键提示工程效果随LLM能力提升而衰减。不要在GPT-4级别模型上花大力气调prompt而在Qwen2-0.5B上值得投入。4.5 “量化”会不会严重损失效果不会但要看量化类型和任务AWQ/GPTQ4-bit文本生成、摘要任务BLEU/ROUGE下降1%可接受FP16→INT8TensorRT对数学推理、代码生成任务准确率可能降5-10%动态量化CPU仅适用于推理训练无效实测Qwen2-1.5B在CMRC2018阅读理解任务上FP16EM62.3%, F171.8%AWQ 4-bitEM61.9%, F171.5%GPTQ 4-bitEM62.1%, F171.6%口诀“生成类任务量化安全推理类任务谨慎数学/代码任务优先保精度。”4.6 “开源模型”和“商业API”怎么选决策矩阵维度开源模型Qwen、DeepSeek商业APIQwen API、Moonshot成本一次性硬件投入长期0成本按token计费长期成本高可控性完全可控可审计、可修改黑盒无法debug策略变更不透明延迟自建集群延迟稳定500ms网络抖动P99延迟可能3s定制化可微调、可量化、可私有化仅限prompt调优无法改模型适用场景✅ 内部系统、敏感数据、高并发、低延迟要求 → 开源模型✅ 快速MVP、无运维能力、小流量、需多模型切换 → 商业API我的实践用开源Qwen2-7B做内部知识库问答月省API费用$2300用Moonshot API做对外Demo一周上线零运维。4.7 “评估”AI效果除了Accuracy还有什么指标Accuracy是毒药。真实场景指标业务指标客服场景的“首次解决率FCR”、电商场景的“推荐点击率CTR”技术指标Hallucination Rate生成内容中虚构事实的比例人工抽样100条标注Latency P9595%请求的响应时间Token Efficiency每美元生成的有效token数排除padding、stop token人工评估用Pairwise Comparison让标注员对比A/B模型输出选更好者注意不要用BLEU评估开放生成。我曾见团队用BLEU0.45的模型上线用户投诉“答案像机器人”因为BLEU只看n-gram重叠不管流畅
返回列表