通义千问本地部署教程 Qwen-1.5-1.8B/7B/14B Windows-详细认真版

本文详细介绍通义千问大模型Qwen-7B-Chat的本地部署流程,包括环境搭建、模型下载、多轮对话实现及流式输出优化等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通义千问本地部署教程🚀

        本专栏的第四弹,在实现了联网调用通义千问模型进行多轮对话,流式输出,以及结合LangChain实现自建知识库之后,开始准备考虑实现对大模型进行本地部署,网上找不到看着比较舒服的教程,本文对于部署大模型过程中比较重要的,环境搭建,模型下载等进行详细介绍,如果您没有研究需求只有使用需求,请直接安装环境-下载模型-运行代码,由于这部分内容实在太多,所以可能还是需要一些相关的基础才能完全读懂本篇文字,如果您之前稍微研究过大语言模型的本地部署我相信这篇文章一定能解决您的问题,如果有什么我写的不清楚的地方,非常欢迎各位给我留言评论探讨,然后虽然我看好像其他相关的文章好像都收费,但是我还是决定免费,由于我是会员所以我有版权保护,所以不用太担心别人直接爬走,希望帮助到各位,如果可以您点个赞我会非常开心的。


系列文章:
1.调用阿里通义千问大语言模型API-小白新手教程-python
2.LangChain结合通义千问的自建知识库
3.使用LangChain结合通义千问API基于自建知识库的多轮对话和流式输出
4.解决LangChain构建知识向量库的过程中官方API无法自定义文本切割方式的问题-例如按行切分
5.通义千问本地部署教程Qwen-7B-Chat Qwen1.5-1.8B Windows-详细认真版

1.Qwen-7B-Chat 模型的下载


        首先需要下载通义千问的Qwen-7B-Chat的模型文件,其下载地址为阿里官方的大语言模型社区,魔搭ModelScope,其中通义千问的Qwen-7B-Chat 的下载和相关介绍的地址为。
https://modelscope.cn/models/qwen/Qwen-7B-Chat/summary
在这里插入图片描述
点击其中的模型文件,进入模型文件页面,之后点击右侧的下载模型
在这里插入图片描述
        右侧会出现两个下载方式,第一个是用SDK也就是安装安装工具包下载,第二个是用git下载,这里还是推荐用第一种,但是实际使用的时候,还需要添加一个新的参数用来设置下载地址,否则就会下载到安装包的目录下
在这里插入图片描述

        在安装好环境之后,之后运行下面的代码就可以下载到本地了,模型大小一共是14.4个Gcache_dir就是自己设置的模型下载的地址是是一个文件夹的目录

from modelscope import snapshot_download
model_dir = snapshot_download('qwen/Qwen-7B-Chat',cache_dir='自己的地址')

        运行起来的效果如下,当运行到下载1个G以上的文件的时候会卡住一阵,才会开始下载,如果这里长时间没响应那就是网络条件不行了。
在这里插入图片描述

2.Qwen-7B-Chat 环境的安装


        为了运行之后本地部署的Qwen-7B-Chat模型,我们需要根据要求在Anaconda中安装一个满足模型运行要求的虚拟环境,其官方的配置环境要求如下,本文配置的环境为使用GPU Pytorch的版本。官网的要求如下。
在这里插入图片描述

        除了常规的Pytorch之外还需要进行以下两次安装

  1. 安装modelscope可以用来下载模型,在下载的过程中有网络要求我用的宽带为100M的网线链接最后下了不到1个小时,如果网络不行在下载到大文件的时候会断开链接。
pip install modelscope
  1. 然后是官方说的运行Qwen-7B-需要安装的依赖。
    在这里插入图片描述
pip install transformers==4.32.0 accelerate tiktoken einops scipy transformers_stream_generator==0.0.4 peft deepspeed

        具体安装过程根据不同的系统电脑各有各的微小差异,而且有时候充满了玄学,在这里我说一下我自己的配置,然后给大家参考。

名称 硬件型号/软件版本
CPU 英特尔 Core i7-14700KF
GPU NVIDIA GeForce RTX 4070 Ti(12 GB/华硕)
CUDA Driver Version: 546.65 CUDA Version: 12.3
内存 32 GB(威刚 DDR5 6000MHz16GB x2)
硬盘 GAMMIX S70 SE(1024 GB/固态硬盘)
Python 3.9.15
Numpy 1.23.4
pip 22.3.1
Torch 1.13.1
modelscope 1.12.0

3.运行本地的部署代码实现多轮对话


        在安装好环境以及下载了模型文件之后,就可以运行官方的例程代码来观察对话效果,官方的快速开始代码如下,先给出官方代码之后我会精简然后介绍重要参数的作用

from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig

# Note: The default behavior now has injection attack prevention off.
tokenizer = AutoTokenizer.from_pretrained("qwen/Qwen-7B-Chat", trust_remote_code=True)

# use bf16
# model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", device_map="auto", trust_remote_code=True, bf16=True).eval()
# use fp16
# model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", device_map="auto", trust_remote_code=True, fp16=True).eval()
# use cpu only
# model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", device_map="cpu", trust_remote_code=True).eval()
# use auto mode, automatically select precision based on the device.
model = AutoModelForCausalLM.from_pretrained("qwen/Qwen-7B-Chat", device_map="auto", trust_remote_code=True).eval()

# Specify hyperparameters for generation. But if you use transformers>=4.32.0, there is no need to do this.
# model.generation_config = GenerationConfig.from_pretrained("Qwen/Qwen-7B-Chat", trust_remote_code=True) # 可指定不同的生成长度、top_p等相关超参

# 第一轮对话 1st dialogue turn
response, history = model.chat(tokenizer, "你好", history=None)
print(response)
# 你好!很高兴为你提供帮助。

# 第二轮对话 2nd dialogue turn
response, history = model.chat(tokenizer, "给我讲一个年轻人奋斗创业最终取得成功的故事。", history=history)
print(response)
# 这是一个关于一个年轻人奋斗创业最终取得成功的故事。
# 故事的主人公叫李明,他来自一个普通的家庭,父母都是普通的工人。从小,李明就立下了一个目标:要成为一名成功的企业家。
# 为了实现这个目标,李明勤奋学习,考上了大学。在大学期间,他积极参加各种创业比赛,获得了不少奖项。他还利用课余时间去实习,积累了宝贵的经验。
# 毕业后,李明决定开始自己的创业之路。他开始寻找投资机会,但多次都被拒绝了。然而,他并没有放弃。他继续努力,不断改进自己的创业计划,并寻找新的投资机会。
# 最终,李明成功地获得了一笔投资,开始了自己的创业之路。他成立了一家科技公司,专注于开发新型软件。在他的领导下,公司迅速发展起来,成为了一家成功的科技企业。
# 李明的成功并不是偶然的。他勤奋、坚韧、勇于冒险,不断学习和改进自己。他的成功也证明了,只要努力奋斗,任何人都有可能取得成功。

# 第三轮对话 3rd dialogue turn
response, history = model.chat(tokenizer, "给这个故事起一个标题", history=history)
print(response)
# 《奋斗创业:一个年轻人的成功之路》

        运行的结果如下,红色的是各种前置检查信息,我专门断网测试了一下输出的也是这些内容。

在这里插入图片描述

        之后对代码进行精简,实现一个简单的多轮对话功能。精简之后的代码如下。其中的device_map如果设置为cpu则模型将会在cpu上运行,如果设置为Auto如果Pytorch为GPU版本的话将会在GPU上运行。关于非常容易关注到的tokenizer,官方是这吗说的🤭说现在还没有概念的对应,所以无需纠结这块是啥东西。根据经验推测它应该是跟分词有关的一个东西。

在这里插入图片描述

from modelscope import AutoModelForCausalLM, AutoTokenizer

model_path = "D:\qwen\Qwen-7B-Chat"

tokenizer 
评论 91
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩浩的科研笔记

这我为您答疑发送资源的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值