如何在Azure Synapse Notebook中从Blob存储加载预训练fasttext .bin模型?
在Azure Synapse Notebook中加载Azure Blob Storage里的FastText预训练模型
问题根源
fasttext的load_model()函数只支持读取本地文件系统路径,没法直接访问Azure Blob Storage的远程URL,直接传入Blob路径自然会触发“无法打开加载”的错误。
解决步骤
1. 安装依赖包
如果你的Notebook环境还没装azure-storage-blob库,先运行这条命令安装:
!pip install azure-storage-blob
2. 把Blob里的模型下载到本地临时目录
用Azure Storage SDK将Blob中的.bin模型文件下载到Synapse计算节点的本地临时路径(比如/tmp/),代码示例如下,记得替换成你自己的存储信息:
from azure.storage.blob import BlobServiceClient # 替换为你的Azure Blob存储连接字符串 connection_string = "你的Blob存储连接字符串" # 替换为你的容器名称和模型文件在Blob里的路径 container_name = "存储模型的容器名" blob_model_path = "cc.sr.300.bin" # 本地临时存储的路径,可自定义 local_model_path = "/tmp/cc.sr.300.bin" # 初始化Blob客户端 blob_service_client = BlobServiceClient.from_connection_string(connection_string) blob_client = blob_service_client.get_blob_client(container=container_name, blob=blob_model_path) # 下载文件到本地 with open(local_model_path, "wb") as download_file: download_file.write(blob_client.download_blob().readall())
3. 加载本地模型文件
现在就能正常调用load_model()加载本地的模型文件了:
import fasttext model = fasttext.load_model(local_model_path) # 可以测试下模型是否正常工作,比如获取某个词的向量 print(model.get_word_vector("test"))
4. 可选:清理临时文件
如果加载完成后不需要保留本地的模型文件,可以删掉它释放空间:
import os os.remove(local_model_path)
长期使用的替代方案
如果需要频繁访问Blob里的模型文件,可以通过Blob FUSE将Azure Blob Storage挂载到Synapse的计算节点上,这样就能像访问本地文件一样直接使用Blob路径。不过这种方式需要额外配置权限,适合长期使用的场景。
内容的提问来源于stack exchange,提问作者Andjela Mihajlovic
相关产品推荐
相关产品推荐

