欢迎光临
我们一直在努力

大模型推理--transformers&模型下载&实际运用

一、transformers(专门针对大模型的第三方库)

  • transformers 和 diffusers 是由 Hugging Face 提供的两个不同的 Python 库,都用于处理深度学习模型,但各有不同的重点和用途。

1.Transformers
  • 用途:主要用于自然语言处理(NLP),包含大量预训练模型,如 BERT、GPT-2、T5 等,适用于文本分类、文本生成、问答、翻译等任务。

  • 模型多样性:提供广泛的模型选择,支持多种任务和语言。

  • 特性:支持模型训练、微调、推理,并提供丰富的工具和接口,使 NLP 相关操作更简便。

  • 社区和生态系统:拥有庞大的社区和生态系统,提供大量教程、示例和支持。

2.Diffusers
  • 用途:专注于提供梯度扩散模型(如 DALL-E、Stable Diffusion 等),主要用于图像生成任务。

  • 模型专一性:主要集中在扩散模型上,用于生成高质量图像。

  • 特性:提供简单直观的方式来使用和探索梯度扩散模型,使图像生成变得容易。

  • 社区和生态系统:目前社区和生态系统相对 transformers 较小,但在图像生成领域专注,是探索该领域的理想选择。

3.transformers库的安装

二、下载模型

1.在浏览器搜索魔搭社区并点击到模型库页面

2.搜索qwen2.5版本并找到千问2.5-1.5B-Instruct模型

3.点击打开千问2.5-1.5B-Instruct模型、并下载模型

有3种下载方法

方法一:命令行下载

在命令行中通过pip install modelscope命令安装ModelScope

下载完成后在命令行输入modelscope download –model Qwen/Qwen2.5-1.5B-Instruct命令下载模型

注:会出现下载后不知道模型保存到那个文件夹的情况

方法二:在代码中直接下载

#模型下载
from modelscope import snapshot_download
model_dir = snapshot_download('Qwen/Qwen2.5-1.5B-Instruct')

方法三:Git下载

先下载lfs

git lfs install

下载模型

git clone https://www.modelscope.cn/Qwen/Qwen2.5-1.5B-Instruct.git

三、实际运用

任务:输入对某电影的评价,输出评价的类型(正面、中立或负面)

代码整体结构

from transformers import AutoModelForCausalLM, AutoTokenizer

  • 导入Hugging Face的transformers库

  • AutoModelForCausalLM: 用于加载因果语言模型(生成式模型)

  • AutoTokenizer: 用于加载对应的分词器

1.模型加载

model_name = r"C:\\Users\\35802\\Qwen2.5-1.5B-Instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(model_name)

  • 作用:从本地路径加载预训练的Qwen模型

  • 特点:只需要加载一次,避免重复加载浪费时间

2.定义任务模板

prompt_template = "请判断以下文本属于哪个类别:{text}。可选类别有:正面、负面、中立。"

  • 关键部分:通过提示词告诉模型要做什么

3.主循环

while True:
input_text = input("请输入影评文本:").strip()

  • 无限循环,可以不断输入影评

  • input() 等待用户从键盘输入

  • .strip() 去掉输入文本首尾的空格

4.文本编码

prompt_input = prompt_template.format(text=input_text)
inputs = tokenizer(prompt_input, return_tensors="pt")

  • format():将用户输入的影评填入模板

  • tokenizer():将文本转换成模型能理解的数字(token IDs)

  • return_tensors="pt":返回PyTorch张量格式

5.模型推理

output_sequences = model.generate(
inputs.input_ids,
max_new_tokens=20,
attention_mask=inputs.attention_mask,
)

  • model.generate():让模型根据输入生成新的文本

  • inputs.input_ids:输入的token ID序列

  • max_new_tokens=20:限制最多生成20个新token

  • attention_mask:告诉模型哪些位置需要关注(1关注,0忽略)

  • output_sequences:模型生成的token ID序列

6.解码结果

generated_text = tokenizer.decode(output_sequences[0], skip_special_tokens=True)
result = generated_text[len(prompt_input):].strip()

  • decode():把生成的数字ID转换回人类可读的文本

  • skip_special_tokens=True:跳过特殊标记

  • [len(prompt_input):]:关键步骤——只提取模型新生成的部分,去掉输入的提示词

    • 因为generated_text包含“提示词+模型回答”,而我们需要的是“模型回答”

  • .strip():去掉首尾空格

7.强制输出三种类别

valid_categories = ["正面", "负面", "中立"]
for category in valid_categories:
if category in result:
result = category
break
print(f"分类结果:{result}\\n")

  • 定义有效类别:只允许输出这三个词

  • 循环检查:遍历三个类别,看结果中是否包含它们

  • 强制替换:如果找到“正面”在结果中(即使结果是“正面。这部电影很好”),把result强制设为“正面”

  • break:找到后就停止循环

  • 输出结果:打印分类结果,然后继续下一次循环

8.运行结果

赞(0)
未经允许不得转载:171主机测评 » 大模型推理--transformers&模型下载&实际运用
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址