6.7日探索进度

进行了huggingface基础项目部署。

其中遇到的几个问题

1.下载transformer和pipline,用于方便地从huggingface上部署文件。

2.运行时cpu、内存占用过高。原因是pytorch为cpu版本,未改为gpu版本。且pytorch的版本对应有相应的cuda版本,需要下载能够使用的pytorch和cuda。

接下来是几个重要的问题解答:

1.部署实操:

这个错误是因为生成文本的输入长度超过了默认的 max_length,导致生成过程中的意外行为。你可以通过设置 max_lengthmax_new_tokens 参数来控制生成文本的最大长度。

以下是如何修改你的代码来解决这个问题:

修改代码

确保在调用模型生成方法时,设置合适的 max_lengthmax_new_tokens 参数:

from transformers import pipeline

# 指定模型名称和版本
model_name = "distilbert/distilbert-base-uncased-finetuned-sst-2-english"
revision = "af0f99b"

# 创建文本生成的 pipeline
pipe = pipeline("text-generation", model=model_name, revision=revision)

# 示例输入
messages = "Hello, how are you?"

# 设置 max_length 或 max_new_tokens
result = pipe(messages, max_length=50)  # 或者使用 max_new_tokens
print(result)

解释

  • **max_length**:控制生成文本的最大长度,包括输入和生成的文本。你可以根据需要调整这个值。

  • **max_new_tokens**:仅控制生成的文本的最大长度,而不包括输入文本的长度。推荐使用这个参数以避免输入长度对生成长度的影响。

示例代码

以下是一个完整的示例代码,展示如何使用 max_new_tokens 控制生成文本的长度:

from transformers import pipeline

# 指定模型名称和版本
model_name = "distilbert/distilbert-base-uncased-finetuned-sst-2-english"
revision = "af0f99b"

# 创建文本生成的 pipeline
pipe = pipeline("text-generation", model=model_name, revision=revision)

# 示例输入
messages = "Hello, how are you?"

# 设置 max_new_tokens
result = pipe(messages, max_new_tokens=30)
print(result)

处理警告信息:警告不一定要解决

你还可以通过以下方法处理警告信息:

  1. Special tokens:确保特殊标记的词嵌入已被微调或训练。如果你在训练自己的模型,可以通过微调模型来处理这些特殊标记。

  2. 忽略警告:如果确定警告不会影响你的代码运行,可以选择忽略它们。例如,忽略 FutureWarning

   import warnings
   warnings.filterwarnings("ignore", category=FutureWarning)

实际可以运行的代码:

from transformers import pipeline

# 指定模型名称和版本
#model_name = "distilbert/distilbert-base-uncased-finetuned-sst-2-english"
#revision = "af0f99b"

# 创建情感分析的 pipeline
classifier = pipeline("text-classification", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")

# 示例文本
for i in range(6):
    text=input('形容你的心情:')
    res=classifier(text)
    print(res)

我加入了简单交互,可以多次提问。

2.cuda问题的解决

查看现有显卡驱动和cuda

nvidia-smi

查看是否运行了gpu的pytorch

import torch
print(torch.cuda.is_available())

if torch.cuda.is_available():
    device = torch.device("cuda")
    print("Using GPU:", torch.cuda.get_device_name(0))
else:
    device = torch.device("cpu")
    print("Using CPU")

# 示例张量操作
x = torch.tensor([1.0, 2.0, 3.0], device=device)
print(x)

DDU软件:


6.7日探索进度
http://192.144.219.54/:8080//archives/1717761735906
作者
CavyW
发布于
2024年06月07日
更新于
2024年06月07日
许可协议