[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-jingyaogong--minimind-v":3,"tool-jingyaogong--minimind-v":64},[4,17,25,39,48,56],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":16},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",138956,2,"2026-04-05T11:33:21",[13,14,15],"开发框架","Agent","语言模型","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":10,"last_commit_at":23,"category_tags":24,"status":16},3704,"NextChat","ChatGPTNextWeb\u002FNextChat","NextChat 是一款轻量且极速的 AI 助手，旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性，以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发，NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。\n\n这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言，它也提供了便捷的自托管方案，支持一键部署到 Vercel 或 Zeabur 等平台。\n\nNextChat 的核心亮点在于其广泛的模型兼容性，原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型，让用户在一个界面即可自由切换不同 AI 能力。此外，它还率先支持 MCP（Model Context Protocol）协议，增强了上下文处理能力。针对企业用户，NextChat 提供专业版解决方案，具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能，满足公司对数据隐私和个性化管理的高标准要求。",87618,"2026-04-05T07:20:52",[13,15],{"id":26,"name":27,"github_repo":28,"description_zh":29,"stars":30,"difficulty_score":10,"last_commit_at":31,"category_tags":32,"status":16},2268,"ML-For-Beginners","microsoft\u002FML-For-Beginners","ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程，旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周，包含 26 节精炼课程和 52 道配套测验，内容涵盖从基础概念到实际应用的完整流程，有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。\n\n无论是希望转型的开发者、需要补充算法背景的研究人员，还是对人工智能充满好奇的普通爱好者，都能从中受益。课程不仅提供了清晰的理论讲解，还强调动手实践，让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持，通过自动化机制提供了包括简体中文在内的 50 多种语言版本，极大地降低了全球不同背景用户的学习门槛。此外，项目采用开源协作模式，社区活跃且内容持续更新，确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路，ML-For-Beginners 将是理想的起点。",84991,"2026-04-05T10:45:23",[33,34,35,36,14,37,15,13,38],"图像","数据工具","视频","插件","其他","音频",{"id":40,"name":41,"github_repo":42,"description_zh":43,"stars":44,"difficulty_score":45,"last_commit_at":46,"category_tags":47,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,3,"2026-04-04T04:44:48",[14,33,13,15,37],{"id":49,"name":50,"github_repo":51,"description_zh":52,"stars":53,"difficulty_score":45,"last_commit_at":54,"category_tags":55,"status":16},519,"PaddleOCR","PaddlePaddle\u002FPaddleOCR","PaddleOCR 是一款基于百度飞桨框架开发的高性能开源光学字符识别工具包。它的核心能力是将图片、PDF 等文档中的文字提取出来，转换成计算机可读取的结构化数据，让机器真正“看懂”图文内容。\n\n面对海量纸质或电子文档，PaddleOCR 解决了人工录入效率低、数字化成本高的问题。尤其在人工智能领域，它扮演着连接图像与大型语言模型（LLM）的桥梁角色，能将视觉信息直接转化为文本输入，助力智能问答、文档分析等应用场景落地。\n\nPaddleOCR 适合开发者、算法研究人员以及有文档自动化需求的普通用户。其技术优势十分明显：不仅支持全球 100 多种语言的识别，还能在 Windows、Linux、macOS 等多个系统上运行，并灵活适配 CPU、GPU、NPU 等各类硬件。作为一个轻量级且社区活跃的开源项目，PaddleOCR 既能满足快速集成的需求，也能支撑前沿的视觉语言研究，是处理文字识别任务的理想选择。",74913,"2026-04-05T10:44:17",[15,33,13,37],{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":45,"last_commit_at":62,"category_tags":63,"status":16},2181,"OpenHands","OpenHands\u002FOpenHands","OpenHands 是一个专注于 AI 驱动开发的开源平台，旨在让智能体（Agent）像人类开发者一样理解、编写和调试代码。它解决了传统编程中重复性劳动多、环境配置复杂以及人机协作效率低等痛点，通过自动化流程显著提升开发速度。\n\n无论是希望提升编码效率的软件工程师、探索智能体技术的研究人员，还是需要快速原型验证的技术团队，都能从中受益。OpenHands 提供了灵活多样的使用方式：既可以通过命令行（CLI）或本地图形界面在个人电脑上轻松上手，体验类似 Devin 的流畅交互；也能利用其强大的 Python SDK 自定义智能体逻辑，甚至在云端大规模部署上千个智能体并行工作。\n\n其核心技术亮点在于模块化的软件智能体 SDK，这不仅构成了平台的引擎，还支持高度可组合的开发模式。此外，OpenHands 在 SWE-bench 基准测试中取得了 77.6% 的优异成绩，证明了其解决真实世界软件工程问题的能力。平台还具备完善的企业级功能，支持与 Slack、Jira 等工具集成，并提供细粒度的权限管理，适合从个人开发者到大型企业的各类用户场景。",70612,"2026-04-05T11:12:22",[15,14,13,36],{"id":65,"github_repo":66,"name":67,"description_en":68,"description_zh":69,"ai_summary_zh":69,"readme_en":70,"readme_zh":71,"quickstart_zh":72,"use_case_zh":73,"hero_image_url":74,"owner_login":75,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":79,"owner_email":80,"owner_twitter":81,"owner_website":81,"owner_url":82,"languages":83,"stars":88,"forks":89,"last_commit_at":90,"license":91,"difficulty_score":45,"env_os":92,"env_gpu":93,"env_ram":94,"env_deps":95,"category_tags":109,"github_topics":110,"view_count":10,"oss_zip_url":81,"oss_zip_packed_at":81,"status":16,"created_at":114,"updated_at":115,"faqs":116,"releases":164},1988,"jingyaogong\u002Fminimind-v","minimind-v","🚀 「大模型」1小时从0训练67M参数的视觉多模态VLM！🌏 Train a 67M-parameter VLM from scratch in just 1 hours! ","MiniMind-V 是一个超轻量级的视觉语言模型，能在1小时内、仅用约1.3元成本，从零训练出仅67M参数的多模态模型，实现看图说话能力。它打破了“大模型必须庞大昂贵”的刻板印象，让个人开发者和研究者在普通GPU上也能快速训练和部署视觉语言系统。项目完整开源了从数据清洗、预训练到微调的全流程代码，不仅是一个实用模型，更是一份清晰的入门教程。其核心技术亮点在于极简架构设计：用MLP替代复杂投影模块，采用SigLIP2视觉编码器，并支持稠密与混合专家（MoE）两种模式，兼顾效率与性能。适合AI初学者、教育工作者、边缘计算开发者以及希望低成本探索多模态技术的爱好者使用。无论你是想动手实践，还是理解VLM底层逻辑，MiniMind-V 都提供了一个低门槛、高透明度的起点。","\u003Cdiv align=\"center\">\n\n![logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_8ae5f24553fb.png)\n\n\u003C\u002Fdiv>\n\n\n\u003Cdiv align=\"center\">\n\n![visitors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_afb79ec599fc.png)\n[![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fjingyaogong\u002Fminimind-v?style=social)](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fstargazers)\n[![GitHub Code License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fjingyaogong\u002Fminimind-v?v=1)](LICENSE)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fjingyaogong\u002Fminimind-v)](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fcommits\u002Fmaster)\n[![GitHub pull request](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-welcome-blue)](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fpulls)\n[![Collection](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🤗-MiniMindV%20%20Collection-blue)](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fjingyaogong\u002Fminimind-v-67000833fb60b3a2e1f3597d)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n![GitHub Trend](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_d336655397cd.png)\n\n\u003C\u002Fdiv>\n\n\n\u003Cdiv align=\"center\">\n  \u003Ch3>\"大道至简\"\u003C\u002Fh3>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n中文 | [English](.\u002FREADME_en.md)\n\n\u003C\u002Fdiv>\n\n* 此项目旨在从0开始，仅用1.3块钱成本 + 1小时！即可训练出67M参数的超小多模态视觉语言模型**MiniMind-V**。\n* **MiniMind-V**最小版本体积仅为 GPT3 的约 $\\frac{1}{2600}$，力求做到个人GPU也可快速推理甚至训练。\n* **MiniMind-V**是[MiniMind](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)纯语言模型的视觉能力额外拓展。\n* 项目同时包含了VLM大模型的极简结构、数据集清洗、预训练(Pretrain)、监督微调(SFT)等全过程代码。\n* 这不仅是一个开源VLM模型的最小实现，也是入门视觉语言模型的简明教程。\n* 希望此项目能为所有人提供一个抛砖引玉的示例，一起感受创造的乐趣！推动更广泛AI社区的进步！\n\n> 为防止误解，“1小时” 基于NVIDIA 3090硬件设备（单卡）测试`1 epoch`，“1.3块钱” 指GPU服务器租用成本。\n\n\n\n\u003Cdiv align=\"center\">\n\n![minimind-3v](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_5a542d353056.gif)\n\n[🔗🤖在线体验](https:\u002F\u002Fwww.modelscope.cn\u002Fstudios\u002Fgongjy\u002FMiniMind-V) | [🔗🎞️视频介绍](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Sh1vYBEzY)\n\n\u003C\u002Fdiv>\n\n# 📌 项目介绍\n\n“用乐高拼出一架飞机，远比坐在头等舱里飞行更让人兴奋！”\n构建VLM范式的多模态大模型是否真的如想象中那样复杂？它的代码实现到底如何？\n训练过程究竟难不难？那么现在，探索它们的答案，一起感受创造的乐趣吧！\n\n> [!TIP]\n> （截至2026-02-15）MiniMind-V 系列已完成了以下型号模型训练，最小仅需67M (0.067B)，即可具备识图和对话的能力！\n\n| 模型 (大小)                   | 推理占用   | release    | \n|---------------------------|--------|------------|\n| minimind-3v-moe (201M-A67M) | 1.0 GB | 2026.04.01 |\n| minimind-3v (67M)         | 0.5 GB | 2026.04.01 |\n| MiniMind2-V (104M)        | 1.1 GB | 2025.02.20 |\n| MiniMind2-Small-V (26M)   | 0.6 GB | 2025.02.20 |\n| minimind-v-v1-small (27M) | 0.6 GB | 2024.10.04 |\n| minimind-v-v1 (109M)      | 1.1 GB | 2024.10.04 |\n\n#### 👉 更新日志\n\n\u003Cdetails> \n\u003Csummary> \u003Cb>2026-04-01\u003C\u002Fb> \u003C\u002Fsummary>\n\n- 新增 minimind-3v (67M) 和 minimind-3v-moe (201M-A67M) 模型\n- 统一使用768+8架构，支持dense和moe两种模式\n- 视觉编码器从CLIP切换为SigLIP2（siglip2-base-p16-ve）\n- 投影模块从QFormer改为MLP Projection + reshape压缩\n- 数据集格式更新为parquet，混合数据源、更新tokenizer，图像占位符改为`\u003C|image_pad|>`、新增WebUI：支持动态扫描模型目录、下拉菜单切换模型\n- 模型代码重构，LLM\u002FVLM统一适配Transformers格式\n- 训练脚本支持DDP多卡、bfloat16混合精度、torch.compile加速\n\n\u003C\u002Fdetails>\n\n\u003Cdetails> \n\u003Csummary> \u003Cb>2025-10-24\u003C\u002Fb> \u003C\u002Fsummary>\n\n- bug修复：模型权重不对应\n- 适配[「minimind-1024更新」](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)\n- 代码重构：训练和评估脚本规范化\n- 新增完整的断点续训支持\n\n\u003C\u002Fdetails>\n\n\u003Cdetails> \n\u003Csummary> \u003Cb>2025-04-27\u003C\u002Fb> \u003C\u002Fsummary>\n\n- 兼容性更新\n- 适配[「minimind仓库新特性」](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind\u002Fissues\u002F370)\n- 规范化部分代码\n\n\u003C\u002Fdetails>\n\n\u003Cdetails>\n\n\u003Csummary> \u003Cb>More...\u003C\u002Fb> \u003C\u002Fsummary>\n\n**2025-02-20**\n\n- MiniMind2-V伴随MiniMind2同步更新\n- 大幅减少所有冗余代码，规范代码格式\n- 大幅精简模型冗余结构\n- 更新数据集格式，拓展新的SFT数据集\n- 比前代VLM更优秀的效果！\n\n**2024-10-05**\n\n- MiniMind-V如期而至，首次开源\n\n\u003C\u002Fdetails>\n\n# 📌 快速开始\n\n\u003Cdetails>\n\u003Csummary>分享本人的软硬件配置（仅供参考）\u003C\u002Fsummary>\n\n* CPU: Intel(R) Core(TM) i9-10980XE CPU @ 3.00GHz\n* RAM: 128 GB\n* GPU: NVIDIA GeForce RTX 3090(24GB) * 8\n* Ubuntu==20.04\n* CUDA==12.2\n* Python==3.10.16\n* [requirements.txt](.\u002Frequirements.txt)\n\n\u003C\u002Fdetails>\n\n### 第0步\n\n```bash\n# 克隆代码仓库\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\n```\n\n```bash\n# 下载siglip2模型到 .\u002Fmodel 目录下\ngit clone https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fsiglip2-base-p16-ve\n# 或\ngit clone https:\u002F\u002Fmodelscope.cn\u002Fmodels\u002Fgongjy\u002Fsiglip2-base-p16-ve\n```\n\n```bash\n# 下载minimind语言模型权重到 .\u002Fout 目录下（作为训练VLM的基座语言模型）\n# HuggingFace\nhttps:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fminimind-3v-pytorch\u002Fblob\u002Fmain\u002Fllm_768.pth\n# 国内源\nhttps:\u002F\u002Fmodelscope.cn\u002Fmodels\u002Fgongjy\u002Fminimind-3v-pytorch\u002Fresolve\u002Fmaster\u002Fllm_768.pth\n```\n\n## Ⅰ 测试已有模型效果\n\n### 1' 环境准备\n\n```bash\npip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 2' 下载模型\n\n```bash\ngit clone https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fminimind-3v\n```\n\n### 3' 命令行问答\n\n```bash\n# load_from='model': 加载原生PyTorch权重, load_from='其他路径': 加载transformers格式\npython eval_vlm.py --load_from model --weight sft_vlm\n\n# 或使用transformers格式模型\npython eval_vlm.py --load_from minimind-3v\n```\n\n### 4' 启动WebUI（可选）\n\n```bash\n# ⚠️ 须先将 transformers 格式模型文件夹复制到 .\u002Fscripts\u002F 目录下（例如：cp -r minimind-3v .\u002Fscripts\u002Fminimind-3v），web_demo_vlm 脚本会自动扫描该目录下包含权重文件的子文件夹，如不存在则报错\ncd scripts && python web_demo_vlm.py\n```\n\n## Ⅱ 从0开始自己训练\n\n### 1' 环境准备\n\n```bash\npip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n\u003Cdetails>\n\u003Csummary>注：提前测试Torch是否可用cuda\u003C\u002Fsummary>\n\n```bash\nimport torch\nprint(torch.cuda.is_available())\n```\n\n如果不可用，请自行去[torch_stable](https:\u002F\u002Fdownload.pytorch.org\u002Fwhl\u002Ftorch_stable.html)\n下载whl文件安装。参考[链接](https:\u002F\u002Fblog.csdn.net\u002Fweixin_45456738\u002Farticle\u002Fdetails\u002F141029610?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%AE%89%E8%A3%85torch&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-141029610.nonecase&spm=1018.2226.3001.4187)\n\n\u003C\u002Fdetails>\n\n### 2' 数据下载\n\n从下文提供的[数据集链接](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fjingyaogong\u002Fminimind-v_dataset)\n下载所需内容并放到`.\u002Fdataset`下。\n\n\u003Cdetails>\n\u003Csummary>注：数据集须知\u003C\u002Fsummary>\n\n【注1】之前需解压50万零碎的图像文件可能非常慢。2025-12-27起，数据集格式统一为Parquet，图文一体化存储，体积更小，无需解压，加载更快。\n\n【注2】Parquet是列式存储格式，支持高效压缩和快速读取。如果你对它感到陌生，可以预览数据内容，在`dataset\u002F`目录下执行`python lm_dataset.py`可视化前5条图文对\n\nPretrain数据：\n```bash\nwget https:\u002F\u002Fhf-mirror.com\u002Fdatasets\u002Fjingyaogong\u002Fminimind-v_dataset\u002Fresolve\u002Fmain\u002Fpretrain_i2t.parquet\n```\n\nSFT数据：\n```bash\nwget https:\u002F\u002Fhf-mirror.com\u002Fdatasets\u002Fjingyaogong\u002Fminimind-v_dataset\u002Fresolve\u002Fmain\u002Fsft_i2t.parquet\n```\n\n建议预留~2GB空间存放数据集，若无多余空间存放pretrain数据，可尝试跳过pretrain训练步骤直接进行sft训练。\n\n\u003C\u002Fdetails>\n\n### 3' 开始训练\n\n**3.1 预训练（学图像描述）**\n\n```bash\n# 基础训练命令（从LLM权重开始，仅训练vision_proj）\npython train_pretrain_vlm.py --epochs 4 --from_weight llm\n```\n\n> 执行预训练，得到 `pretrain_vlm_*.pth` 作为预训练的输出权重（其中*为模型的dimension，默认为768）\n\n\n**3.2 监督微调（学看图对话方式）**\n\n```bash\n# 基础训练命令（从预训练权重开始，全参数微调）\npython train_sft_vlm.py --epochs 2 --from_weight pretrain_vlm\n```\n\n> 执行监督微调，得到 `sft_vlm_*.pth` 作为指令微调的输出权重\n\n\u003Cdetails>\n\u003Csummary>注：训练须知\u003C\u002Fsummary>\n\n**训练特性：**\n- 支持断点续训：添加`--from_resume 1`参数可从上次中断处继续训练\n- 支持GPU数量变化：续训时GPU数量改变会自动转换step\n- 原子性保存：使用临时文件+替换机制，防止保存过程中断导致权重损坏\n- 每次保存同时生成`out\u002F**.pth`（模型权重）和`checkpoints\u002F**_resume.pth`（训练状态）文件\n\n```bash\n# 训练中断后，使用相同命令并添加 --from_resume 1\npython train_sft_vlm.py --epochs 4 --from_resume 1\n```\n\n**参数说明：**\n- `--from_weight`: 基础权重名称（llm, pretrain_vlm, none等）\n- `--save_weight`: 保存权重的前缀名\n- `--from_resume`: 是否续训（0=从头开始，1=从检查点继续）\n- `--freeze_llm`: 是否冻结LLM参数（仅pretrain使用）\n- 更多可直接参考代码\n\n\u003C\u002Fdetails>\n\n\n---\n\n### 4' 测试模型效果\n\n确保需要测试的模型`*.pth`文件位于`.\u002Fout\u002F`目录下。\n也可以直接去[此处](https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fminimind-3v-pytorch)下载使用我训练的`*.pth`文件。\n\n```bash\n# 测试SFT模型（默认）\npython eval_vlm.py --weight sft_vlm\n\n# 测试Pretrain模型\npython eval_vlm.py --weight pretrain_vlm\n```\n\n---\n\n> [!TIP]\n> 训练脚本均为Pytorch原生框架，均支持多卡加速，假设你的设备有N (N＞1) 张显卡：\n\n单机N卡启动训练方式 (DDP, 支持多机多卡集群)\n\n```bash\ntorchrun --nproc_per_node N train_xxx.py\n```\n\n\u003Cdetails>\n\u003Csummary>注：其它须知\u003C\u002Fsummary>\n\n\u003Cdel>\n单机N卡启动训练 (DeepSpeed)\n\n```bash\ndeepspeed --master_port 29500 --num_gpus=N train_xxx.py\n```\n\u003C\u002Fdel>\n\n可根据需要开启wandb记录训练过程\n\n```bash\n# 需要登录: wandb login\ntorchrun --nproc_per_node N train_xxx.py --use_wandb\n# and\npython train_xxx.py --use_wandb\n```\n\n通过添加`--use_wandb`参数，可以记录训练过程，训练完成后，可以在wandb网站上查看训练过程。通过修改`wandb_project`\n和`wandb_run_name`参数，可以指定项目名称和运行名称。\n\n【注】：25年6月后，国内网络环境无法直连WandB，MiniMind项目默认转为使用[SwanLab](https:\u002F\u002Fswanlab.cn\u002F)作为训练可视化工具（完全兼容WandB API），即`import wandb`改为`import swanlab as wandb`即可，其他均无需改动。\n\n\u003C\u002Fdetails>\n\n# 📌 模型细节\n\nMiniMind-V (VLM)的基座语言模型MiniMind (LLM)来自孪生项目[minimind](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)，\n具体的模型结构、训练细节、原理、测试效果等均可移步[minimind](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)项目查阅。\n此处为减少冗余，省略讨论LLM的相关部分，默认您已对MiniMind (LLM)的细节有基本的了解。\n\n> 即使您不太了解LLM的细节，也可参考“快速开始”流程训练一个MiniMind-V，\n> 这并不受到影响，仓库致力于最低成本的开箱即用！\n\nMiniMind-V的结构仅增加Visual Encoder和特征投影两个子模块，增加模态混合分支，以支持多种模态信息的输入：\n![LLM-structure](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_15f075b4aff6.jpg)\n![LLM-structure](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_fe362d2e022f.jpg)\n\n\n\u003Cdetails>\n\u003Csummary> 【重要】一些有趣的思考 \u003C\u002Fsummary>\n\n此处不妨展开想一想两个问题：\n\n* 什么叫做**L**arge **L**anguage **M**odel (LLM)？\n* 什么叫做多模态模型？\n\n[这篇文章](https:\u002F\u002Fwww.jiqizhixin.com\u002Farticles\u002F2024-09-15-3)完美吻合本人的想法：\n大语言模型（LLM）名字虽然带有语言二字，但它们其实与语言关系不大，这只是历史问题，更确切的名字应该是自回归 Transformer\n或者其他。LLM 更多是一种统计建模的通用技术，它们主要通过自回归 Transformer 来模拟 token 流，而这些 token\n可以代表文本、图片、音频、动作选择、甚至是分子等任何东西。\n因此，只要能将问题转化为模拟一系列离散 token 的流程，理论上都可以应用 LLM 来解决。\n实际上，随着大型语言模型技术栈的日益成熟，我们可能会看到越来越多的问题被纳入这种建模范式。也就是说，问题固定在使用 LLM\n进行『下一个 token 的预测』，只是每个领域中 token 的用途和含义有所不同。\n\n[ZJU-LiXi老师](https:\u002F\u002Fperson.zju.edu.cn\u002Fxilics#694283)同样谈及过类似观点（原话大意如下）：\n文本、视频、语音、动作等在人类看来属于「多模态」信号，但所谓的「模态」其实只是人类在信息存储方式上的一种分类概念。\n就像`.txt`和`.png`文件，虽然在视觉呈现和高级表现形式上有所不同，但它们本质上并没有根本区别。\n之所以出现「多模态」这个概念，仅仅是因为人类在不同的感知层面上对这些信号的分类需求。\n然而，对于机器来说，无论信号来自何种「模态」，最终它们都只是以一串二进制的「单模态」数字序列来呈现。\n机器并不会区分这些信号的模态来源，而只是处理和分析这些序列背后所承载的信息内容。\n\n个人认为**G**enerative **P**retrained **T**ransformer (GPT) 比 **L**arge **L**anguage **M**odel (LLM)更为贴切，\n因此本人表达上更习惯用\"GPT\"去代表LLM\u002FVLM\u002F类GPT架构的系列模型，而非为了蹭OpenAI的热度。\n\n至此，我们可以用一句话总结GPT的所作所为：\n\nGPT模型根据现有token预测输出下一个下下一个下下下一个token ...，直到模型输出结束符；此处的\"token\"其实并不需要一定是文本！\n\n```text\n> 对于LLM模型，如果需要理解\"图片\"，我们只要把\"图片\"作为对一种特殊的从来没见过的\"外国语言\"，通过\"外语词典\"翻译后即可作为特殊的语言输入LLM\n> 对于LLM模型，如果需要理解\"音频\"，我们只要把\"音频\"作为对一种特殊的从来没见过的\"外国语言\"，通过\"外语词典\"翻译后即可作为特殊的语言输入LLM\n> ...\n```\n\n\u003Cu>**为了得到MiniMind-V，我们只需要完成这2件事即可：**\u003C\u002Fu>\n\n1. 借助擅长翻译图片的 **\"外语词典\"** ，把图片从 **\"外国语言\"** 翻译为模型便于理解的 **\"LLM语言\"**\n2. 训练微调LLM，使其和 **\"外语词典\"** 度过磨合期，从而更好的理解图片\n\n\"外语词典\" 称之为Visual Encoder模型。\n和LlaVA、Qwen-VL等视觉语言模型类似，MiniMind-V当前选用开源SigLIP2系列模型作为Visual Encoder。\n具体使用[siglip2-base-p16-ve](https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fsiglip2-base-p16-ve)，\n一种基于 ViT-B\u002F16 架构的Visual Encoder用于描述图像文本信息。\n当前使用的 SigLIP2 NaFlex 视觉编码器会根据预处理结果生成最多256个patch token作为encoder编码层的输入，\n最终产生1×768维的嵌入向量用于和文本对计算误差。\n我们并不需要最终嵌入表示，因此只取encoder层的输出，也就是VIT核心主干的输出特征即可。\n它拿到前一层256×768大小的特征，通过reshape将每4个相邻token拼接为1个（256×768 → 64×3072），再经过2层MLP（Linear→GELU→Linear）投影到LLM的隐藏维度，最终作为64个visual token输入MiniMind-V。\n与LLM的结合在获取图像encoder特征后，一方面需要把视觉特征对齐到LLM的文本token维度，\n另一方面，要将图像特征映射到与文本embedding相同的空间，即文本token和原生的视觉token需要磨合并不能直接地一视同仁，\n可以称之为跨模态的特征对齐。\n\n[LlaVA-1](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2304.08485)使用简单的线性变换完成对齐，[LlaVA-1.5](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2310.03744)升级为2层MLP，MiniMind-V采用与LlaVA-1.5相同的MLP Projection方案，并结合reshape进行token压缩。\n\n![llava-structure](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_ec4c6a538028.png)\n\nMiniMind-V的主要结构已介绍完毕。\n\n\u003C\u002Fdetails>\n\n\n---\n\n下面，我们简单讨论MiniMind-V的外部输入输出的变化。\n\nVLM的输入依然是一段文本，其中包含特殊的`\u003Cimage>`占位符。\n在计算文本嵌入后，可以将图像编码器生成的向量投影到该占位符对应的嵌入部分，替换掉原先的占位符embedding。\n例如：\n\n```text\n\u003Cimage>\\n这个图像中有什么内容？\n```\n\n在`minimind-v`中，使用64个`\u003C|image_pad|>`组成的占位符代替图像（SigLIP2输出的256个patch特征经reshape+MLP压缩为64个token），因此`minimind-v`的prompt为：\n\n```text\n\u003C|image_pad|>\u003C|image_pad|>...\u003C|image_pad|>(×64)\\n这个图片描述的是什么内容？\n```\n\n计算完embedding和projection，用视觉特征替换掉对应占位符的embedding后，整个计算过程到输出则和LLM部分没有差异。\n\n![input](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_a6ad6a45e412.jpg)\n\n至此，`MiniMind-V`的所有细节呈现完毕，VLM模型子类继承自`MiniMind`，仅做**最小**变更而产生，核心算法改动`\u003C 50行`，迁移难度极低，和`LlaVA`等模型具体实现存在区别，但思路一致。\n\n# 📌 实验\n\n## Ⅰ 数据集\n\n原始来源：\n- [Chinese-LLaVA-Vision](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FLinkSoul\u002FChinese-LLaVA-Vision-Instructions)：包含约57万张预训练图像，来自CC-3M和COCO 2014\n- [llava-en-zh-300k](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FBUAADreamer\u002Fllava-en-zh-300k)：包含300k条指令微调数据和15万张图像\n- [LLaVA-SFT-665K](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fcsuhan\u002FLLaVA-SFT-665K)：包含665k条指令微调数据\n\n其中部分为中文数据，部分为英文数据。问答内容经过翻译，对中文支持更友好，进一步经过整理并`resize`（pretrain分辨率128×128，sft分辨率160×160）。\n\n(pretrain_i2t.parquet) 预训练数据集格式：\n\n```text\n列名: conversations (json string), image_bytes (binary), image_names (string)\n\nconversations 示例:\n[\n  {\"role\": \"user\", \"content\": \"提供给定图像的简要描述。\\n\u003Cimage>\"},\n  {\"role\": \"assistant\", \"content\": \"橄榄油是自由使用的健康成分。\"}\n]\nimage_bytes: \u003C图像二进制数据>\n```\n\n(sft_i2t.parquet) 单图指令微调数据集格式：\n\n```text\n列名: conversations (json string), image_bytes (binary), image_names (string)\n\nconversations 示例:\n[\n  {\"role\": \"user\", \"content\": \"闹钟的位置对睡眠质量有什么影响？\u003Cimage>\"},\n  {\"role\": \"assistant\", \"content\": \"把数字闹钟放在床头柜...\"}\n]\nimage_bytes: \u003C图像二进制数据>\n```\n\n> 注：sft_i2t.parquet 共约 58 万条数据，其中约 23.6 万条为含图对话（i2t），约 34.6 万条为纯文本对话（t2t），后者用于保持模型的基础语言能力。\n\n数据集下载地址：([ModelScope](https:\u002F\u002Fwww.modelscope.cn\u002Fdatasets\u002Fgongjy\u002Fminimind-v_dataset) | [HuggingFace](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002Fjingyaogong\u002Fminimind-v_dataset))\n\n## Ⅱ 训练\n\n训练分为两个阶段，均冻结Visual Encoder梯度，仅训练Projection和LLM部分。\n训练基于LLM预训练权重初始化，支持DDP多卡训练、混合精度（bfloat16）、torch.compile加速和swanlab日志记录。\n\n> train_pretrain_vlm\n\n预训练阶段从约113万条图文描述数据中学习图片的通用知识（如鹿是鹿，狗是狗）。\n此阶段采用较高学习率（1e-4），最大序列长度360，冻结LLM主体参数，仅设置Projection和LLM的第0层可学习，\n目的是让模型快速建立视觉特征到语言空间的基础映射，同时避免破坏LLM已有的语言能力。\n\n> train_sft_vlm\n\n指令微调阶段从约58万条数据中学习真实问答格式，其中约23.6万条为图文多轮对话，约34.6万条为纯文本对话（用于保持LLM基础能力）。\n此阶段采用较低学习率（1e-5~1e-6），最大序列长度768，解冻Projection和LLM全部参数进行全量微调，\n使模型学会根据图片内容进行多轮对话，并通过混入的纯文本数据缓解灾难性遗忘。\n\n> 训练时间和Loss走势（仅供参考）\n\nPretrain [768+8] (dense & moe)\n![input](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_e13f48aaa155.jpg)\n\nSFT [768+8] (dense & moe)\n![input](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_8b36a466d4ea.jpg)\n\n## Ⅲ 模型权重\n\n| 模型格式 | ModelScope | HuggingFace |\n|---|---|---|\n| 原生PyTorch (`*.pth`) | [minimind-3v-pytorch](https:\u002F\u002Fwww.modelscope.cn\u002Fmodels\u002Fgongjy\u002Fminimind-3v-pytorch) | [minimind-3v-pytorch](https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fminimind-3v-pytorch) |\n| Transformers 格式 | [minimind-v collection](https:\u002F\u002Fmodelscope.cn\u002Fcollections\u002FMiniMind-V-42b841dde22d41) | [minimind-v collection](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fjingyaogong\u002Fminimind-v-67000833fb60b3a2e1f3597d) |\n\n> 注：Transformers版本均为单图指令微调后的`MiniMind-V`模型\n\n# 📌 评估\n\n### 效果测试\n\n#### 单图对话\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>image\u003C\u002Fth>\n      \u003Cth>minimind-3v\u003C\u002Fth>\n      \u003Cth>minimind-3v-moe\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_460af3e36fa4.jpg\" alt=\"airplane\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这幅图片中，一架白色的飞机正降落在一片广阔的天空中。天空中飘浮着许多流线型的建筑物，这些建筑物散落在天空中。除了主要的飞机外，还有两辆汽车在场景中各处停放，包括一辆巴士和一辆小型汽车。这架飞机似乎停在地面上，表明它们正在进行商业活动。\u003C\u002Ftd>\n      \u003Ctd>在这张照片中，有一架大型的飞机正在降落，这表明它是为这架飞机而设计的。此外，它停在云层之下，这表明它在移动。天空中有云朵，暗示着这架飞机正在空中飞行。整个场景的背景显示出一种宁静祥和的气氛，暗示这架飞机正在飞行中作为一个机会来进行外交活动或与其他客机接触。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_1c33b81105a6.jpg\" alt=\"birthday-cake\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>图片显示了一张大生日蛋糕，上面刻有各种生日和装饰物的生日和一束蜡烛。这些甜蜜而独特的气味使其成为这个特殊场合的焦点。蛋糕被放在餐桌上，有蛋糕放在上面，很可能是放在桌上，用蜡烛加上蜡烛来营造出诱人的场景。此外，这张生日蛋糕还配上了蜡烛作为装饰物，进一步丰富了整个生日的氛围。\u003C\u002Ftd>\n      \u003Ctd>这张照片捕捉到了一个生日聚会，各种美味可口的生日蛋糕和一把勺子放在那里。它被放置在一个充满生气的蛋糕盒子里，里面装着各种各样的草莓糖霜糖浆。蛋糕上有一个大号的蜡烛，给人一种温馨和诱人的图案。周围有很多小点心，比如小心地蜡烛和糖霜，让整个蛋糕看起来更加令人放松和诱人。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_5c092026f96e.jpg\" alt=\"pizza\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这张图片中，有一个装饰着奶酪的比萨饼和一片新鲜的青绿野餐毯。这看起来像是一块沙拉，给人一种清新、诱人、美味的享受体验。披萨的大小和大小暗示着一种随意和随意的用餐体验。画面中，一群人围坐在一块砖块上，其中一些则分散在桌子上，周围摆放着不同种类的青绿野餐毯。此外，桌子上还放着一块披萨片，上面摆放着各种各样的青绿野餐毯，营造出一种轻松愉快的氛围。\u003C\u002Ftd>\n      \u003Ctd>图中，比萨饼在木桌上。它被切成了比萨饼的大小，而且披萨放置在木桌上。比萨有很多配料，包括奶酪和各种酱汁。披萨有多种口味，包括经典的牛排式和意大利式，还有一些加在比萨表面。比萨上有很多新鲜水果，如西红柿和莫吉托，以及奶酪，使这幅图片更加丰富和有吸引力。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_405d41b2da80.jpg\" alt=\"red-car\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这幅图片中，一辆白色的马车停泊在一条红色的路牌上。这个车辆位于一条绿油油的道路上，很可能是一个购物中心或高速公路。在这辆车的后部，可以看到一个绿色的马车停泊在路上，这是典型的户外场所。这辆马车可能是为了娱乐或观赏车辆而停放。\u003C\u002Ftd>\n      \u003Ctd>画面显示了一辆红色高性能赛车，停在一辆大型汽车后面。这辆车可以看到车身、汽车、汽车及汽车停在里面。它似乎是一辆大型红色汽车，有各种大小的汽车，表明它可能是汽车制造商生产的。此外，车辆周围的环境暗示了一种户外环境，因为一辆汽车也出现在场景中。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_e48c6fd99300.jpg\" alt=\"colorful-houses\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>画面中，一座蓝色白色的大房子位于一条城市街道上，为这个地区增添了一丝自然与奇思妙想。墙上挂着一盏交通灯，为整个场景增添了特色和引人入胜。\u003C\u002Ftd>\n      \u003Ctd>画面中，一座蓝色房子旁边有很多小花瓶。这表明这座房子里可能正在营运一些小型小型花盆或盆栽植物。一些人聚集在房子周围，可能正在享受户外生活中的某种乐趣或美景。有些人站在画面中，而其他人则散布于场景中。总体而言，这幅场景捕捉到了一个美丽而令人愉快的场景，展示出该房子里一个令人放松和宁静的环境。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_fcd5582327ca.jpg\" alt=\"snow-mountain\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这幅图片中，有一个高高的山，它看起来像是大森林中的一片高山。天空中闪烁着不同颜色的星星，给画面增加了一抹红点。天空中有两朵高大的树，树木高高地挂在一起，暗示着森林中的宁静与自然之美。在画面的中心，可以看到一棵高大的松树，树干上覆盖着一层薄薄的苔藓。这种高高的松树与周围的大山构成了一个有趣而引人入胜的背景，为这片自然之美增添了一丝神秘色彩。\u003C\u002Ftd>\n      \u003Ctd>这幅图片展示了一个令人印象深刻的宁静湖面。湖水从天上飘浮着，暗示着一个令人平静和放松的水面。湖边上有几匹高大、形状各异的景象，它们在湖面上显得格外美丽。此外，在湖的边缘，有一座巨大的高山，为整个湖景增添了几分神秘色彩。湖景中的天空也被描述得如画，给整个画面增添了一种纯净和宁静的气氛。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_df193add91a9.jpg\" alt=\"street-food\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>图中，一大群人聚集在一张大餐桌旁欣赏着烤肉和热带水果，其中一人站在一碗里摆放着各种各样的盘子。桌子上放着几个碗，上面摆满了肉类和其他配料。有些放在盘子里，其他的则放在桌子上。在这张餐桌周围，有几个盘子，其中两个放着一杯酒，另一个放在靠近餐桌的左侧。\u003C\u002Ftd>\n      \u003Ctd>画面中，一群人聚集在一家大餐馆里，享受着一顿饭。这家餐厅的菜单上有一些生菜和猪肉，但它们已经被切成了四份，上面还有一个碗。他们拿着烤肉准备食用。在背景中，有几个瓶子在场景中。还有一把勺子位于桌子左侧，使盘子看起来更吸引人。一盆盆栽植物放在桌子左侧上方，为空间增添了一抹绿色。场景中的其他元素包括一个碗，里面放着葡萄酒和两根葡萄酒。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_030d9e0a0d1d.jpg\" alt=\"kittens\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>图中，一只棕色的小灰猫正坐在篮子里。这只猫身上戴着一顶棕色的帽子，很可能是一个戴帽子的男人。在篮子里，一只棕色的紫色小灰猫正沿着篮子里去休息。这些小猫似乎也在享受这份温暖，但它们似乎并没有完全放过来。此外，背景中还可以看到一把剪刀。这把剪刀看起来是专门为小猫设计的，它可以用作家庭相册或礼物。在篮子的侧边，有几条篮子，其中一条是最亮的，另一条则是最暗的。在篮子中可以看到一只棕色小灰猫，而另一条则是更暗的。\u003C\u002Ftd>\n      \u003Ctd>在这张照片中，一只小猫坐在篮子里，紧挨着它坐在篮子里的那块木篮上。猫的身体上有九条纹毛发。这个场景描绘了它们之间的亲密关系，展示了它们在一起度过时光的不同场合。画面中，一群大的猫坐在篮子里，其中一只小猫也被描述为小猫，这可能表明他们正在享受与猫互动、与它们的互动或一起度过愉快时光。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_74ddfefcba4e.jpg\" alt=\"tropical-beach\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这张图片中，沙滩上有很多椅子，还有一些人站着，可以看到一把遮阳伞。虽然它看起来很大，但却没有任何特别的设计。沙滩上有许多椅子，表明这是一家餐馆或者服务员办公室。其中最引人注目的是一张海边椅子，椅子上放着一只热带海滩椅。这个椅子非常适合放松身心、享受海滩时光。此外，还有一些椅子和其他人在场景中，可能是为了放置食物或其他用途。靠近椅子的椅子表示该位置可供使用的其他人使用，也许也有一人在靠近那个椅子的地方。\u003C\u002Ftd>\n      \u003Ctd>图片显示了一个美丽的海滩场景，有很多椅子散布在天然的棕榈树上。其中一个椅子靠近海滩，而另一个则较小。沙滩上有两把椅子，其中一把靠近中间，另一把则稍微偏左，还有一些则在靠近边缘处。在海边的海滩周围，你可以看到几个人坐在海边的沙滩上，有的靠近海水中，还有一张沙滩椅。其中一张椅子靠近海滩，另一张椅子靠近海边。此外，还可以看到几只遮阳伞，为沙滩上的躺椅提供了遮阴。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_b7fce402238f.jpg\" alt=\"school-bus\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>画面中，一辆蓝色的黄色公共汽车正从一辆黄色公共汽车驶过，在道路上停泊着。这辆公共汽车看起来是在一个黄色的黄色高速公路上。图中有几个人，其中一些靠近前景，而另一些则靠后一些，但都没有看到。在黄色公共汽车附近，可以看到一辆停在路边，那辆停在路边。此外，还有两辆不同方向的巴士，一辆靠近前景，另一辆靠近前景，另一辆稍微靠后一些。\u003C\u002Ftd>\n      \u003Ctd>画面中，一辆黄色和黄色相间的黄色和蓝色交叉路口的蓝色公共汽车正在一条通往路缘上的红色公交车站。有几辆公共汽车正停在路边，它们离一排车道很近。在背景中，可以看到一些长凳，它们在城市里交叉起来。一个长凳位于图中最左侧，而另一个则稍微靠后一点，为画面增添了一些城市特色。整个场景中有很多人和车辆散落在场景各处，包括黄色和蓝色的交叉路口。整个场景给人一种忙碌和迷茫的感觉，这也突显了公共汽车在市区中的存在和目的。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 效果小结：\n\n两个模型均能识别图像主体（飞机、蛋糕、汽车、海滩等），但普遍存在重复表述和幻觉细节。受限于模型和数据规模，整体处于\"能看懂大意、细节不准\"的阶段。\n\n视觉信号对于LLM视作一种特殊的外语，因此\"学习外语\"的能力高低，很大程度上取决于LLM的能力。LLM性能越强，对应的VLM越强，此时效果增益会很明显。\n\n#### 未来值得改进的方面：\n\n```text\n> 可引入动态分辨率和Tile-based编码（如LLaVA-NeXT），突破固定分辨率限制。\n> Visual Encoder可升级为更强的视觉编码器，获取更细粒度的图像特征。\n> 拓展多图理解、视频理解和视觉定位（Visual Grounding）能力。\n> ...\n```\n\n# 📌 致谢\n\n> [!TIP]\n> 如果您觉得 `MiniMind-V`对您有所帮助，可以在 GitHub 上加一个⭐\u003Cbr\u002F>\n> 水平有限难免存在未知的纰漏，欢迎所有人在Issues交流指正或提交PR改进项目\u003Cbr\u002F>\n> 您的支持就是持续改进项目的动力，谢谢！\n\n## 🤝[贡献者](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fgraphs\u002Fcontributors)\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg width=\"200\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_a962b2c2e93e.png\" \u002F>\n\u003C\u002Fa>\n\n## 😊鸣谢\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxinyanghuang7\">\u003Cb>@xinyanghuang7\u003C\u002Fb>\u003C\u002Fa>: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxinyanghuang7\u002Fminimind-v\u002Ftree\u002Fhxy\">多图vlm分支\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Ftree\u002F32cf4c5c01337231fd907b92d513de8945594263\">仓库截至此版本提供\u003C\u002Fa> \n\n\u003Cdetails> \n\u003Csummary> \u003Cb>参考链接 & 感谢以下优秀的论文或项目\u003C\u002Fb> \u003C\u002Fsummary>\n\n- 排名不分任何先后顺序\n- [LlaVA](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2304.08485)\n- [LlaVA-VL](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2310.03744)\n- [Chinese-LLaVA-Vision-Instructions](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FLinkSoul\u002FChinese-LLaVA-Vision-Instructions)\n\n\u003C\u002Fdetails>\n\n## 🫶支持者\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fstargazers\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fstars\u002Fdark\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fstars\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Cimg alt=\"github contribution grid snake animation\" src=\"https:\u002F\u002Freporoster.com\u002Fstars\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n    \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fnetwork\u002Fmembers\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fforks\u002Fdark\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fforks\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Cimg alt=\"github contribution grid snake animation\" src=\"https:\u002F\u002Freporoster.com\u002Fforks\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n    \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_6c856be1ccf9.png&theme=dark\"\u002F>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_6c856be1ccf9.png\"\u002F>\n  \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_6c856be1ccf9.png\"\u002F>\n\u003C\u002Fpicture>\n\n# 🎓 引用\n\n如果您觉得 MiniMind-V 对您的研究或工作有所帮助，请引用：\n\n```bibtex\n@misc{minimind-v,\n  title = {MiniMind-V: Train a Tiny VLM from Scratch},\n  author = {Jingyao Gong},\n  year = {2024},\n  url = {https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v},\n  note = {GitHub repository, accessed 2026}\n}\n```\n\n# 📜 许可协议\n\n本仓库遵循 [Apache-2.0 License](LICENSE) 开源协议。\n","\u003Cdiv align=\"center\">\n\n![logo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_8ae5f24553fb.png)\n\n\u003C\u002Fdiv>\n\n\n\u003Cdiv align=\"center\">\n\n![visitors](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_afb79ec599fc.png)\n[![GitHub Repo stars](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002Fjingyaogong\u002Fminimind-v?style=social)](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fstargazers)\n[![GitHub Code License](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flicense\u002Fjingyaogong\u002Fminimind-v?v=1)](LICENSE)\n[![GitHub last commit](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Flast-commit\u002Fjingyaogong\u002Fminimind-v)](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fcommits\u002Fmaster)\n[![GitHub pull request](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPRs-welcome-blue)](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fpulls)\n[![Collection](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F🤗-MiniMindV%20%20Collection-blue)](https:\u002F\u002Fhuggingface.co\u002Fcollections\u002Fjingyaogong\u002Fminimind-v-67000833fb60b3a2e1f3597d)\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n![GitHub Trend](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_d336655397cd.png)\n\n\u003C\u002Fdiv>\n\n\n\u003Cdiv align=\"center\">\n  \u003Ch3>\"大道至简\"\u003C\u002Fh3>\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n中文 | [English](.\u002FREADME_en.md)\n\n\u003C\u002Fdiv>\n\n* 此项目旨在从0开始，仅用1.3块钱成本 + 1小时！即可训练出67M参数的超小多模态视觉语言模型**MiniMind-V**。\n* **MiniMind-V**最小版本体积仅为 GPT3 的约 $\\frac{1}{2600}$，力求做到个人GPU也可快速推理甚至训练。\n* **MiniMind-V**是[MiniMind](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)纯语言模型的视觉能力额外拓展。\n* 项目同时包含了VLM大模型的极简结构、数据集清洗、预训练(Pretrain)、监督微调(SFT)等全过程代码。\n* 这不仅是一个开源VLM模型的最小实现，也是入门视觉语言模型的简明教程。\n* 希望此项目能为所有人提供一个抛砖引玉的示例，一起感受创造的乐趣！推动更广泛AI社区的进步！\n\n> 为防止误解，“1小时” 基于NVIDIA 3090硬件设备（单卡）测试`1 epoch`，“1.3块钱” 指GPU服务器租用成本。\n\n\n\n\u003Cdiv align=\"center\">\n\n![minimind-3v](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_5a542d353056.gif)\n\n[🔗🤖在线体验](https:\u002F\u002Fwww.modelscope.cn\u002Fstudios\u002Fgongjy\u002FMiniMind-V) | [🔗🎞️视频介绍](https:\u002F\u002Fwww.bilibili.com\u002Fvideo\u002FBV1Sh1vYBEzY)\n\n\u003C\u002Fdiv>\n\n# 📌 项目介绍\n\n“用乐高拼出一架飞机，远比坐在头等舱里飞行更让人兴奋！”\n构建VLM范式的多模态大模型是否真的如想象中那样复杂？它的代码实现到底如何？\n训练过程究竟难不难？那么现在，探索它们的答案，一起感受创造的乐趣吧！\n\n> [!TIP]\n> （截至2026-02-15）MiniMind-V 系列已完成了以下型号模型训练，最小仅需67M (0.067B)，即可具备识图和对话的能力！\n\n| 模型 (大小)                   | 推理占用   | release    | \n|---------------------------|--------|------------|\n| minimind-3v-moe (201M-A67M) | 1.0 GB | 2026.04.01 |\n| minimind-3v (67M)         | 0.5 GB | 2026.04.01 |\n| MiniMind2-V (104M)        | 1.1 GB | 2025.02.20 |\n| MiniMind2-Small-V (26M)   | 0.6 GB | 2025.02.20 |\n| minimind-v-v1-small (27M) | 0.6 GB | 2024.10.04 |\n| minimind-v-v1 (109M)      | 1.1 GB | 2024.10.04 |\n\n#### 👉 更新日志\n\n\u003Cdetails> \n\u003Csummary> \u003Cb>2026-04-01\u003C\u002Fb> \u003C\u002Fsummary>\n\n- 新增 minimind-3v (67M) 和 minimind-3v-moe (201M-A67M) 模型\n- 统一使用768+8架构，支持dense和moe两种模式\n- 视觉编码器从CLIP切换为SigLIP2（siglip2-base-p16-ve）\n- 投影模块从QFormer改为MLP Projection + reshape压缩\n- 数据集格式更新为parquet，混合数据源、更新tokenizer，图像占位符改为`\n\n# 测试预训练模型\npython eval_vlm.py --weight pretrain_vlm\n```\n\n---\n\n> [!TIP]\n> 训练脚本均为Pytorch原生框架，均支持多卡加速，假设你的设备有N (N＞1) 张显卡：\n\n单机N卡启动训练方式 (DDP, 支持多机多卡集群)\n\n```bash\ntorchrun --nproc_per_node N train_xxx.py\n```\n\n\u003Cdetails>\n\u003Csummary>注：其它须知\u003C\u002Fsummary>\n\n\u003Cdel>\n单机N卡启动训练 (DeepSpeed)\n\n```bash\ndeepspeed --master_port 29500 --num_gpus=N train_xxx.py\n```\n\u003C\u002Fdel>\n\n可根据需要开启wandb记录训练过程\n\n```bash\n# 需要登录: wandb login\ntorchrun --nproc_per_node N train_xxx.py --use_wandb\n# and\npython train_xxx.py --use_wandb\n```\n\n通过添加`--use_wandb`参数，可以记录训练过程，训练完成后，可以在wandb网站上查看训练过程。通过修改`wandb_project`\n和`wandb_run_name`参数，可以指定项目名称和运行名称。\n\n【注】：25年6月后，国内网络环境无法直连WandB，MiniMind项目默认转为使用[SwanLab](https:\u002F\u002Fswanlab.cn\u002F)作为训练可视化工具（完全兼容WandB API），即`import wandb`改为`import swanlab as wandb`即可，其他均无需改动。\n\n\u003C\u002Fdetails>\n\n# 📌 模型细节\n\nMiniMind-V (VLM)的基座语言模型MiniMind (LLM)来自孪生项目[minimind](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)，\n具体的模型结构、训练细节、原理、测试效果等均可移步[minimind](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind)项目查阅。\n此处为减少冗余，省略讨论LLM的相关部分，默认您已对MiniMind (LLM)的细节有基本的了解。\n\n> 即使您不太了解LLM的细节，也可参考“快速开始”流程训练一个MiniMind-V，\n> 这并不受到影响，仓库致力于最低成本的开箱即用！\n\nMiniMind-V的结构仅增加Visual Encoder和特征投影两个子模块，增加模态混合分支，以支持多种模态信息的输入：\n![LLM-structure](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_15f075b4aff6.jpg)\n![LLM-structure](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_fe362d2e022f.jpg)\n\n\n\u003Cdetails>\n\u003Csummary> 【重要】一些有趣的思考 \u003C\u002Fsummary>\n\n此处不妨展开想一想两个问题：\n\n* 什么叫做**L**arge **L**anguage **M**odel (LLM)？\n* 什么叫做多模态模型？\n\n[这篇文章](https:\u002F\u002Fwww.jiqizhixin.com\u002Farticles\u002F2024-09-15-3)完美吻合本人的想法：\n大语言模型（LLM）名字虽然带有语言二字，但它们其实与语言关系不大，这只是历史问题，更确切的名字应该是自回归 Transformer\n或者其他。LLM 更多是一种统计建模的通用技术，它们主要通过自回归 Transformer 来模拟 token 流，而这些 token\n可以代表文本、图片、音频、动作选择、甚至是分子等任何东西。\n因此，只要能将问题转化为模拟一系列离散 token 的流程，理论上都可以应用 LLM 来解决。\n实际上，随着大型语言模型技术栈的日益成熟，我们可能会看到越来越多的问题被纳入这种建模范式。也就是说，问题固定在使用 LLM\n进行『下一个 token 的预测』，只是每个领域中 token 的用途和含义有所不同。\n\n[ZJU-LiXi老师](https:\u002F\u002Fperson.zju.edu.cn\u002Fxilics#694283)同样谈及过类似观点（原话大意如下）：\n文本、视频、语音、动作等在人类看来属于「多模态」信号，但所谓的「模态」其实只是人类在信息存储方式上的一种分类概念。\n就像`.txt`和`.png`文件，虽然在视觉呈现和高级表现形式上有所不同，但它们本质上并没有根本区别。\n之所以出现「多模态」这个概念，仅仅是因为人类在不同的感知层面上对这些信号的分类需求。\n然而，对于机器来说，无论信号来自何种「模态」，最终它们都只是以一串二进制的「单模态」数字序列来呈现。\n机器并不会区分这些信号的模态来源，而只是处理和分析这些序列背后所承载的信息内容。\n\n个人认为**G**enerative **P**retrained **T**ransformer (GPT) 比 **L**arge **L**anguage **M**odel (LLM)更为贴切，\n因此本人表达上更习惯用\"GPT\"去代表LLM\u002FVLM\u002F类GPT架构的系列模型，而非为了蹭OpenAI的热度。\n\n至此，我们可以用一句话总结GPT的所作所为：\n\nGPT模型根据现有token预测输出下一个下下一个下下下一个token ...，直到模型输出结束符；此处的\"token\"其实并不需要一定是文本！\n\n```text\n> 对于LLM模型，如果需要理解\"图片\"，我们只要把\"图片\"作为对一种特殊的从来没见过的\"外国语言\"，通过\"外语词典\"翻译后即可作为特殊的语言输入LLM\n> 对于LLM模型，如果需要理解\"音频\"，我们只要把\"音频\"作为对一种特殊的从来没见过的\"外国语言\"，通过\"外语词典\"翻译后即可作为特殊的语言输入LLM\n> ...\n```\n\n\u003Cu>**为了得到MiniMind-V，我们只需要完成这2件事即可：**\u003C\u002Fu>\n\n1. 借助擅长翻译图片的 **\"外语词典\"** ，把图片从 **\"外国语言\"** 翻译为模型便于理解的 **\"LLM语言\"**\n2. 训练微调LLM，使其和 **\"外语词典\"** 度过磨合期，从而更好的理解图片\n\n\"外语词典\" 称之为Visual Encoder模型。\n和LlaVA、Qwen-VL等视觉语言模型类似，MiniMind-V当前选用开源SigLIP2系列模型作为Visual Encoder。\n具体使用[siglip2-base-p16-ve](https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fsiglip2-base-p16-ve)，\n一种基于 ViT-B\u002F16 架构的Visual Encoder用于描述图像文本信息。\n当前使用的 SigLIP2 NaFlex 视觉编码器会根据预处理结果生成最多256个patch token作为encoder编码层的输入，\n最终产生1×768维的嵌入向量用于和文本对计算误差。\n我们并不需要最终嵌入表示，因此只取encoder层的输出，也就是VIT核心主干的输出特征即可。\n它拿到前一层256×768大小的特征，通过reshape将每4个相邻token拼接为1个（256×768 → 64×3072），再经过2层MLP（Linear→GELU→Linear）投影到LLM的隐藏维度，最终作为64个visual token输入MiniMind-V。\n与LLM的结合在获取图像encoder特征后，一方面需要把视觉特征对齐到LLM的文本token维度，\n另一方面，要将图像特征映射到与文本embedding相同的空间，即文本token和原生的视觉token需要磨合并不能直接地一视同仁，\n可以称之为跨模态的特征对齐。\n\n[LlaVA-1](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2304.08485)使用简单的线性变换完成对齐，[LlaVA-1.5](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2310.03744)升级为2层MLP，MiniMind-V采用与LlaVA-1.5相同的MLP Projection方案，并结合reshape进行token压缩。\n\n![llava-structure](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_ec4c6a538028.png)\n\nMiniMind-V的主要结构已介绍完毕。\n\n\u003C\u002Fdetails>\n\n\n---\n\n下面，我们简单讨论MiniMind-V的外部输入输出的变化。\n\nVLM的输入依然是一段文本，其中包含特殊的`\u003Cimage>`占位符。\n在计算文本嵌入后，可以将图像编码器生成的向量投影到该占位符对应的嵌入部分，替换掉原先的占位符embedding。\n例如：\n\n```text\n\u003Cimage>\\n这个图像中有什么内容？\n```\n\n在`minimind-v`中，使用64个`\n\n\u003Ctable>\n  \u003Cthead>\n    \u003Ctr>\n      \u003Cth>图片\u003C\u002Fth>\n      \u003Cth>minimind-3v\u003C\u002Fth>\n      \u003Cth>minimind-3v-moe\u003C\u002Fth>\n    \u003C\u002Ftr>\n  \u003C\u002Fthead>\n  \u003Ctbody>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_460af3e36fa4.jpg\" alt=\"飞机\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这幅图片中，一架白色的飞机正降落在一片广阔的天空中。天空中飘浮着许多流线型的建筑物，这些建筑物散落在天空中。除了主要的飞机外，还有两辆汽车在场景中各处停放，包括一辆巴士和一辆小型汽车。这架飞机似乎停在地面上，表明它们正在进行商业活动。\u003C\u002Ftd>\n      \u003Ctd>这张照片中，有一架大型的飞机正在降落，这表明它是为这架飞机而设计的。此外，它停在云层之下，这表明它在移动。天空中有云朵，暗示着这架飞机正在空中飞行。整个场景的背景显示出一种宁静祥和的气氛，暗示这架飞机正在飞行中作为一个机会来进行外交活动或与其他客机接触。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_1c33b81105a6.jpg\" alt=\"生日蛋糕\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>图片显示了一张大生日蛋糕，上面刻有各种生日和装饰物的生日和一束蜡烛。这些甜蜜而独特的气味使其成为这个特殊场合的焦点。蛋糕被放在餐桌上，有蛋糕放在上面，很可能是放在桌上，用蜡烛加上蜡烛来营造出诱人的场景。此外，这张生日蛋糕还配上了蜡烛作为装饰物，进一步丰富了整个生日的氛围。\u003C\u002Ftd>\n      \u003Ctd>这张照片捕捉到了一个生日聚会，各种美味可口的生日蛋糕和一把勺子放在那里。它被放置在一个充满生气的蛋糕盒子里，里面装着各种各样的草莓糖霜糖浆。蛋糕上有一个大号的蜡烛，给人一种温馨和诱人的图案。周围有很多小点心，比如小心地蜡烛和糖霜，让整个蛋糕看起来更加令人放松和诱人。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_5c092026f96e.jpg\" alt=\"披萨\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这张图片中，有一个装饰着奶酪的比萨饼和一片新鲜的青绿野餐毯。这看起来像是一块沙拉，给人一种清新、诱人、美味的享受体验。披萨的大小和大小暗示着一种随意和随意的用餐体验。画面中，一群人围坐在一块砖块上，其中一些则分散在桌子上，周围摆放着不同种类的青绿野餐毯。此外，桌子上还放着一块披萨片，上面摆放着各种各样的青绿野餐毯，营造出一种轻松愉快的氛围。\u003C\u002Ftd>\n      \u003Ctd>图中，比萨饼在木桌上。它被切成了比萨饼的大小，而且披萨放置在木桌上。比萨有很多配料，包括奶酪和各种酱汁。披萨有多种口味，包括经典的牛排式和意大利式，还有一些加在比萨表面。比萨上有很多新鲜水果，如西红柿和莫吉托，以及奶酪，使这幅图片更加丰富和有吸引力。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_405d41b2da80.jpg\" alt=\"红色汽车\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这幅图片中，一辆白色的马车停泊在一条红色的路牌上。这个车辆位于一条绿油油的道路上，很可能是一个购物中心或高速公路。在这辆车的后部，可以看到一个绿色的马车停泊在路上，这是典型的户外场所。这辆马车可能是为了娱乐或观赏车辆而停放。\u003C\u002Ftd>\n      \u003Ctd>画面显示了一辆红色高性能赛车，停在一辆大型汽车后面。这辆车可以看到车身、汽车、汽车及汽车停在里面。它似乎是一辆大型红色汽车，有各种大小的汽车，表明它可能是汽车制造商生产的。此外，车辆周围的环境暗示了一种户外环境，因为一辆汽车也出现在场景中。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_e48c6fd99300.jpg\" alt=\"彩色房屋\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>画面中，一座蓝色白色的大房子位于一条城市街道上，为这个地区增添了一丝自然与奇思妙想。墙上挂着一盏交通灯，为整个场景增添了特色和引人入胜。\u003C\u002Ftd>\n      \u003Ctd>画面中，一座蓝色房子旁边有很多小花瓶。这表明这座房子里可能正在营运一些小型小型花盆或盆栽植物。一些人聚集在房子周围，可能正在享受户外生活中的某种乐趣或美景。有些人站在画面中，而其他人则散布于场景中。总体而言，这幅场景捕捉到了一个美丽而令人愉快的场景，展示出该房子里一个令人放松和宁静的环境。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_fcd5582327ca.jpg\" alt=\"雪山湖景\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这幅图片中，有一个高高的山，它看起来像是大森林中的一片高山。天空中闪烁着不同颜色的星星，给画面增加了一抹红点。天空中有两朵高大的树，树木高高地挂在一起，暗示着森林中的宁静与自然之美。在画面的中心，可以看到一棵高大的松树，树干上覆盖着一层薄薄的苔藓。这种高高的松树与周围的大山构成了一个有趣而引人入胜的背景，为这片自然之美增添了一丝神秘色彩。\u003C\u002Ftd>\n      \u003Ctd>这幅图片展示了一个令人印象深刻的宁静湖面。湖水从天上飘浮着，暗示着一个令人平静和放松的水面。湖边上有几匹高大、形状各异的景象，它们在湖面上显得格外美丽。此外，在湖的边缘，有一座巨大的高山，为整个湖景增添了几分神秘色彩。湖景中的天空也被描述得如画，给整个画面增添了一种纯净和宁静的气氛。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_df193add91a9.jpg\" alt=\"街头美食\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>图中，一大群人聚集在一张大餐桌旁欣赏着烤肉和热带水果，其中一人站在碗里摆放着各种各样的盘子。桌子上放着几个碗，上面摆满了肉类和其他配料。有些放在盘子里，其他的则放在桌子上。在这张餐桌周围，有几个盘子，其中两个放着一杯酒，另一个放在靠近餐桌的左侧。\u003C\u002Ftd>\n      \u003Ctd>画面中，一群人聚集在一家大餐馆里，享受着一顿饭。这家餐厅的菜单上有一些生菜和猪肉，但它们已经被切成了四份，上面还有一个碗。他们拿着烤肉准备食用。在背景中，有几个瓶子在场景中。还有一把勺子位于桌子左侧，使盘子看起来更吸引人。一盆盆栽植物放在桌子左侧上方，为空间增添了一抹绿色。场景中的其他元素包括一个碗，里面放着葡萄酒和两根葡萄酒。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_030d9e0a0d1d.jpg\" alt=\"小猫\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>图中，一只棕色的小灰猫正坐在篮子里。这只猫身上戴着一顶棕色的帽子，很可能是一个戴帽子的男人。在篮子里，一只棕色的紫色小灰猫正沿着篮子里去休息。这些小猫似乎也在享受这份温暖，但它们似乎并没有完全放过来。此外，背景中还可以看到一把剪刀。这把剪刀看起来是专门为小猫设计的，它可以用作家庭相册或礼物。在篮子的侧边，有几条篮子，其中一条是最亮的，另一条则是最暗的。在篮子中可以看到一只棕色小灰猫，而另一条则是更暗的。\u003C\u002Ftd>\n      \u003Ctd>在这张照片中，一只小猫坐在篮子里，紧挨着它坐在篮子里的那块木篮上。猫的身体上有九条纹毛发。这个场景描绘了它们之间的亲密关系，展示了它们在一起度过时光的不同场合。画面中，一群大的猫坐在篮子里，其中一只小猫也被描述为小猫，这可能表明他们正在享受与猫互动、与它们的互动或一起度过愉快时光。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_74ddfefcba4e.jpg\" alt=\"热带海滩\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>在这张图片中，沙滩上有很多椅子，还有一些人站着，可以看到一把遮阳伞。虽然它看起来很大，但却没有任何特别的设计。沙滩上有许多椅子，表明这是一家餐馆或者服务员办公室。其中最引人注目的是一张海边椅子，椅子上放着一只热带海滩椅。这个椅子非常适合放松身心、享受海滩时光。此外，还有一些椅子和其他人在场景中，可能是为了放置食物或其他用途。靠近椅子的椅子表示该位置可供使用的其他人使用，也许也有一人在靠近那个椅子的地方。\u003C\u002Ftd>\n      \u003Ctd>图片显示了一个美丽的海滩场景，有很多椅子散布在天然的棕榈树上。其中一个椅子靠近海滩，而另一个则较小。沙滩上有两把椅子，其中一把靠近中间，另一把则稍微偏左，还有一些则在靠近边缘处。在海边的海滩周围，你可以看到几个人坐在海边的沙滩上，有的靠近海水中，还有一张沙滩椅。其中一张椅子靠近海滩，另一张椅子靠近海边。此外，还可以看到几只遮阳伞，为沙滩上的躺椅提供了遮阴。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n    \u003Ctr>\n      \u003Ctd>\n        \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_b7fce402238f.jpg\" alt=\"校车\">\n        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      \u003C\u002Ftd>\n      \u003Ctd>画面中，一辆蓝色的黄色公共汽车正从一辆黄色公共汽车驶过，在道路上停泊着。这辆公共汽车看起来是在一个黄色的黄色高速公路上。图中有几个人，其中一些靠近前景，而另一些则靠后一些，但都没有看到。在黄色公共汽车附近，可以看到一辆停在路边，那辆停在路边。此外，还有两辆不同方向的巴士，一辆靠近前景，另一辆靠近前景，另一辆稍微靠后一些。\u003C\u002Ftd>\n      \u003Ctd>画面中，一辆黄色和黄色相间的黄色和蓝色交叉路口的蓝色公共汽车正在一条通往路缘上的红色公交车站。有几辆公共汽车正停在路边，它们离一排车道很近。在背景中，可以看到一些长凳，它们在城市里交叉起来。一个长凳位于图中最左侧，而另一个则稍微靠后一点，为画面增添了一些城市特色。整个场景中有很多人和车辆散落在场景各处，包括黄色和蓝色的交叉路口。整个场景给人一种忙碌和迷茫的感觉，这也突显了公共汽车在市区中的存在和目的。\u003C\u002Ftd>\n    \u003C\u002Ftr>\n  \u003C\u002Ftbody>\n\u003C\u002Ftable>\n\n### 效果小结：\n\n两个模型均能识别图像主体（飞机、蛋糕、汽车、海滩等），但普遍存在重复表述和幻觉细节。受限于模型和数据规模，整体处于\"能看懂大意、细节不准\"的阶段。\n\n视觉信号对于LLM视作一种特殊的外语，因此\"学习外语\"的能力高低，很大程度上取决于LLM的能力。LLM性能越强，对应的VLM越强，此时效果增益会很明显。\n\n#### 未来值得改进的方面：\n\n```text\n> 可引入动态分辨率和Tile-based编码（如LLaVA-NeXT），突破固定分辨率限制。\n> Visual Encoder可升级为更强的视觉编码器，获取更细粒度的图像特征。\n> 拓展多图理解、视频理解和视觉定位（Visual Grounding）能力。\n> ...\n```\n\n# 📌 致谢\n\n> [!TIP]\n> 如果您觉得 `MiniMind-V`对您有所帮助，可以在 GitHub 上加一个⭐\u003Cbr\u002F>\n> 水平有限难免存在未知的纰漏，欢迎所有人在Issues交流指正或提交PR改进项目\u003Cbr\u002F>\n> 您的支持就是持续改进项目的动力，谢谢！\n\n## 🤝[贡献者](https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fgraphs\u002Fcontributors)\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fgraphs\u002Fcontributors\">\n  \u003Cimg width=\"200\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_a962b2c2e93e.png\" \u002F>\n\u003C\u002Fa>\n\n## 😊鸣谢\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxinyanghuang7\">\u003Cb>@xinyanghuang7\u003C\u002Fb>\u003C\u002Fa>: \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fxinyanghuang7\u002Fminimind-v\u002Ftree\u002Fhxy\">多图vlm分支\u003C\u002Fa> | \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Ftree\u002F32cf4c5c01337231fd907b92d513de8945594263\">仓库截至此版本提供\u003C\u002Fa> \n\n\u003Cdetails> \n\u003Csummary> \u003Cb>参考链接 & 感谢以下优秀的论文或项目\u003C\u002Fb> \u003C\u002Fsummary>\n\n- 排名不分任何先后顺序\n- [LlaVA](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2304.08485)\n- [LlaVA-VL](https:\u002F\u002Farxiv.org\u002Fpdf\u002F2310.03744)\n- [Chinese-LLaVA-Vision-Instructions](https:\u002F\u002Fhuggingface.co\u002Fdatasets\u002FLinkSoul\u002FChinese-LLaVA-Vision-Instructions)\n\n\u003C\u002Fdetails>\n\n## 🫶支持者\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fstargazers\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fstars\u002Fdark\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fstars\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Cimg alt=\"github contribution grid snake animation\" src=\"https:\u002F\u002Freporoster.com\u002Fstars\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n    \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n\u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fnetwork\u002Fmembers\">\n    \u003Cpicture>\n      \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fforks\u002Fdark\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Freporoster.com\u002Fforks\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n      \u003Cimg alt=\"github contribution grid snake animation\" src=\"https:\u002F\u002Freporoster.com\u002Fforks\u002Fjingyaogong\u002Fminimind-v\"\u002F>\n    \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n\u003Cpicture>\n  \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_6c856be1ccf9.png&theme=dark\"\u002F>\n  \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_6c856be1ccf9.png\"\u002F>\n  \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_readme_6c856be1ccf9.png\"\u002F>\n\u003C\u002Fpicture>\n\n# 🎓 引用\n\n如果您觉得 MiniMind-V 对您的研究或工作有所帮助，请引用：\n\n```bibtex\n@misc{minimind-v,\n  title = {MiniMind-V: Train a Tiny VLM from Scratch},\n  author = {Jingyao Gong},\n  year = {2024},\n  url = {https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v},\n  note = {GitHub repository, accessed 2026}\n}\n```\n\n# 📜 许可协议\n\n本仓库遵循 [Apache-2.0 License](LICENSE) 开源协议。","# MiniMind-V 快速上手指南\n\n## 环境准备\n\n- **推荐硬件**：NVIDIA GPU（如 RTX 3090，24GB 显存以上）\n- **系统**：Ubuntu 20.04+\n- **Python**：3.10+\n- **CUDA**：12.2+\n\n> 推荐使用国内镜像源加速依赖安装。\n\n## 安装步骤\n\n1. **克隆项目代码**  \n```bash\ngit clone --depth 1 https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\ncd minimind-v\n```\n\n2. **下载视觉编码器 SigLIP2**（国内源推荐）  \n```bash\ngit clone https:\u002F\u002Fmodelscope.cn\u002Fmodels\u002Fgongjy\u002Fsiglip2-base-p16-ve\n```\n\n3. **下载基座语言模型权重**（LLM）  \n下载 `llm_768.pth` 到 `.\u002Fout\u002F` 目录：  \n[国内源下载链接](https:\u002F\u002Fmodelscope.cn\u002Fmodels\u002Fgongjy\u002Fminimind-3v-pytorch\u002Fresolve\u002Fmaster\u002Fllm_768.pth)\n\n4. **安装依赖**（使用清华源加速）  \n```bash\npip install -r requirements.txt -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n5. **下载数据集**（Parquet 格式，无需解压）  \n```bash\n# 预训练数据\nwget https:\u002F\u002Fhf-mirror.com\u002Fdatasets\u002Fjingyaogong\u002Fminimind-v_dataset\u002Fresolve\u002Fmain\u002Fpretrain_i2t.parquet -P .\u002Fdataset\u002F\n\n# 监督微调数据\nwget https:\u002F\u002Fhf-mirror.com\u002Fdatasets\u002Fjingyaogong\u002Fminimind-v_dataset\u002Fresolve\u002Fmain\u002Fsft_i2t.parquet -P .\u002Fdataset\u002F\n```\n\n## 基本使用\n\n### ✅ 快速测试预训练模型\n\n1. 下载官方 SFT 模型（推荐）  \n```bash\ngit clone https:\u002F\u002Fhuggingface.co\u002Fjingyaogong\u002Fminimind-3v\n```\n\n2. 运行推理（使用 Transformers 格式模型）  \n```bash\npython eval_vlm.py --load_from minimind-3v\n```\n\n> 输入示例：`\u003Cimage>\\n这张图里有什么？`（模型自动识别图像占位符 `UDO`）\n\n### 🚀 从零训练你的 MiniMind-V\n\n1. **预训练（图像描述学习）**  \n```bash\npython train_pretrain_vlm.py --epochs 4 --from_weight llm\n```\n输出：`out\u002Fpretrain_vlm_768.pth`\n\n2. **监督微调（看图对话学习）**  \n```bash\npython train_sft_vlm.py --epochs 2 --from_weight pretrain_vlm\n```\n输出：`out\u002Fsft_vlm_768.pth`\n\n3. **测试训练结果**  \n```bash\npython eval_vlm.py --weight sft_vlm\n```\n\n### 🌐 启动 WebUI（可选）\n\n1. 将模型文件夹复制到 scripts 目录：  \n```bash\ncp -r minimind-3v .\u002Fscripts\u002F\n```\n\n2. 启动 WebUI：  \n```bash\ncd scripts && python web_demo_vlm.py\n```\n访问 `http:\u002F\u002Flocalhost:7860` 即可在线交互。\n\n---\n\n> 所有训练脚本均支持多卡加速（DDP）：  \n> `torchrun --nproc_per_node N train_xxx.py`  \n> 支持断点续训：添加 `--from_resume 1` 参数即可从上次中断处继续训练。","某乡村中学的信息技术教师李老师，希望为学生开发一个能“看图说话”的AI小助手，用于辅助语文和美术课的图像理解教学，但学校预算有限，无专业AI团队支持。\n\n### 没有 minimind-v 时\n- 需要依赖云端大模型API，每调用一次产生费用，月支出超千元，学校无法长期承担。\n- 现有开源VLM模型动辄数GB，学校老旧的GPU（GTX 1660）根本无法加载，部署失败。\n- 教师缺乏训练经验，面对复杂框架和海量数据预处理流程无从下手，项目停滞数月。\n- 想让学生亲手修改模型提示词、观察输出变化，但现有模型无法本地运行，无法实现课堂互动。\n- 模型训练需数天甚至数周，教学进度无法匹配，学生失去耐心。\n\n### 使用 minimind-v 后\n- 仅用1.3元租用1小时GPU，就训练出仅0.5GB的67M参数模型，部署在教师个人笔记本上，零成本运行。\n- 模型可在GTX 1660上流畅推理，学生轮流提问“这张画里有什么？”“为什么天空是紫色的？”，实时互动无延迟。\n- 项目提供完整代码与数据清洗脚本，李老师按教程3小时完成训练，首次体验了“从零造AI”的成就感。\n- 模型支持动态切换，李老师可让学生对比27M、67M版本效果，直观理解“参数与能力”的关系，成为生动的AI课例。\n- 断点续训和单卡训练支持让李老师能利用午休时间继续优化，不再受制于设备与时间。\n\nminimind-v 让一个普通教师，用一台旧电脑和一杯咖啡的时间，把AI教育从“遥不可及”变成了“触手可及”。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fjingyaogong_minimind-v_8ae5f245.png","jingyaogong","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fjingyaogong_a311a5f9.jpg","無限進步","Intelligence","China","gongjy.cs@qq.com",null,"https:\u002F\u002Fgithub.com\u002Fjingyaogong",[84],{"name":85,"color":86,"percentage":87},"Python","#3572A5",100,7287,797,"2026-04-05T10:47:01","Apache-2.0","Linux","需要 NVIDIA GPU，推荐 RTX 3090 (24GB)，显存至少 8GB，CUDA 12.2","128 GB",{"notes":96,"python":97,"dependencies":98},"建议使用 Linux 系统，首次运行需下载 SigLIP2 视觉编码器和 MiniMind 语言模型，总计约 5GB；数据集使用 Parquet 格式，无需解压；训练支持多卡 DDP，推荐使用 torchrun 启动；国内网络建议使用 ModelScope 镜像下载模型；默认使用 SwanLab 替代 WandB 进行训练可视化。","3.10.16",[99,100,101,102,103,104,105,106,107,108],"torch","transformers","accelerate","datasets","pyarrow","wandb","swanlab","pillow","opencv-python","fastapi",[15],[111,112,113],"artificial-intelligence","chatgpt","vision-language-model","2026-03-27T02:49:30.150509","2026-04-06T07:14:58.276567",[117,122,127,132,137,142,147,152,156,160],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},8980,"训练时 loss 值一直保持在 7.5 左右不下降，是什么原因？","这是因为使用的预训练权重（pth 文件）是旧版本，导致语言模型的初始参数未正确注入。请确保使用最新上传的权重文件，特别是 `512_llm.pth` 和 `512_vlm_pretrain.pth`，并检查是否从 Hugging Face 或 ModelScope 正确下载了最新版本。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F75",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},8981,"预训练时 loss 不下降，始终在 3.0 左右徘徊，如何解决？","默认设置下预训练仅解冻 vision_proj 层，导致语言模型部分未参与训练，loss 难以下降。建议在 `trainer_utils.py` 中解冻最后 1-2 层语言模型参数，例如添加代码：`for name, param in model.model.named_parameters(): if f'layers.{last_layer_idx}.' in name: param.requires_grad = True`，并确保使用高质量的语言数据集进行预训练。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F98",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},8982,"从零开始训练时 loss 停滞在 2.0 左右，是否正常？","不正常。直接从零训练视觉语言模型而未加载预训练语言模型权重，会导致模型缺乏语言先验知识。必须加载预训练的 LLM 权重（如 `llm-512.pth`）作为初始化，否则无法有效学习语言任务。建议先训练或加载一个高质量的语言模型，再进行 VL 任务微调。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F34",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},8983,"eval_vlm.py 输出乱码或无意义文本，如何修复？","这是因为语言模型权重文件路径错误或未正确加载。请确认 `sft_vlm_512.pth` 或 `pretrain_vlm_512.pth` 文件完整，并将纯语言模型权重（如 `full_sft_512.pth`）重命名为 `llm-512.pth` 放入 `out\u002F` 目录下，确保模型能正确加载语言部分的参数。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F85",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},8984,"为什么预训练模型生成文本时不会自然停止，而 SFT 模型可以？","预训练阶段仅训练 vision_proj 层，语言模型未学习到何时停止生成，因此依赖 max_length 强制截断；而 SFT 阶段训练了全部参数，模型学会了生成 EOS token 自然停止。建议在预训练后进行 SFT 微调，以获得对话式生成能力。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F67",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},8985,"在 Windows 平台上设置 dim=512 时 loss 不变化，但 dim=768 正常，为什么？","这是由于权重文件损坏或不匹配导致。请重新下载并替换 `512_llm.pth` 和 `512_vlm_pretrain.pth` 权重文件，确保与当前模型结构（dim=512, num_hidden_layers=8）完全一致。Windows 下路径或文件读取可能更敏感，建议使用校验和验证文件完整性。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F4",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},8986,"多图输入时出现维度错误（如 vision_proj.shape 处理错误），如何修复？","在 `model\u002Fmodel_vlm.py` 第 76 行，`vision_proj.unsqueeze(1)` 应改为 `vision_proj.unsqueeze(0)`，因为第一维是 batch 维度，第二维才是图像数量。同时检查输入数据是否为多图格式，确保 `sft_vlm_data_multi.jsonl` 中每个样本的 `\u003Cimage>` 占位符数量与实际图像数一致。","https:\u002F\u002Fgithub.com\u002Fjingyaogong\u002Fminimind-v\u002Fissues\u002F38",{"id":153,"question_zh":154,"answer_zh":155,"source_url":141},8987,"SFT 微调和预训练的数据格式和损失函数几乎一样，两者本质区别是什么？","核心区别在于训练参数范围：预训练只训练 vision_proj（CLIP 到语言模型的投影层），语言模型参数冻结；SFT 则解冻全部语言模型参数，使其学习指令响应模式和 EOS 停止行为。数据虽都是问答格式，但 SFT 通过全参数更新使模型具备对话能力。",{"id":157,"question_zh":158,"answer_zh":159,"source_url":121},8988,"为什么 Hugging Face 权重更新了，但 ModelScope 权重仍旧？","维护者确认 ModelScope 权重一直正常，无需更新。若遇到问题，请优先使用 Hugging Face 提供的最新权重文件。若需 ModelScope 版本，请手动同步或联系项目维护者上传新版本，避免因平台不同导致权重不一致。",{"id":161,"question_zh":162,"answer_zh":163,"source_url":121},8989,"训练时 hidden_size=768 会导致模型重复输出，而 512 正常，如何解决？","这通常是因为模型结构与加载的权重不匹配。请确保 `--hidden_size`、`--num_hidden_layers` 与权重文件（如 `sft_vlm_768.pth`）的配置完全一致。若使用 768 维度，请确认已使用对应维度训练的权重，避免混用 512 权重导致维度错配。",[165],{"id":166,"version":167,"summary_zh":168,"released_at":169},106416,"v2","https:\u002F\u002Fminimind-v.readthedocs.io","2025-10-21T14:36:05"]