引言
Qwen2.5 是阿里巴巴云推出的一款高性能大模型,广泛应用于文本生成、对话系统、翻译等多个领域。 本文将详细介绍如何借助魔搭社区(ModelScope)在本地环境中部署 Qwen2.5 大模型。
环境
准备在开始部署之前,确保你的本地环境满足以下要求:
-
Python 环境:建议使用 Python 3.9 及以上版本,测试版本为3.12。
-
GPU:使用带有 CUDA 支持的 GPU,测试cuda版本为12.4,显卡为3060。
-
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社区也非常活跃,参与其中可以帮助你更快地进步。祝你学习愉快!