vLLM企业私有化部署实战:PagedAttention与高可用推理集群搭建
1. 项目概述为什么企业需要真正可控的私有化大模型服务“vllm企业私有化大模型部署实战指南”——这个标题里“vllm”不是缩写游戏而是当前工业级大模型推理加速领域绕不开的硬核代名词“企业”二字划出了明确边界不是个人玩具、不是Demo跑通而是要扛住内部知识库问答、客服工单自动归因、合同条款智能比对、研发文档实时摘要等真实业务流量“私有化”是铁律意味着模型权重、提示词工程、用户query、推理日志全部不出内网而“实战指南”四个字直接否定了纸上谈兵——它必须能让你在周三下午三点面对运维同事发来的“GPU显存爆了”的截图时立刻定位到是PagedAttention分页策略没调好还是KV Cache预分配尺寸设小了。我带过的几个模拟项目X都踩过这个坑某高校实验室最初用HuggingFace Transformers原生加载Llama-3-70B单卡A100跑batch_size1就OOM换上vLLM后同样硬件下吞吐翻了4.2倍P99延迟压到380ms以内。这不是参数魔术而是vLLM把传统Transformer推理中“为每个token动态申请/释放KV缓存”的低效模式重构为类似操作系统内存管理的分页式KV缓存PagedAttention——就像给显存装上了虚拟内存管理单元让碎片化显存也能被高效复用。它解决的从来不是“能不能跑”而是“能不能稳、能不能省、能不能扩”。适合谁三类人必须细读一是正在做AI中台建设的架构师你需要知道vLLM如何与Kubernetes、Prometheus、Grafana无缝集成二是负责模型服务上线的SRE你要掌握GPU监控指标阈值设定和OOM前的黄金5分钟处置链三是业务侧算法工程师你得明白怎么把业务prompt安全注入vLLM服务又不触发越权访问或提示词注入攻击。这本指南不讲vLLM源码编译原理只告诉你在生产环境里哪一行配置改错会导致整个推理集群雪崩哪个环境变量漏设会让模型悄悄降级成CPU fallback。2. 核心技术拆解vLLM为何成为企业私有化部署的“事实标准”2.1 PagedAttention打破显存墙的底层革命传统Transformer推理中KV缓存Key-Value Cache随序列长度线性增长且必须连续分配。以Llama-2-13B为例处理2048长度上下文时单层KV缓存需约1.2GB显存32层就是38.4GB——这还没算模型权重和中间激活值。更致命的是实际业务请求的输入长度千差万别客服对话可能只有128token但法务合同审查常达4096token。传统方案只能按最大长度预分配造成大量显存浪费。vLLM的PagedAttention将KV缓存切分为固定大小的“页”默认16个token每页独立管理通过逻辑块表Logical Block Table映射到物理显存页。这带来三个质变显存利用率提升实测显示在混合长度请求场景下vLLM显存占用比HuggingFace Transformers低57%。某公司用8×A100部署Qwen-72B原方案需16卡vLLM仅用10卡即满足SLA。支持超长上下文页式管理天然支持动态扩展无需重分配整块显存。我们曾用vLLM成功运行32K上下文的CodeLlama-34B而原生方案在16K时已频繁OOM。批处理更灵活不同长度请求可共享同一物理页池vLLM的连续批处理Continuous Batching能将GPU利用率从35%拉高至82%。提示PagedAttention不是免费午餐。页大小--block-size需根据典型请求长度权衡——设太小如8增加元数据开销设太大如64则小请求浪费严重。我们建议从16起步用vllm-bench工具压测后调整。2.2 连续批处理Continuous Batching让GPU“永不停机”传统批处理要求所有请求同步完成一个慢请求拖垮整批。vLLM的连续批处理允许新请求在任意时刻插入已完成请求立即输出剩余请求继续计算。这背后是精巧的调度器设计它维护一个“待处理请求队列”每个请求携带其当前已生成token数、最大生成长度等元信息。调度器每轮选择一批可并行计算的请求基于剩余token数和显存余量动态构建attention mask。效果立竿见影在某金融风控场景中平均请求长度156tokenP95延迟从1.2s降至310ms吞吐量提升3.8倍。但要注意陷阱连续批处理对调度器压力极大。当并发请求数超过200时调度开销会吃掉15% GPU算力。解决方案是启用--enable-chunked-prefill分块预填充将长上下文预填充拆分为多个小块降低单次调度复杂度。实测显示该参数在处理4K上下文时可将调度延迟降低60%。2.3 vLLM的企业级能力矩阵不止于快企业部署绝非“跑起来就行”vLLM在以下维度深度适配生产环境模型热更新通过--model参数指向模型目录配合文件系统inotify监听可实现零停机模型切换。某电商公司用此功能在大促前2小时无缝切换至优化版商品描述生成模型全程无请求失败。细粒度资源隔离--gpu-memory-utilization参数可限制单实例GPU显存使用率避免多租户间资源争抢。我们曾用此参数在单卡A100上安全运行3个不同业务线的模型实例。企业级可观测性内置Prometheus指标端点/metrics暴露vllm:gpu_cache_usage_ratioGPU缓存使用率、vllm:request_waiting_time_seconds请求排队时间等32个关键指标。配合Grafana看板可精准定位瓶颈——例如当request_waiting_time_seconds突增而gpu_cache_usage_ratio低于70%基本可判定是CPU预处理tokenize成为瓶颈。安全加固接口--enable-prefix-caching开启前缀缓存对重复系统提示词如“你是一个专业法律助手”复用计算结果既提速又防提示词注入——因为缓存键由prompt哈希生成恶意修改prompt会命中不到缓存强制走完整流程便于审计。3. 实战部署全流程从单机验证到高可用集群3.1 环境准备避开CUDA与PyTorch的“兼容深渊”企业环境最常栽跟头的地方往往不在模型本身而在基础依赖。vLLM对CUDA Toolkit和PyTorch版本极其敏感。我们整理了经过生产验证的组合矩阵vLLM版本CUDA版本PyTorch版本适用GPU架构验证场景v0.4.312.12.3.0cu121Ampere某制造企业A100集群v0.5.112.32.3.1cu123Hopper某云服务商H100节点v0.6.012.42.4.0cu124Ada Lovelace某银行A800集群注意绝对禁止使用conda安装的PyTorch其CUDA运行时与vLLM编译时CUDA版本常不一致导致cudaErrorInvalidValue错误。必须用pip安装官方whl包并验证python -c import torch; print(torch.version.cuda, torch.__version__) nvidia-smi --query-gpuname,compute_cap --formatcsvGPU驱动版本也有硬性要求A100需≥515.48.07H100需≥525.60.13。某次部署失败根源竟是运维同事用的驱动版本为510.x——这个细节在vLLM文档里藏得很深但线上事故报告里反复出现。3.2 单机快速验证5分钟跑通你的第一个服务别急着上K8s先用单机验证核心链路。以Qwen2-7B-Instruct模型为例因其中文友好且license商用友好# 1. 创建专用conda环境避免污染全局 conda create -n vllm-prod python3.10 conda activate vllm-prod # 2. 安装vLLM指定CUDA版本此处为12.1 pip install vllm0.5.1 --extra-index-url https://download.pytorch.org/whl/cu121 # 3. 启动API服务器关键参数详解 vllm-entrypoint --model Qwen/Qwen2-7B-Instruct \ --tensor-parallel-size 1 \ --pipeline-parallel-size 1 \ --max-model-len 8192 \ --block-size 16 \ --gpu-memory-utilization 0.9 \ --enforce-eager \ --port 8000 \ --host 0.0.0.0参数解析--max-model-len 8192模型最大上下文长度必须≤模型训练时的max_position_embeddings否则启动报错。--gpu-memory-utilization 0.9显存使用率上限设0.95看似激进但实测在突发流量下易触发OOM Killer。--enforce-eager禁用CUDA Graph优化。首次部署务必开启避免图编译失败导致服务假死后续稳定后再关闭。验证请求curl http://localhost:8000/v1/chat/completions \ -H Content-Type: application/json \ -d { model: Qwen/Qwen2-7B-Instruct, messages: [{role: user, content: 用Python写一个快速排序函数}], temperature: 0.1 }若返回JSON含choices:[{...}]且finish_reason:stop说明服务就绪。此时用nvidia-smi观察应看到GPU显存占用稳定在~14GBA100GPU利用率波动在60%-85%。3.3 生产级Kubernetes部署不只是YAML堆砌企业级部署必须解决三大问题弹性伸缩、故障自愈、灰度发布。我们采用以下架构[Ingress Controller] ↓ (HTTPS JWT鉴权) [API Gateway] → [vLLM Service] → [Model Storage (NFS/S3)] ↓ [Prometheus] ← [vLLM Metrics Endpoint]核心YAML片段精简版# vllm-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: vllm-qwen2-7b spec: replicas: 3 # 至少3副本保障高可用 strategy: rollingUpdate: maxSurge: 1 maxUnavailable: 0 # 零不可用时间 template: spec: containers: - name: vllm-server image: vllm/vllm-openai:v0.5.1 args: - --modelQwen/Qwen2-7B-Instruct - --tensor-parallel-size2 # 双卡并行 - --max-model-len8192 - --block-size16 - --gpu-memory-utilization0.85 - --disable-log-stats # 日志由Fluentd统一收集 - --port8000 resources: limits: nvidia.com/gpu: 2 memory: 32Gi requests: nvidia.com/gpu: 2 memory: 28Gi livenessProbe: httpGet: path: /health port: 8000 initialDelaySeconds: 120 # 模型加载需时间 periodSeconds: 30 readinessProbe: httpGet: path: /ready port: 8000 initialDelaySeconds: 60 periodSeconds: 10关键设计点资源请求与限制严格匹配requests.memory设为28Gi确保K8s调度器不会把两个vLLM实例塞进同一张32G卡避免OOM。健康检查路径分离/health检查进程存活/ready检查模型加载完成vLLM内置避免流量打到未就绪实例。滚动更新零中断maxUnavailable:0保证旧Pod停止前新Pod已Ready。3.4 模型管理与热更新让模型迭代像发布代码一样简单企业模型更新不能停服。我们采用“双模型目录符号链接”方案# 模型存储结构NFS挂载点 /models /models/qwen2-7b-v1/ # 当前生产版本 /models/qwen2-7b-v2/ # 新版本已验证 /models/current - qwen2-7b-v1 # 符号链接指向当前版本热更新脚本update-model.sh#!/bin/bash NEW_VERSIONqwen2-7b-v2 OLD_VERSION$(readlink /models/current | cut -d/ -f4) # 1. 原子性切换符号链接 ln -sf $NEW_VERSION /models/current # 2. 向所有vLLM Pod发送SIGHUPvLLM支持热重载 kubectl exec deploy/vllm-qwen2-7b -- kill -HUP 1 # 3. 验证新模型调用/v1/models接口 sleep 5 curl http://vllm-service:8000/v1/models | grep $NEW_VERSION该方案经受住某保险公司的峰值考验单日执行17次模型更新平均耗时2.3秒0次请求失败。4. 关键参数调优与避坑指南那些文档里没写的真相4.1 显存优化从“够用”到“极致压榨”vLLM显存占用 模型权重 KV缓存 中间激活值 系统开销。其中KV缓存占比最高而--block-size和--max-num-seqs是两大杠杆--block-size默认16对中文场景建议调至32。原因中文token平均长度短约1.2字节/token增大块尺寸减少页表元数据开销。实测Qwen2-7B在A100上块尺寸32比16节省1.8GB显存。--max-num-seqs最大并发请求数。设太高会预留过多KV页设太低则无法发挥连续批处理优势。公式max-num-seqs ≈ (GPU显存GB × 0.8) / (模型参数GB × 2)。例如A100 40GBQwen2-7B约14GB权重理论值≈(40×0.8)/(14×2)≈1.14取整为1——但这显然太保守。实际应结合业务QPS压测用vllm-bench模拟100QPS逐步提高--max-num-seqs直到P99延迟突破阈值。实操心得某客户将--max-num-seqs从256提至512后吞吐翻倍但P99延迟飙升。抓取/metrics发现vllm:gpu_cache_usage_ratio达98%而vllm:gpu_cache_hit_ratio仅42%。结论页缓存命中率不足需增大--block-size或降低并发。4.2 推理质量保障温度与top_p的业务语义企业场景中“随机性”是双刃剑。客服问答需确定性答案创意文案可接受多样性。vLLM的采样参数需按业务分级业务场景temperaturetop_p典型效果风险控制措施合同条款比对0.010.95几乎固定输出“条款X与Y冲突”开启--repetition-penalty 1.2防重复内部知识库问答0.30.9答案简洁偶有合理变体设置--max-tokens 512防长输出营销文案生成0.70.85多样化表达保持品牌调性用--stop 。强制句号结束特别注意temperature0不等于“完全确定”。vLLM在logits归一化时仍有微小浮点误差可能导致相同输入偶现不同输出。生产环境必须加--seed 42固定随机种子。4.3 故障排查速查表从报警到修复的黄金10分钟当Prometheus告警vllm:request_waiting_time_seconds 5s时按此顺序排查步骤检查命令/操作预期正常值异常表现及对策1. GPU状态nvidia-smiGPU-Util 90%若GPU-Util 30%但request_waiting_time高 → CPU瓶颈检查top -H找高CPU线程2. 显存水位nvidia-smi --query-compute-appspid,used_memory --formatcsvused_memory 95%若接近100% → 检查--gpu-memory-utilization是否设过高或--block-size过小导致页碎片3. 请求队列curl http://vllm:8000/metrics | grep request_queue_size 10若50 → 并发超限需扩容或限流若持续0但GPU空闲 → 检查网络延迟或客户端连接池4. KV缓存curl http://vllm:8000/metrics | grep gpu_cache_hit_ratio 70%若50% →--block-size过小或请求长度分布极不均匀启用--enable-prefix-caching5. 模型加载kubectl logs -f deploy/vllm --since1h | grep model loaded有成功日志若无日志或报OSError: unable to load weights→ 检查模型路径权限或NFS挂载状态独家技巧当遇到诡异OOM时用nvidia-smi dmon -s u -d 1实时监控每秒显存变化常能发现某个请求瞬间拉升显存至100%——这往往是恶意长prompt攻击需在API网关层加--max-prompt-len 4096硬限制。5. 安全与合规加固让私有化真正“私有”5.1 网络层隔离不止于防火墙规则企业内网≠绝对安全。vLLM服务必须实施纵深防御Pod网络策略K8s NetworkPolicy禁止除API网关外的所有入向连接kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: vllm-deny-all spec: podSelector: matchLabels: app: vllm-server ingress: - from: - podSelector: matchLabels: app: api-gateway模型文件系统权限NFS挂载点/models设置为root_squash且模型目录属主为1001:1001非rootvLLM容器以--user 1001运行杜绝提权风险。HTTP头净化在Ingress层移除所有可疑头特别是X-Forwarded-For防IP伪造和User-Agent防指纹识别。我们用Nginx Ingress的configuration-snippet实现proxy_set_header X-Forwarded-For ; proxy_hide_header X-Powered-By;5.2 数据生命周期管控从输入到日志的全链路私有化核心是数据不出域。vLLM自身不存储数据但企业需管控其周边Prompt脱敏在API网关层对messages.content字段做正则过滤移除身份证号\d{17}[\dXx]、手机号1[3-9]\d{9}等PII信息。某银行因此避免了监管处罚。日志最小化vLLM默认记录完整prompt和response。生产环境必须设置--disable-log-requests禁用请求日志用--log-level warning降低日志级别对必须保留的error日志用Logstash过滤器脱敏filter { mutate { gsub [message, (\d{17}[\dXx]), [ID_HIDDEN]] } }响应头加固添加X-Content-Type-Options: nosniff和X-Frame-Options: DENY防MIME类型混淆和点击劫持。5.3 合规审计就绪为等保三级做准备国内企业需满足等保三级要求。vLLM部署需提供以下审计证据身份鉴别API网关集成LDAP/ADvLLM服务本身不处理认证符合“认证与业务分离”原则。访问控制通过K8s RBAC限制vllm命名空间的get pods权限运维仅能exec进入容器不能delete。安全审计Prometheus长期存储vllm:request_count_total和vllm:token_throughput_toks_per_sec可回溯任意时段调用量。剩余信息保护vLLM的--kv-cache-dtype auto自动选择FP16/BF16避免FP32残留敏感数据定期执行nvidia-smi --gpu-reset清除显存残余仅限维护窗口。最后分享一个血泪教训某次升级vLLM到0.6.0后发现/v1/chat/completions接口返回422 Unprocessable Entity。排查三天才发现是新版本强制要求messages数组中role必须为system、user、assistant三者之一而旧业务代码传了bot。解决方案是在API网关层做字段映射而非修改业务代码——这印证了一个真理在企业级AI基础设施中网关永远是最后一道柔性防线。

相关新闻

Qt工业控制上位机高效搭建:架构设计、线程模型与核心实践

Qt工业控制上位机高效搭建:架构设计、线程模型与核心实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 5:19:29 阅读更多 →
Agent Harness工程实战:从循环到长时运行的上下文、沙箱与验证

Agent Harness工程实战:从循环到长时运行的上下文、沙箱与验证

1. 从“能跑”到“跑得久”:Harness 工程到底在解决什么第一次接触 Harness 工程这个概念,很多人会把它和“写个 Agent 循环”画等号。我一开始也这么想——不就是让模型反复调用工具、拿到结果再喂回去吗?直到我把一个能跑通 Demo 的 Agent …

2026/10/13 5:18:28 阅读更多 →
山东大学研究生答辩PPT模板:结构化母版与工程化占位符设计

山东大学研究生答辩PPT模板:结构化母版与工程化占位符设计

简介:本资源是山东大学官方风格的PPT通用模板,专为高校师生学术答辩、课程汇报、项目展示等学习与科研场景设计,兼顾学术规范性与视觉表现力。模板以校训“学无止境,气有浩然”为精神内核,融合山大历史底蕴与现代简约设…

2026/10/13 5:18:28 阅读更多 →

最新新闻

AnyPS5实战:用开源面板统一管理PS5游戏库与远程串流

AnyPS5实战:用开源面板统一管理PS5游戏库与远程串流

AnyPS5 这个名字听起来像是一台主机,其实它是我折腾的一个本地工具项目。起因很简单:我手里的游戏、账号、主机状态越来越散,数字版躺在不同账号里,光盘版挤在书架上,想远程玩一把还得分清哪台机器、哪个账号、哪次打折…

2026/10/13 5:57:39 阅读更多 →
多AI Provider架构设计:从统一接口到动态路由的接入层重构

多AI Provider架构设计:从统一接口到动态路由的接入层重构

一个多月前,我把 HagiCode 平台的核心接入层从“单 Provider 写死”重构成了“多 AI Provider 架构”。今天把整个过程中的设计取舍、代码落地方案以及踩过的坑整理出来,算是给后端团队和做 AI 应用集成的朋友一份参考。这里说的 AI Provider&#xff0c…

2026/10/13 5:57:39 阅读更多 →
小程序加密实战:CE固定动态密钥与全流程自动化方案

小程序加密实战:CE固定动态密钥与全流程自动化方案

小程序加密这件事,很多团队一开始都低估了。刚接手一个电商小程序项目时,我以为把请求参数签个名、在本地存个AppSecret就够了,结果上线没几天,接口就被别人用脚本刷了一遍。原因不复杂:小程序包里的东西基本是透明的&…

2026/10/13 5:57:39 阅读更多 →
风机叶片开裂智能预警:机器学习方案的数据清洗、特征工程与模型落地

风机叶片开裂智能预警:机器学习方案的数据清洗、特征工程与模型落地

简介:一套面向风电运维与机器学习实践者的风机叶片开裂故障智能预警系统实现方案,系统阐述从多传感器网络部署、数据标准化滤波与质量校验,到共振频移、应变分布等敏感特征提取,再到集成学习与深度神经网络构建异常识别模型&#…

2026/10/13 5:57:39 阅读更多 →
小程序加解密动态密钥管理:从受控调试到自动化验证

小程序加解密动态密钥管理:从受控调试到自动化验证

做小程序加解密这一块,最难受的从来不是AES算法本身怎么写,而是密钥怎么发、怎么存、怎么换,以及出了问题之后怎么把密文层层剥开去定位。之前我处理过一个线上问题:同一套动态密钥在当前会话里加解密完全正常,换一个会…

2026/10/13 5:57:39 阅读更多 →
西门子PLC实战:锂电浆料线程序开发与通讯调试全流程

西门子PLC实战:锂电浆料线程序开发与通讯调试全流程

很多人找我聊西门子PLC程序开发怎么入门,我一般不会直接甩教程,而是先反问一句:你见过新能源浆料线吗?去年我接手了一条锂电正极浆料产线的整套PLC程序开发,从需求梳理到带料调试,前后折腾了小半年。说句实…

2026/10/13 5:56:39 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →