ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

InternLM-Chat-7B 对话 Web Demo 部署实战:《开源大模型食用指南》之 AutoDL 环境、ModelScope 下载与 Streamlit 交互全流程

InternLM-Chat-7B 对话 Web Demo 部署实战:《开源大模型食用指南》之 AutoDL 环境、ModelScope 下载与 Streamlit 交互全流程 InternLM-Chat-7B 对话 Web Demo 部署实战《开源大模型食用指南》之 AutoDL 环境、ModelScope 下载与 Streamlit 交互全流程【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm本教程是《开源大模型食用指南》(README.md) 中书生·浦语InternLM系列教程的第三篇手把手带你在一台 24G 显存的云 GPU 服务器上从零完成 InternLM-Chat-7B 对话模型的 Web 交互界面部署。读完本文你将掌握基于 AutoDL 的镜像选型、Python 依赖环境搭建、ModelScope 模型下载、官方web_demo.py代码获取与路径修改以及通过 Streamlit 启动可交互对话页面的完整闭环并理解每一步背后的原理与排查要点。一、教程背景与整体部署方案InternLM-Chat-7B 是上海人工智能实验室开源的书生·浦语系列对话模型支持基于model.chat(tokenizer, prompt, historyhistory)接口的多轮对话。本教程models/InternLM/03-InternLM-Chat-7B.md采用云 GPU 官方 Demo 脚本的轻量方案整体流程分为四步在 AutoDL 平台租用 RTX 3090 等 24G 显存实例选择固定的 PyTorch 镜像通过 pip 配置清华源并安装固定版本的依赖modelscope、transformers、streamlit等使用 ModelScope 的snapshot_download下载 InternLM-Chat-7B 权重约 14GBclone InternLM 官方仓库并锁定教程对应 commit修改web_demo.py中的模型路径用 Streamlit 启动 Web 服务最后将6006端口映射到本地浏览器访问。该系列还包含另外两条互补的部署路线Transformers 命令行部署 与 FastAPI 接口部署前者适合验证模型推理后者适合以 HTTP 接口形式对外提供服务而本文的 Web Demo 面向交互式对话体验三者共享同一套环境准备与模型下载流程可以互相参照。二、环境准备租用 GPU 实例并选择匹配镜像InternLM-Chat-7B 权重约 14GB以torch.bfloat16精度加载到显存后还需为推理KV Cache、激活值预留空间因此教程建议租用24G 显存的显卡机型如 RTX 3090。在 AutoDL 平台创建实例时镜像按以下组合选择框架PyTorch框架版本1.11.0语言版本3.8 (ubuntu20.04)CUDA 版本11.3该镜像组合与 InternLM 官方web_demo.py在教程编写时的依赖环境保持兼容。镜像版本固定是保证后续复现成功的关键——大模型相关依赖尤其是transformers与远程代码加载对版本相当敏感教程中所有 pip 包的版本号也是围绕这一组合锁定的。三、初始化终端并配置 Python 依赖实例创建并启动后打开 AutoDL 提供的JupyterLab在其中启动终端后续的环境配置、模型下载与 Demo 运行全部在终端中完成。首先升级 pip 并切换为清华 PyPI 镜像源以加速依赖安装# 升级pip python -m pip install --upgrade pip # 更换 pypi 源加速库的安装 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple随后安装本教程所需的依赖包。各包的版本与作用如下表包名版本作用modelscope1.9.5从魔搭ModelScope社区下载模型权重transformers4.35.2加载与运行 InternLM-Chat-7B 模型streamlit1.24.0驱动 Web 对话界面的应用框架sentencepiece0.1.99InternLM 分词器的底层依赖accelerate0.24.1提供设备放置与混合精度相关能力pip install modelscope1.9.5 pip install transformers4.35.2 pip install streamlit1.24.0 pip install sentencepiece0.1.99 pip install accelerate0.24.1提示请严格按照上述版本号安装。从源码结构看InternLM 的对话模型依赖trust_remote_codeTrue加载远程自定义代码transformers版本过新或过旧都可能导致与模型自带的建模代码不兼容。四、模型下载使用 ModelScope snapshot_download 拉取权重在/root/autodl-tmp路径下新建download.py文件并写入以下内容import torch from modelscope import snapshot_download, AutoModel, AutoTokenizer import os model_dir snapshot_download(Shanghai_AI_Laboratory/internlm-chat-7b, cache_dir/root/autodl-tmp, revisionmaster)保存文件后JupyterLab 中标签页出现黑点表示未保存在终端运行python /root/autodl-tmp/download.py关于snapshot_download的参数说明第一个参数为模型 IDShanghai_AI_Laboratory/internlm-chat-7b是 InternLM-Chat-7B 在 ModelScope 上的仓库标识cache_dir指定权重下载落盘目录这里设置为/root/autodl-tmpAutoDL 的数据盘路径容量充足且不占用系统盘revisionmaster指定拉取仓库主分支最新内容。下载完成后模型文件实际位于/root/autodl-tmp/Shanghai_AI_Laboratory/internlm-chat-7b这个路径将在后续修改web_demo.py时直接使用。模型总大小约14GB视网络状况通常需要10~20 分钟完成下载。五、代码准备clone InternLM 仓库并锁定 commit演示脚本来自 InternLM 官方代码仓库。为加速 GitHub 访问先在终端开启 AutoDL 自带的学术镜像加速/etc/network_turbo然后切换到/root/autodl-tmp目录完成 clonesource /etc/network_turbocd /root/autodl-tmp git clone https://github.com/InternLM/InternLM.gitclone 完成后切换到与本教程匹配的 commit 版本保证脚本与教程内容完全一致、可稳定复现cd InternLM git checkout 3028f07cb79e5b1d7342f4ad8d11efad3fd13d17切换完成后务必取消网络加速。该加速代理可能对正常网络访问造成影响若不关闭可能干扰后续其他模型或依赖的下载unset http_proxy unset https_proxy六、修改 web_demo.py将模型路径指向本地权重仓库中的web_demo.py默认从远程加载模型需要将其改为加载本地权重。用 JupyterLab 打开/root/autodl-tmp/InternLM/web_demo.py将其中第 29 行与第 33 行的模型路径参数替换为本地路径# 原始远程写法示意 # model_name_or_path internlm/internlm-chat-7b # 修改为本地路径 /root/autodl-tmp/Shanghai_AI_Laboratory/internlm-chat-7b从脚本结构看web_demo.py通过load_model()函数完成模型与分词器加载内部使用AutoModel.from_pretrained(..., trust_remote_codeTrue)与AutoTokenizer.from_pretrained(...)这里传入的路径必须与download.py中cache_dir拼出的实际下载路径完全一致即/root/autodl-tmp/Shanghai_AI_Laboratory/internlm-chat-7b。修改完成后记得保存文件CtrlS再回到终端继续执行。七、启动 Streamlit Web Demo 并映射端口到本地回到终端进入仓库目录并启动 Streamlit 服务cd /root/autodl-tmp/InternLM streamlit run web_demo.py --server.address 127.0.0.1 --server.port 6006命令参数说明--server.address 127.0.0.1服务只监听本机回环地址不直接暴露公网访问需借助 AutoDL 的端口映射--server.port 6006指定服务端口为 6006这也是后续端口映射的端口号。服务启动后需要在 AutoDL 控制台配置自定义端口映射将实例的6006端口映射到本机http://localhost:6006即可在本地浏览器访问 Web 界面这里有一个容易忽略的细节Streamlit 进程启动后模型并不会立即加载而是等到浏览器首次打开http://localhost:6006页面时才触发load_model()执行加载。因此刚打开页面时会看到加载模型中的状态需要耐心等待 14GB 权重载入完成。八、对话验证与关键生成参数模型加载完成后即可在 Web 界面中与 InternLM-Chat-7B 展开多轮对话。页面左侧提供生成配置Max Length、Top P、Temperature右侧为对话历史区输入中文或英文问题即可得到模型回复关于这几个生成参数的作用可以结合同系列 FastAPI 部署文档models/InternLM/02-internLM-Chat-7B FastApi.md中的实现来理解——底层对话统一由model.chat()完成参数含义与默认值如下参数默认值作用max_length2048生成回复的最大 token 长度上限top_p0.7核采样阈值控制候选词累积概率范围值越小输出越保守temperature0.95采样温度值越大输出越发散越小越确定九、常见问题与排查要点结合教程流程与实际部署经验以下是几个高频问题的定位思路模型加载卡住或报错确认web_demo.py中的本地路径是否与 ModelScope 实际下载目录完全一致确认transformers、sentencepiece等依赖版本与第三节清单一致。浏览器访问 localhost:6006 失败检查 AutoDL 控制台是否已完成6006端口映射确认 Streamlit 进程仍在运行终端输出中应有localhost:6006的访问地址。页面一直处于加载状态这是正常的懒加载行为14GB 权重从磁盘读取并转换为bfloat16需要一段时间请耐心等待若长时间无响应可在终端观察是否有报错输出。后续下载其他模型异常很可能是因为没有执行unset http_proxy unset https_proxy关闭学术加速代理残留会劫持后续网络请求。显存不足OOM本教程基于 24G 显存机型设计若在更低显存的实例上运行可先参考 Transformers 部署教程 用最小化推理验证资源占用再考虑量化方案。十、总结与进阶路线至此你已经完成了 InternLM-Chat-7B 对话 Web Demo 的完整部署从 AutoDL 镜像选型、依赖安装、ModelScope 权重下载到官方脚本路径修改与 Streamlit 端口映射成功在浏览器中与书生·浦语进行多轮对话。本教程在项目模型清单中的位置可参见 support_model.mdInternLM 条目。在此基础上可以沿以下方向继续深入均可在仓库models/InternLM/目录中找到对应教程API 化服务参考 FastAPI 部署将对话能力封装为 HTTP 接口便于程序化调用命令行验证参考 Transformers 部署用最短代码验证模型推理链路智能体扩展参考 Lagent 接入为对话模型配备工具调用能力知识库应用参考 LangChain 接入配套代码位于 06-InternLM接入LangChain搭建知识库助手 目录搭建基于检索增强的问答助手多模态扩展参考 浦语灵笔图文理解与创作原文件名05-浦语灵笔图文理解创作.md链接中的%26为的 URL 编码。如果希望体验更新版本项目还提供了 InternLM2-7B 与 InternLM3-8B 的 WebDemo 部署教程部署思路与本文完全一致可作为进阶对照练习。【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进