如何使用 Hugging Face 的 Transformers 库来下载并使用一个qwen1.5的预训练模型[框架]

本文主要是介绍如何使用 Hugging Face 的 Transformers 库来下载并使用一个qwen1.5的预训练模型[框架],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

要使用Hugging Face的Transformers库下载并使用Qwen1.5预训练模型,你可以按照以下步骤操作:
1.安装Transformers库: 确保你已经安装了transformers库的最新版本,至少是4.37.0,因为Qwen1.5已经被集成到这个版本中。如果还没有安装,可以使用以下命令安装:

   pip install transformers

2.导入必要的模块: 在Python代码中,你需要导入AutoTokenizer和AutoModelForCausalLM(或根据你的具体需求选择相应的模型类):

   from transformers import AutoTokenizer, AutoModelForCausalLM

3.加载预训练模型和分词器: 使用AutoTokenizer.from_pretrained和AutoModelForCausalLM.from_pretrained方法加载Qwen1.5模型及其对应的分词器。模型名称应该是qwen1.5:

   tokenizer = AutoTokenizer.from_pretrained("qwen1.5")model = AutoModelForCausalLM.from_pretrained("qwen1.5")

4.准备输入文本: 根据你的应用,创建一个字符串作为输入文本:

   input_text = "你好,我想了解关于人工智能的一些事情。"

 5.编码输入文本: 使用分词器将输入文本转换为模型可接受的格式:

"使用分词器将输入文本转换为模型可接受的格式" 意味着将原始的、未经处理的自然语言文本通过特定的算法分割成一系列基础单元,这些单元可以是单词、子词(subwords)或者字符等,具体取决于所使用的分词器和模型的要求。这个过程对于大多数现代自然语言处理(NLP)模型来说至关重要,因为模型通常需要输入以数字表示的、固定长度的向量,而不是直接理解原始文本。
在Hugging Face的Transformers库中,AutoTokenizer类负责执行这个任务。它的工作流程大致如下:
分词(Tokenization):将文本拆分成一个个基本单元(tokens)。对于中文,这可能涉及按字符或词汇分隔;对于英文和其他语言,可能会进一步细分为子词以处理词汇的多样性。
添加特殊标记:为了帮助模型理解输入序列的结构,分词器会在序列的开始和结束添加特殊的标记,如[CLS]、[SEP]、<s>、</s>等,具体取决于模型的类型和用途。
映射到索引:每个token被映射到一个唯一的整数ID,这个ID在模型的词汇表中代表该token。词汇表是模型训练时建立的,包含所有模型能理解的token及其对应的ID。
转换为张量:最后,这些整数ID会被组织成一个或多个张量(通常是PyTorch或TensorFlow中的张量),以便于在神经网络模型中作为输入使用。
综上所述,"转换为模型可接受的格式"实质上是将文本数据转化为模型能够理解和处理的数字化、结构化形式,确保模型能够高效地进行预测或生成任务。

   inputs = tokenizer(input_text, return_tensors="pt")

6.生成文本: 如果你想让模型生成文本,你可以使用model.generate方法。注意,对于Qwen1.5这样的语言模型,通常需要指定起始种子文本(inputs的input_ids)和一些生成参数,比如最大生成长度:

   # 例如,生成10个字的文本generated_text = model.generate(inputs["input_ids"], max_length=10)

7.解码生成的文本: 将生成的ID序列转换回人类可读的文本:

   generated_text = tokenizer.decode(generated_text[0])print(generated_text)

以上就是使用Hugging Face的Transformers库下载并使用Qwen1.5预训练模型的基本步骤。根据实际应用,你可能还需要调整生成参数,如温度(temperature)、顶级样本(top_k)、顶级概率(top_p)等以控制生成结果的多样性和质量。

# 导入所需库
from transformers import AutoTokenizer, AutoModelForCausalLM# 加载模型和分词器
tokenizer = AutoTokenizer.from_pretrained("qwen1.5")
model = AutoModelForCausalLM.from_pretrained("qwen1.5")# 输入文本
input_text = "你好,我想知道未来人工智能会如何改变我们的生活。"# 使用分词器对输入文本进行编码
# `return_tensors="pt"`使得返回值为PyTorch张量,适用于后续模型的输入
inputs = tokenizer(input_text, return_tensors="pt", padding=True, truncation=True)# 生成文本配置
# 注意:这里的配置是示例性的,具体参数应根据需求调整
max_length = 50  # 生成文本的最大长度
num_return_sequences = 1  # 返回的生成序列数量
temperature = 1.0  # 控制生成的随机性,较低的值使生成结果更确定
top_p = 0.9  # 核心采样参数,控制候选token的选择范围# 生成文本
# 注意:对于某些模型,可能需要调整generate函数的参数,特别是对于有特定接口的模型
generated = model.generate(inputs.input_ids,max_length=max_length + len(inputs["input_ids"][0]),  # 需要考虑输入长度num_return_sequences=num_return_sequences,temperature=temperature,top_p=top_p,pad_token_id=tokenizer.eos_token_id,  # 结束生成的标志
)# 解码生成的文本
# 对于多个生成序列,这里只取第一个
generated_text = [tokenizer.decode(gen, skip_special_tokens=True, clean_up_tokenization_spaces=True) for gen in generated]
print("\nGenerated Text:")
for idx, text in enumerate(generated_text):print(f"Sequence {idx+1}: {text}")

以上为参考代码。具体根据实际,敬请关注,后期将持续完善学习记录。以下代码来自hugging face

from transformers import AutoModelForCausalLM, AutoTokenizer
device = "cuda" # the device to load the model ontomodel = AutoModelForCausalLM.from_pretrained("Qwen/CodeQwen1.5-7B-Chat",torch_dtype="auto",device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained("Qwen/CodeQwen1.5-7B-Chat")prompt = "Write a quicksort algorithm in python."
messages = [{"role": "system", "content": "You are a helpful assistant."},{"role": "user", "content": prompt}
]
text = tokenizer.apply_chat_template(messages,tokenize=False,add_generation_prompt=True
)
model_inputs = tokenizer([text], return_tensors="pt").to(device)generated_ids = model.generate(model_inputs.input_ids,max_new_tokens=512
)
generated_ids = [output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
]response = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]

这篇关于如何使用 Hugging Face 的 Transformers 库来下载并使用一个qwen1.5的预训练模型[框架]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990537

相关文章

Python使用Tenacity一行代码实现自动重试详解

《Python使用Tenacity一行代码实现自动重试详解》tenacity是一个专为Python设计的通用重试库,它的核心理念就是用简单、清晰的方式,为任何可能失败的操作添加重试能力,下面我们就来看... 目录一切始于一个简单的 API 调用Tenacity 入门:一行代码实现优雅重试精细控制:让重试按我

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

使用Python构建智能BAT文件生成器的完美解决方案

《使用Python构建智能BAT文件生成器的完美解决方案》这篇文章主要为大家详细介绍了如何使用wxPython构建一个智能的BAT文件生成器,它不仅能够为Python脚本生成启动脚本,还提供了完整的文... 目录引言运行效果图项目背景与需求分析核心需求技术选型核心功能实现1. 数据库设计2. 界面布局设计3

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

C++11右值引用与Lambda表达式的使用

《C++11右值引用与Lambda表达式的使用》C++11引入右值引用,实现移动语义提升性能,支持资源转移与完美转发;同时引入Lambda表达式,简化匿名函数定义,通过捕获列表和参数列表灵活处理变量... 目录C++11新特性右值引用和移动语义左值 / 右值常见的左值和右值移动语义移动构造函数移动复制运算符

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

C#中lock关键字的使用小结

《C#中lock关键字的使用小结》在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时,其他线程无法访问同一实例的该代码块,下面就来介绍一下lock关键字的使用... 目录使用方式工作原理注意事项示例代码为什么不能lock值类型在C#中,lock关键字用于确保当一个线程位于给定实例的代码块中时

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND