Kimi-VL-A3B-Thinking开源大模型实操:模型微调适配垂直领域数据

news2026/3/29 12:06:02
Kimi-VL-A3B-Thinking开源大模型实操模型微调适配垂直领域数据1. 引言为什么你需要关注这个模型如果你正在寻找一个既能看懂图片又能像人一样思考的多模态模型那么Kimi-VL-A3B-Thinking绝对值得你花时间了解。这个模型最近在开源社区引起了不小的关注不是因为它参数有多大而是因为它用相对较小的计算成本实现了相当惊艳的多模态理解能力。简单来说Kimi-VL-A3B-Thinking是一个“视觉语言模型”——它能同时处理图片和文字。你给它一张图它能看懂图里有什么你问它关于图片的问题它能给出合理的回答更厉害的是它还能进行“长思考”也就是像人一样一步步推理最终得出复杂的结论。这个模型最吸引人的地方在于它的“性价比”。它只激活了28亿参数在AI模型里算是比较小的但性能却能和那些参数大得多的模型掰手腕。这意味着什么意味着你可以在普通的硬件上部署它不需要昂贵的GPU集群就能获得接近顶级模型的能力。在接下来的内容里我会带你从零开始一步步部署这个模型然后用它来处理你自己的数据。无论你是想用它做智能客服、内容审核、教育辅导还是其他任何需要“看图说话”的场景这篇文章都会给你一个清晰的路线图。2. 模型核心能力解析它到底能做什么在动手之前我们先搞清楚这个模型到底有什么本事。了解它的能力边界你才能更好地判断它是否适合你的需求。2.1 多模态理解不只是“看图识字”很多人对多模态模型的理解还停留在“识别图片里有什么”的阶段但Kimi-VL-A3B-Thinking的能力远不止于此。基础能力图像内容描述你给它一张商品图它能详细描述颜色、款式、材质。文字识别OCR图片里的文字无论是印刷体还是手写体它都能准确提取出来。多轮对话你可以连续问它关于同一张图片的多个问题它能记住上下文给出连贯的回答。进阶能力复杂推理比如你给它一张数学题的截图它不仅能识别题目还能一步步推导出解题过程。多图理解同时分析多张图片找出它们之间的关联。比如给几张设计草图它能总结出共同的设计风格。长视频理解处理长达数分钟的视频内容理解其中的情节发展和关键信息。2.2 技术亮点为什么它这么高效这个模型之所以能在小参数下实现大性能主要得益于几个关键设计混合专家架构MoE 你可以把这个架构想象成一个专家团队。模型内部有很多“专家”每个专家擅长处理特定类型的问题。当遇到一个问题时模型只会调用最相关的几个专家来工作而不是让所有专家都参与。这就大大降低了计算量。原生高分辨率视觉编码器 传统的视觉模型在处理高分辨率图片时往往需要先压缩图片这会丢失很多细节。Kimi-VL-A3B-Thinking的视觉编码器能直接处理高清图片保留更多细节信息这对于识别小文字、复杂图表特别有用。长上下文支持 模型能处理长达128K的上下文这是什么概念相当于它能记住很长一段对话历史或者分析很长的文档图片。这在处理复杂任务时非常有用因为模型可以参考更多的背景信息。2.3 性能表现数据说话在多个公开测试集上这个模型的表现都相当亮眼测试项目得分对比说明MMMU大学水平理解61.7接近甚至超过了一些更大的模型MathVista数学视觉推理71.3在需要数学推理的视觉任务上表现出色LongVideoBench长视频理解64.5处理长视频内容的能力很强InfoVQA信息提取83.2从图片中提取文字信息准确率高这些数据说明这个模型不是“玩具”而是能在实际任务中发挥作用的工具。3. 环境准备与快速部署好了理论部分讲得差不多了现在我们来动手实操。我会带你一步步部署这个模型整个过程大概需要30分钟左右。3.1 部署前准备在开始之前你需要确保环境满足以下要求硬件要求GPU内存至少16GB推荐24GB以上系统内存32GB以上磁盘空间50GB可用空间软件环境Ubuntu 20.04或更高版本其他Linux发行版也可Python 3.8-3.10CUDA 11.8或更高版本如果你使用的是云服务器建议选择配备RTX 4090、A100或类似性能GPU的实例。如果是本地部署确保你的显卡驱动和CUDA版本正确安装。3.2 一键部署步骤部署过程比你想的要简单。模型已经打包成Docker镜像你只需要几条命令就能跑起来。第一步拉取镜像docker pull csdn-mirror/kimi-vl-a3b-thinking:latest第二步运行容器docker run -d \ --name kimi-vl \ --gpus all \ -p 8000:8000 \ -p 7860:7860 \ -v /path/to/your/data:/data \ csdn-mirror/kimi-vl-a3b-thinking:latest这里解释一下各个参数--name kimi-vl给容器起个名字方便管理--gpus all使用所有可用的GPU-p 8000:8000将容器的8000端口映射到主机的8000端口这是vLLM服务的端口-p 7860:7860将容器的7860端口映射到主机的7860端口这是Chainlit前端的端口-v /path/to/your/data:/data把你的数据目录挂载到容器里这样模型就能访问你的数据了第三步检查服务状态容器启动后需要等几分钟让模型加载。你可以通过以下命令查看日志docker logs -f kimi-vl当看到类似下面的输出时说明模型已经加载成功INFO 07-28 10:30:15 llm_engine.py:73] Initializing an LLM engine with config: ... INFO 07-28 10:32:45 llm_engine.py:210] Finished loading model. INFO 07-28 10:32:46 api_server.py:149] Started server process [1] INFO 07-28 10:32:46 api_server.py:151] Waiting for startup event. INFO 07-28 10:32:46 api_server.py:157] Startup complete. INFO 07-28 10:32:46 api_server.py:158] Serving on http://0.0.0.0:8000如果你在CSDN星图镜像广场直接使用预置镜像这个过程会更简单——基本上就是点几下鼠标的事情。3.3 验证部署是否成功模型加载完成后我们可以用两种方式验证服务是否正常。方法一通过日志文件查看在容器的shell中执行cat /root/workspace/llm.log如果看到模型加载成功的相关信息说明部署没问题。方法二通过API测试打开浏览器访问http://你的服务器IP:7860应该能看到Chainlit的聊天界面。如果能看到界面说明前端服务正常。在聊天框里输入一个简单的文本问题比如“你好”看看模型是否能正常回复。如果能收到回复说明整个服务链路都通了。4. 基础使用快速上手图文对话现在模型已经跑起来了我们来试试它的基本功能。我会通过几个实际例子带你熟悉这个模型的使用方法。4.1 通过Chainlit前端交互Chainlit提供了一个很友好的网页界面让你可以像用聊天软件一样和模型对话。上传图片并提问打开浏览器访问http://你的服务器IP:7860点击上传按钮选择一张图片在输入框里输入你的问题点击发送等待模型回复举个例子你上传一张街景照片然后问“图中店铺名称是什么”模型会识别图片中的文字告诉你店铺的名字。连续对话 这个模型支持多轮对话。你可以先问“图片里有什么”等模型回答后再基于它的回答继续问“那个红色的物体是什么用途”模型会记住之前的对话内容给出连贯的回答。处理复杂图片 试试上传一张包含表格的截图然后问“第三行第二列的数字是多少”或者上传一张数学题的图片问“这道题应该怎么解”4.2 通过API接口调用除了用网页界面你也可以通过API的方式调用模型这样就能把它集成到你的应用里。Python调用示例import requests import base64 from PIL import Image import io # 1. 准备图片 image_path your_image.jpg with open(image_path, rb) as image_file: image_base64 base64.b64encode(image_file.read()).decode(utf-8) # 2. 构造请求 url http://localhost:8000/v1/chat/completions headers { Content-Type: application/json } payload { model: kimi-vl-a3b-thinking, messages: [ { role: user, content: [ { type: text, text: 请描述这张图片的内容 }, { type: image_url, image_url: { url: fdata:image/jpeg;base64,{image_base64} } } ] } ], max_tokens: 500, temperature: 0.7 } # 3. 发送请求 response requests.post(url, jsonpayload, headersheaders) # 4. 处理响应 if response.status_code 200: result response.json() answer result[choices][0][message][content] print(模型回答, answer) else: print(请求失败, response.text)批量处理图片 如果你有很多图片需要处理可以写个简单的脚本批量调用import os import glob # 获取所有图片文件 image_files glob.glob(images/*.jpg) glob.glob(images/*.png) for image_file in image_files: print(f处理文件{image_file}) # 调用API处理每张图片 # ...调用代码同上 # 保存结果 with open(fresults/{os.path.basename(image_file)}.txt, w) as f: f.write(answer)4.3 实用技巧与注意事项在使用过程中有几个小技巧能让效果更好提问技巧具体一点不要问“图片里有什么”而是问“图片左下角的那个标志是什么”分步骤复杂问题可以拆成几个简单问题一步步问提供上下文如果是连续对话可以简要回顾之前的内容图片准备清晰度尽量使用清晰的图片文字太小或模糊会影响识别格式支持常见的图片格式JPEG、PNG等大小如果图片太大可以适当压缩但不要过度压缩导致细节丢失性能优化批量处理如果有大量图片尽量批量处理减少API调用开销缓存结果对于相同的图片和问题可以缓存结果避免重复计算超时设置复杂问题可能需要较长时间适当调整超时设置5. 模型微调实战适配你的垂直领域数据现在来到最核心的部分——如何让这个通用的模型变成专门为你服务的专家。模型微调就是教会模型理解你特定领域的数据和需求。5.1 为什么需要微调你可能会问这个模型已经很厉害了为什么还要微调原因很简单通用模型虽然什么都知道一点但在特定领域往往不够专业。举个例子医疗领域通用模型能识别X光片里有个人形但微调后的模型能看出这是肺炎的早期表现法律领域通用模型能看懂合同文字但微调后的模型能指出其中的风险条款电商领域通用模型能描述商品图片但微调后的模型能根据图片判断商品品类、材质、适合人群微调就像是给模型做“专业培训”让它在你关心的领域表现更好。5.2 数据准备质量比数量更重要微调的第一步是准备数据。数据质量直接决定微调效果。数据格式 你需要准备一个JSONL文件每行是一个训练样本格式如下{ id: sample_001, conversations: [ { from: human, value: image\n请分析这张CT扫描片患者可能有什么问题 }, { from: gpt, value: 这张CT扫描显示患者右肺下叶有磨玻璃样阴影边界模糊伴有小叶间隔增厚。结合临床表现需要考虑社区获得性肺炎的可能性建议进一步做痰培养和血常规检查。 } ], image: base64编码的图片数据 }数据收集建议领域聚焦只收集你目标领域的数据多样性覆盖不同的场景、角度、难度质量把控答案要准确、专业、完整适量原则通常500-1000个高质量样本就能有明显效果数据增强技巧 如果数据量不够可以用这些方法图片变换旋转、裁剪、调整亮度对比度问题重构用不同的方式问同一个问题答案扩展从不同角度回答同一个问题5.3 微调步骤详解准备好了数据我们就可以开始微调了。整个过程大概需要几个小时到一天取决于数据量和硬件性能。第一步安装微调依赖# 进入容器 docker exec -it kimi-vl bash # 安装额外依赖 pip install transformers datasets accelerate peft第二步准备微调脚本创建一个Python脚本finetune.pyimport torch from transformers import AutoModelForVision2Seq, AutoProcessor from datasets import load_dataset from peft import LoraConfig, get_peft_model import argparse def main(): # 1. 加载模型和处理器 print(加载预训练模型...) model AutoModelForVision2Seq.from_pretrained( kimi-vl-a3b-thinking, torch_dtypetorch.float16, device_mapauto ) processor AutoProcessor.from_pretrained(kimi-vl-a3b-thinking) # 2. 配置LoRA参数高效微调 lora_config LoraConfig( r16, # LoRA秩 lora_alpha32, target_modules[q_proj, v_proj], # 只微调注意力层的部分参数 lora_dropout0.1, biasnone, task_typeCAUSAL_LM ) # 3. 应用LoRA model get_peft_model(model, lora_config) model.print_trainable_parameters() # 查看可训练参数数量 # 4. 加载训练数据 print(加载训练数据...) dataset load_dataset(json, data_filesyour_data.jsonl, splittrain) # 5. 数据预处理 def preprocess_function(examples): images [Image.open(io.BytesIO(base64.b64decode(img))) for img in examples[image]] texts [conv[0][value] for conv in examples[conversations]] # 处理图片和文本 inputs processor( imagesimages, texttexts, return_tensorspt, paddingTrue, truncationTrue ) # 准备标签 labels processor.tokenizer( [conv[1][value] for conv in examples[conversations]], return_tensorspt, paddingTrue, truncationTrue ).input_ids inputs[labels] labels return inputs processed_dataset dataset.map(preprocess_function, batchedTrue) # 6. 训练配置 training_args TrainingArguments( output_dir./results, num_train_epochs3, per_device_train_batch_size4, gradient_accumulation_steps4, warmup_steps100, logging_steps10, save_steps100, eval_steps100, learning_rate2e-4, fp16True, push_to_hubFalse, report_tonone ) # 7. 开始训练 trainer Trainer( modelmodel, argstraining_args, train_datasetprocessed_dataset, data_collatordefault_data_collator, ) print(开始训练...) trainer.train() # 8. 保存微调后的模型 model.save_pretrained(./fine_tuned_model) processor.save_pretrained(./fine_tuned_model) print(微调完成) if __name__ __main__: main()第三步开始训练python finetune.py训练过程中你会看到类似这样的输出Epoch: 100%|██████████| 3/3 [02:15:0000:00, 4500.00s/it] Train loss: 0.1250 Learning rate: 2.00e-04第四步测试微调效果训练完成后用你的测试数据验证效果# 加载微调后的模型 from peft import PeftModel base_model AutoModelForVision2Seq.from_pretrained(kimi-vl-a3b-thinking) model PeftModel.from_pretrained(base_model, ./fine_tuned_model) # 测试新图片 test_image your_test_image.jpg question 你的领域特定问题 # 处理并生成回答 inputs processor(imagestest_image, textquestion, return_tensorspt) outputs model.generate(**inputs) answer processor.decode(outputs[0], skip_special_tokensTrue) print(f问题{question}) print(f回答{answer})5.4 微调技巧与常见问题技巧一从小数据量开始不要一开始就用全部数据训练。先拿100个样本试试看看效果再逐步增加数据量。技巧二学习率要合适学习率太大容易震荡太小收敛慢。建议从1e-4到5e-4之间尝试。技巧三定期评估每训练一段时间就用验证集评估一下效果防止过拟合。常见问题解决问题1训练时显存不够解决方法减小batch size增加gradient accumulation steps示例per_device_train_batch_size2, gradient_accumulation_steps8问题2训练效果不好检查数据质量标注是否准确、一致调整超参数尝试不同的学习率、训练轮数增加数据多样性覆盖更多场景问题3过拟合在训练集上很好在新数据上很差早停观察到验证集效果下降就停止训练数据增强增加训练数据的多样性正则化增加dropout率6. 实际应用案例让模型为你工作理论讲完了代码也写了现在来看看这个模型在实际工作中能怎么用。我举几个真实的例子你可以参考这些思路应用到自己的场景里。6.1 案例一电商商品审核场景电商平台每天有大量商家上传商品图片需要审核图片是否符合规范。传统方法人工审核效率低成本高标准不一致。用Kimi-VL-A3B-Thinking的解决方案def check_product_image(image_path, product_category): 自动审核商品图片 # 定义审核规则 rules { 服装: 图片必须清晰展示商品全貌不能有水印背景干净, 电子产品: 图片必须包含产品标签展示接口细节, 食品: 图片必须展示生产日期和保质期 } # 构建审核问题 category_rule rules.get(product_category, ) questions [ f这张图片是否清晰展示了商品全貌{category_rule}, 图片中是否有水印或无关文字, 背景是否干净专业, 图片亮度、对比度是否合适 ] results [] for question in questions: # 调用模型API answer call_model_api(image_path, question) # 解析回答 if 是 in answer or 符合 in answer or 合适 in answer: results.append(True) else: results.append(False) # 综合判断 pass_rate sum(results) / len(results) return pass_rate 0.7 # 通过率超过70%就算通过 # 批量处理 def batch_audit(image_folder): audit_results {} for image_file in os.listdir(image_folder): image_path os.path.join(image_folder, image_file) # 自动识别商品类别也可以用模型识别 category identify_category(image_path) # 审核 is_passed check_product_image(image_path, category) audit_results[image_file] { category: category, passed: is_passed, timestamp: datetime.now().isoformat() } return audit_results效果效率提升从每人每天审核200张提升到系统自动审核2000张一致性审核标准统一避免人为差异可追溯所有审核结果都有记录方便复查6.2 案例二教育内容智能批改场景在线教育平台学生上传作业图片老师需要批改。传统方法老师手动批改工作量大反馈不及时。用Kimi-VL-A3B-Thinking的解决方案def grade_math_homework(image_path): 批改数学作业 # 第一步识别题目和答案 question 图片中的数学题目是什么 student_answer 学生的答案是什么 question_text call_model_api(image_path, question) answer_text call_model_api(image_path, student_answer) # 第二步分析解题步骤 analysis_prompt f 题目{question_text} 学生答案{answer_text} 请分析 1. 学生的解题思路是否正确 2. 计算过程是否有错误 3. 最终答案是否正确 4. 如果有错误具体错在哪里 5. 给出正确的解题步骤。 analysis call_model_api(image_path, analysis_prompt) # 第三步生成个性化反馈 feedback_prompt f 根据以下分析给学生写一段鼓励性的反馈 分析结果{analysis} 要求 1. 先肯定学生的努力 2. 指出具体问题 3. 给出改进建议 4. 用鼓励的语气 feedback call_model_api(image_path, feedback_prompt) return { question: question_text, student_answer: answer_text, analysis: analysis, feedback: feedback, score: calculate_score(analysis) # 根据分析结果打分 } # 扩展支持多种题型 def grade_homework(image_path, subject, question_type): 支持多种学科和题型的批改 grading_strategies { math: { calculation: grade_math_calculation, proof: grade_math_proof, word_problem: grade_word_problem }, physics: { calculation: grade_physics_calculation, experiment: grade_physics_experiment }, chemistry: { equation: grade_chemistry_equation, experiment: grade_chemistry_experiment } } strategy grading_strategies.get(subject, {}).get(question_type) if strategy: return strategy(image_path) else: return generic_grading(image_path)效果批改速度从几分钟一道题到几秒钟一道题反馈质量个性化反馈指出具体问题教师负担减少80%的重复批改工作6.3 案例三医疗影像辅助分析场景基层医院缺乏资深放射科医生需要辅助工具帮助分析医疗影像。传统方法依赖医生经验基层医院诊断能力有限。用Kimi-VL-A3B-Thinking的解决方案class MedicalImageAnalyzer: def __init__(self, specialized_model_path): # 加载经过医疗数据微调的模型 self.model load_fine_tuned_model(specialized_model_path) def analyze_xray(self, image_path, patient_infoNone): 分析X光片 # 基础分析 basic_analysis self.model.analyze( image_path, 请描述这张X光片的异常发现包括位置、形态、密度等特征 ) # 如果有患者信息结合分析 if patient_info: clinical_context f 患者信息 - 年龄{patient_info.get(age)} - 性别{patient_info.get(gender)} - 症状{patient_info.get(symptoms)} - 病史{patient_info.get(medical_history)} 结合临床信息请进一步分析 {basic_analysis} detailed_analysis self.model.analyze(image_path, clinical_context) else: detailed_analysis basic_analysis # 生成报告 report self.generate_report(detailed_analysis) # 风险评估 risk_level self.assess_risk(detailed_analysis) # 建议下一步检查 recommendations self.get_recommendations(detailed_analysis, risk_level) return { basic_findings: basic_analysis, detailed_analysis: detailed_analysis, report: report, risk_level: risk_level, recommendations: recommendations, confidence: self.calculate_confidence(detailed_analysis) } def generate_report(self, analysis): 生成结构化报告 report_template 【影像所见】 {findings} 【影像诊断】 {diagnosis} 【建议】 1. {recommendation1} 2. {recommendation2} 【备注】 本报告为AI辅助生成仅供参考最终诊断请结合临床。 # 从分析结果中提取信息填充模板 # ...具体实现 return filled_report def assess_risk(self, analysis): 评估风险等级 risk_keywords { high: [恶性肿瘤, 急性, 危重, 立即], medium: [炎症, 慢性, 随访, 观察], low: [正常, 未见异常, 良性] } for level, keywords in risk_keywords.items(): if any(keyword in analysis for keyword in keywords): return level return unknown # 使用示例 analyzer MedicalImageAnalyzer(./models/medical_fine_tuned) result analyzer.analyze_xray( chest_xray.jpg, patient_info{ age: 65, gender: 男, symptoms: 咳嗽、胸痛两周, medical_history: 吸烟30年 } ) print(诊断报告) print(result[report]) print(f风险等级{result[risk_level]}) print(建议) for rec in result[recommendations]: print(f- {rec})重要提醒医疗应用需要特别谨慎。这个方案只能作为辅助工具不能替代专业医生的诊断。所有AI生成的结果都需要医生复核确认。效果诊断支持为基层医生提供第二意见效率提升快速筛选需要紧急处理的病例标准化减少不同医生之间的诊断差异教育培训帮助年轻医生学习影像解读7. 总结与下一步建议7.1 核心要点回顾通过这篇文章我们完整走过了Kimi-VL-A3B-Thinking模型从部署到微调再到实际应用的全过程。让我们回顾一下关键点模型特点这是一个高效的多模态模型只激活28亿参数但性能强劲支持图文对话、复杂推理、长上下文理解开源免费可以在普通硬件上部署部署使用通过Docker一键部署简单快捷提供网页界面和API两种使用方式支持批量处理和连续对话微调适配可以用自己的数据训练模型让它更懂你的领域LoRA微调技术只需要训练少量参数节省计算资源500-1000个高质量样本就能有明显效果实际应用在电商、教育、医疗等多个领域都有实用价值能大幅提升工作效率降低人工成本可以作为现有工作流程的智能增强工具7.2 给你的实用建议如果你打算在实际项目中使用这个模型我有几个建议起步阶段先试用再决定用公开的演示或自己部署一个实例亲自试试效果从小处着手选一个具体的、有明确价值的小场景开始准备测试数据收集50-100个真实场景的样本评估模型表现实施阶段数据质量第一花时间整理高质量的训练数据这比调参更重要迭代优化不要追求一次完美先做出可用版本再逐步改进人工复核特别是重要场景一定要有人工复核环节扩展阶段监控效果记录模型的准确率、响应时间等指标收集反馈从实际用户那里收集使用反馈指导后续优化探索新场景在一个场景成功后尝试扩展到相关场景7.3 技术发展趋势多模态AI正在快速发展未来几年可能会有这些变化能力提升理解能力更强能处理更复杂的图片和问题推理能力更接近人类能进行更深层次的思考支持更多模态比如视频、3D模型、传感器数据使用更简单部署更便捷可能只需要几行代码微调更智能自动选择最适合的方法成本更低普通电脑也能运行强大的模型应用更广泛从辅助工具变成核心生产力工具从特定场景扩展到通用场景从专业人士使用到普通人也能用7.4 最后的思考技术本身不是目的解决问题才是。Kimi-VL-A3B-Thinking这样的开源模型降低了AI应用的门槛让更多人和组织能够用上先进的多模态AI能力。但也要清醒认识到AI不是万能的。它是最好的助手但不是替代者。在实际应用中要找到人和AI的最佳协作方式——让AI处理重复、繁琐的工作让人专注于创造、决策和情感交流。现在工具已经在你手中。接下来要做的就是找到那个最能发挥它价值的场景开始你的AI实践之旅。无论是提升工作效率还是创造新的产品体验亦或是解决某个具体问题这个模型都能成为你得力的助手。记住最好的学习方式就是动手去做。部署一个实例上传几张图片问几个问题看看它能做什么。然后想想你的工作、你的业务中有哪些地方可以用上这样的能力。从一个小的实验开始逐步扩大应用范围。在这个过程中你不仅会掌握一项新技术更会获得用AI思维解决问题的能力——这可能是比技术本身更宝贵的收获。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2461364.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;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…