如何使用 blob 存储中的 .bin 文件加载到模型中?

How use a .bin file in blob storage to be loaded to a model?

我在 Azure Blob 存储的 blob 中有一个 .bin 文件。

我想用它来给fasttext一个使用方法

我试过了:

fr_embedding_file_path = "cc_fr_300_bin/cc.fr.300.bin"
fr_embedding_file = client.get_blob_client(blob=fr_embedding_file_path)
fr_embedding_file = fr_embedding_file.download_blob()

fr_model = fasttext.load_model(fr_embedding_file)

我想我必须在 fr_embedding_file = fr_embedding_file.download_blob() 之后做一些其他事情,但不知道是什么。 bin文件大小为7GB,来自https://fasttext.cc/docs/en/crawl-vectors.html

我有这条消息:

'TypeError: loadModel(): incompatible function arguments. The following argument types are supported: 1. (self: fasttext_pybind.fasttext, arg0: str) -> None
Invoked with: <fasttext_pybind.fasttext object at ...>, <azure.storage.blob._download.StorageStreamDownloader object at ...>'

我能做什么?

请检查给定的参考资料是否有助于解决问题:

根据错误,arg0(第一个位置参数)应该是一个 str(字符串)。 fasttext.load_model 接受第一个参数为字符串或字符,第二个参数是可选的 utf-8 编码。

看看 fasttext.load_model(str) 是否只能从本地文件系统加载文件。尝试将数据复制到本地文件系统,然后从那里加载它,例如 检查此参考 from Stack Overflow。 尝试将 blob 下载到文件并加载该文件

blob.download_to_filename(local_model_file)
model_1 = fasttext.load_model(local_model_file)

请查看您是否可以使用 content_as_bytes 或 content_as_text 之类的方法或从 azure.storage.blob.StorageStreamDownloader class 并遍历它们或尝试将参数作为参考文献 1 中的 str () 。

请查看下面的 参考资料 以解决问题:

  1. Issue on azure sdk for python (github.com)
  2. load model from bytes in memory · Issue (github.com)