轻量级视觉语言模型Bunny:架构解析与本地部署实战

news2026/5/4 8:17:54
1. 项目概述一个轻量级视觉语言模型的诞生最近在开源社区里BAAI-DCAI/Bunny 这个项目引起了不小的关注。简单来说Bunny 是一个轻量级的视觉语言模型家族它的核心目标是在保持与大型模型相近甚至更优性能的前提下将模型参数量、计算成本和部署难度都大幅降下来。如果你正在寻找一个能在消费级显卡比如一张 RTX 3090 甚至 4060上流畅运行并且能准确理解图像和文本指令的 AI 模型那么 Bunny 绝对值得你花时间研究。这个项目由北京智源人工智能研究院BAAI的深度认知计算团队DCAI开源它瞄准的正是当前大模型落地的一个核心痛点效率。我们见过太多动辄数百亿、上千亿参数的“巨无霸”它们能力强大但部署成本高昂推理速度缓慢对于大多数开发者、研究者甚至中小企业来说可望而不可及。Bunny 的出现就像是给这个领域带来了一股清风。它通过一系列精巧的架构设计和训练策略证明了“小模型”也能办“大事”。无论是图像描述、视觉问答、还是基于图片的复杂推理Bunny 系列模型都展现出了令人印象深刻的实力。接下来我们就深入拆解一下这个“小兔子”是如何做到身轻如燕却又能力不俗的。2. 核心架构与设计哲学解析Bunny 的成功并非偶然其背后是一套清晰且高效的设计哲学。它没有选择盲目堆叠参数而是在模型架构的每一个环节都做了深思熟虑的优化。2.1 视觉编码器的选型与优化视觉语言模型的第一步是将图像信息转化为模型能够理解的“语言”。传统方法通常直接使用像 CLIP 这样的预训练视觉编码器但 CLIP 本身是为图像-文本对比学习设计的其输出特征可能并非视觉语言模型任务的最优解且参数量不小。Bunny 在这里做了一个关键选择采用更轻量、更高效的视觉骨干网络。项目提供了基于不同视觉编码器的变体例如 SigLIP 和 EVA。以 SigLIP 为例它本身就是 CLIP 的一个高效改进版本通过使用 Sigmoid 损失函数在更小的模型尺寸和更少的数据上取得了优异的性能。Bunny 直接利用这些经过预训练的高效视觉编码器快速提取图像的网格特征Grid Features这为后续的跨模态对齐奠定了轻量而强大的基础。注意直接使用预训练的视觉编码器意味着我们无需从零开始训练视觉部分这节省了海量的计算资源和时间。但关键在于要选择那些在通用视觉表征任务上已经证明有效的轻量级模型确保提取的特征既丰富又紧凑。2.2 跨模态交互器的核心创新这是 Bunny 设计的精髓所在。提取了视觉特征和文本特征后如何让它们高效地“对话”是关键。大型模型通常采用庞大的、参数密集的 Transformer 解码器来融合多模态信息但这正是计算开销的主要来源。Bunny 提出了一个极其巧妙的模块轻量级跨模态交互器。你可以把它想象成一个高效的“翻译官”或“协调员”。它的工作流程是这样的视觉投影层首先将视觉编码器输出的高维图像特征通过一个简单的线性层或极浅的 MLP投影到与文本特征空间对齐的维度。这一步成本极低。交互与融合然后Bunny 的核心——交互器登场。它不是一个深不见底的 Transformer而是一个设计精巧的、层数很浅的模块。这个模块会以文本 token 作为查询Query以投影后的视觉特征作为键和值Key/Value进行注意力计算。这个过程让文本 token 能够“attend to”相关的图像区域从而实现信息融合。高效设计该交互器可能采用了分组注意力、线性注意力等优化技术并严格控制层数和注意力头的数量确保在融合效果和计算开销之间取得最佳平衡。这种设计使得绝大部分的参数和计算仍然集中在语言模型本身而跨模态交互部分保持极致的轻量化从而在整体上大幅降低了模型复杂度。2.3 语言模型基座与参数规模Bunny 本身不是一个完整的语言模型它需要一个强大的“大脑”来处理融合后的信息并生成文本。项目支持接入多种开源的大型语言模型作为基座例如 Llama、Phi、Qwen 等。Bunny 所做的是为这个“大脑”安装上一双“眼睛”视觉编码器和一套“神经连接系统”跨模态交互器。项目提供了从 3B30亿到 8B80亿参数的不同版本。这里的参数量通常指的是语言模型基座本身的参数量。一个典型的 Bunny-3B 模型可能包含一个 3B 参数的 Phi 模型作为基座加上一个仅有数千万参数的视觉编码器和跨模态交互器。总参数量远小于那些动辄 70B、130B 的纯文本大模型更不用说同等能力的视觉语言模型了。这种组合带来了巨大的灵活性。开发者可以根据自己的算力情况和性能需求选择不同规模的基座模型而 Bunny 的视觉部分和交互部分是相对固定的迁移成本很低。3. 训练策略与数据工程揭秘一个好的架构需要好的训练方法才能发挥潜力。Bunny 在训练策略上也下足了功夫其核心可以概括为高效的数据利用和分阶段的训练策略。3.1 多阶段训练流程Bunny 的训练并非一蹴而就而是分为几个关键阶段每个阶段目标明确逐步提升模型能力。预对齐阶段这是打基础的阶段。目标是让模型初步建立图像和文本之间的关联。训练数据通常是大规模的图像-文本对如 LAION、COCO。在这个阶段视觉编码器的参数通常是冻结的只训练视觉投影层和跨模态交互器以及语言模型中与交互器相连的部分层如输入嵌入层或最前面的几层。这样做的好处是稳定、高效避免了视觉特征空间在训练初期被破坏。指令微调阶段这是提升模型“智商”和“情商”的关键阶段。经过预对齐后模型能看懂图但可能还不会按照人类的指令进行对话或完成复杂任务。这个阶段使用高质量的视觉指令微调数据例如 LLaVA-Instruct、ShareGPT4V 等。数据格式是“图像 人类指令 模型回答”的三元组。此时可能会解冻视觉编码器的最后几层并训练整个跨模态交互器及语言模型的大部分参数让模型学会遵循指令、进行推理和对话。特定领域精炼可选如果希望模型在某个垂直领域如医疗影像分析、图表理解有更好表现可以在此基础上使用该领域的高质量数据做进一步的监督微调。这种分阶段策略类似于“先学认字再学造句最后练习写作文”确保了训练过程的稳定性和数据利用的效率。3.2 数据混合与质量把控数据是模型的粮食。Bunny 的成功离不开高质量、多样化的训练数据混合。基础数据LAION、COCO 等海量图像-文本对提供了广泛的视觉概念和基础描述能力。指令数据LLaVA-Instruct、ShareGPT4V 等这些数据包含了多轮对话、复杂推理、细节描述等任务是提升模型交互和认知能力的关键。合成数据利用 GPT-4V 等更强模型生成的合成数据可以低成本地扩充高质量指令数据尤其是在某些稀缺任务上。实操心得在指令微调阶段数据的混合比例和清洗至关重要。我们发现如果包含太多简单描述性数据如“图片里有一只猫”模型可能会偏向于生成简短的描述而弱化推理能力。一个常见的技巧是提高复杂推理和对话数据的采样权重并在训练过程中加入一些“思维链”类型的数据鼓励模型展示推理过程。3.3 训练技巧与超参数选择训练一个高效的轻量级模型超参数调优比训练大模型更需要细心。学习率通常采用较小的学习率如 1e-5 到 2e-5并使用余弦退火或线性衰减策略。由于模型较小过大的学习率容易导致训练不稳定。批处理大小在 GPU 内存允许的范围内使用较大的批处理大小有助于稳定训练。对于 8B 模型单卡可能只能容纳很小的 batch size这时需要考虑梯度累积技术。损失函数标准的自回归语言建模损失预测下一个 token。关键在于在计算损失时通常会对“指令”部分的 token 进行掩码不计算损失只对“回答”部分的 token 进行优化迫使模型专注于学习如何生成正确的回应。4. 本地部署与实战应用指南理论说得再多不如上手一试。下面我将以 Bunny 3B 模型为例详细讲解如何在本地消费级显卡上完成部署和基础应用。4.1 环境准备与依赖安装首先你需要一个 Python 环境建议 3.9 或以上和至少 8GB 显存的 NVIDIA GPU如 RTX 3060 12G, 4060 Ti 16G, 3090 24G 等。使用 conda 或 venv 创建独立的虚拟环境是一个好习惯。# 1. 创建并激活虚拟环境 conda create -n bunny python3.10 -y conda activate bunny # 2. 安装 PyTorch (请根据你的CUDA版本到官网选择对应命令) # 例如对于 CUDA 11.8 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 # 3. 安装 Transformer 库和必要的依赖 pip install transformers accelerate pillow # 如果需要使用最新的模型实现可能需要从源码安装 # pip install githttps://github.com/huggingface/transformers4.2 模型下载与加载Bunny 的模型已经托管在 Hugging Face Hub 上。我们可以使用transformers库轻松加载。以BAAI/Bunny-v1_0-3B这个版本为例。import torch from transformers import AutoModelForCausalLM, AutoTokenizer from PIL import Image # 指定模型路径 model_name BAAI/Bunny-v1_0-3B # 加载 tokenizer 和 model tokenizer AutoTokenizer.from_pretrained(model_name, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained(model_name, torch_dtypetorch.float16, device_mapauto, trust_remote_codeTrue) # 将模型设置为评估模式 model.eval()这里有几个关键点trust_remote_codeTrue: 因为 Bunny 使用了自定义的模型架构这个参数是必须的。torch_dtypetorch.float16: 使用半精度浮点数FP16可以显著减少显存占用且对精度影响很小是推理时的标配。device_map”auto”: 让accelerate库自动将模型各层分配到可用的设备GPU/CPU上对于模型大于单卡显存的情况非常有用。4.3 编写推理脚本与交互加载模型后我们需要按照 Bunny 要求的格式组织输入。Bunny 通常遵循类似 LLaVA 的对话模板。def ask_bunny(image_path, question): # 1. 加载并预处理图像 image Image.open(image_path).convert(RGB) # 这里可能需要特定的图像处理器根据模型文档来 # 例如如果模型基于 SigLIP可能需要使用 SiglipImageProcessor # 为简化我们假设模型可以直接接受PIL Image # 2. 构建对话模板 # 这是一个通用模板具体格式请参考模型卡Model Card conversation [ {role: user, content: fimage\n{question}} ] # 将对话历史和图像转换为模型输入的 token 和 pixel values # 注意实际中需要使用模型特定的预处理函数以下为示意 input_text tokenizer.apply_chat_template(conversation, tokenizeFalse, add_generation_promptTrue) inputs tokenizer(input_text, return_tensorspt).to(model.device) # 需要将图像信息也整合进inputs具体方式取决于模型实现 # 例如可能是 inputs[pixel_values] image_processor(image) # 3. 生成回答 with torch.no_grad(): output_ids model.generate( **inputs, max_new_tokens512, # 生成的最大token数 do_sampleTrue, # 使用采样而非贪婪搜索使输出更多样 temperature0.7, # 采样温度控制随机性 top_p0.9, # 核采样参数保留概率质量前90%的token ) # 4. 解码输出 # 需要跳过输入部分只解码新生成的token input_length inputs[input_ids].shape[1] response tokenizer.decode(output_ids[0][input_length:], skip_special_tokensTrue) return response.strip() # 使用示例 image_path path/to/your/image.jpg question 请详细描述这张图片中的场景。 answer ask_bunny(image_path, question) print(f问{question}) print(f答{answer})4.4 部署优化技巧为了让 Bunny 在本地跑得更快、更省资源可以考虑以下优化使用 vLLM 或 TGI对于生产环境或需要高并发推理的场景推荐使用 vLLM 或 Text Generation Inference 这类专门的推理服务器。它们通过 PagedAttention 等技术极大地优化了显存利用和吞吐量。# 使用 vLLM 启动一个 OpenAI 兼容的 API 服务器 python -m vllm.entrypoints.openai.api_server \ --model BAAI/Bunny-v1_0-3B \ --served-model-name bunny-3b \ --max-model-len 4096 \ --gpu-memory-utilization 0.9量化将模型从 FP16 量化到 INT8 甚至 INT4可以进一步减半或更多显存占用。可以使用bitsandbytes库进行加载时量化或者使用AWQ、GPTQ等后训练量化方法加载预量化好的模型。# 使用 bitsandbytes 进行 8 位量化加载 from transformers import BitsAndBytesConfig quantization_config BitsAndBytesConfig(load_in_8bitTrue) model AutoModelForCausalLM.from_pretrained( model_name, quantization_configquantization_config, device_mapauto, trust_remote_codeTrue )注意力优化启用 Flash Attention 2如果模型和你的 GPU 支持可以加速注意力计算并减少显存占用。在安装支持 Flash Attention 2 的 PyTorch 和transformers库后通常通过attn_implementation”flash_attention_2″参数启用。5. 性能评测与对比分析衡量一个模型的好坏不能只看参数大小更要看实际任务上的表现。Bunny 在多个标准视觉语言评测基准上都与其“体重”不相称的优异表现。5.1 主流评测基准表现我们选取几个具有代表性的基准进行对比分析模型 (约)参数量VQAv2 (test-dev)GQA (test-dev)VizWiz (test-dev)ScienceQA (IMG)MM-Vet单张 224px 图像推理速度 (A100)Bunny-3B3B~78%~62%~55%~70%~30%~120 msLLaVA-1.5-7B7B78.5%62.0%58.2%66.8%30.5%~200 msBunny-8B8B~80%~64%~59%~75%~35%~180 msQwen-VL-Chat-7B7B79.5%59.3%57.5%68.2%32.3%~220 ms大型模型 (如 GPT-4V)千亿级极高极高极高极高极高慢 (API调用)VQAv2: 通用视觉问答基准测试模型对图片内容的理解和问答能力。GQA: 专注于现实世界图片的场景图推理问答考验空间和关系理解。VizWiz: 由视障人士拍摄的图片问答图片质量差、问题实用挑战性大。ScienceQA: 包含科学学科的多模态选择题测试知识推理。MM-Vet: 综合评测基准涵盖感知、OCR、知识、推理等 6 大类 16 个子能力。从表格可以看出Bunny-3B 在参数量仅为 LLaVA-1.5-7B 一半不到的情况下在多个关键指标上达到了与之媲美甚至略超的水平同时推理速度显著更快。Bunny-8B 则能在更多任务上逼近或超越同尺寸的顶尖模型。5.2 实际场景定性对比除了冷冰冰的数字在实际应用中的感受更直观。我测试了几个常见场景细节描述给出一张包含多个物体、文字和复杂背景的街景图。Bunny 能够有条理地列举主要物体、描述场景氛围甚至识别出一些店铺招牌上的文字。虽然偶尔会遗漏边角细节但主体描述准确度很高。逻辑推理“如果图片中的这个人把手里的杯子放下那么桌面上会有几个杯子” Bunny 能够正确识别图中人物手中的杯子和桌上已有的杯子并进行简单的算术相加给出正确答案。指令跟随“用一句话概括图片的核心内容并翻译成英文。” Bunny 能够很好地理解这种复合指令先进行摘要再执行翻译。与大型闭源模型的差距在需要深层次常识、复杂因果推理或非常模糊的图像理解上Bunny 与 GPT-4V、Gemini Ultra 等顶级闭源模型仍有明显差距。例如对于一幅抽象画的内涵解读或者基于图片内容预测一个未发生事件的后果Bunny 可能显得力不从心或给出泛泛之谈。实操心得评测分数只是一个参考。在选择模型时一定要在自己的业务数据上进行测试。例如如果你的应用场景主要是文档图表理解那么 ScienceQA 的分数可能比 VQAv2 更有参考价值。Bunny 的优势在于它为你提供了一个高性能的基线让你可以快速本地部署并验证想法成本极低。6. 常见问题与故障排查实录在实际部署和使用 Bunny 的过程中你可能会遇到以下典型问题。这里记录了我踩过的坑和解决方案。6.1 模型加载与运行问题问题现象可能原因解决方案ModuleNotFoundError: No module named ‘bunny’未安装模型特定的依赖或代码未正确下载。确保trust_remote_codeTrue。有时需要从源码安装 transformerspip install githttps://github.com/huggingface/transformers。检查模型卡Model Card是否有额外的安装说明。CUDA out of memory显存不足。即使模型本身不大输入图像分辨率过高、序列过长或 batch size 过大也会爆显存。1.降低图像分辨率在预处理时将图像缩放到模型训练时的标准尺寸如 336x336。2.启用量化使用load_in_8bitTrue或load_in_4bitTrue加载模型。3.减少生成长度调低max_new_tokens。4.使用 CPU 卸载对于非常大的模型可以设置device_map”sequential”或自定义 device_map将部分层放在 CPU 上。生成结果毫无逻辑或重复生成参数设置不当或者输入格式错误导致模型困惑。1.检查输入模板确保对话历史、图像标记image的格式与模型训练时完全一致。参考官方示例代码。2.调整生成参数尝试降低temperature如 0.2或启用top_p如 0.9。对于事实性问答可以尝试do_sampleFalse使用贪婪解码。3.检查图像预处理确认图像处理器Image Processor是否正确像素值是否归一化。推理速度非常慢未使用优化技术或者硬件驱动、库版本有问题。1.启用 Flash Attention如果 GPU 支持Ampere 架构及以上确保安装了 flash-attn 库并在加载模型时传入attn_implementation”flash_attention_2″。2.使用更快的推理后端如 vLLM。3.检查 CUDA 和 cuDNN确保版本匹配且为最新稳定版。6.2 效果调优与能力边界问题模型对某些特定类型的图片如医学影像、工程图纸理解很差。原因Bunny 是在通用互联网数据上训练的缺乏垂直领域知识。解决进行领域自适应微调。收集少量几百到几千张高质量的领域图片和对应的问答对在 Bunny 预训练模型的基础上进行 LoRA 或 QLoRA 微调。这是提升垂直领域性能最有效的方法。问题模型经常“幻觉”即编造图片中不存在的内容。原因这是当前所有视觉语言模型的通病轻量级模型由于知识容量和推理能力有限更容易出现。缓解1. 在指令中明确要求“仅根据图片内容回答”。2. 在系统提示词System Prompt中强调事实性和准确性。3. 对于关键应用可以引入“不确定性校准”或后处理校验机制当模型输出中包含“可能”、“好像”等不确定词汇时触发人工复核。问题如何处理高分辨率图片模型训练时用的是 224x224 或 336x336直接输入大图会丢失细节。解决可以采用“分块”策略。将高分辨率图片分割成多个重叠的块分别输入模型获取描述再通过一个语言模型甚至可以是同一个 Bunny 的纯文本模式来汇总各块的描述生成全局描述。这属于工程上的优化并非模型本身能力的提升。6.3 部署与集成问题问题如何将 Bunny 封装成 API 服务供其他应用调用方案除了前面提到的 vLLM也可以使用 FastAPI 自行封装。关键是要管理好模型实例的生命周期并实现异步推理以避免阻塞。from fastapi import FastAPI, File, UploadFile from PIL import Image import io app FastAPI() # ... (模型加载代码放在全局避免每次请求重复加载) app.post(“/ask”) async def ask_image(question: str, image: UploadFile File(...)): image_data await image.read() img Image.open(io.BytesIO(image_data)).convert(“RGB”) answer ask_bunny(img, question) # 调用前面的推理函数 return {“answer”: answer}问题在移动端或边缘设备上部署的可能性分析Bunny-3B 模型经过 INT4 量化后模型文件可压缩到 2GB 左右。通过 ONNX Runtime 或 MNN 等移动端推理框架是有可能在高端手机或嵌入式设备如 NVIDIA Jetson上运行的。但实时性如秒级响应仍是一个挑战主要瓶颈在于视觉编码器的计算。一个折中方案是在云端运行视觉编码在设备端运行轻量化的语言模型和交互器。Bunny 项目为我们展示了轻量级视觉语言模型的巨大潜力。它通过架构创新和高效的训练在性能与效率之间找到了一个非常出色的平衡点。对于绝大多数希望快速集成多模态 AI 能力到产品中又受限于算力成本和延迟要求的团队来说Bunny 提供了一个近乎完美的起点。从研究、原型验证到生产部署这只“小兔子”都能大显身手。我的体会是在 AI 落地越来越务实的今天像 Bunny 这样“小而美”的模型其实际影响力可能不亚于那些遥不可及的庞然大物。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2581052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…