You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Azure Blob容器加载SentenceTransformer模型遇属性错误排查

问题根源

get_blob_to_path这个方法确实已经从最新版的azure-storage-blob(v12+)中移除了。Azure的存储SDK在v12版本做了彻底重构,旧版的API结构完全被替换,所以你用新版SDK调用这个旧方法会报错。

正确操作步骤

要从Azure Blob容器加载SentenceTransformer模型,得先把模型的所有文件下载到本地目录,再用SentenceTransformer加载本地路径。具体代码如下:

  1. 初始化客户端并下载模型文件
    首先明确模型所在的容器是fla-models,模型文件夹是all-MiniLM-L6-v2,需要把这个文件夹下的所有文件都下载到本地:

    from azure.storage.blob import BlobServiceClient
    from sentence_transformers import SentenceTransformer
    import os
    
    # 替换成你的Blob账户信息和凭据
    account_url = "https://<name_of_my_blob>.blob.core.windows.net/"
    credential = "<你的凭据>" # 可以是连接字符串、SAS令牌或者Azure AD凭据
    service_client = BlobServiceClient(account_url=account_url, credential=credential)
    
    # 模型在Blob中的位置
    container_name = "fla-models"
    model_blob_folder = "all-MiniLM-L6-v2/"
    # 本地保存模型的目录
    local_model_dir = "./all-MiniLM-L6-v2"
    
    # 创建本地目录(不存在的话自动创建)
    os.makedirs(local_model_dir, exist_ok=True)
    
    # 获取容器客户端
    container_client = service_client.get_container_client(container_name)
    
    # 遍历模型文件夹下的所有文件并下载
    for blob in container_client.list_blobs(name_starts_with=model_blob_folder):
        # 构造本地文件路径,去掉Blob里的文件夹前缀
        local_file_path = os.path.join(local_model_dir, blob.name[len(model_blob_folder):])
        # 创建子目录(如果模型有嵌套文件夹)
        os.makedirs(os.path.dirname(local_file_path), exist_ok=True)
        # 下载文件到本地
        with open(local_file_path, "wb") as file:
            file.write(container_client.download_blob(blob.name).readall())
    
  2. 加载模型
    下载完成后,直接用本地路径加载模型:

    model = SentenceTransformer(local_model_dir)
    
额外提示
  • 要是不想把模型持久化在本地,可以用tempfile模块创建临时目录,加载完模型后再删除临时文件。
  • 确保你的Azure凭据有该Blob容器的读取权限,不然会触发权限错误。

内容的提问来源于stack exchange,提问作者Wiliam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 05:20:42