[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-zai-org--VisualGLM-6B":3,"tool-zai-org--VisualGLM-6B":64},[4,17,27,35,43,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},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,3,"2026-04-05T11:01:52",[13,14,15],"开发框架","图像","Agent","ready",{"id":18,"name":19,"github_repo":20,"description_zh":21,"stars":22,"difficulty_score":23,"last_commit_at":24,"category_tags":25,"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,15,26],"语言模型",{"id":28,"name":29,"github_repo":30,"description_zh":31,"stars":32,"difficulty_score":23,"last_commit_at":33,"category_tags":34,"status":16},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",107662,"2026-04-03T11:11:01",[13,14,15],{"id":36,"name":37,"github_repo":38,"description_zh":39,"stars":40,"difficulty_score":23,"last_commit_at":41,"category_tags":42,"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,26],{"id":44,"name":45,"github_repo":46,"description_zh":47,"stars":48,"difficulty_score":23,"last_commit_at":49,"category_tags":50,"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",[14,51,52,53,15,54,26,13,55],"数据工具","视频","插件","其他","音频",{"id":57,"name":58,"github_repo":59,"description_zh":60,"stars":61,"difficulty_score":10,"last_commit_at":62,"category_tags":63,"status":16},3128,"ragflow","infiniflow\u002Fragflow","RAGFlow 是一款领先的开源检索增强生成（RAG）引擎，旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体（Agent）能力相结合，不仅支持从各类文档中高效提取知识，还能让模型基于这些知识进行逻辑推理和任务执行。\n\n在大模型应用中，幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构（如表格、图表及混合排版），显著提升了信息检索的准确度，从而有效减少模型“胡编乱造”的现象，确保回答既有据可依又具备时效性。其内置的智能体机制更进一步，使系统不仅能回答问题，还能自主规划步骤解决复杂问题。\n\n这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统，还是致力于探索大模型在垂直领域落地的创新者，都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口，既降低了非算法背景用户的上手门槛，也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目，它正成为连接通用大模型与行业专有知识之间的重要桥梁。",77062,"2026-04-04T04:44:48",[15,14,13,26,54],{"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":76,"owner_avatar_url":77,"owner_bio":78,"owner_company":79,"owner_location":79,"owner_email":79,"owner_twitter":80,"owner_website":81,"owner_url":82,"languages":83,"stars":92,"forks":93,"last_commit_at":94,"license":95,"difficulty_score":10,"env_os":96,"env_gpu":97,"env_ram":98,"env_deps":99,"category_tags":109,"github_topics":110,"view_count":23,"oss_zip_url":79,"oss_zip_packed_at":79,"status":16,"created_at":114,"updated_at":115,"faqs":116,"releases":152},3047,"zai-org\u002FVisualGLM-6B","VisualGLM-6B","Chinese and English multimodal conversational language model | 多模态中英双语对话语言模型","VisualGLM-6B 是一款开源的多模态对话语言模型，能够同时理解图像并进行流畅的中英文双语交流。它主要解决了传统大模型“只懂文字、看不懂图”的痛点，让用户可以上传照片并针对画面内容提问、讨论或获取知识，实现了从单一文本交互到图文融合交互的跨越。\n\n这款工具非常适合开发者、AI 研究人员以及希望探索多模态应用的技术爱好者使用。无论是构建智能客服、开发教育辅助应用，还是进行学术实验，VisualGLM-6B 都能提供强大的基座支持。值得一提的是，它在技术上巧妙结合了 ChatGLM-6B 语言模型与 BLIP2-Qformer 视觉编码器，不仅拥有 78 亿参数的高效架构，还通过独特的量化技术，让普通消费级显卡（最低仅需 6.3G 显存）也能轻松本地部署运行。此外，项目基于 SwissArmyTransformer 库构建，灵活支持 LoRA 等高效微调方法，方便用户根据特定场景定制专属模型。作为开源社区推动技术发展的成果，VisualGLM-6B 以友好的门槛和扎实的性能，邀请大家共同探索视觉与语言结合的未来可能。","# VisualGLM-6B\n\n\u003Cp align=\"center\">\n🤗 \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002FTHUDM\u002Fvisualglm-6b\" target=\"_blank\">HF Repo\u003C\u002Fa> • ⚒️ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTHUDM\u002FSwissArmyTransformer\" target=\"_blank\">SwissArmyTransformer (sat)\u003C\u002Fa> • 🐦 \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fthukeg\" target=\"_blank\">Twitter\u003C\u002Fa> \n\u003C\u002Fp>\n\u003Cp align=\"center\">\n•  📃 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2105.13290\" target=\"_blank\">[CogView@NeurIPS 21]\u003C\u002Fa>  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTHUDM\u002FCogView\" target=\"_blank\">[GitHub]\u003C\u002Fa> • 📃 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.10360\" target=\"_blank\">[GLM@ACL 22]\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTHUDM\u002FGLM\" target=\"_blank\">[GitHub]\u003C\u002Fa> \u003Cbr>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    👋 加入我们的 \u003Ca href=\"https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fchatglm\u002Fshared_invite\u002Fzt-1y7pqoloy-9b1g6T6JjA8J0KxvUjbwJw\" target=\"_blank\">Slack\u003C\u002Fa> 和 \u003Ca href=\"examples\u002FWECHAT.md\" target=\"_blank\">WeChat\u003C\u002Fa>\n\u003C\u002Fp>\n\u003C!-- \u003Cp align=\"center\">\n🤖\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fspaces\u002FTHUDM\u002Fvisualglm-6b\" target=\"_blank\">VisualGLM-6B在线演示网站\u003C\u002Fa>\n\u003C\u002Fp> -->\n\n## News\n[2023.10] 欢迎关注智谱AI新一代多模态对话模型CogVLM（ https:\u002F\u002Fgithub.com\u002FTHUDM\u002FCogVLM ），采用视觉专家新架构，在10项权威经典多模态任务上取得第一名。目前开源CogVLM-17B英文模型，即将基于GLM开源中文模型。\n\n## 介绍\n\nVisualGLM-6B is an open-source, multi-modal dialog language model that supports **images, Chinese, and English**. The language model is based on [ChatGLM-6B](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B) with 6.2 billion parameters; the image part builds a bridge between the visual model and the language model through the training of [BLIP2-Qformer](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.12597), with the total model comprising 7.8 billion parameters. **[Click here for English version.](README_en.md)**\n\nVisualGLM-6B 是一个开源的，支持**图像、中文和英文**的多模态对话语言模型，语言模型基于 [ChatGLM-6B](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B)，具有 62 亿参数；图像部分通过训练 [BLIP2-Qformer](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.12597) 构建起视觉模型与语言模型的桥梁，整体模型共78亿参数。\n\nVisualGLM-6B 依靠来自于 [CogView](https:\u002F\u002Farxiv.org\u002Fabs\u002F2105.13290) 数据集的30M高质量中文图文对，与300M经过筛选的英文图文对进行预训练，中英文权重相同。该训练方式较好地将视觉信息对齐到ChatGLM的语义空间；之后的微调阶段，模型在长视觉问答数据上训练，以生成符合人类偏好的答案。\n\nVisualGLM-6B 由 [SwissArmyTransformer](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FSwissArmyTransformer)(简称`sat`) 库训练，这是一个支持Transformer灵活修改、训练的工具库，支持Lora、P-tuning等参数高效微调方法。本项目提供了符合用户习惯的huggingface接口，也提供了基于sat的接口。\n\n结合模型量化技术，用户可以在消费级的显卡上进行本地部署（INT4量化级别下最低只需6.3G显存）。\n\n-----\n\nVisualGLM-6B 开源模型旨在与开源社区一起推动大模型技术发展，恳请开发者和大家遵守开源协议，勿将该开源模型和代码及基于该开源项目产生的衍生物用于任何可能给国家和社会带来危害的用途以及用于任何未经过安全评估和备案的服务。目前，本项目官方未基于 VisualGLM-6B 开发任何应用，包括网站、安卓App、苹果 iOS应用及 Windows App 等。\n\n由于 VisualGLM-6B 仍处于v1版本，目前已知其具有相当多的[**局限性**](README.md#局限性)，如图像描述事实性\u002F模型幻觉问题，图像细节信息捕捉不足，以及一些来自语言模型的局限性。尽管模型在训练的各个阶段都尽力确保数据的合规性和准确性，但由于 VisualGLM-6B 模型规模较小，且模型受概率随机性因素影响，无法保证输出内容的准确性，且模型易被误导（详见局限性部分）。在VisualGLM之后的版本中，将会着力对此类问题进行优化。本项目不承担开源模型和代码导致的数据安全、舆情风险或发生任何模型被误导、滥用、传播、不当利用而产生的风险和责任。\n\n## 样例\nVisualGLM-6B 可以进行图像的描述的相关知识的问答。\n![泰坦尼克号样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_f33783369e24.png)\n\n\u003Cdetails>\n\u003Csummary>也能结合常识或提出有趣的观点，点击展开\u002F折叠更多样例\u003C\u002Fsummary>\n\n![出租车熨衣服样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_cb1a2c92c631.png)\n![蒙娜丽莎狗样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_1976167f93fd.png)\n\n\u003C\u002Fdetails>\n\n## 友情链接\n\n* [XrayGLM](https:\u002F\u002Fgithub.com\u002FWangRongsheng\u002FXrayGLM) 是基于visualGLM-6B在X光诊断数据集上微调的X光诊断问答的项目，能根据X光片回答医学相关询问。\n\u003Cdetails>\n\u003Csummary>点击查看样例\u003C\u002Fsummary>\n\n![样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_02ab3ed922c1.png)\n\u003C\u002Fdetails>\n\n* [StarGLM](https:\u002F\u002Fgithub.com\u002FWangRongsheng\u002FXrayGLM) 是基于Chat\u002FvisualGLM-6B在天文数据集上微调的项目，能回答变星光变曲线相关的信息。\n\u003Cdetails>\n\u003Csummary>点击查看样例\u003C\u002Fsummary>\n\n![样例](https:\u002F\u002Fgithub.com\u002FYu-Yang-Li\u002FStarGLM\u002Fraw\u002Fmain\u002Fexample\u002Fexample_4.png)\n\n\u003C\u002Fdetails>\n\n\n## 使用\n\n### 模型推理\n\n使用pip安装依赖\n```\npip install -i https:\u002F\u002Fpypi.org\u002Fsimple -r requirements.txt\n# 国内请使用aliyun镜像，TUNA等镜像同步最近出现问题，命令如下\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F -r requirements.txt\n```\n此时默认会安装`deepspeed`库（支持`sat`库训练），此库对于模型推理并非必要，同时部分Windows环境安装此库时会遇到问题。\n如果想绕过`deepspeed`安装，我们可以将命令改为\n```\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F -r requirements_wo_ds.txt\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F --no-deps \"SwissArmyTransformer>=0.4.4\"\n```\n\n如果使用Huggingface transformers库调用模型（**也需要安装上述依赖包！**），可以通过如下代码（其中图像路径为本地路径）：\n```python\nfrom transformers import AutoTokenizer, AutoModel\ntokenizer = AutoTokenizer.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True)\nmodel = AutoModel.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True).half().cuda()\nimage_path = \"your image path\"\nresponse, history = model.chat(tokenizer, image_path, \"描述这张图片。\", history=[])\nprint(response)\nresponse, history = model.chat(tokenizer, image_path, \"这张图片可能是在什么场所拍摄的？\", history=history)\nprint(response)\n```\n以上代码会由 `transformers` 自动下载模型实现和参数。完整的模型实现可以在 [Hugging Face Hub](https:\u002F\u002Fhuggingface.co\u002FTHUDM\u002Fvisualglm-6b)。如果你从 Hugging Face Hub 上下载模型参数的速度较慢，可以从[这里](https:\u002F\u002Fcloud.tsinghua.edu.cn\u002Fd\u002F43ffb021ca5f4897b56a\u002F)手动下载模型参数文件，并从本地加载模型。具体做法请参考[从本地加载模型](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B#%E4%BB%8E%E6%9C%AC%E5%9C%B0%E5%8A%A0%E8%BD%BD%E6%A8%A1%E5%9E%8B)。关于基于 transformers 库模型的量化、CPU推理、Mac MPS 后端加速等内容，请参考 [ChatGLM-6B 的低成本部署](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B#%E4%BD%8E%E6%88%90%E6%9C%AC%E9%83%A8%E7%BD%B2)。\n\n如果使用SwissArmyTransformer库调用模型，方法类似，可以使用环境变量`SAT_HOME`决定模型下载位置。在本仓库目录下：\n```python\nimport argparse\nfrom transformers import AutoTokenizer\ntokenizer = AutoTokenizer.from_pretrained(\"THUDM\u002Fchatglm-6b\", trust_remote_code=True)\nfrom model import chat, VisualGLMModel\nmodel, model_args = VisualGLMModel.from_pretrained('visualglm-6b', args=argparse.Namespace(fp16=True, skip_init=True))\nfrom sat.model.mixins import CachedAutoregressiveMixin\nmodel.add_mixin('auto-regressive', CachedAutoregressiveMixin())\nimage_path = \"your image path or URL\"\nresponse, history, cache_image = chat(image_path, model, tokenizer, \"描述这张图片。\", history=[])\nprint(response)\nresponse, history, cache_image = chat(None, model, tokenizer, \"这张图片可能是在什么场所拍摄的？\", history=history, image=cache_image)\nprint(response)\n```\n使用`sat`库也可以轻松进行进行参数高效微调。\u003C!-- TODO 具体代码 -->\n\n## 模型微调\n\n多模态任务分布广、种类多，预训练往往不能面面俱到。\n这里我们提供了一个小样本微调的例子，使用20张标注图增强模型回答“背景”问题的能力。\n\n解压`fewshot-data.zip`以后运行如下命令：\n```\nbash finetune\u002Ffinetune_visualglm.sh\n```\n\n目前支持三种方式的微调：\n\n* LoRA：样例中为ChatGLM模型的第0层和第14层加入了rank=10的LoRA微调，可以根据具体情景和数据量调整`--layer_range`和`--lora_rank`参数。\n* QLoRA：如果资源有限，可以考虑使用`bash finetune\u002Ffinetune_visualglm_qlora.sh`，QLoRA将ChatGLM的线性层进行了4-bit量化，只需要9.8GB显存即可微调。\n* P-tuning：可以将`--use_lora`替换为`--use_ptuning`，不过不推荐使用，除非模型应用场景非常固定。\n\n训练好以后可以使用如下命令推理：\n\n```\npython cli_demo.py --from_pretrained your_checkpoint_path --prompt_zh 这张图片的背景里有什么内容？\n```\n\n\u003Cdetails>\n\u003Csummary>微调前后的效果对比\u003C\u002Fsummary>\n\n微调前：\n\n```\n欢迎使用 VisualGLM-6B 模型，输入图像URL或本地路径读图，继续输入内容对话，clear 重新开始，stop 终止程序\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002F2p.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：人们总是被生活琐事所困扰，无法摆脱束缚.\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fmeme.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是一张狗的图片，它躺在木地板上。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fpassport.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是一台电脑键盘和两张护照。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）：\n```\n\n微调后：\n\n```\n欢迎使用 VisualGLM-6B 模型，输入图像URL或本地路径读图，继续输入内容对话，clear 重新开始，stop 终止程序\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002F2p.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是雨天，\n用户：描述一下这张图片。\nVisualGLM-6B：这张图片描绘了雨天的情景，雨水淅淅沥沥地落在地面上。人们穿着雨衣或雨伞，走在雨中，似乎在寻找着什么.\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fmeme.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是木质地板。\n用户：什么颜色的地板\nVisualGLM-6B：这张图片的背景是蓝色的。\n用户：描述一下这张图片。\nVisualGLM-6B：这张图片描绘了一只棕色的小狗躺在蓝色的木质地板上。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fpassport.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是电脑键盘。\n用户：描述一下这张图片。\nVisualGLM-6B：这张图片的特点是电脑键盘和护照。\n用户：有几张护照    \nVisualGLM-6B：两张护照。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）：\n```\n\n\u003C\u002Fdetails>\n\n如果希望把LoRA部分的参数合并到原始的权重，可以调用`merge_lora()`，例如：\n\n```python\nfrom finetune_visualglm import FineTuneVisualGLMModel\nimport argparse\n\nmodel, args = FineTuneVisualGLMModel.from_pretrained('checkpoints\u002Ffinetune-visualglm-6b-05-19-07-36',\n        args=argparse.Namespace(\n        fp16=True,\n        skip_init=True,\n        use_gpu_initialization=True,\n        device='cuda',\n    ))\nmodel.get_mixin('lora').merge_lora()\nargs.layer_range = []\nargs.save = 'merge_lora'\nargs.mode = 'inference'\nfrom sat.training.model_io import save_checkpoint\nsave_checkpoint(1, model, None, None, args)\n```\n\n微调需要安装`deepspeed`库，目前本流程仅支持linux系统，更多的样例说明和Windows系统的流程说明将在近期完成。\n\n## 部署工具\n\n### 命令行 Demo\n\n```shell\npython cli_demo.py \n```\n程序会自动下载sat模型，并在命令行中进行交互式的对话，输入指示并回车即可生成回复，输入 clear 可以清空对话历史，输入 stop 终止程序。\n\n![cli_demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_1c687ca4856f.png)\n程序提供如下超参数控制生成过程与量化精度：\n```\nusage: cli_demo.py [-h] [--max_length MAX_LENGTH] [--top_p TOP_P] [--top_k TOP_K] [--temperature TEMPERATURE] [--english] [--quant {8,4}]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --max_length MAX_LENGTH\n                        max length of the total sequence\n  --top_p TOP_P         top p for nucleus sampling\n  --top_k TOP_K         top k for top k sampling\n  --temperature TEMPERATURE\n                        temperature for sampling\n  --english             only output English\n  --quant {8,4}         quantization bits\n```\n需要注意的是，在训练时英文问答对的提示词为`Q: A:`，而中文为`问：答：`，在网页demo中采取了中文的提示，因此英文回复会差一些且夹杂中文；如果需要英文回复，请使用`cli_demo.py`中的`--english`选项。\n\n我们也提供了继承自`ChatGLM-6B`的打字机效果命令行工具，此工具使用Huggingface模型：\n```shell\npython cli_demo_hf.py\n```\n\n我们也支持模型并行多卡部署：（需要更新最新版本的sat，如果之前下载了checkpoint，也需要手动删除后重新下载）\n```\ntorchrun --nnode 1 --nproc-per-node 2 cli_demo_mp.py\n```\n\n### 网页版 Demo\n![web_demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_f0740b2e956b.png)\n\n我们提供了一个基于 [Gradio](https:\u002F\u002Fgradio.app) 的网页版 Demo，首先安装 Gradio：`pip install gradio`。\n然后下载并进入本仓库运行`web_demo.py`：\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002FTHUDM\u002FVisualGLM-6B\ncd VisualGLM-6B\npython web_demo.py\n```\n程序会自动下载 sat 模型，并运行一个 Web Server，并输出地址。在浏览器中打开输出的地址即可使用。\n\n\n我们也提供了继承自`ChatGLM-6B`的打字机效果网页版工具，此工具使用 Huggingface 模型，启动后将运行在`:8080`端口上：\n```shell\npython web_demo_hf.py\n```\n\n两种网页版 demo 均接受命令行参数`--share`以生成 gradio 公开链接，接受`--quant 4`和`--quant 8`以分别使用4比特量化\u002F8比特量化减少显存占用。\n\n### API部署\n首先需要安装额外的依赖 `pip install fastapi uvicorn`，然后运行仓库中的 [api.py](api.py)：\n```shell\npython api.py\n```\n程序会自动下载 sat 模型，默认部署在本地的 8080 端口，通过 POST 方法进行调用。下面是用`curl`请求的例子，一般而言可以也可以使用代码方法进行POST。\n```shell\necho \"{\\\"image\\\":\\\"$(base64 path\u002Fto\u002Fexample.jpg)\\\",\\\"text\\\":\\\"描述这张图片\\\",\\\"history\\\":[]}\" > temp.json\ncurl -X POST -H \"Content-Type: application\u002Fjson\" -d @temp.json http:\u002F\u002F127.0.0.1:8080\n```\n得到的返回值为\n```\n  {\n    \"response\":\"这张图片展现了一只可爱的卡通羊驼，它站在一个透明的背景上。这只羊驼长着一张毛茸茸的耳朵和一双大大的眼睛，它的身体是白色的，带有棕色斑点。\",\n    \"history\":[('描述这张图片', '这张图片展现了一只可爱的卡通羊驼，它站在一个透明的背景上。这只羊驼长着一张毛茸茸的耳朵和一双大大的眼睛，它的身体是白色的，带有棕色斑点。')],\n    \"status\":200,\n    \"time\":\"2023-05-16 20:20:10\"\n  }\n```\n\n我们也提供了使用Huggingface模型的 [api_hf.py](api_hf.py)，用法和sat模型的api一致：\n```shell\npython api_hf.py\n```\n\n\n## 模型量化\n在Huggingface实现中，模型默认以 FP16 精度加载，运行上述代码需要大概 15GB 显存。如果你的 GPU 显存有限，可以尝试以量化方式加载模型。\n使用方法如下：\n```python\n# 按需修改，目前只支持 4\u002F8 bit 量化。下面将只量化ChatGLM，ViT 量化时误差较大\nmodel = AutoModel.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True).quantize(8).half().cuda()\n```\n\n在sat实现中，需先传参将加载位置改为`cpu`，再进行量化。方法如下，详见`cli_demo.py`：\n```python\nfrom sat.quantization.kernels import quantize\nquantize(model, args.quant).cuda()\n# 只需要 7GB 显存即可推理\n```\n\n## 局限性\n本项目正处于V1版本视觉和语言模型的参数、计算量都较小，我们总结了如下主要存在的改进方向：\n- 图像描述事实性\u002F模型幻觉问题。在生成图像长描述的时候，距离图像较远时，语言模型的将占主导，有一定可能根据上下文生成并不存在于图像的内容。\n- 属性错配问题。在多物体的场景中，部分物体的某些属性，经常被错误安插到其他物体上。\n- 分辨率问题。本项目使用了224*224的分辨率，也是视觉模型中最为常用的尺寸；然而为了进行更细粒度的理解，更大的分辨率和计算量是必要的。\n- 由于数据等方面原因，模型暂时不具有中文ocr的能力（英文ocr能力有一些），我们会在后续版本中增加这个能力。\n## 协议\n\n本仓库的代码依照 [Apache-2.0](LICENSE.txt) 协议开源，VisualGLM-6B 模型的权重的使用则需要遵循 [Model License](MODEL_LICENSE.txt)。\n\n## 引用与致谢\n如果你觉得我们的工作有帮助的话，请考虑引用下列论文\n```\n@inproceedings{du2022glm,\n  title={GLM: General Language Model Pretraining with Autoregressive Blank Infilling},\n  author={Du, Zhengxiao and Qian, Yujie and Liu, Xiao and Ding, Ming and Qiu, Jiezhong and Yang, Zhilin and Tang, Jie},\n  booktitle={Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},\n  pages={320--335},\n  year={2022}\n}\n@article{ding2021cogview,\n  title={Cogview: Mastering text-to-image generation via transformers},\n  author={Ding, Ming and Yang, Zhuoyi and Hong, Wenyi and Zheng, Wendi and Zhou, Chang and Yin, Da and Lin, Junyang and Zou, Xu and Shao, Zhou and Yang, Hongxia and others},\n  journal={Advances in Neural Information Processing Systems},\n  volume={34},\n  pages={19822--19835},\n  year={2021}\n}\n```\n在VisualGLM-6B的指令微调阶段的数据集中，包含了来自[MiniGPT-4](https:\u002F\u002Fgithub.com\u002FVision-CAIR\u002FMiniGPT-4)和[LLAVA](https:\u002F\u002Fgithub.com\u002Fhaotian-liu\u002FLLaVA)项目的一部分英文图文数据，以及许多经典的跨模态工作数据集，衷心感谢他们的贡献。\n","# VisualGLM-6B\n\n\u003Cp align=\"center\">\n🤗 \u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002FTHUDM\u002Fvisualglm-6b\" target=\"_blank\">HF 仓库\u003C\u002Fa> • ⚒️ \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTHUDM\u002FSwissArmyTransformer\" target=\"_blank\">SwissArmyTransformer (sat)\u003C\u002Fa> • 🐦 \u003Ca href=\"https:\u002F\u002Ftwitter.com\u002Fthukeg\" target=\"_blank\">Twitter\u003C\u002Fa> \n\u003C\u002Fp>\n\u003Cp align=\"center\">\n•  📃 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2105.13290\" target=\"_blank\">[CogView@NeurIPS 21]\u003C\u002Fa>  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTHUDM\u002FCogView\" target=\"_blank\">[GitHub]\u003C\u002Fa> • 📃 \u003Ca href=\"https:\u002F\u002Farxiv.org\u002Fabs\u002F2103.10360\" target=\"_blank\">[GLM@ACL 22]\u003C\u002Fa> \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FTHUDM\u002FGLM\" target=\"_blank\">[GitHub]\u003C\u002Fa> \u003Cbr>\n\u003C\u002Fp>\n\u003Cp align=\"center\">\n    👋 加入我们的 \u003Ca href=\"https:\u002F\u002Fjoin.slack.com\u002Ft\u002Fchatglm\u002Fshared_invite\u002Fzt-1y7pqoloy-9b1g6T6JjA8J0KxvUjbwJw\" target=\"_blank\">Slack\u003C\u002Fa> 和 \u003Ca href=\"examples\u002FWECHAT.md\" target=\"_blank\">WeChat\u003C\u002Fa>\n\u003C\u002Fp>\n\u003C!-- \u003Cp align=\"center\">\n🤖\u003Ca href=\"https:\u002F\u002Fhuggingface.co\u002Fspaces\u002FTHUDM\u002Fvisualglm-6b\" target=\"_blank\">VisualGLM-6B在线演示网站\u003C\u002Fa>\n\u003C\u002Fp> -->\n\n## 新闻\n[2023.10] 欢迎关注智谱AI新一代多模态对话模型CogVLM（ https:\u002F\u002Fgithub.com\u002FTHUDM\u002FCogVLM ），采用视觉专家新架构，在10项权威经典多模态任务上取得第一名。目前开源CogVLM-17B英文模型，即将基于GLM开源中文模型。\n\n## 介绍\n\nVisualGLM-6B 是一个开源的，支持**图像、中文和英文**的多模态对话语言模型，语言模型基于 [ChatGLM-6B](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B)，具有 62 亿参数；图像部分通过训练 [BLIP2-Qformer](https:\u002F\u002Farxiv.org\u002Fabs\u002F2301.12597) 构建起视觉模型与语言模型的桥梁，整体模型共78亿参数。\n\nVisualGLM-6B 依靠来自于 [CogView](https:\u002F\u002Farxiv.org\u002Fabs\u002F2105.13290) 数据集的30M高质量中文图文对，与300M经过筛选的英文图文对进行预训练，中英文权重相同。该训练方式较好地将视觉信息对齐到ChatGLM的语义空间；之后的微调阶段，模型在长视觉问答数据上训练，以生成符合人类偏好的答案。\n\nVisualGLM-6B 由 [SwissArmyTransformer](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FSwissArmyTransformer)(简称`sat`) 库训练，这是一个支持Transformer灵活修改、训练的工具库，支持Lora、P-tuning等参数高效微调方法。本项目提供了符合用户习惯的huggingface接口，也提供了基于sat的接口。\n\n结合模型量化技术，用户可以在消费级的显卡上进行本地部署（INT4量化级别下最低只需6.3G显存）。\n\n-----\n\nVisualGLM-6B 开源模型旨在与开源社区一起推动大模型技术发展，恳请开发者和大家遵守开源协议，勿将该开源模型和代码及基于该开源项目产生的衍生物用于任何可能给国家和社会带来危害的用途以及用于任何未经过安全评估和备案的服务。目前，本项目官方未基于 VisualGLM-6B 开发任何应用，包括网站、安卓App、苹果 iOS应用及 Windows App 等。\n\n由于 VisualGLM-6B 仍处于v1版本，目前已知其具有相当多的[**局限性**](README.md#局限性)，如图像描述事实性\u002F模型幻觉问题，图像细节信息捕捉不足，以及一些来自语言模型的局限性。尽管模型在训练的各个阶段都尽力确保数据的合规性和准确性，但由于 VisualGLM-6B 模型规模较小，且模型受概率随机性因素影响，无法保证输出内容的准确性，且模型易被误导（详见局限性部分）。在VisualGLM之后的版本中，将会着力对此类问题进行优化。本项目不承担开源模型和代码导致的数据安全、舆情风险或发生任何模型被误导、滥用、传播、不当利用而产生的风险和责任。\n\n## 样例\nVisualGLM-6B 可以进行图像的描述的相关知识的问答。\n![泰坦尼克号样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_f33783369e24.png)\n\n\u003Cdetails>\n\u003Csummary>也能结合常识或提出有趣的观点，点击展开\u002F折叠更多样例\u003C\u002Fsummary>\n\n![出租车熨衣服样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_cb1a2c92c631.png)\n![蒙娜丽莎狗样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_1976167f93fd.png)\n\n\u003C\u002Fdetails>\n\n## 友情链接\n\n* [XrayGLM](https:\u002F\u002Fgithub.com\u002FWangRongsheng\u002FXrayGLM) 是基于visualGLM-6B在X光诊断数据集上微调的X光诊断问答的项目，能根据X光片回答医学相关询问。\n\u003Cdetails>\n\u003Csummary>点击查看样例\u003C\u002Fsummary>\n\n![样例](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_02ab3ed922c1.png)\n\u003C\u002Fdetails>\n\n* [StarGLM](https:\u002F\u002Fgithub.com\u002FWangRongsheng\u002FXrayGLM) 是基于Chat\u002FvisualGLM-6B在天文数据集上微调的项目，能回答变星光变曲线相关的信息。\n\u003Cdetails>\n\u003Csummary>点击查看样例\u003C\u002Fsummary>\n\n![样例](https:\u002F\u002Fgithub.com\u002FYu-Yang-Li\u002FStarGLM\u002Fraw\u002Fmain\u002Fexample\u002Fexample_4.png)\n\n\u003C\u002Fdetails>\n\n\n## 使用\n\n### 模型推理\n\n使用pip安装依赖\n```\npip install -i https:\u002F\u002Fpypi.org\u002Fsimple -r requirements.txt\n# 国内请使用aliyun镜像，TUNA等镜像同步最近出现问题，命令如下\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F -r requirements.txt\n```\n此时默认会安装`deepspeed`库（支持`sat`库训练），此库对于模型推理并非必要，同时部分Windows环境安装此库时会遇到问题。\n如果想绕过`deepspeed`安装，我们可以将命令改为\n```\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F -r requirements_wo_ds.txt\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F --no-deps \"SwissArmyTransformer>=0.4.4\"\n```\n\n如果使用Huggingface transformers库调用模型（**也需要安装上述依赖包！**），可以通过如下代码（其中图像路径为本地路径）：\n```python\nfrom transformers import AutoTokenizer, AutoModel\ntokenizer = AutoTokenizer.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True)\nmodel = AutoModel.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True).half().cuda()\nimage_path = \"your image path\"\nresponse, history = model.chat(tokenizer, image_path, \"描述这张图片。\", history=[])\nprint(response)\nresponse, history = model.chat(tokenizer, image_path, \"这张图片可能是在什么场所拍摄的？\", history=history)\nprint(response)\n```\n以上代码会由 `transformers` 自动下载模型实现和参数。完整的模型实现可以在 [Hugging Face Hub](https:\u002F\u002Fhuggingface.co\u002FTHUDM\u002Fvisualglm-6b)。如果你从 Hugging Face Hub 上下载模型参数的速度较慢，可以从[这里](https:\u002F\u002Fcloud.tsinghua.edu.cn\u002Fd\u002F43ffb021ca5f4897b56a\u002F)手动下载模型参数文件，并从本地加载模型。具体做法请参考[从本地加载模型](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B#%E4%BB%8E%E6%9C%AC%E5%9C%B0%E5%8A%A0%E8%BD%BD%E6%A8%A1%E5%9E%8B)。关于基于 transformers 库模型的量化、CPU推理、Mac MPS 后端加速等内容，请参考 [ChatGLM-6B 的低成本部署](https:\u002F\u002Fgithub.com\u002FTHUDM\u002FChatGLM-6B#%E4%BD%8E%E6%88%90%E6%9C%AC%E9%83%A8%E7%BD%B2)。\n\n如果使用SwissArmyTransformer库调用模型，方法类似，可以使用环境变量`SAT_HOME`决定模型下载位置。在本仓库目录下：\n```python\nimport argparse\nfrom transformers import AutoTokenizer\ntokenizer = AutoTokenizer.from_pretrained(\"THUDM\u002Fchatglm-6b\", trust_remote_code=True)\nfrom model import chat, VisualGLMModel\nmodel, model_args = VisualGLMModel.from_pretrained('visualglm-6b', args=argparse.Namespace(fp16=True, skip_init=True))\nfrom sat.model.mixins import CachedAutoregressiveMixin\nmodel.add_mixin('auto-regressive', CachedAutoregressiveMixin())\nimage_path = \"your image path or URL\"\nresponse, history, cache_image = chat(image_path, model, tokenizer, \"描述这张图片。\", history=[])\nprint(response)\nresponse, history, cache_image = chat(None, model, tokenizer, \"这张图片可能是在什么场所拍摄的？\", history=history, image=cache_image)\nprint(response)\n```\n使用`sat`库也可以轻松进行进行参数高效微调。\u003C!-- TODO 具体代码 -->\n\n## 模型微调\n\n多模态任务分布广、种类多，预训练往往不能面面俱到。\n这里我们提供了一个小样本微调的例子，使用20张标注图增强模型回答“背景”问题的能力。\n\n解压`fewshot-data.zip`以后运行如下命令：\n```\nbash finetune\u002Ffinetune_visualglm.sh\n```\n\n目前支持三种方式的微调：\n\n* LoRA：样例中为ChatGLM模型的第0层和第14层加入了rank=10的LoRA微调，可以根据具体情景和数据量调整`--layer_range`和`--lora_rank`参数。\n* QLoRA：如果资源有限，可以考虑使用`bash finetune\u002Ffinetune_visualglm_qlora.sh`，QLoRA将ChatGLM的线性层进行了4-bit量化，只需要9.8GB显存即可微调。\n* P-tuning：可以将`--use_lora`替换为`--use_ptuning`，不过不推荐使用，除非模型应用场景非常固定。\n\n训练好以后可以使用如下命令推理：\n\n```\npython cli_demo.py --from_pretrained your_checkpoint_path --prompt_zh 这张图片的背景里有什么内容？\n```\n\n\u003Cdetails>\n\u003Csummary>微调前后的效果对比\u003C\u002Fsummary>\n\n微调前：\n\n```\n欢迎使用 VisualGLM-6B 模型，输入图像URL或本地路径读图，继续输入内容对话，clear 重新开始，stop 终止程序\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002F2p.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：人们总是被生活琐事所困扰，无法摆脱束缚.\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fmeme.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是一张狗的图片，它躺在木地板上。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fpassport.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是一台电脑键盘和两张护照。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）：\n```\n\n微调后：\n\n```\n欢迎使用 VisualGLM-6B 模型，输入图像URL或本地路径读图，继续输入内容对话，clear 重新开始，stop 终止程序\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002F2p.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是雨天，\n用户：描述一下这张图片。\nVisualGLM-6B：这张图片描绘了雨天的情景，雨水淅淅沥沥地落在地面上。人们穿着雨衣或雨伞，走在雨中，似乎在寻找着什么.\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fmeme.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是木质地板。\n用户：什么颜色的地板\nVisualGLM-6B：这张图片的背景是蓝色的。\n用户：描述一下这张图片。\nVisualGLM-6B：这张图片描绘了一只棕色的小狗躺在蓝色的木质地板上。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）： fewshot-data\u002Fpassport.png\n用户：这张图片的背景里有什么内容？\nVisualGLM-6B：这张图片的背景是电脑键盘。\n用户：描述一下这张图片。\nVisualGLM-6B：这张图片的特点是电脑键盘和护照。\n用户：有几张护照    \nVisualGLM-6B：两张护照。\n用户：clear\n请输入图像路径或URL（回车进入纯文本对话）：\n```\n\n\u003C\u002Fdetails>\n\n如果希望把LoRA部分的参数合并到原始的权重，可以调用`merge_lora()`，例如：\n\n```python\nfrom finetune_visualglm import FineTuneVisualGLMModel\nimport argparse\n\nmodel, args = FineTuneVisualGLMModel.from_pretrained('checkpoints\u002Ffinetune-visualglm-6b-05-19-07-36',\n        args=argparse.Namespace(\n        fp16=True,\n        skip_init=True,\n        use_gpu_initialization=True,\n        device='cuda',\n    ))\nmodel.get_mixin('lora').merge_lora()\nargs.layer_range = []\nargs.save = 'merge_lora'\nargs.mode = 'inference'\nfrom sat.training.model_io import save_checkpoint\nsave_checkpoint(1, model, None, None, args)\n```\n\n微调需要安装`deepspeed`库，目前本流程仅支持linux系统，更多的样例说明和Windows系统的流程说明将在近期完成。\n\n## 部署工具\n\n### 命令行 Demo\n\n```shell\npython cli_demo.py \n```\n程序会自动下载sat模型，并在命令行中进行交互式的对话，输入指示并回车即可生成回复，输入 clear 可以清空对话历史，输入 stop 终止程序。\n\n![cli_demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_1c687ca4856f.png)\n程序提供如下超参数控制生成过程与量化精度：\n```\nusage: cli_demo.py [-h] [--max_length MAX_LENGTH] [--top_p TOP_P] [--top_k TOP_K] [--temperature TEMPERATURE] [--english] [--quant {8,4}]\n\noptional arguments:\n  -h, --help            show this help message and exit\n  --max_length MAX_LENGTH\n                        max length of the total sequence\n  --top_p TOP_P         top p for nucleus sampling\n  --top_k TOP_K         top k for top k sampling\n  --temperature TEMPERATURE\n                        temperature for sampling\n  --english             only output English\n  --quant {8,4}         quantization bits\n```\n需要注意的是，在训练时英文问答对的提示词为`Q: A:`，而中文为`问：答：`，在网页demo中采取了中文的提示，因此英文回复会差一些且夹杂中文；如果需要英文回复，请使用`cli_demo.py`中的`--english`选项。\n\n我们也提供了继承自`ChatGLM-6B`的打字机效果命令行工具，此工具使用Huggingface模型：\n```shell\npython cli_demo_hf.py\n```\n\n我们也支持模型并行多卡部署：（需要更新最新版本的sat，如果之前下载了checkpoint，也需要手动删除后重新下载）\n```\ntorchrun --nnode 1 --nproc-per-node 2 cli_demo_mp.py\n```\n\n### 网页版 Demo\n![web_demo](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_readme_f0740b2e956b.png)\n\n我们提供了一个基于 [Gradio](https:\u002F\u002Fgradio.app) 的网页版 Demo，首先安装 Gradio：`pip install gradio`。\n然后下载并进入本仓库运行`web_demo.py`：\n\n```\ngit clone https:\u002F\u002Fgithub.com\u002FTHUDM\u002FVisualGLM-6B\ncd VisualGLM-6B\npython web_demo.py\n```\n程序会自动下载 sat 模型，并运行一个 Web Server，并输出地址。在浏览器中打开输出的地址即可使用。\n\n\n我们也提供了继承自`ChatGLM-6B`的打字机效果网页版工具，此工具使用 Huggingface 模型，启动后将运行在`:8080`端口上：\n```shell\npython web_demo_hf.py\n```\n\n两种网页版 demo 均接受命令行参数`--share`以生成 gradio 公开链接，接受`--quant 4`和`--quant 8`以分别使用4比特量化\u002F8比特量化减少显存占用。\n\n### API部署\n首先需要安装额外的依赖 `pip install fastapi uvicorn`，然后运行仓库中的 [api.py](api.py)：\n```shell\npython api.py\n```\n程序会自动下载 sat 模型，默认部署在本地的 8080 端口，通过 POST 方法进行调用。下面是用`curl`请求的例子，一般而言可以也可以使用代码方法进行POST。\n```shell\necho \"{\\\"image\\\":\\\"$(base64 path\u002Fto\u002Fexample.jpg)\\\",\\\"text\\\":\\\"描述这张图片\\\",\\\"history\\\":[]}\" > temp.json\ncurl -X POST -H \"Content-Type: application\u002Fjson\" -d @temp.json http:\u002F\u002F127.0.0.1:8080\n```\n得到的返回值为\n```\n  {\n    \"response\":\"这张图片展现了一只可爱的卡通羊驼，它站在一个透明的背景上。这只羊驼长着一张毛茸茸的耳朵和一双大大的眼睛，它的身体是白色的，带有棕色斑点。\",\n    \"history\":[('描述这张图片', '这张图片展现了一只可爱的卡通羊驼，它站在一个透明的背景上。这只羊驼长着一张毛茸茸的耳朵和一双大大的眼睛，它的身体是白色的，带有棕色斑点。')],\n    \"status\":200,\n    \"time\":\"2023-05-16 20:20:10\"\n  }\n```\n\n我们也提供了使用Huggingface模型的 [api_hf.py](api_hf.py)，用法和sat模型的api一致：\n```shell\npython api_hf.py\n```\n\n\n## 模型量化\n在Huggingface实现中，模型默认以 FP16 精度加载，运行上述代码需要大概 15GB 显存。如果你的 GPU 显存有限，可以尝试以量化方式加载模型。\n使用方法如下：\n```python\n# 按需修改，目前只支持 4\u002F8 bit 量化。下面将只量化ChatGLM，ViT 量化时误差较大\nmodel = AutoModel.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True).quantize(8).half().cuda()\n```\n\n在sat实现中，需先传参将加载位置改为`cpu`，再进行量化。方法如下，详见`cli_demo.py`：\n```python\nfrom sat.quantization.kernels import quantize\nquantize(model, args.quant).cuda()\n# 只需要 7GB 显存即可推理\n```\n\n## 局限性\n本项目正处于V1版本视觉和语言模型的参数、计算量都较小，我们总结了如下主要存在的改进方向：\n- 图像描述事实性\u002F模型幻觉问题。在生成图像长描述的时候，距离图像较远时，语言模型的将占主导，有一定可能根据上下文生成并不存在于图像的内容。\n- 属性错配问题。在多物体的场景中，部分物体的某些属性，经常被错误安插到其他物体上。\n- 分辨率问题。本项目使用了224*224的分辨率，也是视觉模型中最为常用的尺寸；然而为了进行更细粒度的理解，更大的分辨率和计算量是必要的。\n- 由于数据等方面原因，模型暂时不具有中文ocr的能力（英文ocr能力有一些），我们会在后续版本中增加这个能力。\n## 协议\n\n本仓库的代码依照 [Apache-2.0](LICENSE.txt) 协议开源，VisualGLM-6B 模型的权重的使用则需要遵循 [Model License](MODEL_LICENSE.txt)。\n\n## 引用与致谢\n如果你觉得我们的工作有帮助的话，请考虑引用下列论文\n```\n@inproceedings{du2022glm,\n  title={GLM: General Language Model Pretraining with Autoregressive Blank Infilling},\n  author={Du, Zhengxiao and Qian, Yujie and Liu, Xiao and Ding, Ming and Qiu, Jiezhong and Yang, Zhilin and Tang, Jie},\n  booktitle={Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},\n  pages={320--335},\n  year={2022}\n}\n@article{ding2021cogview,\n  title={Cogview: Mastering text-to-image generation via transformers},\n  author={Ding, Ming and Yang, Zhuoyi and Hong, Wenyi and Zheng, Wendi and Zhou, Chang and Yin, Da and Lin, Junyang and Zou, Xu and Shao, Zhou and Yang, Hongxia and others},\n  journal={Advances in Neural Information Processing Systems},\n  volume={34},\n  pages={19822--19835},\n  year={2021}\n}\n```\n在VisualGLM-6B的指令微调阶段的数据集中，包含了来自[MiniGPT-4](https:\u002F\u002Fgithub.com\u002FVision-CAIR\u002FMiniGPT-4)和[LLAVA](https:\u002F\u002Fgithub.com\u002Fhaotian-liu\u002FLLaVA)项目的一部分英文图文数据，以及许多经典的跨模态工作数据集，衷心感谢他们的贡献。","# VisualGLM-6B 快速上手指南\n\nVisualGLM-6B 是一个开源的多模态对话语言模型，支持**图像、中文和英文**。它基于 ChatGLM-6B（62 亿参数）并结合 BLIP2-Qformer 视觉编码器，整体参数量约 78 亿。通过量化技术，该模型可在消费级显卡上运行（INT4 量化仅需约 6.3G 显存）。\n\n## 环境准备\n\n*   **系统要求**：推荐 Linux 系统（Windows 需特殊处理 deepspeed 依赖），具备 CUDA 环境的 NVIDIA GPU。\n*   **Python 版本**：建议 Python 3.8+。\n*   **显存要求**：\n    *   FP16 精度：约 15GB 显存。\n    *   INT8 量化：约 10GB 显存。\n    *   INT4 量化：最低约 6.3GB 显存。\n\n## 安装步骤\n\n### 1. 安装依赖\n推荐使用阿里云镜像源以加速下载：\n\n```bash\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F -r requirements_wo_ds.txt\npip install -i https:\u002F\u002Fmirrors.aliyun.com\u002Fpypi\u002Fsimple\u002F --no-deps \"SwissArmyTransformer>=0.4.4\"\n```\n\n> **注意**：默认 `requirements.txt` 包含 `deepspeed`，若在 Windows 下遇到安装问题或仅需推理，请使用上述 `requirements_wo_ds.txt` 方案。若需微调功能，请确保安装 `deepspeed`。\n\n### 2. 模型获取\n代码运行时会自动从 Hugging Face 下载模型。若网络较慢，可手动下载模型参数文件后本地加载（参考官方文档中的“从本地加载模型”章节）。\n\n## 基本使用\n\n以下是最简单的 Python 调用示例，使用 Hugging Face `transformers` 接口进行图像描述和多轮对话。\n\n### 代码示例\n\n```python\nfrom transformers import AutoTokenizer, AutoModel\n\n# 加载模型和分词器\n# trust_remote_code=True 是必须的，因为模型使用了自定义代码\ntokenizer = AutoTokenizer.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True)\nmodel = AutoModel.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True).half().cuda()\n# 若显存不足，可启用量化（例如 8bit 或 4bit）\n# model = AutoModel.from_pretrained(\"THUDM\u002Fvisualglm-6b\", trust_remote_code=True).quantize(8).half().cuda()\n\nimage_path = \"your_image_path.jpg\"  # 替换为你的本地图片路径\n\n# 第一轮对话：描述图片\nresponse, history = model.chat(tokenizer, image_path, \"描述这张图片。\", history=[])\nprint(response)\n\n# 第二轮对话：基于历史上下文提问\nresponse, history = model.chat(tokenizer, image_path, \"这张图片可能是在什么场所拍摄的？\", history=history)\nprint(response)\n```\n\n### 命令行交互 Demo\n\n如果你希望直接在终端进行交互式体验，可以运行官方提供的脚本：\n\n```bash\npython cli_demo.py\n```\n\n启动后，输入图片路径（本地路径或 URL），即可开始多轮对话。输入 `clear` 清空历史，输入 `stop` 退出程序。\n\n> **提示**：若需纯英文输出，请添加 `--english` 参数；若需降低显存占用，可添加 `--quant 4` 或 `--quant 8` 参数。","某跨境电商运营团队每天需处理数百张海外社交媒体上的商品实拍图，并快速生成符合中文语境的营销文案。\n\n### 没有 VisualGLM-6B 时\n- **人工翻译成本高**：运营人员需先识别图片内容，再手动将英文语境转化为中文描述，耗时且易出错。\n- **信息断层严重**：纯文本模型无法直接“看”图，必须依赖人工先提取图片关键信息（如颜色、材质、使用场景）才能输入系统。\n- **文化适配困难**：直接机器翻译的文案往往生硬，缺乏针对中国消费者的语气调整，难以引发共鸣。\n- **响应速度滞后**：面对突发热点图片的营销需求，从识图到出文案的流程长达数小时，错失最佳推广时机。\n\n### 使用 VisualGLM-6B 后\n- **图文一键生成**：直接上传英文环境的商品实拍图，VisualGLM-6B 能同时理解图像细节与英文背景，直接输出地道的中文营销短文。\n- **多模态语义对齐**：模型精准捕捉图片中的材质光泽、穿搭风格等视觉细节，并将其自然融入中文描述，无需人工二次补充信息。\n- **智能语气调优**：基于预训练的海量中文图文对，VisualGLM-6B 生成的文案自动贴合国内电商平台的流行话术，提升转化率。\n- **本地高效部署**：利用 INT4 量化技术，团队仅需消费级显卡即可在本地私有化部署，既保障了图片数据隐私，又实现了秒级响应。\n\nVisualGLM-6B 通过打破视觉与语言的壁垒，将跨语种图文处理流程从“人工接力”转变为“端到端智能生成”，极大提升了跨境内容的生产效率。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fzai-org_VisualGLM-6B_f3378336.png","zai-org","Z.ai","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fzai-org_f0d5ae80.png","ChatGLM, GLM-4.5, CogVLM, CodeGeeX, CogView, CogVideoX | CogDL, AMiner | Zhipu.ai (Z.ai)",null,"Zai_org","https:\u002F\u002Fwww.zhipuai.cn\u002Fen","https:\u002F\u002Fgithub.com\u002Fzai-org",[84,88],{"name":85,"color":86,"percentage":87},"Python","#3572A5",94,{"name":89,"color":90,"percentage":91},"Shell","#89e051",6,4165,423,"2026-03-28T18:29:48","Apache-2.0","Linux, Windows, macOS","推理必需 NVIDIA GPU（支持 CUDA），INT4 量化最低需 6.3GB 显存，FP16 精度需约 15GB 显存，QLoRA 微调需 9.8GB 显存；支持 Mac MPS 后端加速","未说明",{"notes":100,"python":98,"dependencies":101},"Windows 环境安装 deepspeed 可能遇到问题，可使用 requirements_wo_ds.txt 绕过；微调功能目前仅支持 Linux 系统；模型支持 INT4\u002FINT8 量化以降低显存需求；中文 OCR 能力暂不支持。",[102,103,104,105,106,107,108],"SwissArmyTransformer>=0.4.4","transformers","deepspeed","gradio","fastapi","uvicorn","torch",[26,15],[111,112,113],"chatglm-6b","gpt","multi-modal","2026-03-27T02:49:30.150509","2026-04-06T05:17:58.481771",[117,122,127,132,137,142,147],{"id":118,"question_zh":119,"answer_zh":120,"source_url":121},14034,"修改图片尺寸为 128x128 进行微调时报错 AssertionError 怎么办？","需要在加载模型后手动重新初始化位置编码。请在 `from_pretrained` 获取模型后添加以下代码：\n```python\nnew_image_size = 128\nfrom sat.model.official.vit_model import ViTProperty\nold_prop = model.get_mixin(\"eva\").model.vit.transformer.property\nnew_prop = ViTProperty(new_image_size, old_prop.patch_size, old_prop.pre_len, old_prop.post_len)\nmodel.get_mixin(\"eva\").model.vit.get_mixin(\"pos_embedding\").reinit(property=new_prop)\nargs.eva_args[\"image_size\"] = new_image_size\n```\n同时确保输入图像数据处理时也强制 resize 为 (128, 128)。","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F296",{"id":123,"question_zh":124,"answer_zh":125,"source_url":126},14035,"微调时遇到 AttributeError: 'FakeTokenizer' object has no attribute 'pad_token_id' 错误如何解决？","这是因为 tokenizer 路径配置问题。解决方法是将 HuggingFace 上的 tokenizer 相关文件下载到本地，然后修改模型配置文件中的路径指向本地。\n具体步骤：\n1. 下载 visualglm-6b 模型包并解压。\n2. 找到解压目录下的 `model_config.json` 文件。\n3. 将文件中的 `tokenizer_type` 字段值从远程地址（如 'THUDM\u002Fchatglm-6b'）修改为你本地的模型或 tokenizer 路径。","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F78",{"id":128,"question_zh":129,"answer_zh":130,"source_url":131},14036,"推理时生成的图片描述与图片内容不符，可能是什么原因？","这通常是由于依赖库版本不匹配导致的。请检查并升级 `SwissArmyTransformer` 到最新版本（如 0.4.3），同时升级 `filelock` 到 3.9.0 或更高版本。如果已安装旧版本，请卸载后重新安装最新版：\n`pip install --upgrade SwissArmyTransformer filelock`","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F196",{"id":133,"question_zh":134,"answer_zh":135,"source_url":136},14037,"运行微调脚本时出现 TypeError: init_distributed() got an unexpected keyword argument 'world_size' 错误？","这是由于 DeepSpeed 版本过旧导致的参数不兼容问题。请升级 DeepSpeed 到最新版本即可解决：\n`pip install --upgrade deepspeed`","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F38",{"id":138,"question_zh":139,"answer_zh":140,"source_url":141},14038,"本地加载模型时提示找不到 model_config.json 文件怎么办？","这通常是因为下载的模型文件不完整或目录结构不对。请确保你下载的是完整的 SAT 格式模型（而非仅 HF 格式），并且 `model_config.json` 文件确实存在于你指定的模型根目录下。如果使用的是 HuggingFace 下载的 `_hf` 后缀模型，可能需要转换格式或确认微调脚本是否支持直接加载 HF 格式（目前微调默认需要 SAT 格式）。","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F9",{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},14039,"在高性能显卡（如 A40）上微调时程序直接退出且无详细报错（return code=-7）？","这通常是由于 Docker 容器分配的共享内存（shm-size）不足导致的。如果在 Docker 中运行，请增加共享内存大小，例如添加参数 `--shm-size 60G` 或更大。命令示例：\n`docker run --shm-size 60G ...`","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F295",{"id":148,"question_zh":149,"answer_zh":150,"source_url":151},14040,"微调过程中出现 'killing subprocess' 错误且显存未变化？","这可能是由于系统环境变量或脚本配置问题。建议检查微调脚本（如 `finetune_visualglm.sh`）中的配置，特别是第 13 行附近的参数设置。此外，尝试更换操作系统环境（如重装 Ubuntu）有时也能解决此类奇怪的子进程被杀问题。如果显存未变化，还需确认是否正确启用了 GPU 以及 CUDA_VISIBLE_DEVICES 设置是否正确。","https:\u002F\u002Fgithub.com\u002Fzai-org\u002FVisualGLM-6B\u002Fissues\u002F229",[]]