【Hugging Face】transformers 库中的 config 常用方法和属性

Hugging Face transformers 库中的 config 常用方法和属性

config 代表 Transformer 模型的配置对象,包含 模型架构、隐藏层维度、注意力头数、激活函数等超参数。可以使用 AutoConfig 直接加载模型配置,而不加载权重。


1. config 的常见属性

from transformers import AutoConfig

config = AutoConfig.from_pretrained("bert-base-uncased")
属性作用示例
config.hidden_size模型的隐藏层维度768
config.num_attention_heads自注意力头的数量12
config.num_hidden_layersTransformer 层数12
config.vocab_size词汇表大小30522
config.max_position_embeddings最大可处理序列长度512
config.hidden_dropout_prob隐藏层 Dropout 比例0.1
config.attention_probs_dropout_prob注意力 Dropout 比例0.1
config.model_type模型类型'bert'
config.is_decoder是否为解码器模型False

2. config 的常用方法

方法作用
config.to_dict()将配置转换为 Python 字典
config.to_json_string()以 JSON 格式返回配置
config.save_pretrained(path)保存配置到本地
config.from_pretrained(model_name_or_path)加载 Hugging Face 预训练模型的配置
config.update({"hidden_size": 512})更新配置参数

3. config 详细用法

3.1. 仅加载模型配置(不加载权重)

from transformers import AutoConfig

config = AutoConfig.from_pretrained("bert-base-uncased")
print(config.hidden_size)  # 768

3.2. 通过 config 创建模型

如果你想 自定义模型参数,可以使用 config 初始化模型:

from transformers import AutoModel

# 自定义配置
config = AutoConfig.from_pretrained("bert-base-uncased")
config.hidden_size = 512  # 修改隐藏层维度

# 用修改后的配置创建模型
model = AutoModel.from_config(config)

3.3. 以 JSON 格式查看配置

json_config = config.to_json_string()
print(json_config)

示例输出

{
  "hidden_size": 768,
  "num_attention_heads": 12,
  "num_hidden_layers": 12,
  "vocab_size": 30522
}

3.4. 保存 config

config.save_pretrained("./my_model_config")

3.5. 从本地加载 config

config = AutoConfig.from_pretrained("./my_model_config")

3.6. 更新 config

config.update({"hidden_size": 1024, "num_hidden_layers": 24})
print(config.hidden_size)  # 1024

4. config 在不同模型中的应用

4.1. BERT

from transformers import BertConfig

config = BertConfig(hidden_size=512, num_hidden_layers=6)
model = AutoModel.from_config(config)
print(model.config)

4.2. GPT-2

from transformers import GPT2Config

config = GPT2Config(vocab_size=50257, n_layer=12)
model = AutoModel.from_config(config)
print(model.config)

4.3. T5

from transformers import T5Config

config = T5Config(d_model=512, num_layers=8)
model = AutoModel.from_config(config)
print(model.config)

5. 总结

config 是 Transformer 模型的核心配置对象,包含所有 模型超参数

常用属性:

  • config.hidden_size 隐藏层维度
  • config.num_attention_heads 注意力头数
  • config.num_hidden_layers Transformer 层数
  • config.vocab_size 词汇表大小
  • config.max_position_embeddings 最大序列长度

常用方法:

  • config.to_dict() 转换为字典
  • config.to_json_string() 转换为 JSON
  • config.save_pretrained(path) 保存配置
  • config.from_pretrained(model_name_or_path) 加载配置
  • config.update({...}) 更新参数
Hugging Face Transformers中,使用AWD-QAModel(即Abridged Wasserstein Distance Quantization Model)通常涉及到将预训练的大型语言模型进行量化,以便于部署到资源有限的设备上,如手机或嵌入式系统。AWD量化是通过Quantization-Aware Training (QAT) 过程实现的,它允许模型在训练过程中就考虑到量化的影响。 以下是使用Hugging Face Transformers进行AWD量化模型的基本步骤: 1. **安装依赖**: 首先,你需要安装`transformers`及其相关的量化工具包,例如`transformers quantization`。可以使用pip安装: ``` pip install transformers[quantization] ``` 2. **加载模型**: 导入需要的模块并加载预训练的模型,比如BERT、GPT-2等: ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification, is_apex_available, AWDQConfig model_name = "bert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) ``` 3. **量化配置**: 创建一个AWD量化配置对象: ```python config = AWDQConfig(model=model) ``` 4. **准备数据**: 将数据转换成模型接受的格式,并分割成小批次,这对于量化过程很重要。 5. **量化训练**: 使用`Trainer` API进行量化训练,这会自动在训练过程中应用量化技巧: ```python trainer = Trainer( model=model, args=..., data_collator=..., train_dataset=..., eval_dataset=..., # 可选 tokenizer=tokenizer, config=config, compute_metrics=..., ) trainer.train() ``` 6. **保存量化模型**: 训练完成后,你可以保存量化后的模型: ```python trainer.save_model("path/to/save/awd_quantized_model") ``` 7. **部署**: 现在可以将这个量化模型用于推理任务,相比未量化模型,它的内存占用更小,速度更快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值