本地部署阿里Qwen2.5大模型

引言

Qwen2.5 是阿里巴巴云推出的一款高性能大模型,广泛应用于文本生成、对话系统、翻译等多个领域。 本文将详细介绍如何借助魔搭社区(ModelScope)在本地环境中部署 Qwen2.5 大模型。

环境

准备在开始部署之前,确保你的本地环境满足以下要求:

  1. Python 环境:建议使用 Python 3.9 及以上版本,测试版本为3.12。

  2. GPU:使用带有 CUDA 支持的 GPU,测试cuda版本为12.4,显卡为3060。

  3. python库:transformer 4.46,torch 2.5.1+cu124,modelscope 1.20.1 快速安装这些用到的python库

    shell 复制代码
    # 如果还没有创建项目可以使用下面三行命令创建一个带有虚拟环境的项目,如果已有项目请忽略
    mkdir qwen_demo & cd qwen_demo
    # 创建虚拟环境
    python -m venv myenv
    # 激活虚拟环境(Windows)
    myenv\Scripts\activate
    
    # 安装支持cuda 12.4版本的torch
    pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124
    
    # 安装transformers和modelscope
    pip install transformers==4.46 modelscope==1.20.1

安装qwen2.5

我们使用modelscope安装qwen2.5。 根目录下创建main.py,下载的时候可以选择更大参数的版本,测试选择的是1.5B参数的大模型,更大参数需要更高硬件配置的支持。

python 复制代码
from modelscope import snapshot_download

# Downloading model checkpoint to a local dir model_dir
# model_dir = snapshot_download('Qwen/Qwen2.5-0.5B-Instruct')
# model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct')
# model_dir = snapshot_download('Qwen/Qwen2.5-32B-Instruct')
# model_dir = snapshot_download('Qwen/Qwen2.5-72B-Instruct')
model_dir = snapshot_download('Qwen/Qwen2.5-1.5B-Instruct')

执行main.py文件 如果电脑上还没有相应版本的qwen,会先下载模型,等待下载完成即可

加载模型

python 复制代码
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    device_map="auto",
    trust_remote_code=True
).eval()

与模型进行交流

python 复制代码
# 准备输入
input_text = '''你好!'''
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
print(inputs)

# 生成输出
with torch.no_grad():
    outputs = model.generate(**inputs, max_length=5000)

# 解码输出
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(generated_text)

完整代码

python 复制代码
from modelscope import snapshot_download
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# Downloading model checkpoint to a local dir model_dir
# model_dir = snapshot_download('Qwen/Qwen2.5-0.5B-Instruct')
# model_dir = snapshot_download('Qwen/Qwen2.5-7B-Instruct')
# model_dir = snapshot_download('Qwen/Qwen2.5-32B-Instruct')
# model_dir = snapshot_download('Qwen/Qwen2.5-72B-Instruct')
model_dir = snapshot_download('Qwen/Qwen2.5-1.5B-Instruct')

# Loading local checkpoints
# trust_remote_code is still set as True since we still load codes from local dir instead of transformers
tokenizer = AutoTokenizer.from_pretrained(model_dir, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    device_map="auto",
    trust_remote_code=True
).eval()


# 准备输入
input_text = '''如何快速学习python'''
inputs = tokenizer(input_text, return_tensors="pt").to("cuda")
print(inputs)

# 生成输出
with torch.no_grad():
    outputs = model.generate(**inputs, max_length=5000)

# 解码输出
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)

print(generated_text)

再次执行main.py,输出内容是md格式

shell 复制代码
(myenv) PS E:\py-projects\qwen-demo\qwen_demo> .\myenv\Scripts\python.exe .\main.py
Downloading Model to directory: C:\Users\Administrator\.cache\modelscope\hub\Qwen/Qwen2.5-1.5B-Instruct
2024-12-04 14:14:04,758 - modelscope - INFO - Creating symbolic link [C:\Users\Administrator\.cache\modelscope\hub\Qwen/Qwen2.5-1.5B-Instruct].
2024-12-04 14:14:04,759 - modelscope - WARNING - Failed to create symbolic link C:\Users\Administrator\.cache\modelscope\hub\Qwen/Qwen2.5-1.5B-Instruct.
{'input_ids': tensor([[100007, 101098, 100134,  12669]], device='cuda:0'), 'attention_mask': tensor([[1, 1, 1, 1]], device='cuda:0')}
如何快速学习python,可以推荐一些书籍吗? 学习Python是一个循序渐进的过程,以下是一些建议的书籍和资源:

1. **《Python编程:从入门到实践》** - Michael Dawson
   这本书非常适合初学者。它以项目为导向,帮助你理解如何在实际问题中应用Python。

2. **《Python权威指南》(第4版)** - Mark Lutz, David Ascher, and David Ascher
   作为一本经典的Python教程,这本书详细介绍了Python的各种功能,并通过大量的示例来说明如何使用它们。

3. **《Automate the Boring Stuff with Python》** - Al Sweigart
   这本书教你如何编写自动化脚本,包括数据处理、网络爬虫等实用技能。

4. **《Effective Python: 59 Specific Ways to Write Better Python Code》** - Brett Slatkin
   提供了Python编程的最佳实践,适合希望提高代码质量的专业开发者。

5. **《Python Cookbook》 (第二版)**
   这本书包含了很多高级主题,如装饰器、元类、多线程等,非常适合想要深入学习Python语言特性的读者。

6. **《深入浅出Python》(第3版)**
   这本书是专门为程序员设计的,内容覆盖了Python的基础知识以及更高级的主题。

7. **《Learning Python》**
   著名Python讲师Brett Cannon撰写的这本教材非常受欢迎,适合希望系统地学习Python的读者。

8. **在线课程和视频教程**
   如Coursera、Udemy、edX等平台上的Python课程也非常值得一看,特别是那些由知名教授或专家讲授的课程。

9. **Stack Overflow**
   Stack Overflow上有许多关于Python的问题和答案,对于解决具体技术问题非常有帮助。

10. **GitHub上的开源项目**
    GitHub上有很多Python项目的源码,你可以查看这些项目的实现方式,从中学习不同的编程技巧和最佳实践。

选择合适的书籍和资源时,请根据你的兴趣和当前的学习水平进行调整。Python社区也非常活跃,参与其中可以帮助你更快地进步。祝你学习愉快!
相关推荐
OpenLoong 开源社区1 分钟前
技术视界 | 数据的金字塔:从仿真到现实,机器人学习的破局之道
人工智能·学习·机器人·开源社区·人形机器人·openloong
声网1 分钟前
ElatoAI:开源 ESP32 AI 语音 AI 玩具方案;凯叔推出 AI 故事玩偶「鸡飞飞」丨日报
人工智能
崔高杰11 分钟前
On the Biology of a Large Language Model——Claude团队的模型理解文章【论文阅读笔记】其二——数学计算部分
论文阅读·人工智能·笔记·语言模型·nlp
有Li14 分钟前
基于强化学习的用于非刚性图像配准的引导式超声采集|文献速递-深度学习医疗AI最新文献
人工智能
每天都要写算法(努力版)15 分钟前
【神经网络与深度学习】两种加载 pickle 文件方式(joblib、pickle)的差异
人工智能·深度学习·神经网络
aiweker17 分钟前
数据分析(四):Python Pandas数据输入输出全流程指南
python·数据分析·pandas
制冷男孩17 分钟前
机器学习算法-支持向量机SVM
人工智能·算法·机器学习·支持向量机
结冰架构24 分钟前
人工智能大语言模型与AI芯片新进展:技术演进与商业化路径
人工智能·ai·语言模型·自然语言处理·技术
晨曦54321025 分钟前
Numpy数组与矩阵——python学习
python·矩阵·numpy
梓羽玩Python28 分钟前
7.8K 标星!这个Python神器把MCP服务器变成「搭积木」一样简单!
python·github