transformers 推理 Qwen2.5 等大模型技术细节详解(二)AutoModel 初始化和模型加载(免费送新书)

接上文:transformers 推理 Qwen2.5 等大模型技术细节详解(一)transformers 包和对象加载

老牛同学和大家通过 Transformers 框架的一行最常见代码from transformers import AutoModelForCausalLM,走读了transformers 包初始化代码的整个流程。从中体会到了dummy对象、LazyModule延迟模块和按需加载、API 简化使用等这些transformers 包的设计美学,为我们设计超大 Python 包提供了很好的借鉴思路。

本文是使用 Transformers 推理 LLM 技术细节的第 2 篇文章,我们将基于 Qwen2.5 大模型,通过模型配置和from_pretrained代码,了解AutoModel模型初始化的技术细节:

  1. 环境准备:配置虚拟环境,下载 Qwen2.5 模型文件
  2. Qwen2.5 模型配置文件config.json各个配置项说明,并介绍AutoConfig加载文件到Qwen2Config配置
  3. 走读AutoModelForCausalLM.from_pretrained方法代码,详细介绍模型初始化流程
  4. 在最后,老牛同学又来搞个小活动,免费包邮送几本新书给大家,期望大家踊跃参与
    Transformers推理核心流程
    在以上 Transformers 框架推理 LLM 的核心框架代码中,我们本次将走读的代码是from_pretrained方法:
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
    model_dir,
    torch_dtype="auto",
    device_map="auto",
    local_files_only=True,
)

环境准备:配置虚拟环境和下载 Qwen2.5 模型文件

【配置虚拟环境】 在上一篇我们已经配置好了虚拟环境,老牛同学就只简单罗列一下配置脚本:

# Python虚拟环境名:Qwen2.5,版本号:3.10
conda create -n Qwen2.5 python=3.10 -y

# 激活虚拟环境
conda activate Qwen2.5

# 下载Python依赖包
pip install torch
pip install "transformers>=4.43.1"
pip install "accelerate>=0.26.0"

【下载 Qwen2.5 模型文件】 老牛同学存放模型文件目录:Qwen2.5-1.5B-Instruct

# Git大文件系统
git lfs install

# 下载模型文件
git clone https://www.modelscope.cn/qwen/Qwen2.5-1.5B-Instruct.git Qwen2.5-1.5B-Instruct

若下载过程中异常中断,可以通过git lfs install命令继续下载:

# 切换到Git目录
cd Qwen2.5-1.5B-Instruct

# 中断继续下载
git lfs install
git lfs pull

下载完成,可以看到如下文件结构:

Qwen2.5模型文件结构

针对本文大模型初始化来说,我们重点关注config.json模型配置文件和model.safetensors模型文件:

  1. model.safetensors文件是模型文件(主要为权重参数数据),它存储了验证文件完整性的校验和、模型张量元数据和张量权重参数等。我们将在代码流程中详细说明这些数据。
  2. config.json文件是模型的配置文件,包括了模型框架、训练设置、各种超参数等信息:

Qwen2.5模型参数配置

config.json参数详解和 AutoConfig 初始化

老牛同学对config.json文件中的每个参数进行简单说明:

参数名 配置值 参数说明
architectures Qwen2ForCausalLM 模型的架构名称,Qwen2ForCausalLM是 Qwen 推理模型,在模型初始化方式将会实际使用
attention_dropout 0.0 注意力机制中的 Dropout 操作概率,0.0代表不对注意力权重进行随机置零操作,即保留所有的注意力权重
bos_token_id 151643 文本序列开始 Token ID 标记(Begin of Sentence Token ID),代表文本片段开始位置
eos_token_id 151645 文本序列结束 Token ID 标记(End of Sentence Token ID),代表文本片段结束位置
hidden_act silu 模型隐藏层使用SiLU激活函数(其他激活函数:ReLU,Tanh,Sigmoid 等)
hidden_size 1536 隐藏层的维度(或每个隐藏层中神经元的数量),数值越大意味着模型能学习更复杂的特征和模式
initializer_range 0.02 模型训练时初始化权重的标准差,0.02代表权重从均值为 0、标准差为 0.02 的正态分布中随机初始化
intermediate_size 8960 前馈神经网络中间层的维度,通常要比hidden_size大得多,用于增加模型学习能力
max_position_embeddings 32768 模型可以处理的最大序列长度,32768代表模型可以处理最长为 32768 个 Token 的输入序列
max_window_layers 21 模型在处理长序列时,最多可以应用多少层的滑动窗口策略,即可以对长序列进行多少次分隔和处理
model_type qwen2 Qwen2 模型类型标识,用于映射 Qwen2Config 和 Qwen2ForCausalLM 等实际类
num_attention_heads 12 多头注意力机制中注意力头的数量,12代表每个隐藏层中使用 12 个注意力头
num_hidden_layers 28 模型隐藏层的数量
num_key_value_heads 2 多头自注意力机制中键(Key)和值(Value)的注意力头数量,共12个注意头而键值只有2个头,则意味着查询(Query)头可以共享相同的键和值头
rms_norm_eps 1e-06 使用 RMSNorm 归一化技术处理,分母增加一个极小值,避免除以零的情况,保证归一化的有效性
rope_theta 1000000.0 RoPE 旋转位置编码的周期性因子,用于捕捉长距离依赖关系,提高模型的数值稳定性
sliding_window 32768 模型在处理长序列时采用的滑动窗口序列长度,即通过滑动窗口的方式处理超过max_position_embeddings的长序列策略
tie_word_embeddings true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值