【发布时间】:2021-02-02 07:05:27
【问题描述】:
我需要传输预训练的 deeppavlov ruBERT 模型的 pytorch_model.bin,但我有文件大小限制。所以我用python把它分成块,以正确的顺序传输和重新组装。但是,文件的大小增加了,当我尝试使用 BertModel.from_pretrained(pytorch_model.bin) 加载生成的文件时,我收到了一个错误:
During handling of the above exception, another exception occurred:
OSError: Unable to load weights from pytorch checkpoint <...>
所以我的问题是:真的可以这样拆分文件吗?我在拆分和重组文件的方式上可能有错误。但是,这也可能是某些版本不匹配。
我获取块的python代码:
chunk_size = 40000000
file_num = 1
with open("pytorch_model.bin", "rb") as f:
chunk = f.read(chunk_size)
while chunk:
with open("chunk_" + str(file_num), "wb") as chunk_file:
chunk_file.write(chunk)
file_num += 1
chunk = f.read(chunk_size)
重组一个文件的代码:
chunks = !ls | grep chunk_
chunks = sorted(chunks, key=lambda x: int(x.split("_")[-1]))
for chunk in chunks:
with open(chunk, "rb") as f:
contents = f.read()
if chunk == chunks[0]:
write_mode = "wb"
else:
write_mode = "ab"
with open("pytorch_model.bin", write_mode) as f:
f.write(contents)
python 3.7.0,火炬 1.5.1,变形金刚 4.2.2。我无法移动大于 40 MB 的文件。
TIA 为您提供帮助!
【问题讨论】:
标签: python serialization pytorch huggingface-transformers bin