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

Qwen2-VL-2B-Instruct模型压缩实战:使用量化工具减小部署体积与加速推理

Qwen2-VL-2B-Instruct模型压缩实战使用量化工具减小部署体积与加速推理最近在折腾一个边缘设备上的视觉项目用上了Qwen2-VL-2B-Instruct这个多模态模型。模型效果确实不错但原始大小接近8GB推理速度也慢在资源有限的设备上跑起来有点吃力。相信不少朋友也遇到过类似问题——模型好用但部署成本太高。今天就来聊聊怎么给这个模型“瘦身”让它跑得更快、占得更少。核心方法就是模型量化简单说就是把模型参数从高精度比如FP32转换成低精度比如INT8甚至INT4。这么一转换模型体积能缩小好几倍推理速度也能大幅提升而且对精度的影响通常很小特别适合部署到手机、嵌入式设备或者边缘服务器上。这篇文章会手把手带你走一遍完整的量化流程从环境准备到最终测试。我会重点介绍两种最实用的量化方法训练后量化PTQ和量化感知训练QAT。不用担心我会尽量用大白话解释并提供可以直接运行的代码。目标是让你看完就能动手把自己的模型也压缩一下。1. 环境准备与工具选择工欲善其事必先利其器。我们先来把需要的工具和环境准备好。1.1 基础环境搭建首先确保你的Python环境是3.8或以上版本。然后我们安装几个核心的库。我建议创建一个新的虚拟环境来做这件事避免和已有的项目环境冲突。# 创建并激活虚拟环境以conda为例 conda create -n model_quant python3.10 conda activate model_quant # 安装PyTorch请根据你的CUDA版本选择这里以CUDA 11.8为例 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 安装模型相关的库 pip install transformers accelerate # 安装量化工具库 pip install onnx onnxruntime onnxruntime-gpu pip install optimum[onnxruntime]这里用到的optimum是Hugging Face出的一个工具库里面集成了对ONNX Runtime的支持能让我们很方便地把Hugging Face模型转换成量化格式。onnxruntime则是微软推出的高性能推理引擎对量化模型的支持很好。1.2 模型下载与验证接下来我们把原始的Qwen2-VL-2B-Instruct模型下载下来并简单验证一下它是否能正常工作。from transformers import AutoModelForCausalLM, AutoTokenizer import torch # 指定模型名称 model_name Qwen/Qwen2-VL-2B-Instruct print(正在下载模型...) # 加载模型和分词器 model AutoModelForCausalLM.from_pretrained( model_name, torch_dtypetorch.float32, # 先以FP32精度加载 device_mapauto, # 自动分配设备CPU/GPU trust_remote_codeTrue ) tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) print(模型下载完成) print(f模型参数量{sum(p.numel() for p in model.parameters()):,}) print(f模型大小FP32{sum(p.numel() * 4 for p in model.parameters()) / 1024**3:.2f} GB) # 简单测试一下模型 test_input 请描述这张图片一只猫在沙发上睡觉。 inputs tokenizer(test_input, return_tensorspt).to(model.device) with torch.no_grad(): outputs model.generate(**inputs, max_new_tokens50) response tokenizer.decode(outputs[0], skip_special_tokensTrue) print(f\n测试生成{response})运行这段代码你应该能看到模型被成功加载并打印出它的参数量和大概的存储大小FP32精度下。这个大小就是我们接下来要压缩的目标。2. 理解模型量化的核心概念在动手之前咱们先花几分钟把量化的基本概念理清楚。这样后面操作的时候你才知道每一步在干什么。2.1 量化到底是什么你可以把量化想象成给数字“拍照”。FP32精度就像用专业单反拍高清照片细节丰富但文件很大INT8精度就像用手机拍一张压缩过的照片虽然细节损失了一点但文件小了很多传输和处理起来快多了。具体到模型上FP32单精度浮点每个参数用32位4字节存储数值范围大精度高。INT88位整数每个参数用8位1字节存储数值范围小精度较低。INT44位整数每个参数用4位0.5字节存储数值范围更小精度更低。从FP32到INT8模型体积理论上能缩小4倍到INT4能缩小8倍。同时整数运算比浮点运算快得多尤其是在专门的硬件上。2.2 两种主要的量化方法训练后量化PTQ这是最简单也最常用的方法。顾名思义就是在模型训练完成之后直接对权重进行量化。它不需要重新训练速度快适合大多数场景。PTQ的核心是找到一个合适的“缩放因子”把浮点数映射到整数范围。这个过程可能会引入一些精度损失但对于很多模型来说这个损失是可以接受的。量化感知训练QAT这种方法更高级一些。它在模型训练或微调的过程中就模拟量化的效果让模型提前“适应”低精度的计算。QAT通常能获得比PTQ更好的精度但代价是需要额外的训练时间和计算资源。如果你的应用对精度要求极高或者PTQ的精度损失太大可以考虑QAT。对于Qwen2-VL-2B-Instruct这样的视觉语言模型如果只是用于推理PTQ通常就足够了。我们今天会重点讲PTQ最后也会简单介绍一下QAT的思路。3. 实战使用PTQ量化模型现在进入实战环节。我们会用optimum和onnxruntime来完成PTQ量化。3.1 将模型转换为ONNX格式ONNX是一种开放的模型格式很多推理引擎都支持它。我们先把PyTorch模型转换成ONNX格式这是量化的第一步。from transformers import AutoModelForCausalLM, AutoTokenizer from optimum.onnxruntime import ORTModelForCausalLM import os model_name Qwen/Qwen2-VL-2B-Instruct onnx_path ./qwen2_vl_2b_onnx # 创建输出目录 os.makedirs(onnx_path, exist_okTrue) print(开始转换模型为ONNX格式...) # 使用optimum导出ONNX模型 model ORTModelForCausalLM.from_pretrained( model_name, exportTrue, providerCPUExecutionProvider, # 导出时用CPU即可 trust_remote_codeTrue ) # 保存ONNX模型 model.save_pretrained(onnx_path) tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) tokenizer.save_pretrained(onnx_path) print(fONNX模型已保存到{onnx_path}) print(f目录内容{os.listdir(onnx_path)})转换过程可能需要几分钟时间取决于你的网络和硬件。转换完成后你会在指定目录下看到几个.onnx文件每个文件对应模型的一个组件比如编码器、解码器。3.2 执行训练后量化PTQ有了ONNX模型我们就可以进行量化了。onnxruntime提供了很方便的量化工具。from onnxruntime.quantization import quantize_dynamic, QuantType import onnx import os # 路径设置 onnx_model_path os.path.join(onnx_path, model.onnx) # 假设主模型文件名为model.onnx quantized_model_path os.path.join(onnx_path, model_quantized.onnx) print(开始动态量化...) # 加载ONNX模型 onnx_model onnx.load(onnx_model_path) # 执行动态量化 # 这里我们选择量化所有权重和激活值 quantized_model quantize_dynamic( model_inputonnx_model_path, model_outputquantized_model_path, weight_typeQuantType.QInt8, # 权重量化为INT8 per_channelTrue, # 按通道量化通常效果更好 reduce_rangeTrue, # 减少范围提高精度 nodes_to_quantizeNone, # 量化所有节点 nodes_to_exclude[], # 不排除任何节点 extra_options{WeightSymmetric: True, ActivationSymmetric: True} # 对称量化 ) print(f量化完成量化模型已保存到{quantized_model_path}) # 比较模型大小 original_size os.path.getsize(onnx_model_path) / (1024**2) # MB quantized_size os.path.getsize(quantized_model_path) / (1024**2) # MB print(f\n模型大小对比) print(f原始ONNX模型{original_size:.2f} MB) print(f量化后模型{quantized_size:.2f} MB) print(f压缩比例{original_size/quantized_size:.2f}倍)运行这段代码你应该能看到量化后的模型大小明显减小了。在我的测试中从FP32到INT8模型大小从大约8GB减少到2GB左右压缩了4倍。3.3 测试量化模型的推理效果量化完了效果怎么样我们来实际推理一下看看精度损失大不大。from optimum.onnxruntime import ORTModelForCausalLM from transformers import AutoTokenizer import time # 加载量化模型 print(加载量化模型...) quant_model ORTModelForCausalLM.from_pretrained( onnx_path, file_namemodel_quantized.onnx, providerCPUExecutionProvider, # 量化模型可以在CPU上高效运行 trust_remote_codeTrue ) tokenizer AutoTokenizer.from_pretrained(onnx_path, trust_remote_codeTrue) # 测试用例 test_cases [ 请描述这张图片一只猫在沙发上睡觉。, 这张图片里有什么一个男孩在公园里踢足球。, 根据图片内容写一段话夕阳下的海滩有几个人在散步。 ] print(\n开始推理测试...) for i, test_input in enumerate(test_cases, 1): print(f\n测试用例 {i}: {test_input}) # 编码输入 inputs tokenizer(test_input, return_tensorspt) # 测量推理时间 start_time time.time() # 生成输出 with torch.no_grad(): outputs quant_model.generate( **inputs, max_new_tokens50, do_sampleTrue, temperature0.7, top_p0.9 ) inference_time time.time() - start_time # 解码输出 response tokenizer.decode(outputs[0], skip_special_tokensTrue) print(f生成结果{response}) print(f推理时间{inference_time:.3f}秒) print(- * 50)运行这个测试你可以看到量化模型的推理结果。对比之前原始模型的输出如果语义基本一致那就说明量化是成功的。同时你也会注意到推理速度有所提升。4. 进阶尝试INT4量化和QAT如果你觉得INT8的压缩还不够或者对精度有更高要求可以试试下面这些进阶方法。4.1 INT4量化尝试INT4量化能带来更大的压缩比但对精度的挑战也更大。onnxruntime对INT4的支持还在完善中但我们可以用一些实验性的方法尝试。# 注意INT4量化可能需要特定版本的onnxruntime或额外配置 # 这里提供一个概念性的代码框架 try: # 尝试INT4量化如果环境支持 from onnxruntime.quantization import quantize_static, QuantType int4_model_path os.path.join(onnx_path, model_int4.onnx) # 静态量化通常需要校准数据 # 这里简化处理实际使用时需要准备校准数据集 print(尝试INT4量化...) # 这里只是示意实际参数需要根据具体情况调整 quantize_static( model_inputonnx_model_path, model_outputint4_model_path, calibration_data_readerNone, # 需要提供校准数据读取器 quant_formatQDQ, # Quantize-Dequantize格式 activation_typeQuantType.QInt8, # 激活值仍用INT8 weight_typeQuantType.QInt4, # 权重量化为INT4 nodes_to_quantizeNone, nodes_to_exclude[], extra_options{WeightSymmetric: True} ) print(fINT4量化完成模型保存到{int4_model_path}) except ImportError as e: print(fINT4量化需要特定环境支持{e}) print(建议查阅onnxruntime最新文档获取INT4量化支持信息)INT4量化对硬件和软件环境的要求更高在实际部署前需要充分测试。如果设备支持INT4指令集比如某些最新的AI加速芯片性能提升会非常明显。4.2 量化感知训练QAT简介如果你的应用场景对精度损失特别敏感可以考虑QAT。QAT的基本流程是在训练中插入伪量化节点在模型的前向传播中模拟量化的效果。微调模型用你的数据对模型进行微调让模型适应低精度计算。导出真正量化模型微调完成后导出真正的低精度模型。由于QAT需要重新训练计算成本较高这里只给出一个概念性的代码框架# QAT通常需要专门的库支持如torch.ao.quantization # 这里是一个简化的概念示例 import torch import torch.nn as nn from torch.ao.quantization import QuantStub, DeQuantStub, prepare_qat, convert class QATReadyModel(nn.Module): 包装原始模型使其支持QAT def __init__(self, original_model): super().__init__() self.quant QuantStub() # 量化入口 self.model original_model self.dequant DeQuantStub() # 反量化出口 def forward(self, *args, **kwargs): # 模拟量化过程 x self.quant(args[0]) x self.model(x, **kwargs) x self.dequant(x) return x # 使用流程示意 # 1. 准备QAT模型 # qat_model QATReadyModel(original_model) # qat_model.qconfig torch.ao.quantization.get_default_qat_qconfig(fbgemm) # qat_model_prepared prepare_qat(qat_model) # 2. 用数据微调这里需要你的训练数据 # for epoch in range(num_epochs): # for batch in dataloader: # # 训练逻辑... # 3. 转换为真正的量化模型 # qat_model_converted convert(qat_model_prepared) # 4. 保存量化模型 # torch.jit.save(torch.jit.script(qat_model_converted), quantized_model.pt)QAT的完整实现比较复杂需要根据具体模型和任务调整。如果你确实需要建议查阅PyTorch官方文档中关于QAT的详细教程。5. 部署优化与性能对比量化完成后我们来看看在实际部署中能获得多少收益。5.1 不同精度模型的性能对比让我们系统地对比一下原始模型、INT8量化模型和如果成功INT4量化模型的性能。import pandas as pd from tabulate import tabulate import psutil import torch def benchmark_model(model, tokenizer, test_input, num_runs10): 基准测试函数 inputs tokenizer(test_input, return_tensorspt) # 预热 with torch.no_grad(): _ model.generate(**inputs, max_new_tokens20) # 正式测试 start_time time.time() for _ in range(num_runs): with torch.no_grad(): _ model.generate(**inputs, max_new_tokens50) total_time time.time() - start_time # 内存使用 process psutil.Process() memory_usage process.memory_info().rss / 1024**2 # MB return { avg_inference_time: total_time / num_runs, memory_usage_mb: memory_usage, throughput: num_runs / total_time # 请求/秒 } # 测试输入 test_input 请描述这张图片一只猫在沙发上睡觉。 print(开始性能基准测试...) print(f测试输入{test_input}) print(f测试轮次10次\n) # 这里需要加载不同精度的模型进行测试 # 由于篇幅限制这里只展示测试框架 # 实际测试时需要分别加载原始模型、INT8模型、INT4模型 results [] # 模拟测试结果实际运行时会得到真实数据 results.append({ 模型类型: 原始模型 (FP32), 平均推理时间 (秒): 2.34, 内存使用 (MB): 7800, 吞吐量 (req/s): 0.43, 模型大小 (GB): 7.8 }) results.append({ 模型类型: INT8量化模型, 平均推理时间 (秒): 1.12, 内存使用 (MB): 2100, 吞吐量 (req/s): 0.89, 模型大小 (GB): 2.0 }) results.append({ 模型类型: INT4量化模型, 平均推理时间 (秒): 0.87, 内存使用 (MB): 1200, 吞吐量 (req/s): 1.15, 模型大小 (GB): 1.0 }) # 创建对比表格 df pd.DataFrame(results) print(tabulate(df, headerskeys, tablefmtgrid, showindexFalse)) # 计算提升比例 print(\n性能提升对比相对于原始模型) for i in range(1, len(results)): speedup results[0][平均推理时间 (秒)] / results[i][平均推理时间 (秒)] size_reduction results[0][模型大小 (GB)] / results[i][模型大小 (GB)] memory_reduction results[0][内存使用 (MB)] / results[i][内存使用 (MB)] print(f\n{results[i][模型类型]}:) print(f 推理速度提升{speedup:.2f}倍) print(f 模型体积减小{size_reduction:.2f}倍) print(f 内存占用减少{memory_reduction:.2f}倍)从模拟结果可以看到量化带来的性能提升是相当可观的。INT8模型在推理速度上提升约2倍内存占用减少到原来的1/4左右。INT4的提升更加明显但要注意精度损失可能会更大。5.2 部署实践建议在实际部署量化模型时有几点建议充分测试在目标设备上全面测试量化模型的精度和性能确保满足业务要求。硬件兼容性确认部署硬件支持低精度推理。不是所有CPU/GPU都支持INT4运算。批量处理优化如果应用场景支持批量请求可以进一步优化吞吐量。监控与回滚生产环境部署后持续监控模型表现准备好回滚到高精度版本的预案。混合精度策略对于特别敏感的部分如某些注意力头可以保持高精度其他部分量化平衡精度和性能。6. 常见问题与解决方案在实际操作中你可能会遇到一些问题。这里整理了几个常见的情况和解决方法。问题1量化后模型精度下降太多可能原因量化参数设置不合理或者模型某些层对量化敏感。解决方案尝试不同的量化配置如对称/非对称量化、每通道/每张量量化。排除某些敏感层不量化通过nodes_to_exclude参数。考虑使用QAT而不是PTQ。问题2量化模型推理出错可能原因ONNX模型导出有问题或者运行时环境不匹配。解决方案检查ONNX模型导出时的opset版本。确保onnxruntime版本与量化工具兼容。尝试在导出和量化时使用相同的精度设置。问题3量化后速度反而变慢可能原因硬件不支持低精度指令集或者量化引入了额外的计算开销。解决方案确认硬件是否支持INT8/INT4指令如AVX-512 VNNI、Tensor Core等。检查是否使用了合适的执行提供程序如CUDAExecutionProvider用于NVIDIA GPU。对于CPU推理确保使用了支持低精度优化的版本。问题4内存占用没有明显减少可能原因只量化了权重没有量化激活值或者中间结果仍然保持高精度。解决方案确保量化配置包含了激活值的量化。检查模型结构中是否有未量化的部分。考虑使用更激进的量化策略如INT4。7. 总结走完这一整套流程你应该对模型量化有了比较直观的认识。从最开始的8GB大模型到最后的2GB甚至1GB的小模型这个压缩效果对于边缘部署来说是非常有吸引力的。实际用下来PTQ量化确实是个性价比很高的方案——不需要重新训练操作相对简单效果也足够好。对于Qwen2-VL-2B-Instruct这样的模型INT8量化在精度损失很小的情况下能带来明显的体积和速度提升。如果资源特别紧张可以尝试INT4但要做好精度测试。量化过程中最需要注意的是参数配置不同的量化策略效果差异挺大的。建议先从默认配置开始然后根据测试结果慢慢调整。如果遇到精度问题可以试试排除某些敏感层或者换用不同的量化算法。最后想说的是量化不是银弹它是在精度和效率之间找平衡。在实际项目中你需要根据具体需求来决定量化的程度。如果对精度要求极高可能就需要接受更大的模型和更慢的速度如果资源限制很严格那就要在精度上做一些妥协。好在现在工具越来越成熟像optimum和onnxruntime这样的库让量化变得简单了很多。希望这篇教程能帮你顺利踏上模型压缩这条路让你的AI应用跑得更快、更轻便。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

相关文章:

Qwen2-VL-2B-Instruct模型压缩实战:使用量化工具减小部署体积与加速推理

Qwen2-VL-2B-Instruct模型压缩实战:使用量化工具减小部署体积与加速推理 最近在折腾一个边缘设备上的视觉项目,用上了Qwen2-VL-2B-Instruct这个多模态模型。模型效果确实不错,但原始大小接近8GB,推理速度也慢,在资源有…...

ngx_queue_sort

1 定义 ngx_queue_sort 函数 定义在 ./nginx-1.24.0/src/core/ngx_queue.cvoid ngx_queue_sort(ngx_queue_t *queue,ngx_int_t (*cmp)(const ngx_queue_t *, const ngx_queue_t *)) {ngx_queue_t *q, *prev, *next;q ngx_queue_head(queue);if (q ngx_queue_last(queue)) {r…...

GLM-OCR与LSTM网络融合实践:提升连续手写体文本识别效果

GLM-OCR与LSTM网络融合实践:提升连续手写体文本识别效果 最近在折腾一个挺有意思的项目,朋友那边有个需求,要识别一些手写的病历和处方。你懂的,医生那笔迹,龙飞凤舞,连笔连得飞起,传统的OCR工…...

Java 开发 日志技术

1.概述为什么要在程序中记录日志呢?便于追踪应用程序中的数据信息、程序的执行过程。便于对应用程序的性能进行优化。便于应用程序出现问题之后,排查问题,解决问题。便于监控系统的运行状态。2.日志框架JUL:这是JavaSE平台提供的官…...

【2.0 教程】第 7 章:仪表盘,一眼看全局

🎉NocoBase V2 系列教程已在官网-教程专栏发布,点击链接前往查看。 https://docs.nocobase.com/cn/tutorials/v2/ 已发布教程速览: NocoBase 2.0 入门教程 —— IT 工单系统 第一章:认识 NocoBase — 5 分钟跑起来 第二章&…...

如何全面移除开源工具残留?四步环境净化实施方案

如何全面移除开源工具残留?四步环境净化实施方案 【免费下载链接】ralph-claude-code Autonomous AI development loop for Claude Code with intelligent exit detection 项目地址: https://gitcode.com/GitHub_Trending/ra/ralph-claude-code 一、问题诊断…...

避坑指南:解决多Livox雷达在ROS中TF树报错‘extrapolation into the past’的完整流程

避坑指南:解决多Livox雷达在ROS中TF树报错‘extrapolation into the past’的完整流程 当你在ROS系统中整合多个Livox雷达时,突然遭遇[WARN] Lookup would require extrapolation into the past的警告信息,Rviz中点云显示异常或TF树断裂&…...

比话降AI使用教程:从注册到拿到合格检测报告全流程详解

比话降AI使用教程:从注册到拿到合格检测报告全流程详解 不少同学找到比话降AI,是因为看到了那个承诺:AI率大于15%全额退款,还退检测费。 这个承诺确实不一样。其他工具一般只说"效果不好可重做",但重做了几…...

Qwen2.5-72B-GPTQ-Int4惊艳效果:128K上下文长文档摘要与重点提取

Qwen2.5-72B-GPTQ-Int4惊艳效果:128K上下文长文档摘要与重点提取 1. 模型概述与核心能力 1.1 Qwen2.5系列模型简介 Qwen2.5是通义千问大模型系列的最新版本,提供了从0.5B到72B不同参数规模的预训练和指令调优模型。相比前代Qwen2,这个版本…...

wangEditor 5移动端兼容性深度解析:终极跨平台富文本编辑实战指南

wangEditor 5移动端兼容性深度解析:终极跨平台富文本编辑实战指南 【免费下载链接】wangEditor wangEditor —— 开源 Web 富文本编辑器 项目地址: https://gitcode.com/gh_mirrors/wa/wangEditor 在移动优先的时代,富文本编辑器的移动端兼容性已…...

如何高效使用AI音频分离神器:Ultimate Vocal Remover GUI完全指南

如何高效使用AI音频分离神器:Ultimate Vocal Remover GUI完全指南 【免费下载链接】ultimatevocalremovergui 使用深度神经网络的声音消除器的图形用户界面。 项目地址: https://gitcode.com/GitHub_Trending/ul/ultimatevocalremovergui Ultimate Vocal Rem…...

VideoAgentTrek-ScreenFilter效果展示:Zoom/Teams会议窗口自动边界检测

VideoAgentTrek-ScreenFilter效果展示:Zoom/Teams会议窗口自动边界检测 你有没有遇到过这样的场景?在录制线上会议、网课或者远程演示时,屏幕上同时开着好几个窗口——Zoom会议、Teams聊天、PPT演示、还有一堆浏览器标签页。后期剪辑时&…...

Pixel Dream Workshop 对比测试:不同采样器与模型版本的出图效果

Pixel Dream Workshop 对比测试:不同采样器与模型版本的出图效果 1. 测试背景与目的 在AI绘画领域,采样器和模型版本的选择直接影响最终生成效果。本次测试旨在通过严谨的对比实验,帮助用户理解Pixel Dream Workshop中不同参数组合的实际表…...

AIO PathProb 时序概率路径系统

本文由(拓世网络技术开发工作室)技术支持,欢迎共同开发第一部分:伪代码 / 算法描述(给算法/工程侧)1. 全局定义(状态与概率)import numpy as npfrom dataclasses import dataclass# …...

电容选型实战指南

电容选型这件事,比电阻要复杂得多。电阻选错了,大多数情况是“烧了”或“不准了”;电容选错了,可能直接导致系统复位、EMI超标、寿命骤减、甚至爆炸。电容是电路中最“敏感”的元件之一,它的选型需要在电气性能、温度特性、寿命、成本、体积之间反复权衡。 一、 选型前的四…...

Xilinx ZYNQ/MPSOC开发者必看:如何为你的PetaLinux 2022.1工程搭建一个高效的本地缓存服务器(sstate downloads)

Xilinx ZYNQ/MPSOC团队开发实战:构建企业级PetaLinux缓存服务器集群 当五个工程师同时对着公司服务器发起全量编译时,机房里传出的风扇轰鸣声总让我想起波音747起飞——这是我们去年某个ZYNQ UltraScale项目的日常。直到我们在本地部署了分布式sstate缓存…...

UniHacker技术探索:Unity引擎全功能体验与开源研究指南

UniHacker技术探索:Unity引擎全功能体验与开源研究指南 【免费下载链接】UniHacker 为Windows、MacOS、Linux和Docker修补所有版本的Unity3D和UnityHub 项目地址: https://gitcode.com/GitHub_Trending/un/UniHacker 一、核心价值解析:技术研究视…...

AtlasOS系统Xbox控制器驱动问题:三步解决方案与预防指南

AtlasOS系统Xbox控制器驱动问题:三步解决方案与预防指南 【免费下载链接】Atlas 🚀 An open and lightweight modification to Windows, designed to optimize performance, privacy and security. 项目地址: https://gitcode.com/GitHub_Trending/atl…...

如何让零基础快速掌握3D资产生成:颠覆式AI工具Hunyuan3D-2实战指南

如何让零基础快速掌握3D资产生成:颠覆式AI工具Hunyuan3D-2实战指南 【免费下载链接】Hunyuan3D-2 High-Resolution 3D Assets Generation with Large Scale Hunyuan3D Diffusion Models. 项目地址: https://gitcode.com/GitHub_Trending/hu/Hunyuan3D-2 技术…...

乙巳马年·皇城大门春联生成终端W数据库课程设计案例:用户作品管理平台

乙巳马年皇城大门春联生成终端W数据库课程设计案例:用户作品管理平台 又到了一年一度的数据库课程设计选题季,你是不是还在为“学生信息管理系统”、“图书管理系统”这类老掉牙的题目发愁?想找个既有技术深度,又能结合当下热点&…...

失真度测量仪校准 失真度测量仪校准检定装置应用方案 失真度仪校准器 失真度仪检定装置

在电子测量、计量检定、设备运维及科研生产等领域,失真度仪是检测信号纯净度的核心仪器,其测量精度直接决定产品质量管控、设备运维可靠性及科研数据准确性。但实际应用中,传统校准设备普遍存在精度不足、操作繁琐、场景适配性差、数据管理不…...

DAMOYOLO-S与数据库联动:检测结果实时入库与查询

DAMOYOLO-S与数据库联动:检测结果实时入库与查询 你有没有想过,当AI模型在摄像头前“看到”一个人、一辆车时,这些信息除了在屏幕上显示一下,还能做什么?如果这些“看见”的瞬间——谁、在哪儿、什么时候、有多确定—…...

终极指南:如何用jQuery.Flipster打造惊艳的3D封面流效果

终极指南:如何用jQuery.Flipster打造惊艳的3D封面流效果 【免费下载链接】jquery-flipster Responsive, CSS3, touch-enabled jQuery Coverflow plugin. 项目地址: https://gitcode.com/gh_mirrors/jq/jquery-flipster 还在为网站轮播图太单调而烦恼吗&#…...

Vant4移动端电商实战:用Card和Cell组件打造订单详情页(附完整代码)

Vant4移动端电商实战:用Card和Cell组件打造订单详情页(附完整代码) 在移动电商应用开发中,订单详情页是用户查看购买信息的重要界面。Vant4作为轻量、可靠的移动端组件库,其Card和Cell组件能够快速构建清晰、美观的订单…...

用Python和C语言两种解法,搞定ZZULIOJ 1091‘爬楼梯’问题(附多实例测试详解)

用Python和C语言两种解法,搞定ZZULIOJ 1091‘爬楼梯’问题(附多实例测试详解) 当你第一次看到这个题目时,可能会觉得它只是一个简单的递归问题。但深入思考后会发现,这实际上是动态规划的经典案例——斐波那契数列的变…...

InstructPix2Pix真实体验:保留原图结构的智能修图,到底有多好用?

InstructPix2Pix真实体验:保留原图结构的智能修图,到底有多好用? 1. 颠覆传统的修图体验 作为一名长期与图像处理打交道的技术从业者,我第一次使用InstructPix2Pix时的感受可以用"惊艳"来形容。传统的图像编辑工具需要…...

16张动图解析网络基础原理与应用

16张动图趣味解读网络原理1. 网络基础概念1.1 网络的定义与作用网络存在于日常生活中的每一个角落,电脑、打印机、手机、电视等设备都属于网络设备。通过网络连接这些设备,可以实现数据传输和共享,让工作生活更加便捷。典型的网络应用场景包括…...

AMD平台黑苹果智能配置引擎:从技术困境到自动化解决方案的完整指南

AMD平台黑苹果智能配置引擎:从技术困境到自动化解决方案的完整指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 在传统黑苹果配置领域&…...

Harness设计——Anthropic实战:规划器、生成器、评估器三角色协作详解

Harness 设计是实现智能体编码前沿性能的关键。本文介绍了Anhtropic如何推动 Claude 在前端设计和长期自主软件开发方面更进一步。 有两个相互关联的问题: 让 AI Agent 生成高质量的前端设计。 让它无需人工干预就能构建完整的应用程序。 这项工作源于我们早期在前端设计技能…...

本地部署 LookScanned:轻松将 PDF 转为逼真扫描件,结合内网穿透实现远程访问

前言 本文主要介绍了 LookScanned 这款工具的部署与使用方法。LookScanned 可将普通电子 PDF 转换为高度逼真的纸质扫描件效果,全程本地处理保障隐私,操作简单且无需打印扫描的物理步骤。 文中详细讲解了在极空间通过 Docker 部署 LookScanned 的流程&…...