vLLM推理加速引擎:基于PagedAttention的大模型部署优化实战
如果你正在部署大模型应用可能会遇到这样的困境模型推理速度慢如蜗牛显存消耗却像无底洞每次并发请求稍多服务就濒临崩溃。这背后不仅仅是算力问题更是工程架构的挑战。今天我们深入探讨一个在开源社区迅速崛起、被众多AI应用开发者视为“救星”的推理加速引擎——vLLM。它不仅仅是一个工具更代表了一种解决大模型推理效率瓶颈的“工程智慧”。很多人初次接触vLLM以为它只是一个简单的模型服务化框架。但实际上它的核心价值在于其革命性的内存管理算法PagedAttention。这个设计灵感来源于操作系统的虚拟内存分页机制它从根本上改变了传统Transformer模型在推理时对KV Cache键值缓存的粗放管理方式从而实现了吞吐量数倍甚至数十倍的提升。本文将带你从原理到实战彻底搞懂vLLM如何工作并手把手教你完成从环境搭建、模型部署到性能调优的全过程。无论你是想优化自己的AI应用还是单纯对底层技术好奇这篇文章都将提供可直接落地的解决方案。1. vLLM 究竟解决了什么核心痛点在深入技术细节之前我们必须先理解它要解决的“真问题”。传统的大模型推理框架如原始的 Hugging Facetransformers库的pipeline在处理序列生成任务时有一个致命的效率瓶颈KV Cache 的内存浪费。当模型为每个输入的 token 生成下一个 token 时它需要计算并缓存当前序列中所有历史 token 的 Key 和 Value 向量这就是 KV Cache。在传统方式下静态分配系统必须为每个请求序列预留其最大可能长度的显存。即使这个序列最终只生成了50个token系统也早已为2048个token的容量分配了内存。无法共享不同请求之间的内存完全隔离即使它们的提示词Prompt前缀相同也无法复用已计算的KV Cache。这就导致了两个直观后果1显存利用率极低大部分分配的内存处于闲置状态2系统能同时处理的请求数并发度被严重限制。你的 GPU 显存可能被“空占着”却无法服务更多用户。vLLM 的PagedAttention算法正是针对此痛点。它引入了“分页”和“块”的概念将连续的 KV Cache 空间打散成固定大小的块Block。这些块可以在不同请求之间动态分配和共享就像操作系统管理物理内存一样。这意味着显存可以按需分配一个生成长度短的请求不会浪费内存。具有相同提示词前缀的多个请求可以共享同一组KV Cache块避免重复计算。其结果就是在相同硬件条件下vLLM 能够显著提升吞吐量每秒处理的token总数这对于需要高并发的AI API服务或批量处理场景至关重要。2. 核心概念与原理PagedAttention 如何工作理解 vLLM 的高效之源关键在于弄懂 PagedAttention 和其相关的几个核心概念。2.1 KV Cache 与内存瓶颈Transformer 模型在解码生成时自注意力机制需要查询Query与之前所有位置的键Key和值Value进行计算。为了避免重复计算这些计算过的 K 和 V 会被缓存起来。这个缓存随着生成序列的增长而线性增长是推理时显存占用的主要部分。2.2 PagedAttention 的核心思想PagedAttention 借鉴了操作系统虚拟内存的思想逻辑块与物理块将每个请求序列的 KV Cache 在逻辑上划分为多个固定大小的“块”Block。每个块对应物理显存中的一个区域。块表系统维护一个“块表”Block Table记录每个请求的逻辑块到物理块的映射关系。这类似于操作系统的页表。按需分配与共享物理块池被所有请求共享。当一个请求需要新的空间来存储KV Cache时就从空闲块池中分配一个物理块给它并更新块表。当两个请求有相同的提示词前缀时它们可以映射到相同的物理块实现内存共享。2.3 与传统方案的对比为了更清晰我们用一个表格来对比特性传统 Hugging Face 推理vLLM with PagedAttention内存分配静态、连续、按最大长度预分配动态、分页、按需分配内存共享不支持支持相同前缀的请求共享KV Cache内存碎片较少连续分配由内存管理器处理对用户透明并发能力低受限于预分配的巨量显存高可动态容纳更多请求适用场景低并发、请求长度可预测高并发、请求长度多变、有共享前缀这种设计使得 vLLM 特别适合**流式输出、聊天应用、搜索增强生成RAG**等场景因为这些场景中请求的生成长度差异大且经常存在相似的系统提示词或上下文。3. 环境准备与安装部署理论之后我们来实战。vLLM 支持多种部署方式这里我们以最常用的Ubuntu/Linux 系统 Conda 虚拟环境为例演示完整安装流程。同时也会简要说明 Docker 和 Windows WSL2 的注意事项。3.1 基础环境要求操作系统Linux (推荐 Ubuntu 20.04/22.04) macOS 或 Windows via WSL2。Python3.8 及以上版本。CUDAvLLM 深度优化了 CUDA 内核需要 NVIDIA GPU 及对应版本的 CUDA 驱动。建议 CUDA 11.8 或 12.1。GPU 内存至少 8GB用于运行 7B 规模的模型。运行 70B 模型需要更多显存。3.2 使用 Conda 创建隔离环境推荐使用 Conda 可以避免包依赖冲突。# 1. 创建并激活一个名为 vllm_env 的 Python 3.10 环境 conda create -n vllm_env python3.10 -y conda activate vllm_env # 2. 安装 PyTorch (请根据你的 CUDA 版本选择命令以下以 CUDA 11.8 为例) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 3. 安装 vLLM pip install vllm注意vllm包会自动安装其核心依赖。如果你想使用 vLLM 的 OpenAI 兼容 API 服务器还需要安装额外的依赖pip install vllm[openai]3.3 验证安装安装完成后可以通过一个简单的 Python 脚本验证 vLLM 是否能正常导入并使用。# 文件verify_installation.py from vllm import LLM, SamplingParams # 简单测试导入是否成功 print(vLLM 导入成功) print(fvLLM 版本: {__import__(vllm).__version__})运行python verify_installation.py如果输出 vLLM 版本号说明基础安装成功。3.4 其他部署方式说明Docker 部署对于生产环境Docker 是更干净的选择。vLLM 提供了官方镜像vllm/vllm-openai。部署命令示例docker run --runtime nvidia --gpus all \ -v ~/.cache/huggingface:/root/.cache/huggingface \ -p 8000:8000 \ vllm/vllm-openai:latest \ --model meta-llama/Llama-2-7b-chat-hfWindows WSL2在 WSL2 中安装 Ubuntu然后步骤与 Linux 相同。确保已在 Windows 主机上安装正确的 NVIDIA 驱动并在 WSL2 内安装了 CUDA Toolkit。特定硬件如海光 GPU需要从源码编译并适配其计算库过程较为复杂需参考官方社区或硬件厂商的指导。4. 核心使用流程从加载模型到批量推理vLLM 提供了高低两种层次的 API1直接使用LLM类进行推理2启动一个兼容 OpenAI API 协议的服务器。我们先从最核心的LLM类开始。4.1 初始化 LLM 引擎LLM类是 vLLM 的推理引擎它负责管理模型加载、KV Cache 内存分配和计算调度。# 文件basic_inference.py from vllm import LLM, SamplingParams # 1. 初始化模型 # 此处以 Qwen1.5-7B-Chat 为例任何 Hugging Face 格式的模型均可 model_id Qwen/Qwen1.5-7B-Chat llm LLM(modelmodel_id, tensor_parallel_size1, # 如果多卡设置为 GPU 数量 gpu_memory_utilization0.9, # GPU 内存利用率默认0.9 max_model_len4096, # 模型支持的最大上下文长度 trust_remote_codeTrue) # 对于需要远程代码的模型如 Qwen必须开启 print(f模型 {model_id} 加载成功。)关键参数解释tensor_parallel_size张量并行度用于多 GPU 推理。单卡设为1。gpu_memory_utilization控制用于模型权重和 KV Cache 的显存比例。提高此值可增加并发但可能因碎片导致 OOM。max_model_len不要超过模型本身的能力设置过大会浪费内存。trust_remote_code加载像 Qwen、ChatGLM 这类自定义模型的必要参数。4.2 配置采样参数SamplingParams控制生成文本的随机性和多样性。# 2. 配置生成参数 sampling_params SamplingParams( temperature0.8, # 温度越高越随机 top_p0.95, # 核采样保留概率质量最高的部分 max_tokens512, # 生成的最大 token 数 stop[。, \n\n], # 停止词遇到则停止生成 )4.3 执行推理使用llm.generate()方法进行推理。它支持单提示词也高效支持批处理。# 3. 准备输入提示词 prompts [ 请用中文解释一下人工智能是什么, 法国的首都是哪里, 写一个简单的 Python 函数计算斐波那契数列。 ] # 4. 执行生成 outputs llm.generate(prompts, sampling_params) # 5. 输出结果 for i, output in enumerate(outputs): prompt prompts[i] generated_text output.outputs[0].text print(f提示 {i1}: {prompt}) print(f生成 {i1}: {generated_text}\n{-*50})4.4 异步推理对于需要高并发的服务vLLM 提供了异步接口LLMEngine但更简单的做法是使用其内置的 OpenAI 兼容服务器。5. 部署为 OpenAI 兼容 API 服务器这是 vLLM 在生产环境中最常用的模式。它启动一个 HTTP 服务器其 API 接口与 OpenAI 的 ChatCompletion 和 Completion 完全兼容这意味着现有的、基于 OpenAI SDK 的应用程序可以几乎零成本地切换后端。5.1 启动服务器通过命令行启动服务器是最直接的方式。# 在终端中运行指定模型和端口 python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen1.5-7B-Chat \ --served-model-name Qwen1.5-7B-Chat \ --max-model-len 4096 \ --tensor-parallel-size 1 \ --gpu-memory-utilization 0.9 \ --port 8000参数说明--modelHugging Face 模型 ID 或本地路径。--served-model-name客户端调用时使用的模型名称。--port服务监听的端口默认为 8000。服务器启动后会输出日志信息并提示INFO: Application startup complete.。5.2 使用 OpenAI SDK 调用现在你可以像调用 OpenAI API 一样调用本地服务。首先确保安装了openai库pip install openai。# 文件call_openai_api.py from openai import OpenAI # 1. 初始化客户端指向本地 vLLM 服务器 client OpenAI( api_keytoken-abc123, # vLLM 服务器默认不需要验证可任意填写 base_urlhttp://localhost:8000/v1 # vLLM OpenAI API 的端点 ) # 2. 构造请求Chat Completions 格式 response client.chat.completions.create( modelQwen1.5-7B-Chat, # 必须与 --served-model-name 一致 messages[ {role: system, content: 你是一个乐于助人的助手。}, {role: user, content: 你好请介绍一下你自己。} ], temperature0.7, max_tokens100, streamFalse # 是否使用流式输出 ) # 3. 打印结果 print(回答, response.choices[0].message.content) print(使用 token 数, response.usage.total_tokens)5.3 流式输出 (Streaming)vLLM 完美支持流式输出这对于构建聊天应用至关重要。# 流式输出示例 stream_response client.chat.completions.create( modelQwen1.5-7B-Chat, messages[{role: user, content: 写一首关于春天的五言绝句。}], streamTrue, max_tokens50 ) print(流式输出开始) for chunk in stream_response: if chunk.choices[0].delta.content is not None: print(chunk.choices[0].delta.content, end, flushTrue) print(\n流式输出结束。)6. 性能调优与高级配置要让 vLLM 发挥最佳性能需要理解并调整一些关键参数。6.1 关键性能参数在初始化LLM或启动服务器时以下参数对性能影响最大--gpu-memory-utilization(gpu_memory_utilization)默认 0.9。提高此值如0.95可以让系统尝试使用更多显存来服务更多请求但会增加内存碎片和OOM风险。如果遇到内存不足错误可适当调低如0.8。--max-num-seqs(max_num_seqs)批处理大小即引擎同时处理的最大请求数。这是影响吞吐量的最关键参数之一。增加它可以提高GPU利用率但也会增加每个请求的延迟。需要根据你的业务在吞吐和延迟之间权衡。通常可以从 64 或 128 开始测试。--block-sizePagedAttention 中块的大小默认16。对于更长上下文的模型如 128K可以适当增大块大小如32以减少块表开销但会降低内存共享的灵活性。大多数情况无需修改。--tensor-parallel-size在多 GPU 卡上进行张量并行。将模型层均匀拆分到多个 GPU 上可以降低单卡显存压力并可能提升速度。需要确保模型本身支持张量并行。6.2 使用量化降低显存占用对于显存紧张的场景可以使用 AWQ 或 GPTQ 量化模型。vLLM 原生支持加载量化模型。# 启动服务器时指定量化模型例如 AWQ 量化版的 Qwen python -m vllm.entrypoints.openai.api_server \ --model Qwen/Qwen1.5-7B-Chat-AWQ \ --quantization awq \ --max-model-len 4096注意你需要提前从 Hugging Face Hub 下载对应的量化模型如Qwen1.5-7B-Chat-AWQ。6.3 监控与日志vLLM 服务器提供了丰富的日志信息关注以下几点INFO: vllm.engine.arg_utils: GPU Memory Utilization: 0.95 / 0.95显示当前GPU内存使用情况。吞吐量统计在持续请求下日志会输出Throughput:信息显示每秒处理的 token 数。使用--log-level DEBUG可以获取更详细的调度和内存分配信息用于深度排查问题。7. 常见问题与排查思路在实际部署中你可能会遇到以下典型问题。问题现象可能原因排查方式解决方案启动失败OutOfMemoryError1. 模型太大超过 GPU 显存。2.gpu_memory_utilization设置过高。3. 系统其他进程占用显存。1. 运行nvidia-smi查看显存占用。2. 检查模型参数量与 GPU 显存是否匹配。1. 使用量化模型AWQ/GPTQ。2. 降低gpu_memory_utilization(如 0.8)。3. 使用多卡张量并行 (--tensor-parallel-size)。推理速度慢1. 批处理大小 (max_num_seqs) 太小GPU 利用率低。2. 使用了未优化的模型格式。3. CPU 或 IO 成为瓶颈如从网络加载模型。1. 监控 GPU 利用率 (nvidia-smi)。2. 检查是否第一次加载模型冷启动慢。1. 适当增加max_num_seqs。2. 确保使用 vLLM 兼容的 Hugging Face 格式模型。3. 将模型提前下载到本地高速磁盘。API 请求返回404或5031. 服务器未成功启动。2. 请求的模型名称与--served-model-name不匹配。3. 服务器过载请求队列满。1. 检查服务器日志是否有错误。2. 确认 API 端点 URL 和模型名。3. 查看日志中是否有 “Request has been waited too long” 警告。1. 根据日志修复启动错误。2. 确保客户端model参数与服务器一致。3. 增加--max-num-seqs或优化请求速率。生成内容不符合预期1. 采样参数 (temperature,top_p) 设置不当。2. 模型本身能力问题。3. 提示词格式错误。1. 检查SamplingParams配置。2. 使用简单提示词测试模型基础能力。1. 调整采样参数如降低 temperature 使输出更确定。2. 确保使用正确的聊天模板对于 Chat 模型。3. 参考模型官方文档的提示词格式。Docker 容器内无法识别 GPU1. 未使用--gpus all参数。2. 宿主机 NVIDIA 驱动或 Docker 运行时问题。1. 在容器内运行nvidia-smi。2. 检查宿主机驱动和nvidia-container-toolkit安装。1. 确保启动命令包含--runtime nvidia --gpus all。2. 在宿主机重新安装 NVIDIA 驱动和 Docker GPU 支持。8. 最佳实践与工程建议将 vLLM 用于生产环境除了让它跑起来还需要考虑更多工程化因素。模型选择与准备优先使用 Hugging Face 格式的模型。vLLM 对其支持最好。对于生产环境将模型提前下载到本地或高速网络存储避免每次启动从网络拉取。考虑使用量化模型如 AWQ来平衡精度、速度和显存占用。在大多数应用场景下4-bit 量化的精度损失可以接受。配置管理将服务器启动参数如模型路径、并行度、内存利用率等写入配置文件或使用环境变量管理便于不同环境开发、测试、生产的部署。示例配置文件server_config.yamlmodel: /data/models/Qwen1.5-7B-Chat tensor_parallel_size: 2 gpu_memory_utilization: 0.9 max_model_len: 8192 served_model_name: production-qwen-chat port: 8080使用进程管理器如systemd或supervisor来管理 vLLM 服务进程实现自动重启和日志轮转。安全与监控vLLM 的 OpenAI API 端点默认无认证。在生产环境暴露时必须在前端配置反向代理如 Nginx并添加 API Key 认证、速率限制和 DDoS 防护。集成监控系统如 Prometheus Grafana。vLLM 提供了基础的指标端点 (/metrics)可以监控请求数、延迟、token 吞吐量、GPU 使用率等关键指标。性能与成本权衡高吞吐场景如批量处理文档增大max_num_seqs使用连续批处理牺牲一定延迟以换取最大吞吐。低延迟场景如实时对话减小max_num_seqs甚至设置为1并考虑使用更小的模型或量化模型确保单个请求的快速响应。利用PagedAttention 的内存共享特性在聊天应用中将系统提示词设置为共享前缀可以极大提升多会话并发的效率。版本与兼容性关注 vLLM 的版本更新新版本通常会带来性能提升和新功能如对新模型架构的支持。注意 PyTorch、CUDA 与 vLLM 版本的兼容性遵循官方文档的推荐组合。vLLM 的出现本质上是通过操作系统级别的内存管理思想解决了大模型推理中的核心工程难题。它让我们意识到AI 应用的瓶颈往往不在算法理论本身而在于如何将理论高效、稳定、规模化地落地。掌握 vLLM不仅仅是学会一个工具的使用更是理解这种“工程智慧”的体现。从今天开始尝试用 vLLM 部署你的下一个模型亲自感受一下吞吐量飙升带来的快感吧。如果在实践中遇到问题不妨回头再看看 PagedAttention 的原理或许就能找到调优的方向。

相关新闻

Unity2D界面动画事件避坑指南:从原理到实战的稳定解决方案

Unity2D界面动画事件避坑指南:从原理到实战的稳定解决方案

1. 项目概述:为什么Unity2D界面动画事件总在关键时刻“掉链子”? 做Unity2D项目,尤其是带UI界面的游戏或应用,界面转换动画几乎是标配。从主菜单淡入淡出,到背包面板滑入滑出,一个流畅的动画能极大提升用户…

2026/10/17 19:32:39 阅读更多 →
Proteus仿真8086与8255:微机原理与接口技术的现代实践

Proteus仿真8086与8255:微机原理与接口技术的现代实践

1. 项目概述:当经典微处理器遇见现代仿真工具如果你和我一样,是从那个“微机原理与接口技术”的年代过来的工程师,那么对“8086”和“8255”这两个名字一定有着刻骨铭心的记忆。它们不仅仅是教科书上的两个芯片型号,更是我们理解计…

2026/10/17 19:31:57 阅读更多 →
Claude Code本地模型配置指南:Ollama与DeepSeek-Coder集成实践

Claude Code本地模型配置指南:Ollama与DeepSeek-Coder集成实践

1. 项目概述:为什么我们需要在 Claude Code 中配置本地模型?最近在开发者圈子里,Claude Code 的热度持续攀升,但很多朋友在尝鲜后都遇到了同一个瓶颈:官方 API 调用有次数限制,响应速度受网络影响&#xff…

2026/10/16 15:20:02 阅读更多 →

最新新闻

PHP获取MySQL字段名:mysqli与PDO现代实践指南

PHP获取MySQL字段名:mysqli与PDO现代实践指南

简介:本资源是一份面向PHP初学者与数据库开发者的实用代码示例,聚焦于动态获取MySQL数据表字段名这一高频需求,适用于构建通用查询工具、ORM基础模块或数据库元信息分析场景。资源以PDF文档形式呈现,共1个文件,体积仅1…

2026/10/17 19:32:43 阅读更多 →
文献类型与数据库一览:从分类到检索路径的实用指南

文献类型与数据库一览:从分类到检索路径的实用指南

简介:《文献信息资源的类型特点和数据库一览》是一份系统梳理文献信息资源分类体系及常用数据库概况的PPT课件,面向高校师生、科研工作者及信息素养课堂。资源按三条主线展开:按载体区分印刷型、缩微型、声像型和电子型;按撰写目的…

2026/10/17 19:32:43 阅读更多 →
K8s高可用集群网络插件选型:Flannel与Calico对比实战

K8s高可用集群网络插件选型:Flannel与Calico对比实战

这个系列走到第6篇,前面控制平面组件已经全部就位,etcd集群也稳定了,工作节点干净利落地加了进来。结果你高高兴兴apply一个测试应用,Pod们却齐刷刷卡在ContainerCreating,describe一看,报错多半是network …

2026/10/17 19:32:43 阅读更多 →
Docker私有镜像仓库搭建实战:从Registry到Harbor的完整指南

Docker私有镜像仓库搭建实战:从Registry到Harbor的完整指南

要说今年最让我没脾气的场景,不是服务挂了,而是朋友那边部署新环境,拉一个基础镜像花了大半天。屏幕上转圈转了十分钟,进度条一动不动,问他网络,说都正常。后来我说,要不自己搭个私有镜像仓库&a…

2026/10/17 19:32:43 阅读更多 →
人事管理系统数据库课程设计:从E-R图到统计SQL的完整实战

人事管理系统数据库课程设计:从E-R图到统计SQL的完整实战

简介:面向数据库系统课程设计的人事管理后台数据库完整设计方案,以公司人事管理为业务场景,完整覆盖需求分析、概念设计、逻辑设计、物理设计、数据库实施、功能实现与总结各阶段。报告给出部门、员工、考勤、调动等核心实体关系,…

2026/10/17 19:32:43 阅读更多 →
AI取代软件工程师?顶尖观点与程序员转型实操指南

AI取代软件工程师?顶尖观点与程序员转型实操指南

1. AI 真的会抢走软件工程师的饭碗吗最近这个标题在技术圈子里传得很凶,不少人在转。说实话,我第一眼看到的时候,正在加班调一个多线程的死锁问题,当时心里还挺不是滋味的——我们在这儿焦头烂额,外面在讨论我们会不会…

2026/10/17 19:31:43 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →