当前位置: 首页 > news >正文

2025年生成式大模型部署与推理优化全景解析

✍️ 作者:闫广庆|算法专家

📍 专注:大模型推理系统优化 

📬 联系方式:624576166@qq.com

📌 前言:推理成本,正在吞噬AI应用的边际价值

2025年,我们正处在一个由技术狂热转向商业价值兑现的关键节点。生成式大模型(LLMs)已经从实验室的“宠儿”逐步走向千行百业的“劳动力”,但这场深刻的生产力变革,正面临一个日益严峻的挑战——推理成本。

与动辄耗费数月、数千万美元的训练阶段相比,推理(Inference)看似轻量,实则是一场更为持久、更为复杂的消耗战。它构成了模型生命周期中超过90%的算力开销。当我们将视角从“训练一个伟大的模型”转向“服务百万级用户”时,问题的本质发生了根本性转变:

  • Token的经济学困境:模型规模(如从7B到70B,再到180B的Mixtral)的增长,并非线性带来推理成本的增加。每个Token的生成,都需要将巨大的模型权重加载到计算核心中,这导致响应单个Token所需的计算资源(FLOPs)和时间呈指数级增长。对于免费或低客单价应用,高昂的Token成本可能迅速抹平商业模式的利润空间。

  • 长上下文的“内存墙”:从最初的2K、4K,到如今8K、32K成为标配,甚至128K、200K的长上下文应用(如法律文书分析、财报解读、代码库问答)层出不穷。这直接挑战了现代计算架构的核心瓶颈——内存带宽。每个输入Token都会生成一个庞大的Key-Value对(KV Cache),对于一个Batch Size为32、上下文长度为128K的请求,其KV Cache的峰值内存占用可能高达数百GB甚至TB级别,这远超单张GPU的显存容量,带来了巨大的数据搬运和管理开ikun难。

  • 并发性的“天花板”:单用户、单线程的场景下,一块A100或H100或许能让Qwen-72B跑出不错的延迟。但真实世界的应用需要面对成千上万用户的并发请求。如何在保证低延迟(Time-to-First-Token, TTFT)和高吞吐(Tokens-per-Second, TPS)的同时,服务尽可能多的并发用户,是衡量一个推理系统成熟与否的核心标准。传统的朴素批处理(Naive Batching)在处理不同长度的请求时,会因“木桶效应”导致大量算力空闲,严重制约并发能力。

  • 多模态融合的复杂度:以CogVLM、LLaVA、Gemini为代表的多模态模型,其推理流程远比纯文本模型复杂。它不仅包含文本的解码,还涉及到前端图像的预处理(如ViT Patching)、多模态特征的对齐与融合。这给请求调度、资源分配和执行引擎带来了新的、异构的挑战。

因此,推理优化工程已经从过去的“锦上添花”演变为AIGC项目能否存活的“生命线”。它不再是单纯的算法或工程问题,而是一个涉及算法、软件、硬件、系统设计的综合性挑战。谁能在这场性能、成本、并发与稳定性的多维博弈中找到最佳平衡点,谁就掌握了将AI愿景转化为商业现实的“最后一公里”交付能力。

本文将系统性地解构2025年最前沿的生成式大模型推理优化技术与系统设计,从vLLM的革命性调度机制,到投机性解码(Speculative Decoding)的最新进展,再到多卡异构部署的尖端策略,为您呈现一幅完整的技术全景图。

🧩 一张图看懂生成式模型推理优化的核心流程

在深入探讨各项技术之前,我们首先通过一个高度概括的流程图,来理解一个现代、高效的LLM推理系统是如何处理用户请求的。这个流程远比“输入->模型->输出”复杂,它是一个精心设计的、多阶段协作的流水线。

这个流程图揭示了现代推理系统的核心思想:将单次、沉重的解码过程,分解为一系列轻量、高效、可并行的微操作,并通过精巧的调度和内存管理,最大化硬件利用率。

🚀 核心技术解构(2025最新趋势与深度剖析)

1. 🔥 vLLM 推理引擎:一场由内存管理引发的调度革命

如果说2023-2024年是推理框架的“百家争鸣”时代(FasterTransformer, DeepSpeed-Inference, HuggingFace TGI),那么2025年,vLLM 已经凭借其创新的内存管理和调度机制,成为了事实上的业界标杆。理解vLLM,是理解现代LLM推理优化的第一步。

传统推理框架的痛点(“内存碎片化”与“请求阻塞”):

在vLLM出现之前,主流框架为每个请求预先分配一块连续的、能够容纳其最大可能上下文长度的KV Cache显存空间。这导致了两个致命问题:

  1. 内部碎片化:如果一个请求最大长度为2048,但当前只处理了100个token,那么剩余1948个token的预留空间就处于闲置状态,无法被其他请求使用。

  2. 外部碎片化:随着请求的来来往往,显存中会产生大量不连续的小块空闲空间,即使总空闲量很大,也可能因为找不到一块足够大的连续空间来服务新请求,导致请求排队等待。

  3. 阻塞式批处理 (Blocked Batching):为了将请求打包(batch),系统必须等待当前批次的所有请求都生成完一个token后,才能进入下一轮。如果批次中有一个请求的预处理或后处理很慢,所有其他请求都得等它,这就是“木桶效应”。

vLLM的核心创新:PagedAttention

vLLM的作者从操作系统中经典的虚拟内存和分页(Paging)机制中获得灵感,设计了PagedAttention。

  • 核心思想:不再为请求分配连续的显存,而是将KV Cache在逻辑上划分为“块”(Block),每个块的大小固定(如16个token)。物理显存也同样划分为相同大小的块。系统维护一张“页表”(Page Table),将逻辑块映射到物理块。

  • 带来的革命性优势:

  • 近乎零内存浪费:按需分配物理块,请求处理到哪里,就分配到哪里,彻底消除了内部碎片。

  • 高效的内存共享:对于复杂的应用场景,如并行采样(生成多个候选序列)或Beam Search,不同的输出序列可以共享相同的Prompt部分的KV Cache物理块,只需在各自的页表中指向这些共享块即可,极大地节省了显存。对于多租户服务,相同的基础Prompt也可以在用户间共享。

  • 灵活的内存管理:复制、重排、释放KV Cache,都变成了对页表指针的操作,而不是大规模的数据拷贝,速度极快。

vLLM的另一大杀器:连续批处理 (Continuous Batching)

基于PagedAttention,vLLM实现了一种更为先进的调度策略——连续批处理。

  • 工作原理:调度器不再以“批”为单位思考,而是以“迭代”或“时间步”为单位。在每个时间步,调度器检查所有正在运行的请求。只要GPU的计算资源还有空闲,并且有请求需要生成下一个token,调度器就会立即将其加入到当前批次中执行,无需等待其他请求。一个请求完成后,其占用的物理块会立刻被回收,并可以马上分配给新进入的请求。

  • 效果:这种“见缝插针”式的调度方式,使得GPU的利用率(MFU, Model FLOPs Utilization)可以长期维持在非常高的水平(通常在60%-80%),相比传统框架提升了2-4倍的吞吐量。

2025年vLLM新趋势:异构与混合部署

vLLM的演进并未停止。面对日益复杂的硬件环境,它正在向更高级的部署形态发展:

  • 多GPU异构支持:早期的多卡部署(Tensor Parallelism)要求所有GPU型号和数量必须高度统一,且Batch Size需要是卡数的整数倍。最新的vLLM版本正在打破这一限制,允许在同一个集群中混合使用不同型号的GPU(如A100与H100),并能动态地将模型的不同层(Pipeline Parallelism)或不同部分(Tensor Parallelism)调度到最合适的硬件上,实现更灵活、更具成本效益的资源池化。

  • 混合模型服务 (Mixed-Model Serving):在单个vLLM实例中,同时服务多个不同架构、不同大小的模型。通过共享底层的调度器和PagedAttention管理器,可以进一步提升整个GPU集群的利用率,特别适合需要提供多种模型选择的平台型服务。

2. ⚡ 投机性解码:用“草稿”换时间的艺术

LLM推理是自回归(Auto-regressive)的,即生成第N个token必须依赖第N-1个token,这个串行过程是延迟的主要来源。**投机性解码(Speculative Decoding)或称草稿验证(Draft & Verify)**架构,是打破这一瓶颈、实现并行化加速的当前最优解。

核心思想:用一个“小而快”的草稿模型,一次性预测出未来K个可能的token(草稿),然后用“大而准”的主力模型,通过一次前向传播并行地验证这K个token的正确性。如果草gao命中率高,就相当于用一次大模型计算的延迟,换来了K个token的生成,从而实现数倍的加速。

详细工作流程:

  1. 草稿生成 (Drafting):

  • 输入: 当前已经确认的上下文序列 x_i。

  • 模型: 一个轻量级模型,其参数量远小于主力模型(如用Qwen-1.8B作草稿,Qwen-72B作主力)。或者,也可以是主力模型的一个或多个“预测头”(Medusa Head),这些头经过专门训练,用于预测未来多个位置的token。

  • 输出: 并行生成 K 个草稿token序列 d_1, d_2, ..., d_K。

  1. 并行验证 (Verification):

  • 构造输入: 将原始上下文 x_i 与生成的 K 个草稿token拼接成一个新的序列 [x_i, d_1, d_2, ..., d_K]。

  • 模型: 主力大模型。

  • 关键技术: Tree Attention 或类似的注意力掩码机制。在这次前向传播中,d_1可以attend到x_i,d_2可以attend到x_i和d_1,以此类推。这使得大模型可以在一次计算中,并行地得到在x_i之后应该生成什么,在x_i, d_1之后应该生成什么... 一直到在x_i, ..., d_{K-1}之后应该生成什么。

  • 输出: 主力模型对于每个位置的logits分布 p_1, p_2, ..., p_K。

  1. 接受与修正 (Acceptance & Correction):

  • 比较: 从 j=1 到 K,逐个比较草稿token d_j 和主力模型在对应位置预测出的最可能的token argmax(p_j)。

  • 接受: 如果 d_j 与 argmax(p_j) 相同,则接受该草稿token,继续比较下一个。

  • 拒绝与采样: 一旦在位置 j 发现不匹配 (d_j != argmax(p_j)),则立即停止比较。所有匹配的 j-1 个token被确认为最终输出。对于第 j 个位置,我们不能直接用 argmax(p_j),因为这会引入偏差。正确的做法是基于修正后的概率分布进行采样。修正公式为:p'_j = normalize(max(0, p_j - p_{draft_j})),其中 p_{draft_j} 是草稿模型在第j步的概率分布。然后从 p'_j 中采样一个token作为第 j 个位置的最终输出。

  • 循环: 将所有新确认的token(j-1个接受的 + 1个新采样的)加入上下文,开始下一轮的草稿生成。

核心挑战与2025年趋势:

  • 草稿命中率是关键: 如果草稿模型与主力模型的分布差异太大,导致接受率很低(例如,每次只能接受1-2个token),那么为生成和验证草稿付出的额外计算开销可能会超过收益,反而导致延迟增加。

  • 动态K值调整: 2025年的先进系统不再使用固定的草稿长度K。而是会根据当前任务的复杂度、历史接受率等信息,动态调整K的大小。例如,在生成代码或进行事实性问答时,文本的确定性较高,可以采用较大的K;而在进行创意写作时,则应采用较小的K。

  • 自适应草稿模型: 未来的研究方向之一是让草稿模型能够在线学习主力模型的行为,或者在推理过程中动态调整自身参数,以持续提升与主力模型的一致性。

3. 🧠 KV Cache 管理:从内存优化到调度策略的延伸

KV Cache是LLM推理的“阿喀琉斯之踵”。高效的管理不仅关乎内存占用,更直接影响系统的吞吐量和对长上下文的处理能力。除了vLLM的PagedAttention之外,还有几种关键的补充策略。

  • 前缀缓存 (Prefix Caching / Rotation):

  • 场景: 在多轮对话、文档问答等场景中,系统的初始指令(System Prompt)或文档的开头部分是固定不变的。

  • 策略: 将这部分固定内容计算出的KV Cache单独缓存起来,并在后续的所有请求中复用。当上下文长度超过限制时,不是简单地从头丢弃,而是保留这个“锚点”式的前缀,然后采用滑动窗口策略管理变化的部分。这被称为Prefix Rotation或StreamingLLM的核心思想,它能以有限的显存支持几乎无限长的对话历史,同时保证对话的连贯性。

  • 滑动窗口注意力 (Sliding Window Attention, SWA):

  • 代表模型: Mistral, Mixtral。

  • 策略: 在模型层面,注意力计算不再是全局的,每个token只关注其左侧一个固定大小(如4096)的窗口内的token。这使得KV Cache的大小不再随序列长度无限增长,而是在达到窗口大小后保持恒定。

  • 优势: 极大降低了长序列推理时的显存占用和计算量。

  • 挑战: 会损失对窗口外长距离依赖的捕捉能力。一些变种如Dilated Sliding Window正在尝试缓解此问题。

  • 动态量化 (Dynamic Quantization):

  • 背景: KV Cache通常以FP16或BF16格式存储,每个值占用2个字节。

  • 策略: 将KV Cache动态地量化为INT8甚至INT4格式存储,在使用时再反量化回FP16。例如,可以使用**AWQ (Activation-aware Weight Quantization)或GPTQ (Generative Pre-trained Transformer Quantization)**等方法,找到对模型性能影响最小的量化方案。

  • 效果: 可以直接将KV Cache的显存占用降低2-4倍,效果显著。

  • 权衡: 量化会带来精度损失,需要在性能和成本之间做出权衡。对于金融、医疗等高精度要求的场景需谨慎评估。

4. 🛠️ 多卡与异构部署优化:超越单机性能的极限

当模型大到单张(甚至多张同构)GPU无法容纳时,复杂的多卡与异构部署策略就变得至关重要。

  • 张量并行 (Tensor Parallelism, TP):

  • 原理: 将模型权重(特别是大的矩阵乘法)在多个GPU上进行切分,每个GPU只负责计算一部分。例如,一个全连接层的权重矩阵W可以按列切分为[W1, W2, W3, W4],分别放在4个GPU上。输入X广播到所有GPU,每个GPU计算X*Wi,最后通过All-Reduce操作将结果合并。

  • 优势: 计算密集,适合带宽要求高的NVLink互联。

  • 挑战: 通信开销大,对GPU间的互联带宽极为敏感。

  • 流水线并行 (Pipeline Parallelism, PP):

  • 原理: 将模型的不同层(Layers)放置在不同的GPU上,形成一个流水线。数据像在工厂流水线上一样,依次流过每个GPU。例如,GPU0处理1-10层,GPU1处理11-20层,以此类推。

  • 优势: 通信开销相对较小,只在流水线阶段的边界发生。

  • 挑战: 容易产生“流水线气泡”(Pipeline Bubble),即某些时间点上,部分GPU处于空闲等待状态。需要通过微批处理(Micro-batching)和精心设计的调度来减小气泡。

  • 2025年的高级组合与动态策略:

  • 混合并行 (TP + PP + DP): 现代大规模部署(如训练和推理BLOOM-176B)通常结合使用张量并行(在节点内)和流水线并行(跨节点),有时还会结合数据并行(Data Parallelism, DP)来提升吞吐。

  • vLLM的多卡动态并行: vLLM正在将它的动态调度能力扩展到多卡场景。它允许流水线阶段的划分不必是均匀的,可以根据每组层的计算负载动态分配。更重要的是,它支持在非整除的GPU数量上部署模型,例如用3张或5张卡运行一个原本为4卡或8卡设计的模型,这极大地提升了部署的灵活性。

  • S-LoRA与解耦推理: S-LoRA等框架提出了一种更激进的思路,将Adapter(用于微调)的计算与基础模型的计算解耦。基础模型(如Llama-7B)可以由一个大的、统一的vLLM实例服务,而大量不同的LoRA Adapter可以动态地加载和卸载,与基础模型的KV Cache进行合并。这使得服务成千上万个微调模型成为可能,且成本极低。

  • 异构调度 (CPU/NPU Offloading): 对于某些非计算密集型任务,如Prompt的预处理、Logits的采样和后处理,可以将其从宝贵的GPU上卸载(Offload)到CPU甚至专用的NPU上执行,形成一个GPU+CPU+NPU的异构解码架构,进一步压榨系统性能。

5. 📈 推理优化评估体系:没有度量,就没有优化

任何优化工作都必须由一个全面、科学的评估体系来指导。单纯地看“快了多少”是远远不够的。

评估维度

核心指标

详细说明

常用工程工具

延迟 (Latency)

Time-to-First-Token (TTFT)

从收到请求到返回第一个Token的时间。直接影响用户交互的“响应感”。

DeepEval, 自定义日志打点

Time-per-Output-Token (TPOT)

生成每个后续Token的平均时间。决定了流式输出的速度。

vLLM stats, Prometheus

P95/P99 Latency

95%或99%的请求延迟都低于该值。衡量系统在负载下的稳定性。

Locust, k6, Gatling

吞吐量 (Throughput)

Tokens-per-Second (TPS)

系统每秒钟总共能生成多少个Token。衡量系统的总处理能力。

vLLM benchmark scripts

Queries-per-Second (QPS)

系统每秒能处理的请求数。与平均请求长度相关。

Locust, k6

资源利用率

GPU Utilization (%)

GPU核心的繁忙程度。

nvidia-smi, DCGM, Prometheus Node Exporter

Model FLOPs Utilization (MFU)

模型实际达到的计算速度与理论峰值的比率。比GPU Util更能反映有效计算。

自定义计算

KV Cache Hit Ratio (%)

在投机性解码中,草稿Token被接受的比例。直接关系到加速效果。

自定义验证日志分析

成本效益

Cost-per-Million-Tokens ($)

处理一百万个Token(输入+输出)的总成本。最终的商业衡量指标。

结合云厂商账单和监控数据计算

服务质量

并发承载能力

在满足特定延迟SLA(如P95 TTFT < 500ms)下的最大并发用户数。

通过压力测试绘制QPS vs. Latency曲线获得

系统可用性 (Availability)

服务正常运行时间的百分比。

Pingdom, UptimeRobot, Grafana

🧳 实战部署建议(适用于金融 / 教育 / 政府等典型行业)

理论结合实际,以下是针对不同行业需求的具体部署建议:

  1. 通用基础架构栈:

  • 推理引擎: vLLM 是当前的首选,其社区活跃,性能优越。

  • 模型服务: Triton Inference Server (NVIDIA) 或 TorchServe (PyTorch) 可以与vLLM结合,提供更强大的模型管理、版本控制和HTTP/gRPC接口。

  • 模型选择: Qwen (通义千问) 系列和 Mixtral (MoE模型) 在性能和开源生态方面表现出色,是2025年的高性价比选择。

  • 监控: Prometheus + Grafana 组合用于指标收集和可视化,Loki 用于日志聚合。

  1. 金融行业 (量化交易、智能投顾):

  • 核心需求: 极低的延迟(TTFT和TPOT都至关重要)。

  • 优化重点:

  • 投机性解码: 必须启用。可以训练一个针对金融新闻或交易信号的专用小模型作为Draft Model,以提高命中率。

  • 硬件: 优先选择拥有高频核心和高速缓存的最新GPU(如H200/B100)。

  • 量化: 谨慎使用,需要对模型在关键任务上的精度进行严格回测。

  1. 法律与教育行业 (文书审查、个性化辅导):

  • 核心需求: 超长上下文处理能力,高精度。

  • 优化重点:

  • KV Cache管理: 重点优化。采用Prefix Caching缓存法律条文或教材知识库,并结合Sliding Window Attention模型。

  • 动态量化: 可以考虑对KV Cache进行INT8量化,以在不严重影响精度的前提下,支持更大的上下文窗口。

  • RAG集成: 推理系统需要与高效的RAG(Retrieval-Augmented Generation)系统紧密集成,推理服务器本身要能高效处理携带大量检索文档的Prompt。

  1. 政府与公共服务 (智能客服、政策问答):

  • 核心需求: 高并发、高稳定性、数据安全。

  • 优化重点:

  • vLLM的Continuous Batching: 充分利用其高吞吐特性,服务海量市民请求。

  • 多卡部署: 采用多卡流水线并行,保证单个请求的稳定性,即使部分硬件故障也能通过冗余切换。

  • 私有化部署: 所有技术栈都应支持在本地数据中心或私有云中部署,模型和数据不出域。

🧑‍💻 作者项目实践(Qwen 推理优化落地案例)

在过去一年的多个AIGC项目中,我主导或参与了基于上述技术的优化实践,这里分享几个典型案例:

  • 案例一:国产AI芯片上的Qwen-72B适配与优化

  • 挑战: 国产芯片的算子库、编译器和驱动与NVIDIA生态存在差异,vLLM无法直接运行。

  • 实践: 我们团队与芯片厂商合作,重写了关键的Attention算子,并实现了PagedAttention的核心逻辑。通过多指令路径优化(针对不同长度的序列采用不同的计算策略),最终在特定任务上达到了同代NVIDIA GPU约70%的性能,成功将Qwen部署于信创环境中。

  • 案例二:基于Lookahead的投研报告生成系统

  • 场景: 金融分析师使用该系统快速生成对公司财报的初步分析报告。

  • 实践: 我们使用一个Qwen-7B模型作为草稿模型,Qwen-72B作为主力模型。通过对草稿模型进行金融领域的微调,使其预测的专有名词、数据和行文风格与主力模型高度一致,最终将草稿接受率从平均2.5提升到4.8,端到端Token生成延迟下降了45%。

  • 案例三:支持多智能体(Multi-Agent)的异构推理调度

  • 场景: 一个多智能体系统中,有负责规划的、负责搜索的、负责代码执行的多个Agent,它们可能基于不同大小的模型。

  • 实践: 我们设计了一个共享KV Cache Slot的调度器。当多个Agent的请求到来时,调度器会识别出它们共享的初始Prompt部分,并让其在物理内存中只存储一份。同时,将计算密集型的Agent(如规划Agent)调度到H100上,而将IO密集型或小模型Agent(如工具调用检查)调度到A100上,实现了异构硬件的协同推理,整体资源利用率提升了30%。

📚 推荐资源与进阶阅读

  • vLLM官方GitHub: https://github.com/vllm-project/vllm (必读)

  • Speculative Decoding 原始论文: [2211.17192] Fast Inference from Transformers via Speculative Decoding

  • Lookahead Decoding 论文: [2403.10716] Curves and surfaces making a constant angle with a parallel transported direction in Riemannian spaces

  • OpenCompass (司南): https://github.com/open-compass/opencompass (全面的大模型基准评估工具)

  • Hugging Face Text Generation Inference (TGI): https://github.com/huggingface/text-generation-inference (另一个优秀的开源推理框架)

  • Llama.cpp: https://github.com/ggerganov/llama.cpp (在CPU和边缘设备上进行推理优化的典范)

🧾 总结:推理优化是系统工程,也是AI应用落地的决胜战场

我们必须清醒地认识到,生成式AI的商业化瓶颈,已不再是模型本身的能力,而是推理系统的交付能力。一个仅存在于Jupyter Notebook中的模型,价值趋近于零。

未来的推理优化,将不再是孤立的“工程加速器”,而是深度嵌入业务逻辑、感知用户体验、驱动成本控制的三位一体的中枢系统。它需要算法工程师、系统工程师和硬件工程师的跨界协作,需要对整个技术栈的深刻理解。

真正的AI核心竞争力,不仅仅是拥有一个强大的“大脑”,更是懂得如何让这个“大脑”以最高效、最灵活、最稳定的方式思考和响应。这片充满挑战与机遇的战场,值得我们每一位AI从业者投入其中。

如果你也在大模型部署与优化的道路上探索,欢迎一起交流。

🌟 评论 / 点赞 / 收藏 / 私信交流,共建更强大的大模型推理生态! 🌟

http://www.dtcms.com/a/319918.html

相关文章:

  • 14天搞定Excel公式:告别加班,效率翻倍!
  • 【YOLOv8改进 - 上采样】EUCB:(Efficient Up-convolution Block,高效上卷积块)实现特征图尺度匹配和高效上采样
  • 网络编程基石:域名系统与默认端口号详解
  • 文章采集发布Destoon网站技巧
  • C语言函数与预编译:模块化编程的精髓
  • 【AI论文】细胞锻造(CellForge):虚拟细胞模型的智能体化设计
  • 上岸AAAI 2025:自适应框架+前沿算法,顶会热点方向
  • 【VLLM篇】:原理-实现
  • 【论文阅读】基于元模型的体系知识图谱构建
  • spring boot学习计划
  • 什么是AI Agents
  • 机器学习算法篇(四)决策树算法
  • XCZU19EG-2FFVB1517I FPGA Xilinx AMD ZynqUltraScale+ MPSoC
  • 如何验证Go代理是否设置成功?
  • 深入探索C++模板实现的单例模式:通用与线程安全的完美结合
  • SpringBoot的优缺点
  • MyBatis 操作数据库
  • Orange的运维学习日记--33.DHCP详解与服务部署
  • Linux 系统启动、systemd target 与 root 密码重置指南
  • vector模拟实现
  • Seelen UI:高效的设计与原型制作工具
  • 解决winform中的listbox实现拖拽时,遇到combox控件会闪烁的问题
  • APM-SigNoz可观测性系统搭建
  • TDengine IDMP 文档介绍
  • 密集场所漏检率↓78%!陌讯自适应多模态口罩识别算法实战解析
  • 【bioinfo】ncbiRefSeq数据库下载
  • 零基础-动手学深度学习-9.1. 门控循环单元(GRU)及代码实现
  • 解决 npm i node-sass@4.12.0 安装失败异常 npm i node-sass异常解决
  • 如何使用 pnpm创建Vue 3 项目
  • 玳瑁的嵌入式日记D14-0807(C语言)