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

Azure Durable Functions运行MNIST分类代码遇'./MNIST'未实现错误求解

问题与解决方案

问题描述

使用Azure Durable Functions编写MNIST分类代码,部署到Azure运行时后出现错误:Function not implemented: './MNIST'。核心代码包含自定义PyTorch Lightning模型、Azure Blob日志器,以及Durable Functions的编排器和活动函数。

错误原因

Azure Functions运行环境的当前工作目录(./)是只读的,代码中使用datasets.MNIST('./', ...)尝试将MNIST数据集下载到当前目录,触发写入权限限制,导致报错。

解决方案

1. 切换到临时可写目录

Azure Functions提供TEMP环境变量,指向具备读写权限的临时目录,将MNIST数据集的存储路径切换到该目录即可解决权限问题。

2. 修改代码步骤

  • 新增导入os模块,用于获取临时目录路径
  • 将数据集初始化代码中的路径替换为os.environ.get("TEMP", "./")

修改后的活动函数核心代码片段:

### activity function ###
import os  # 新增导入
@app.blob_output(arg_name="outputblob", path="newblob/test.txt", connection="BlobStorageConnection")
@app.activity_trigger(input_name="blank")
def origin_image(blank: str, outputblob: func.Out[str]):
    # 获取Azure Functions临时目录
    data_dir = os.environ.get("TEMP", "./")
    # Define dataset transformation
    transform = transforms.Compose([transforms.ToTensor()])
    # 使用临时目录存储MNIST数据集
    train_val = datasets.MNIST(data_dir, train=True, download=True, transform=transform)
    test = datasets.MNIST(data_dir, train=False, download=True, transform=transform)
    # 后续代码保持不变...

3. 优化建议(可选)

若要避免每次函数运行重复下载MNIST数据集,可提前将数据集上传到Azure Blob Storage,再在活动函数中下载到临时目录后加载,示例代码片段:

# 从Blob下载数据集到临时目录
blob_service_client = BlobServiceClient.from_connection_string(os.environ.get("BlobStorageConnection"))
container_client = blob_service_client.get_container_client("mnist-data")
# 下载MNIST数据集文件
for blob_name in ["train-images-idx3-ubyte.gz", "train-labels-idx1-ubyte.gz", "t10k-images-idx3-ubyte.gz", "t10k-labels-idx1-ubyte.gz"]:
    blob_client = container_client.get_blob_client(blob_name)
    with open(os.path.join(data_dir, blob_name), "wb") as f:
        f.write(blob_client.download_blob().readall())
# 加载本地数据集(无需再次下载)
train_val = datasets.MNIST(data_dir, train=True, download=False, transform=transform)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:19:52