DW个人网站怎么做,国外网站鞋子做的好的网站,网络舆情的网站,网络营销课程ppt目录
一、引言
二、自动模型类#xff08;AutoModel#xff09;
2.1 概述
2.2 Model Head#xff08;模型头#xff09;
2.3 代码示例
三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库#xff0c;为huggingface上数以万计的预…
目录
一、引言
二、自动模型类AutoModel
2.1 概述
2.2 Model Head模型头
2.3 代码示例
三、总结 一、引言 这里的Transformers指的是huggingface开发的大模型库为huggingface上数以万计的预训练大模型提供预测、训练等服务。 Transformers 提供了数以千计的预训练模型支持 100 多种语言的文本分类、信息抽取、问答、摘要、翻译、文本生成。它的宗旨是让最先进的 NLP 技术人人易用。 Transformers 提供了便于快速下载和使用的API让你可以把预训练模型用在给定文本、在你的数据集上微调然后通过 model hub 与社区共享。同时每个定义的 Python 模块均完全独立方便修改和快速研究实验。 Transformers 支持三个最热门的深度学习库 Jax, PyTorch 以及 TensorFlow — 并与之无缝整合。你可以直接使用一个框架训练你的模型然后用另一个加载和推理。 本文重点介绍自动模型类AutoModel。
二、自动模型类AutoModel
2.1 概述
AutoModel是Hugging Face的Transformers库中的一个非常实用的类它属于自动模型选择的机制。这个设计允许用户在不知道具体模型细节的情况下根据给定的模型名称或模型类型自动加载相应的预训练模型。它减少了代码的重复性并提高了灵活性使得开发者可以轻松地切换不同的模型进行实验或应用。
2.2 Model Head模型头
Model Head在预训练模型的基础上添加一层或多层的额外网络结构来适应特定的模型任务方便于开发者快速加载transformers库中的不同类型模型不用关心模型内部细节。 ForCausalLM因果语言模型头用于decoder类型的任务主要进行文本生成生成的每个词依赖于之前生成的所有词。比如GPT、Qwen ForMaskedLM掩码语言模型头用于encoder类型的任务主要进行预测文本中被掩盖和被隐藏的词比如BERT。 ForSeq2SeqLM序列到序列模型头用于encoder-decoder类型的任务主要处理编码器和解码器共同工作的任务比如机器翻译或文本摘要。ForQuestionAnswering问答任务模型头用于问答类型的任务从给定的文本中抽取答案。通过一个encoder来理解问题和上下文对答案进行抽取。ForSequenceClassification文本分类模型头将输入序列映射到一个或多个标签。例如主题分类、情感分类。ForTokenClassification标记分类模型头用于对标记进行识别的任务。将序列中的每个标记映射到一个提前定义好的标签。如命名实体识别打标签ForMultiplechoice多项选择任务模型头包含多个候选答案的输入预测正确答案的选项。 2.3 代码示例
对于目前常见的LLM比如GLM、Qwen、Baichuan等通常使用AutoModelForCausalLM模型头进行加载比如下面代码中使用AutoModelForCausalLM.from_pretrained加载Qwen2模型。
from modelscope import snapshot_download
from transformers import AutoTokenizer, AutoModelForCausalLM
#model_dir snapshot_download(ZhipuAI/glm-4-9b-chat)
model_dir snapshot_download(Qwen/Qwen2-7B-Instruct)
import torchdevice cuda:2 # the device to load the model ontotokenizer AutoTokenizer.from_pretrained(model_dir,trust_remote_codeTrue)prompt 介绍一下大语言模型
messages [{role: system, content: 你是一个智能助理.},{role: user, content: prompt}
]
text tokenizer.apply_chat_template(messages,tokenizeFalse,add_generation_promptTrue
)
model_inputs tokenizer([text], return_tensorspt).to(device)model AutoModelForCausalLM.from_pretrained(model_dir,device_mapcuda:2,trust_remote_codeTrue,output_attentionsTrue
)gen_kwargs {max_length: 512, do_sample: True, top_k: 1}
with torch.no_grad():outputs model.generate(**model_inputs, **gen_kwargs)outputs outputs[:, model_inputs[input_ids].shape[1]:] #切除system、user等对话前缀print(tokenizer.decode(outputs[0], skip_special_tokensTrue))print(model)
AutoModelForCausalLM.from_pretrained常见参数 model_name_or_path (str): 指定预训练模型的名称或模型文件的路径。例如gpt2、distilgpt2或本地模型文件夹的路径。config (Optional[PretrainedConfig]): 模型配置对象或其配置的字典。通常不需要手动提供因为如果未提供它会根据model_name_or_path自动加载。tokenizer (Optional[PreTrainedTokenizer]): 与模型一起使用的分词器。如果提供可以用于快速预处理文本数据。如果未提供某些功能可能受限。cache_dir (Optional[str]): 用于存储下载的模型文件的缓存目录路径。from_tf (bool, defaultFalse): 是否从TensorFlow检查点加载模型。force_download (bool, defaultFalse): 是否强制重新下载模型即使本地已有。resume_download (bool, defaultFalse): 是否从上次下载中断的地方继续下载。proxies (dict, optional): 如果需要通过代理服务器下载模型可以提供代理的字典。output_loading_info (bool, defaultFalse): 是否返回加载模型时的详细信息。local_files_only (bool, defaultFalse): 是否仅从本地文件加载模型不尝试在线下载。low_cpu_mem_usage (bool, defaultFalse): 是否优化模型加载以减少CPU内存使用这对于大型模型特别有用。device_map (Optional[Dict[str, Union[int, str]]]): 用于在多GPU或特定设备上分配模型的字典。在PyTorch 2.0及Transformers的相应版本中更为常见。revision (str, optional): 指定模型版本或分支用于从Hugging Face Hub加载特定版本的模型。use_auth_token (Optional[Union[str, bool]]): 如果模型存储在私有仓库中需要提供访问令牌。 特别有用的一个功能就是输出模型结构有助于快速理解模型
from modelscope import snapshot_download
model_dir snapshot_download(Qwen/Qwen2-7B-Instruct)from transformers import AutoTokenizer, AutoModelForCausalLM
model AutoModelForCausalLM.from_pretrained(model_dir)
print(model)
Qwen2的模型结构如下
Qwen2ForCausalLM((model): Qwen2Model((embed_tokens): Embedding(152064, 3584)(layers): ModuleList((0-27): 28 x Qwen2DecoderLayer((self_attn): Qwen2SdpaAttention((q_proj): Linear(in_features3584, out_features3584, biasTrue)(k_proj): Linear(in_features3584, out_features512, biasTrue)(v_proj): Linear(in_features3584, out_features512, biasTrue)(o_proj): Linear(in_features3584, out_features3584, biasFalse)(rotary_emb): Qwen2RotaryEmbedding())(mlp): Qwen2MLP((gate_proj): Linear(in_features3584, out_features18944, biasFalse)(up_proj): Linear(in_features3584, out_features18944, biasFalse)(down_proj): Linear(in_features18944, out_features3584, biasFalse)(act_fn): SiLU())(input_layernorm): Qwen2RMSNorm()(post_attention_layernorm): Qwen2RMSNorm()))(norm): Qwen2RMSNorm())(lm_head): Linear(in_features3584, out_features152064, biasFalse)
)
三、总结
本文对使用transformers的AutoModel自动模型类进行介绍主要用于加载transformers模型库中的大模型文中详细介绍了应用于不同任务的Model Head模型头、使用模型头、输出模型结构等关于AutoModel常用的方法。希望对您有帮助。 如果您还有时间可以看看我的其他文章
《AI—工程篇》
AI智能体研发之路-工程篇一Docker助力AI智能体开发提效
AI智能体研发之路-工程篇二Dify智能体开发平台一键部署
AI智能体研发之路-工程篇三大模型推理服务框架Ollama一键部署
AI智能体研发之路-工程篇四大模型推理服务框架Xinference一键部署
AI智能体研发之路-工程篇五大模型推理服务框架LocalAI一键部署
《AI—模型篇》
AI智能体研发之路-模型篇一大模型训练框架LLaMA-Factory在国内网络环境下的安装、部署及使用
AI智能体研发之路-模型篇二DeepSeek-V2-Chat 训练与推理实战
AI智能体研发之路-模型篇三中文大模型开、闭源之争
AI智能体研发之路-模型篇四一文入门pytorch开发
AI智能体研发之路-模型篇五pytorch vs tensorflow框架DNN网络结构源码级对比
AI智能体研发之路-模型篇六【机器学习】基于tensorflow实现你的第一个DNN网络
AI智能体研发之路-模型篇七【机器学习】基于YOLOv10实现你的第一个视觉AI大模型
AI智能体研发之路-模型篇八【机器学习】Qwen1.5-14B-Chat大模型训练与推理实战
AI智能体研发之路-模型篇九【机器学习】GLM4-9B-Chat大模型/GLM-4V-9B多模态大模型概述、原理及推理实战
《AI—Transformers应用》
【AI大模型】Transformers大模型库一Tokenizer
【AI大模型】Transformers大模型库二AutoModelForCausalLM
【AI大模型】Transformers大模型库三特殊标记special tokens
【AI大模型】Transformers大模型库四AutoTokenizer