ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

基于 Transformers 部署调用 Qwen-7B-Chat:环境准备、模型下载与多轮对话推理实战

2026/9/12 1:57:07 拓冰建站 浏览量
基于 Transformers 部署调用 Qwen-7B-Chat:环境准备、模型下载与多轮对话推理实战 基于 Transformers 部署调用 Qwen-7B-Chat环境准备、模型下载与多轮对话推理实战【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm导读本文基于《开源大模型食用指南》仓库中 01-Qwen-7B-Chat Transformers部署调用.md 展开完整演示如何在 LinuxAutoDL 云 GPU 平台上从零配置环境、下载 Qwen-7B-Chat 模型权重并通过 Hugging Face Transformers 编写脚本完成多轮对话推理。读完本文你将掌握基于AutoModelForCausalLM加载开源对话模型、通过model.chat()实现带历史记忆的多轮交互、以及用GenerationConfig控制生成超参的完整实战技能为后续的 FastAPI 服务化部署与 LoRA 微调打下基础。一、环境准备AutoDL 租用 24G 显存 GPU 机器Qwen-7B-Chat 是参数量约 70 亿的对话大模型权重体积约 15 GB单卡推理至少需要 24G 显存。本教程推荐在 AutoDL 平台租用一张RTX 309024GB 显存级别的显卡机器选择如下镜像组合框架 PyTorch → 版本 2.0.0 → Python 3.8 (ubuntu20.04) → CUDA 11.811.3 以上版本均可租用完成后打开服务器的JupyterLab在其中的终端里依次完成「环境配置 → 模型下载 → 运行 Demo」三个步骤。所有工作目录统一约定为/root/autodl-tmpAutoDL 的数据盘重启实例数据不会丢失。1.1 pip 换源与依赖包安装为了让国内网络环境下的依赖安装更顺畅先升级 pip 并切换清华 PyPI 镜像源# 升级pip python -m pip install --upgrade pip # 更换 pypi 源加速库的安装 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple随后安装 Qwen-7B-Chat 推理所需的全部依赖pip install modelscope1.9.5 pip install transformers4.32.0 accelerate tiktoken einops scipy transformers_stream_generator0.0.4 peft deepspeed各依赖在本次部署中的作用如下依赖包作用modelscope1.9.5魔搭社区 SDK用于在国内直接下载模型权重替代 Hugging Face Hubtransformers4.32.0Hugging Face 模型加载与推理框架核心accelerate提供device_mapauto自动多设备/显存分配能力tiktokenOpenAI 的 BPE 分词实现Qwen 的分词器依赖它einops张量重排工具被 Qwen 的trust_remote_code远程代码依赖scipy科学计算库部分模型逻辑依赖transformers_stream_generator0.0.4Qwen 流式输出生成的配套库peft高效微调框架本教程不涉及为后续 LoRA 微调做准备deepspeed分布式训练/推理框架同理为后续全量微调做准备二、模型下载使用 ModelScope 的 snapshot_download国内环境直接访问 Hugging Face 下载 15GB 权重通常很慢因此本教程使用ModelScope魔搭社区的snapshot_download函数下载模型。该函数第一个参数为模型名称参数cache_dir指定模型的下载路径。在/root/autodl-tmp路径下新建download.py文件并写入以下内容import torch from modelscope import snapshot_download, AutoModel, AutoTokenizer from modelscope import GenerationConfig model_dir snapshot_download(qwen/Qwen-7B-Chat, cache_dir/root/autodl-tmp, revisionv1.1.4)运行下载命令python /root/autodl-tmp/download.py下载完成后模型将保存在/root/autodl-tmp/qwen/Qwen-7B-Chat目录下。需要注意模型权重约15 GB下载耗时约10~20 分钟取决于带宽revisionv1.1.4指定了模型版本号与本仓库教程使用的权重保持一致便于复现从源码结构看snapshot_download返回的model_dir即为权重落地目录可直接作为后续from_pretrained的路径参数。三、代码准备编写 Transformers 多轮对话推理脚本在/root/autodl-tmp路径下新建trans.py文件输入以下完整代码import torch from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig model_dir /root/autodl-tmp/qwen/Qwen-7B-Chat tokenizer AutoTokenizer.from_pretrained(model_dir, trust_remote_codeTrue) model AutoModelForCausalLM.from_pretrained(model_dir, device_mapauto, trust_remote_codeTrue).eval() # Specify hyperparameters for generation model.generation_config GenerationConfig.from_pretrained(model_dir, trust_remote_codeTrue) # 可指定不同的生成长度、top_p等相关超参 # 第一轮对话 1st dialogue turn response, history model.chat(tokenizer, 你好, historyNone) print(response) # 你好很高兴为你提供帮助。 # 第二轮对话 2nd dialogue turn response, history model.chat(tokenizer, 给我讲一个年轻人奋斗创业最终取得成功的故事。, historyhistory) print(response) # 这是一个关于一个年轻人奋斗创业最终取得成功的故事。 # 故事的主人公叫李明他来自一个普通的家庭父母都是普通的工人。从小李明就立下了一个目标要成为一名成功的企业家。 # 为了实现这个目标李明勤奋学习考上了大学。在大学期间他积极参加各种创业比赛获得了不少奖项。他还利用课余时间去实习积累了宝贵的经验。 # 毕业后李明决定开始自己的创业之路。他开始寻找投资机会但多次都被拒绝了。然而他并没有放弃。他继续努力不断改进自己的创业计划并寻找新的投资机会。 # 最终李明成功地获得了一笔投资开始了自己的创业之路。他成立了一家科技公司专注于开发新型软件。在他的领导下公司迅速发展起来成为了一家成功的科技企业。 # 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险不断学习和改进自己。他的成功也证明了只要努力奋斗任何人都有可能取得成功。 # 第三轮对话 3rd dialogue turn response, history model.chat(tokenizer, 给这个故事起一个标题, historyhistory) print(response) # 《奋斗创业一个年轻人的成功之路》然后运行脚本cd /root/autodl-tmp python trans.py模型加载与生成需要一定时间加载完毕后即可看到上述多轮对话输出。3.1 代码逐行解析四个关键点①trust_remote_codeTrue加载 Qwen 自定义代码Qwen-7B-Chat 的模型结构、分词器逻辑并未全部内置于 transformers 标准库中而是随权重目录一同发布了自定义.py文件如modeling_qwen.py、tokenization_qwen.py。trust_remote_codeTrue表示允许 transformers 从权重目录直接加载并执行这些自定义代码。若省略该参数from_pretrained会因找不到标准实现而报错。这也是仓库中所有 Qwen 系列教程如 02-Qwen-7B-Chat FastApi 部署调用、03-Qwen-7B-Chat WebDemo统一采用该参数的原因。②device_mapauto自动显存分配该参数来自accelerate库会自动将模型权重分配到所有可用 GPU/显存上。对 Qwen-7B-Chat 而言24G 显存单卡即可完整容纳 bf16 精度的约 15GB 权重若显存不足device_mapauto还会尝试将部分层放到 CPU 内存offload代价是推理速度下降。.eval()则将模型切换为评估模式关闭 Dropout 等训练专用行为。③GenerationConfig预置生成超参model.generation_config GenerationConfig.from_pretrained(model_dir, trust_remote_codeTrue)这行代码从权重目录读取模型自带的generation_config.json将生成长度、top_p、temperature、repetition_penalty等超参恢复为 Qwen 官方推荐的默认值。如需自定义可在model.chat()调用时显式传入。参考仓库中 FastAPI 部署脚本 02-Qwen-7B-Chat FastApi 部署调用 的默认取值参数默认值说明max_length2048生成序列最大长度含输入top_p0.7核采样阈值只从累计概率达到 0.7 的 token 中采样temperature0.95采样温度越大输出越多样越小越确定④model.chat()带历史记忆的多轮对话接口Qwen 的chat方法签名形如chat(tokenizer, query, historyNone, ...)返回二元组(response, history)第一轮传入historyNone开启新对话后续轮次必须把上一轮返回的history原样传回模型才能记住前文从源码结构看history内部以[user_query, assistant_response]的配对列表组织chat方法会将其拼装为 Qwen 专属的|im_start|对话模板后输入模型。四、常见问题与注意事项加载阶段出现 Warning 是否影响运行运行终端可能出现 CUDA 驱动版本过旧、FlashAttention 未安装等 Warning。其中 FlashAttention 仅影响推理速度不影响正确性若追求更高吞吐可另行安装flash-attention但对本教程的单轮 Demo 并非必需。模型下载慢或失败确认已配置 pip 镜像源并改用 ModelScope 下载revision版本号应与教程一致避免权重与代码不匹配。显存不足检查是否只加载了一张卡上的模型nvidia-smi观察显存占用Qwen-7B-Chat 需要 24G 级别显存单卡推理低显存环境建议参考仓库中 09-Qwen-1_8B-chat CPU 部署 或选择更小尺寸模型。需要交互式或服务化调用本脚本为单次运行模式。若需对外提供 API 服务可参考 02-Qwen-7B-Chat FastApi 部署调用基于 FastAPI uvicorn 暴露 6006 端口支持curl与requests调用若需图形化 Web 界面可参考 03-Qwen-7B-Chat WebDemo基于 Gradio。五、延伸阅读从部署走向微调本教程完成了 Qwen-7B-Chat 的本地部署与推理仓库中还有配套的进阶教程形成完整的部署 → 微调链路04-Qwen-7B-Chat Lora 微调基于peft0.4.0的高效微调使用 dataset/huanhuan.jsonl 指令数据最小 24G 显存即可运行配套脚本见 04-Qwen-7B-Chat Lora 微调.py05-Qwen-7B-Chat Ptuning 微调参数高效的 P-Tuning v2 方案06-Qwen-7B-chat 全量微调基于 DeepSpeed 的分布式全量微调07-Qwen-7B-Chat 接入langchain搭建知识库助手将部署好的模型接入 LangChain 构建知识库问答应用08-Qwen-7B-Chat Lora 低精度微调4bit/8bit 量化 LoRA进一步降低显存门槛。建议按照环境配置 → 部署使用 → 微调的顺序学习项目根目录 README.md 亦给出同样建议本教程即处于第二阶段的入口位置。【免费下载链接】self-llm《开源大模型食用指南》针对中国宝宝量身打造的基于Linux环境快速微调全参数/Lora、部署国内外开源大模型LLM/多模态大模型MLLM教程项目地址: https://gitcode.com/GitHub_Trending/se/self-llm创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考