我正在尝试从预训练模型加载 tokenizer 和 seq2seq 模型。
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM
tokenizer = AutoTokenizer.from_pretrained("ozcangundes/mt5-small-turkish-summarization")
model = AutoModelForSeq2SeqLM.from_pretrained("ozcangundes/mt5-small-turkish-summarization")
Run Code Online (Sandbox Code Playgroud)
但我收到了这个错误。
File ~/.local/lib/python3.8/site-packages/google/protobuf/descriptor.py:1028, in FileDescriptor.__new__(cls, name, package, options, serialized_options, serialized_pb, dependencies, public_dependencies, syntax, pool, create_key)
1026 raise RuntimeError('Please link in cpp generated lib for %s' % (name))
1027 elif serialized_pb:
-> 1028 return _message.default_pool.AddSerializedFile(serialized_pb)
1029 else:
1030 return super(FileDescriptor, cls).__new__(cls)
TypeError: Couldn't build proto file into descriptor pool: duplicate file name (sentencepiece_model.proto)
Run Code Online (Sandbox Code Playgroud)
我尝试更新或降级 protobuf 版本。但我无法修复
我正在尝试使用如下代码加载大型拥抱脸部模型:
model_from_disc = AutoModelForCausalLM.from_pretrained(path_to_model)
tokenizer_from_disc = AutoTokenizer.from_pretrained(path_to_model)
generator = pipeline("text-generation", model=model_from_disc, tokenizer=tokenizer_from_disc)
Run Code Online (Sandbox Code Playgroud)
由于内存不足,程序在第一行之后很快就崩溃了。有没有办法在加载模型时对其进行分块,以便程序不会崩溃?
编辑
请参阅 cronoik 的答案以获取已接受的解决方案,但以下是 Hugging Face 文档上的相关页面:
分片检查点: https://huggingface.co/docs/transformers/big_models#sharded-checkpoints :
~:text=in%20the%20future.-,Sharded%20checkpoints,-Since%20version%204.18.0 大型模型加载: https ://huggingface.co/docs/transformers/main_classes/model#:~:text=the%20weights%20instead.-,Large%20model%20loading,-In%20Transformers%204.20.0
我正在遵循此处的指南: https: //huggingface.co/docs/transformers/v4.28.1/tasks/summarization \n指南中有一行如下:
\nlabels = tokenizer(text_target=examples["summary"], max_length=128, truncation=True)\n
Run Code Online (Sandbox Code Playgroud)\n我不明白该text_target
参数的功能。
我尝试了以下代码,最后两行给出了完全相同的结果。
\nfrom transformers import AutoTokenizer\ntokenizer = AutoTokenizer.from_pretrained(\'t5-small\')\ntext = "Weiter Verhandlung in Syrien."\ntokenizer(text_target=text, max_length=128, truncation=True)\ntokenizer(text, max_length=128, truncation=True)\n
Run Code Online (Sandbox Code Playgroud)\n文档只是说text_target (str, List[str], List[List[str]], optional) \xe2\x80\x94 The sequence or batch of sequences to be encoded as target texts.
我不太明白。是否在某些情况下设置 text_target
会产生不同的结果?
我正在尝试运行这个Hugging Face 博客中的代码。起初,我无法访问模型,所以这个错误:OSError: meta-llama/Llama-2-7b-chat-hf is not a localfolder,现在已解决,我从 Hugging Face 创建了一个有效的访问令牌。现在,我在运行以下代码时遇到不同的错误:
from transformers import AutoTokenizer
import transformers
import torch
model = "meta-llama/Llama-2-7b-chat-hf"
tokenizer = AutoTokenizer.from_pretrained(model, use_auth_token=True)
pipeline = transformers.pipeline(
"text-generation",
model=model,
torch_dtype=torch.float16,
device_map="auto",
)
sequences = pipeline(
'I liked "Breaking Bad" and "Band of Brothers". Do you have any recommendations of other shows I might like?\n',
do_sample=True,
top_k=10,
num_return_sequences=1,
eos_token_id=tokenizer.eos_token_id,
max_length=200,
)
for seq in sequences:
print(f"Result: {seq['generated_text']}")
Run Code Online (Sandbox Code Playgroud)
错误:
ValueError: Tokenizer class LlamaTokenizer does not exist or …
Run Code Online (Sandbox Code Playgroud) 当我尝试导入以下库时遇到了这个问题,它给出了错误“ImportError:无法从 'llama_index'(未知位置)导入名称 'VectorStoreIndex'”
我早上运行了这个完全相同的代码,它运行得很好。
我做到了!pip install llama_index
from llama_index import VectorStoreIndex, SimpleDirectoryReader, ServiceContext
from llama_index.llms import HuggingFaceLLM
from llama_index.prompts.prompts import SimpleInputPrompt
Run Code Online (Sandbox Code Playgroud)
我尝试注释掉第一行,但 HuggingFaceLLM 模块遇到同样的问题 SimpleInputPrompt 也遇到同样的问题,收到错误“ModuleNotFoundError:没有名为 'llama_index.prompts' 的模块”
首先,我在 sagemaker 笔记本中遇到了问题,所以我认为问题出在 sagemaker 笔记本上,所以我启动了一个干净的新笔记本,但出现了同样的错误。因此,我在本地 Jypiter 笔记本、google collab 笔记本、sagemaker studiolab 笔记本中尝试了代码,但遇到了同样的错误。
python jupyter-notebook amazon-sagemaker huggingface llama-index
我正在使用 Google Colab 来实现 Huggingface 代码。
将 Colab 环境中的 Huggingface 缓存目录更改为我的 Google Drive (GDrive) 的最佳方法是什么,这样我们就不需要下载缓存的内容,即语言模型、数据集等。每次我们启动 Colab 环境?相反,只需在 Colab 中重定向 Huggingface 即可使用 GDrive。
我尝试在Colab中设置相关环境变量,仍然在Colab运行环境中下载内容:
export TRANSFORMERS_CACHE='/content/drive/MyDrive/Colab Notebooks/NLP/HuggingfaceCash'
export HF_DATASETS_CACHE='/content/drive/MyDrive/Colab Notebooks/NLP/HuggingfaceCash/Datasets'
Run Code Online (Sandbox Code Playgroud) 我正在尝试执行 Huggingface 网站的示例代码:
from transformers import GPTJTokenizer, TFGPTJModel
import tensorflow as tf
tokenizer = GPTJTokenizer.from_pretrained("EleutherAI/gpt-j-6B")
model = TFGPTJModel.from_pretrained("EleutherAI/gpt-j-6B")
inputs = tokenizer("Hello, my dog is cute", return_tensors="tf")
outputs = model(inputs)
last_hidden_states = outputs.last_hidden_state
Run Code Online (Sandbox Code Playgroud)
我正在使用 anaconda,并且按照文档conda install -c huggingface transformers
中的说明预先安装了 Transformer 包。但当我尝试执行代码时,我仍然收到此错误。弹出如下错误信息:ModuleNotFoundError: No module named 'huggingface_hub.utils'
如何解决这个错误?
我正在开发一台工作节点上无法访问互联网的 HPC,训练后保存 SetFit 训练器的唯一选择是将其推送到 HuggingFace 中心。我如何将其保存到本地磁盘?
在此网站中举一个简单的例子,https://huggingface.co/datasets/Dahoas/rm-static:
如果我想在线加载这个数据集,我只需直接使用,
from datasets import load_dataset
dataset = load_dataset("Dahoas/rm-static")
Run Code Online (Sandbox Code Playgroud)
如果我想从本地路径加载数据集,那么我下载文件并Files and versions
首先从网络上保留相同的文件夹结构,该怎么办?
-data
|-test-00000-of-00001-bf4c733542e35fcb.parquet
|-train-00000-of-00001-2a1df75c6bce91ab.parquet
-.gitattributes
-README.md
-dataset_infos.json
Run Code Online (Sandbox Code Playgroud)
然后,将它们放入我的文件夹中,但加载时显示错误,
dataset_path ="/data/coco/dataset/Dahoas/rm-static"
tmp_dataset = load_dataset(dataset_path)
Run Code Online (Sandbox Code Playgroud)
表明,FileNotFoundError: No (supported) data files or dataset script found in /data/coco/dataset/Dahoas/rm-static.
我正在使用这个 autotrain 协作,当我标记并将图像放入图像文件夹并尝试运行它时,它说这个错误,我该如何解决这个问题?
重现:
点击 ipynb 的链接
新建一个文件夹名称为images
添加一些图像并将提示替换为描述您的图像的内容
转到运行时并运行所有
我尝试使用 wav2vec2 (XLSR 模型)但没有成功:
import transformers
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
import librosa
import torch
wav2vec2_processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-xlsr-53")
wav2vec2_model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-xlsr-53")
file_name = "test.wav"
speech, sr = librosa.load(file_name, sr=16000)
input_values = wav2vec2_processor(speech, sampling_rate=16000, return_tensors="pt").input_values
logits = wav2vec2_model(input_values).logits
Run Code Online (Sandbox Code Playgroud)
错误:
OSError: Can't load tokenizer for 'facebook/wav2vec2-large-xlsr-53'. If you were trying to load it from 'https://huggingface.co/models', make sure you don't have a local directory with the same name. Otherwise, make sure 'facebook/wav2vec2-large-xlsr-53' is the correct path to a directory containing all relevant files …
Run Code Online (Sandbox Code Playgroud) deep-learning huggingface-transformers huggingface-tokenizers huggingface
我正在使用 DistilBART 进行抽象总结。该方法generate()
使用起来非常简单。然而,它返回完整的、完成的摘要。我想要的是,在每一步中访问 logits,然后获取下一个候选单词列表,并根据我自己的标准进行选择。选择后,继续下一个单词,依此类推,直到生成 EOS 代币。
我知道我可以通过执行 来访问 logits model(**input).logits[:, -1, :]
,但这里的输入将是整个(编码)文本,那么这些 logits 到底对应什么?第一个生成的令牌?最后?
谢谢您的回答!