我正在尝试将这个model转换为.pt格式。它对我来说工作得很好,所以我不想对其进行微调。如何将其导出为.pt并运行界面?
我尝试使用它转换为.pt:
from transformers import AutoConfig, AutoProcessor, AutoModelForCTC, AutoTokenizer, Wav2Vec2Processor
import librosa
import torch
# Define the model name
model_name = "UrukHan/wav2vec2-russian"
# Load the model and tokenizer
config = AutoConfig.from_pretrained(model_name)
model = AutoModelForCTC.from_pretrained(model_name, config=config)
processor = Wav2Vec2Processor.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)
# Save the model as a .pt file
torch.save(model.state_dict(), "model.pt")
# Save the tokenizer as well if needed
tokenizer.save_pretrained("model-tokenizer")
但不幸的是它没有运行界面:
model = AutoModelForCTC.from_pretrained("model.pt")
processor = AutoProcessor.from_pretrained("model.pt")
# Perform inference with the model
FILE = 'here is wav.wav'
audio, _ = librosa.load(FILE, sr = 16000)
audio = list(audio)
def map_to_result(batch):
with torch.no_grad():
input_values = torch.tensor(batch, device="cpu").unsqueeze(0) #, device="cuda"
logits = model(input_values).logits
pred_ids = torch.argmax(logits, dim=-1)
batch = processor.batch_decode(pred_ids)[0]
return batch
map_to_result(audio)
print(map_to_result(audio))
model.eval()
并遇到错误: `model.pt 不是本地文件夹,也不是“https://huggingface.co/models”上列出的有效模型标识符
`
在这种情况下,您不必担心文件结尾。
torch.save
基本上将输入写入 zip 文件(它也适用于任意 python 对象,而不仅仅是权重)。 .pt
文件结尾只是惯例。
Huggingface 将模型权重保存到目录中,通常采用
model_name.hf/
的形式。
您看到的错误是因为
AutoModelForCTC.from_pretrained("model.pt")
导致 Huggingface 代码寻找名为 model.pt
的目录,而此时不存在此类目录。
当您第一次下载模型时,权重会保存到缓存中,通常是
~/.cache/huggingface/hub
。
如果您想将模型权重明确保存到不同的目录,您可以运行:
model = AutoModelForCTC.from_pretrained(model_name, config=config)
model.save_model("path_to_save")