当前位置: 首页 > news >正文

探索大语言模型(LLM):Qwen3速测指南(transformers调用)

文章目录

  • 前言
  • 下载相关依赖
  • 下载模型
  • 代码
  • 运行结果


前言

Qwen3发布后4小时内GitHub获1.7万星标,刷新开源大模型热度纪录。本篇文章将以transformers调用的方式快速进行Qwen3调用。


下载相关依赖

需要安装acceleratetorchtransformers
下载accelerate

pip install accelerate

下载torch
读者需要根据自己的驱动版本和系统配置在torch官网下载合适的下载命令
torch链接:https://pytorch.org/get-started/locally/
在这里插入图片描述
下载transformers
这里要求transformers的版本要大于等于4.51.0


下载模型

笔者不建议直接区huggingface上下载,这样会很慢,建议在huggingface镜像或者modescope上下载。由于笔者习惯使用git方式下载,本篇中使用hf-mirror下载。
hf-mirror链接:https://hf-mirror.com/
搜索qwen3
在这里插入图片描述
Qwen3放出来八个模型,密集型模型有Qwen3-0.6BQwen3-1.7BQwen3-4BQwen3-8BQwen3-14BQwen3-32B,多专家模型有Qwen3-30B-A3BQwen3-235-A22B
密集型模型的大小很好理解,B表示10亿参数,4B的意思就是40亿参数。多专家模型的大小由总参数与激活参数决定,30B-A3B表示一共有30B参数,运行时激活3B参数。

参数与对应配置的参考如下表:

模型显存内存
Qwen3-0.6B1GB+4GB+
Qwen3-1.7B2GB+8GB+
Qwen3-4B8GB+16GB+
Qwen3-8B14GB+16GB+
Qwen3-14B24GB+32GB+
Qwen3-32B58GB+64GB+
Qwen3-30B-A3B55GB+64GB+
Qwen3-235-A22B350GB+512GB+

笔者在这里选择4B的模型
在这里插入图片描述
切换到本地模型保存目录,然后命令行运行以下两条命令,等待执行结束即可
在这里插入图片描述


代码

导入包

from transformers import AutoModelForCausalLM, AutoTokenizer

导入模型与分词器
model_name是笔者保存模型文件的路径,使用AutoTokenizer加载分词器,AutoModelForCausalLM加载模型。

model_name = r"D:\alpha_ordered\MyCodeBase\Large Model\LLM\huggingface_model\Qwen3-4B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name,torch_dtype="auto",device_map="auto"
)

词嵌入
prompt是用户要询问大模型的问题,messages是符合大模型对话格式的输入形式

prompt = "给出一个关于大语言模型的简短介绍"
messages = [{"role": "user", "content": prompt}
]
# 词嵌入过程
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True,  # 封装在提示词模板里,所有模型默认,function calling功能也依赖提示词模板enable_thinking=True,  # 是否启动思考模式,也是通过修改提示词模板实现
)print("model device:", model.device)
model_inputs = tokenizer([text], return_tensors="pt").to(model.device)

创建并回复

generated_ids = model.generate(**model_inputs,max_new_tokens=32768
)output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist()
# parsing thinking content
try:# rindex finding 151668 (</think>)index = len(output_ids) - output_ids[::-1].index(151668)
except ValueError:index = 0thinking_content = tokenizer.decode(output_ids[:index], skip_special_tokens=True).strip("\n")
content = tokenizer.decode(output_ids[index:], skip_special_tokens=True).strip("\n")
print("thinking content:", thinking_content)
print("content:", content)

运行结果

Loading checkpoint shards: 100%|██████████| 3/3 [00:06<00:00,  2.00s/it]
Some parameters are on the meta device because they were offloaded to the cpu.
model device: cuda:0
thinking content: <think>
好的,用户让我给出一个关于大语言模型的简短介绍。首先,我需要明确用户的需求是什么。他们可能是在准备一个演示、写一篇简短的说明文,或者只是想了解大语言模型的基本概念。不管怎样,用户需要的是简洁明了的介绍,不能太复杂,也不能遗漏关键点。接下来,我得考虑大语言模型的核心要素。首先,大语言模型(LLM)是基于深度学习的,特别是Transformer架构。然后,它们通过大量文本数据进行训练,能够理解和生成人类语言。应用方面,比如文本生成、问答、编程等。还有它们的规模,参数量大,比如像GPT-3、BERT这样的模型。不过用户要的是简短的介绍,所以需要把重点放在定义、特点、应用上。可能还需要提到它们的训练方式,比如自监督学习,或者使用大量数据。另外,可能需要提到它们的用途,比如辅助工作、创作内容等。还要注意避免使用过于专业的术语,保持易懂。比如,可以解释一下Transformer架构,但可能不需要太深入。另外,可能需要提到它们的局限性,比如在特定领域可能不够准确,或者需要大量计算资源。但用户没有特别提到局限性,所以可能不需要包括。不过简短介绍里是否需要提到呢?可能不需要,因为用户可能只需要基本的定义和用途。所以重点放在定义、技术基础、应用场景上。然后检查有没有遗漏的关键点。比如,大语言模型的训练数据量大,参数量大,能够处理多种任务,支持多语言等。这些都需要简要提及。现在组织语言,确保句子连贯,信息准确。比如:“大语言模型是基于深度学习的AI系统,通过大量文本数据训练,能够理解和生成自然语言。它们基于Transformer架构,具备强大的文本生成、问答和编程能力,广泛应用于内容创作、智能助手等领域。” 这样是否足够?可能需要更详细一点,比如提到自监督学习,或者参数量的规模。但用户要求简短,所以可能需要平衡。例如:“大语言模型是基于Transformer架构的深度学习模型,通过海量文本数据训练,具备强大的自然语言理解和生成能力。它们可应用于文本生成、问答、编程等任务,广泛用于内容创作、智能助手等领域。”这样应该更全面,同时保持简洁。检查有没有冗余,是否符合用户的要求。可能用户需要更简短,所以再缩短一点:“大语言模型是基于Transformer架构的深度学习模型,通过大量文本数据训练,能理解和生成自然语言,广泛应用于文本生成、问答、编程等领域。”这样更简短,但可能信息量足够。需要确保关键点都涵盖:架构、训练方式、能力、应用。这样应该可以满足用户的需求。
</think>
content: 大语言模型(LLM)是基于Transformer架构的深度学习系统,通过海量文本数据训练,具备强大的自然语言理解和生成能力。它们可处理多语言、多任务,广泛应用于文本创作、问答、编程、翻译等领域,是当前AI技术的重要突破方向。

可以留意一下以下提示,说明高版本的transformers已经具备了将一部分模型参数卸载到cpu中的能力了,这也就意味着,同样的显存下,可以尝试跑更大的模型
在这里插入图片描述

http://www.xdnf.cn/news/275833.html

相关文章:

  • c++26新功能——Pack indexing
  • RTX-3090 Qwen3-8B Dify RAG环境搭建
  • (即插即用模块-Attention部分) 六十四、(2024) LSKA 可分离大核注意力
  • ubuntu-PyQt5安装+PyCharm配置QtDesigner + QtUIC
  • 关于离散化算法的看法与感悟
  • 软考-软件设计师中级备考 8、进程管理
  • 49认知干货:产品的生命周期及类型汇总
  • 【Java项目脚手架系列】第一篇:Maven基础项目脚手架
  • Rust的安全卫生原则
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】2.2 多表关联技术(INNER JOIN/LEFT JOIN/FULL JOIN)
  • C++八股--6--mysql 日志与并发控制
  • WSL在D盘安装Ubuntu
  • 纯文本Text转Html网页转换器
  • 方案精读:110页华为云数据中心解决方案技术方案【附全文阅读】
  • 项目收尾管理
  • 时序分解 | Matlab基于WOA-MVMD鲸鱼算法优化多元变分模态分解
  • C盘莫名其妙一直变大
  • 智能工厂边缘计算:从数据采集到实时决策
  • WPF之尺寸属性层次
  • 如何从GitHub上调研优秀的开源项目,并魔改应用于工作中?
  • 【言语理解】中心理解题目之选项分析
  • Unity与Unreal Engine(UE)的深度解析及高级用法
  • 【AI面试准备】模型自动化评估经验
  • MCP协议与Dify集成教程
  • 华中科技大学系统结构慕课部分答案
  • 33.降速提高EMC能力
  • 深度学习中的数据增强:提升食物图像分类模型性能的关键策略
  • 【自存】python使用matplotlib正常显示中文、负号
  • Android ART运行时无缝替换Dalvik虚拟机的过程分析
  • Android运行时ART加载OAT文件的过程