我很好调优了一个预训练的bert模型,但我遇到了一个奇怪的问题:当我我很好使用CPU调优时,代码保存模型如下:
的数据
使用“pytorch_model.bin”。但是当我使用CUDA(我必须)时,模型保存如下:
的
当我尝试在未来加载这个“model.safetensors”时,它会引发错误“pytorch_model. bin”not found.我使用两个不同的venvs来使用CPU和CUDA进行测试。
如何解决这个问题?是版本问题吗?
我使用sentence_transformers框架来微调模型。
以下是我的训练代码:
checkpoint = 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2'
word_embedding_model = models.Transformer(checkpoint, cache_dir=f'model/{checkpoint}')
pooling_model = models.Pooling(word_embedding_model.get_word_embedding_dimension(), pooling_mode='mean')
model = SentenceTransformer(modules=[word_embedding_model, pooling_model], device='cuda')
train_loss = losses.CosineSimilarityLoss(model)
evaluator = evaluation.EmbeddingSimilarityEvaluator.from_input_examples(val_examples, name='sbert')
model.fit(train_objectives=[(train_dataloader, train_loss)], epochs=5, evaluator=evaluator, show_progress_bar=True, output_path=f'model_FT/{checkpoint}', save_best_model=True)
字符串
我确实在两个不同的venvs中尝试了测试,我希望代码保存为“pytorch_model. bin”而不是“model.safetensors”。
编辑:我真的还不知道,但它似乎是变压器库的新版本,导致这个问题.我看到,与拥抱脸是可能的加载safetensors,但与句子变压器(我需要使用)它不是.
1条答案
按热度按时间cqoc49vn1#
您可能已经发现了这个问题,但是现在将Transformer库更新到最新版本可以解决这个问题。
字符串
你不再需要转换模型,你可以使用SentenceTransformer(“Modelpath”)加载model.safetensor。